python笔记:jieba(中文分词)
?1 精確模式與全模式分割
import jiebatxt = '北京大學創辦于1898年,初名京師大學堂,是中國第一所國立綜合性大學。' word_list = jieba.lcut(txt) # 精確模式,完整且不重復 print(word_list) #['北京大學', '創辦', '于', '1898', '年', ',', '初名', '京師大學堂', ',', '是', '中國', '第一所', '國立', '綜合性', '大學', '。']word_list = jieba.lcut(txt, cut_all=True) # 全模式,輸出所有可能的詞,會有冗余 print(word_list) #['北京', '北京大學', '大學', '創辦', '于', '1898', '年', ',', '初', '名', '京師', '京師大學堂', '師大', '大學', '大學堂', '學堂', ',', '是', '中國', '第一', '第一所', '一所', '國立', '綜合', '綜合性', '合性', '大學', '。']?1.1 添加和刪除指定詞
# 如何識別不常見的詞 txt = '丹戎巴魯是一個新加坡的地鐵站' word_list = jieba.lcut(txt) # 無法識別 print(word_list) #['丹戎', '巴魯', '是', '一個', '新加坡', '的', '地鐵站']jieba.add_word('丹戎巴魯') # 添加指定詞 word_list = jieba.lcut(txt) # 現在可以識別 print(word_list) #['丹戎巴魯', '是', '一個', '新加坡', '的', '地鐵站']jieba.del_word('丹戎巴魯') # 刪除指定詞 word_list = jieba.lcut(txt) # 現在無法識別 print(word_list) #['丹戎', '巴魯', '是', '一個', '新加坡', '的', '地鐵站']?1.2 分詞時標注詞性
import jieba.posseg as psegcontent = '念劉備、關羽、張飛,雖然異姓,既結為兄弟,\ ……不求同年同月同日生,只愿同年同月同日死。'words =pseg.cut(content) words #<generator object cut at 0x000001A9C778A5C8>''' pseg.cut()函數返回的是一個生成器,所以直接輸出是不行的 '''for w in words:print(w,''*10,w.word,''*10,w.flag) ''' 念/v 念 v 劉備/nrfg 劉備 nrfg 、/x 、 x 關羽/nr 關羽 nr 、/x 、 x 張飛/nr 張飛 nr ,/x , x 雖然/c 雖然 c 異姓/n 異姓 n ,/x , x 既/c 既 c 結為/v 結為 v 兄弟/n 兄弟 n ,/x , x …/x … x …/x … x 不/d 不 d 求/v 求 v 同年同月/i 同年同月 i 同日生/nz 同日生 nz ,/x , x 只/d 只 d 愿/v 愿 v 同年/t 同年 t 同月同日/i 同月同日 i 死/v 死 v 。/x 。 x '''1.2.1 詞性表?
| Ag | 形語素 | 形容詞性語素。形容詞代碼為 a,語素代碼g前面置以A。 |
| a | 形容詞 | 取英語形容詞 adjective的第1個字母。 |
| ad | 副形詞 | 直接作狀語的形容詞。形容詞代碼?a和副詞代碼d并在一起。 |
| an | 名形詞 | 具有名詞功能的形容詞。形容詞代碼 a和名詞代碼n并在一起。 |
| b | 區別詞 | 取漢字“別”的聲母。 |
| c | 連詞 | 取英語連詞 conjunction的第1個字母。 |
| dg | 副語素 | 副詞性語素。副詞代碼為 d,語素代碼g前面置以D。 |
| d | 副詞 | 取 adverb的第2個字母,因其第1個字母已用于形容詞。 |
| e | 嘆詞 | 取英語嘆詞 exclamation的第1個字母。 |
| f | 方位詞 | 取漢字“方” |
| g | 語素 | 絕大多數語素都能作為合成詞的“詞根”,取漢字“根”的聲母。 |
| h | 前接成分 | 取英語 head的第1個字母。 |
| i | 成語 | 取英語成語 idiom的第1個字母。 |
| j | 簡稱略語 | 取漢字“簡”的聲母。 |
| k | 后接成分 | |
| l | 習用語 | 習用語尚未成為成語,有點“臨時性”,取“臨”的聲母。 |
| m | 數詞 | 取英語 numeral的第3個字母,n,u已有他用。 |
| Ng | 名語素 | 名詞性語素。名詞代碼為 n,語素代碼g前面置以N。 |
| n | 名詞 | 取英語名詞 noun的第1個字母。 |
| nr | 人名 | 名詞代碼 n和“人(ren)”的聲母并在一起。 |
| ns | 地名 | 名詞代碼 n和處所詞代碼s并在一起。 |
| nt | 機構團體 | “團”的聲母為 t,名詞代碼n和t并在一起。 |
| nz | 其他專名 | “?!钡穆暷傅牡?1個字母為z,名詞代碼n和z并在一起。 |
| o | 擬聲詞 | 取英語擬聲詞 onomatopoeia的第1個字母。 |
| p | 介詞 | 取英語介詞 prepositional的第1個字母。 |
| q | 量詞 | 取英語 quantity的第1個字母。 |
| r | 代詞 | 取英語代詞 pronoun的第2個字母,因p已用于介詞。 |
| s | 處所詞 | 取英語 space的第1個字母。 |
| tg | 時語素 | 時間詞性語素。時間詞代碼為 t,在語素的代碼g前面置以T。 |
| t | 時間詞 | 取英語 time的第1個字母。 |
| u | 助詞 | 取英語助詞 auxiliary |
| vg | 動語素 | 動詞性語素。動詞代碼為 v。在語素的代碼g前面置以V。 |
| v | 動詞 | 取英語動詞 verb的第一個字母。 |
| vd | 副動詞 | 直接作狀語的動詞。動詞和副詞的代碼并在一起。 |
| vn | 名動詞 | 指具有名詞功能的動詞。動詞和名詞的代碼并在一起。 |
| w | 標點符號 | |
| x | 非語素字 | 非語素字只是一個符號,字母 x通常用于代表未知數、符號。 |
| y | 語氣詞 | 取漢字“語”的聲母。 |
| z | 狀態詞 | 取漢字“狀”的聲母的前一個字母。 |
| un | 未知詞 | 不可識別詞及用戶自定義詞組。取英文Unkonwn首兩個字母。(非北大標準,CSW分詞中定義) |
?1.2 load_userdict
導入用戶的dict,append在jieba原有的詞性表上
比如我們現在有這樣的一個文件:
?
import jieba.posseg as psegjieba.load_userdict('userdict.txt') content = '念劉備、關羽、張飛,雖然異姓,既結為兄弟'words =pseg.cut(content) words #<generator object cut at 0x000001A9C778A5C8>''' pseg.cut()函數返回的是一個生成器,所以直接輸出是不行的 '''for w in words:print(w,''*10,w.word,''*10,w.flag)''' 念/v 念 v 劉備/nr 劉備 nr 、/x 、 x 關羽/nr 關羽 nr 、/x 、 x 張飛/nr 張飛 nr ,/x , x 雖然/c 雖然 c 異姓/n 異姓 n ,/x , x 既/c 既 c 結為/v 結為 v 兄弟/n 兄弟 n '''發現“劉備”可以正確地給出詞性了
總結
以上是生活随笔為你收集整理的python笔记:jieba(中文分词)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 笔记:nltk (标记英文
- 下一篇: matplotlib 笔记:设置x轴 y