jieba分詞(標註詞性),jieba分詞標註詞性
本人初學python代碼不夠規範 望見諒
本段代碼可以完成對文本資訊的分詞(標註詞性)、去停用詞、以及儲存到本地TXT檔案中
1 # coding:utf-8 2 import re 3 import json 4 import jieba.posseg as pseg 5 import string 6 import datetime 7 import zhon.hanzi 8 import get_comment.SQL 9 10 # 要清洗掉的中文標點11 ignoring_words = list(zhon.hanzi.punctuation)+list(string.punctuation)12 # 資料庫表中沒有儲存評論的表名稱13 ignoring_table = ['phone_info', 'phone_url', 'error_table']14 15 16 # 將分詞後的資料儲存到本地17 def text_save(content, filename, mode='a'):18 file = open(filename, mode)19 file.write(str(content)) # 儲存為str格式20 # 此處為儲存為json格式21 # js = json.dumps(content)22 # file.write(js)23 file.close()24 25 26 # 擷取資料庫中的評論27 def get_comments(phones_id, i):28 mysql = get_comment.SQL.save_mysql() # 調用資料庫操作29 comment = mysql.read_comment_phone(phones_id, i)30 for ob in comment:31 return str((ob[0]))32 33 34 # 調用jieba分詞包進行分詞35 def jieba_cut(phones_id, i):36 comment = get_comments(phones_id, i)37 comments_dict = dict(pseg.cut(comment))38 return comments_dict39 40 41 # 擷取資料庫中的所有儲存評論資訊的表名42 def get_phone_table():43 mysql = get_comment.SQL.save_mysql()44 phone_id_list = list(mysql.select_all_table('jd'))45 for table in phone_id_list:46 if table[0] in ignoring_table:47 phone_id_list.remove(table)48 phone_id_list.pop()49 return phone_id_list50 51 52 # 調用其他函數完成資料的儲存,格式為txt53 def save_file(phone_id1):54 with open('E:\\PythonFile\\tingyongci.txt') as ti:55 ti_list = list(ti.read()) # 擷取停用詞表(綜合哈工大停用詞詞表)56 for i in range(1, 1000):57 with open('E:\\PythonFile\\tingyongci.txt') as ti:58 ti_list = list(ti.read()) # 擷取停用詞表(綜合哈工大停用詞詞表)59 for i in range(1, 1000):60 try:61 new_dic = {}62 new_dic1 = jieba_cut(phone_id1, i)63 for key, value in new_dic1.items():64 if key not in ti_list:65 new_dic[key] = value66 else:67 pass68 except:69 continue70 print(new_dic)71 text_save(new_dic, 'E:\\PythonFile\\jd\\phone\\%s.txt' % phone_id1)72 print('----------------------id=%s---------------------------' % phone_id)73 74 75 if __name__ == "__main__":76 start_time = datetime.datetime.now()77 phone_table_lists = get_phone_table()78 for phone_table_name in phone_table_lists:79 phone_id = re.sub("\D", "", phone_table_name[0]) # 擷取表名中的phone_id80 save_file(int(phone_id))81 print("--------------id=%s--------------" % phone_id)82 end_time = datetime.datetime.now()83 print('已耗用時間:')84 print(end_time - start_time)
附部分運行後的儲存結果:
註:jieba分詞的詞性表如下:
另附詞性標註表如下:
1. 名詞 (1個一類,7個二類,5個三類)
名詞分為以下子類:
n 名詞
nr 人名
nr1 漢語姓氏
nr2 漢語名字
nrj 日語人名
nrf 音譯人名
ns 地名
nsf 音譯地名
nt 機構團體名
nz 其它專名
nl 名詞性慣用語
ng 名詞性語素
2. 時間詞(1個一類,1個二類)
t 時間詞
tg 時間詞性語素
3. 處所詞(1個一類)
s 處所詞
4. 方位詞(1個一類)
f 方位詞
5. 動詞(1個一類,9個二類)
v 動詞
vd 副動詞
vn 名動詞
vshi 動詞“是”
vyou 動詞“有”
vf 趨向動詞
vx 形式動詞
vi 不及物動詞(內動詞)
vl 動詞性慣用語
vg 動詞性語素
6. 形容詞(1個一類,4個二類)
a 形容詞
ad 副形詞
an 名形詞
ag 形容詞性語素
al 形容詞性慣用語
7. 區別詞(1個一類,2個二類)
b 區別詞
bl 區別詞性慣用語
8. 狀態詞(1個一類)
z 狀態詞
9. 代詞(1個一類,4個二類,6個三類)
r 代詞
rr 人稱代詞
rz 指示代詞
rzt 時間指示代詞
rzs 處所指示代詞
rzv 謂詞性指示代詞
ry 疑問代詞
ryt 時間疑問代詞
rys 處所疑問代詞
ryv 謂詞性疑問代詞
rg 代詞性語素
10. 數詞(1個一類,1個二類)
m 數詞
mq 數量詞
11. 量詞(1個一類,2個二類)
q 量詞
qv 動量詞
qt 時量詞
12. 副詞(1個一類)
d 副詞
13. 介詞(1個一類,2個二類)
p 介詞
pba 介詞“把”
pbei 介詞“被”
14. 連詞(1個一類,1個二類)
c 連詞
cc 並列連詞
15. 助詞(1個一類,15個二類)
u 助詞
uzhe 著
ule 了 嘍
uguo 過
ude1 的 底
ude2 地
ude3 得
usuo 所
udeng 等 等等 云云
uyy 一樣 一般 似的 般
udh 的話
uls 來講 來說 而言 說來
uzhi 之
ulian 連 (“連小學生都會”)
16. 歎詞(1個一類)
e 歎詞
17. 語氣詞(1個一類)
y 語氣詞(delete yg)
18. 擬聲詞(1個一類)
o 擬聲詞
19. 首碼(1個一類)
h 首碼
20. 尾碼(1個一類)
k 尾碼
21. 字串(1個一類,2個二類)
x 字串
xx 非語素字
xu 網址URL
22. 標點符號(1個一類,16個二類)
w 標點符號
wkz 左括弧,全形:( 〔 [ { 《 【 〖 〈 半形:( [ { <
wky 右括弧,全形:) 〕 ] } 》 】 〗 〉 半形: ) ] { >
wyz 左引號,全形:“ ‘ 『
wyy 右引號,全形:” ’ 』
wj 句號,全形:。
ww 問號,全形:? 半形:?
wt 歎號,全形:! 半形:!
wd 逗號,全形:, 半形:,
wf 分號,全形:; 半形: ;
wn 頓號,全形:、
wm 冒號,全形:: 半形: :
ws 省略符號,全形:…… …
wp 破折號,全形:—— -- ——- 半形:--- ----
wb 百分比符號千分號,全形:% ‰ 半形:%
wh 單位符號,全形:¥ $ £ ° ℃ 半形:$