Member-only story
Python自然語言處理(二):使用jieba進行中文斷詞
5 min readJan 6, 2020
fxsjy/jieba
结巴中文分词. Contribute to fxsjy/jieba development by creating an account on GitHub.
github.com
原本打算用英文寫的,可是jieba是在斷中文,還用英文寫就有點怪XD
Jieba提供了三種分詞模式:
- 精確模式:試圖將句子最精確地切開,適合文本分析。
- 全模式:把句子中所有可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義。
- 搜尋引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
安裝
pip install jieba
使用範例
設定詞庫
#下載繁體中文詞庫後,使用set_dictionary()方法匯入jieba.set_dictionary('dict.txt.big') #不一定要設定詞庫,內建的效果也不錯
斷詞模式
#默認使用精確模式(一般直接使用精確模式即可)
import jieba
text = '我來到北京清華大學'
print('預設:', '|'.join(jieba.cut(text, cut_all=False, HMM=True)))
print('全關閉:', '|'.join(jieba.cut(text, cut_all=False, HMM=False)))
print('全關閉:', '|'.join(jieba.cut(text, cut_all=True, HMM=True)))#輸出
預設: 我|來到|北京|清華|大學
全關閉: 我|來到|北京|清華|大學
全關閉: 我來|來到|北京|清華|華大|大學
搜尋引擎: 我|來到|北京|清華|大學
使用者字典:
有時候,一些專業詞彙jieba無法進行處理,我們可以自建詞表,讓jieba學著處理
#建立userDict.txt
#並在檔案中加入詞彙和詞頻,如下所示高雄發大財 3000#回到程式:
import jieba
jieba.load_userdict('userDict.txt')
print(jieba.lcut(text))
比較詞庫和使用者字典:
jieba.set_dictionary('dict.txt.big.txt') #詞庫
jieba.load_userdict('user_dict.txt') #自定義使用者字典
詞性標記POS:
import jieba
import jieba.posseg as pseg #使用pseq進行詞性標記
text = '我來到北京清華大學'
words = pseg.cut(text)
for word, flag in words:
print(word, flag)透過以下網站了解詞性含意https://www.cnblogs.com/chenbjin/p/4341930.html
基於TF-IDF的關鍵字抽取
import jieba
import jieba.analyse
text = '總統蔡英文論文風波延燒後,最新民調今日出爐!據親藍民調公布結果,蔡英文支持度45%,遙遙領先韓國瑜的33%,兩人差距擴大到12個百分點。顯示論文門風波,並未重創小英聲望。'
tags = jieba.analyse.extract_tags(text, topK=5)
#topK 為返回幾個TF/IDF 權重最大的關鍵詞,默認值為20print(tags)
平行計算
#目前不支援Windowsimport jieba
jieba.enable_parallel(4) # 開啟並行分詞模式,參數為並行進程數jieba.disable_parallel() # 關閉並行分詞模式
參考資料: