Python自然語言處理(二):使用jieba進行中文斷詞

Yanwei Liu
5 min readJan 6, 2020

原本打算用英文寫的,可是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 權重最大的關鍵詞,默認值為20
print(tags)

平行計算

#目前不支援Windowsimport jieba
jieba.enable_parallel(4) # 開啟並行分詞模式,參數為並行進程數jieba.disable_parallel() # 關閉並行分詞模式

參考資料:

--

--