斷詞工具介紹: (jieba斷詞)

Python斷詞工具(jieba)介紹。

首先安裝jieba套件

pip install jieba

我們執行Jieba網站所提供的程式碼

# encoding=utf-8
import jieba
seg_list = jieba.cut("我來到北京清華大學", cut_all=True) #
print("Full Mode: " + "/ ".join(seg_list))  # 全模式
seg_list = jieba.cut("我來到北京清華大學", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精確模式

得到結果

jieba1

  1. Full mode:把句子中所有的可以成詞的詞語都掃瞄出來, 速度非常快,但是不能解決歧義。
  2. Default Mode:精確模式,是試圖將句子最精確地切開,適合文本分析。
  3. 上面兩點是官網的解釋,簡單來說Full mode會將所有可以當成詞的文字都列出來。Ex:「清華」、「清華大學」、「大學」等。而Default mode則是預設模式,會根據詞頻來斷出最佳解。

 

這邊進行簡單的斷詞

import jieba
seg_list = jieba.cut("我參與大肚山計畫")
print("/ ".join(seg_list))  

希望將「我參與大肚山計畫」斷詞為 “我" “參與" “大肚山計畫",

但是得到結果如下

jieba9

發現斷詞不準確 把"大肚山計畫" 斷成 “大肚" “山計畫"

因此我們需要自定字典 userdict.txt ,內容如下:

大肚山計畫 2 n
參與 2 v

這個格式代表,一個詞佔一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。

詞頻越大代表這個詞越容易被斷出來,詞性N代表名詞、v代表動詞。

槳程式碼新增ㄧ行(載入字典)

import jieba
jieba.load_userdict("userdict.txt")
seg_list = jieba.cut("我參與大肚山計畫")
print("/ ".join(seg_list)) 

輸出結果

jieba10

上面可以看到如此便能成功斷出我們想要的字詞。

如果想看到斷出來的詞的詞性,程式碼如下

import jieba
jieba.load_userdict("userdict.txt")
import jieba.posseg as pseg    
words = pseg.cut("我參與大肚山計畫")  
for word, flag in words:
print('%s %s' % (word, flag))

輸出結果
jieba11

這樣就能得到斷出來的字詞跟詞性。

在此對Jieba斷詞、自訂字典與詞性作ㄧ些簡單介紹。

參考資料

1. https://github.com/fxsjy/jieba