【今日知圖】
替換
r 替換當前字符
R 替換當前行光標後的字符
0.說在前面1.結巴分詞三種模式2.自定義字典3.動態修改字典4.詞性標註及關鍵字提取5.高級使用6.作者的話
0.說在前面微信群討論了jieba,這裡我將學到的jieba分享一波,大家一起來學習一下。
1.結巴分詞三種模式默認模式
s_list=jieba.cut("我來到北京清華大學",cut_all=True)
print("[全模式]:"+'/'.join(s_list))
精確模式
s_list=jieba.cut("我來到北京清華大學",)
print("[默認模式]:"+'/'.join(s_list))
搜尋引擎模式
s_list=jieba.cut_for_search("小米畢業於中科院計算所,後來在日本東京大學留學深造")
print("[默認模式]:"+'/'.join(s_list))
以上結果
[全模式]:我/來到/北京/清華/清華大學/華大/大學
[默認模式]:我/來到/北京/清華大學
[默認模式]:小米/畢業/於/中科/計算/中科院/計算所/中科院計算所/,/後來/在/日本/東京/大學/日本東京大學/留學/深造
jieba默認分詞
test_string=("醫療衛生事業是強國安民的光榮事業,是為實現中國夢奠定基礎的偉大事業。")
words=jieba.cut(test_string)
print('jieba默認分詞效果')
print('/'.join(words))
加載自定義字典
光榮事業 4 nz
中國夢 4 nl
奠定基礎 4 nz
jieba.load_userdict('test_string.txt')
words=jieba.cut(test_string)
print("加載自定義字典後,分詞效果")
print('/'.join(words))
以上結果
jieba默認分詞效果
醫療衛生/事業/是/強國/安民/的/光榮/事業/,/是/為/實現/中國/夢/奠定/基礎/的/偉大事業/。
加載自定義字典後,分詞效果
醫療衛生/事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國/夢/奠定基礎/的/偉大事業/。
t=jieba.suggest_freq(('醫療','衛生'),True)
print(t)
print('/'.join(jieba.cut(test_string, HMM=False)))
t=jieba.suggest_freq(('中國夢'),True)
print(t)
print('/'.join(jieba.cut(test_string, HMM=False)))
以上結果
0
醫療/衛生事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國/夢/奠定基礎/的/偉大事業/。
9
醫療/衛生事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國夢/奠定基礎/的/偉大事業/。
import jieba.posseg as pseg
words=pseg.cut(test_string)
for word, flag in words:
print('%s %s' % (word, flag))
以上結果
醫療 n
衛生事業 n
是 v
強國 n
安民 nr
的 uj
光榮事業 nz
, x
是 v
為 p
實現 v
中國夢 nl
奠定基礎 nz
的 uj
偉大事業 nz
。 x
自定義處理:
自定義字典文件test_string.txt---
光榮事業 4 nz
中國夢 4 nl
奠定基礎 4 nz
issue.py
import jieba
test_string=("醫療衛生事業是強國安民的光榮事業,是為實現中國夢奠定基礎的偉大事業。")
words=jieba.cut(test_string)
print('jieba默認分詞效果')
print('/'.join(words))
jieba.load_userdict('test_string.txt')
words=jieba.cut(test_string)
print("加載自定義字典後,分詞效果")
print('/'.join(words))
output
醫療衛生/事業/是/強國/安民/的/光榮/事業/,/是/為/實現/中國/夢/奠定/基礎/的/偉大事業/。
加載自定義字典後,分詞效果
醫療衛生/事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國/夢/奠定基礎/的/偉大事業/。
問題
觀察以上output會發現,光榮事業跟奠定基礎按照了字典文件進行了合併,但是中國夢並沒有,這是什麼問題呢?
於是得出以下結論:
jieba 分詞自定義詞典只對長詞起作用
對如果定義的詞比jieba自己分的短,則沒有用
那如何解決呢?
直接改變主字典路徑(0.28 之前的版本是不能指定主詞典的路徑的,有了延遲加載機制後,你可以改變主詞典的路徑),不用jieba默認的:
將issue.py中的jieba.load_userdict('test_string.txt')
替換為jieba.set_dictionary('test_string.txt')
此時輸出:
jieba默認分詞效果
醫療衛生/事業/是/強國/安民/的/光榮/事業/,/是/為/實現/中國/夢/奠定/基礎/的/偉大事業/。
加載自定義字典後,分詞效果
醫療/衛生/事業/是/強國安民/的/光榮事業/,/是/為/實現/中國夢/奠定基礎/的/偉大事業/。
如果您覺得本公眾號對您有幫助,歡迎轉發,更多內容請關注本公眾號知識圖譜系列!
需要原始碼的點擊閱讀原文,即可獲取,不要忘記star哦!!!