中文斷詞(又稱「中文分詞」)是將一段連續的中文文字切分為一個個有意義的詞語的過程,這在資訊檢索、自然語言處理(NLP)和語料庫分析等領域非常重要。由於中文不像英文有明顯的空格分詞,因此斷詞是一個基礎又關鍵的技術。
一、中文斷詞的方法分類:
1. 基於詞典的斷詞(Dictionary-based)
-
使用預先定義好的詞典,從字串中找出匹配的詞語。
-
代表演算法:最大匹配法(MM):
-
正向最大匹配(Forward Maximum Matching, FMM)
-
逆向最大匹配(Backward Maximum Matching, BMM)
-
例子:
原句:「我愛自然語言處理」
詞典:我、愛、自然、語言、處理
正向分詞:「我 / 愛 / 自然 / 語言 / 處理」
2. 基於統計的斷詞(Statistical-based)
-
不依賴詞典,而是根據大量語料計算詞語出現的概率或相鄰字的共現頻率。
-
代表方法:
-
N-gram 模型
-
基於互信息(PMI)與信息熵
-
隱馬可夫模型(HMM)
-
3. 基於機器學習 / 深度學習的斷詞
-
把斷詞視為序列標註(sequence labeling)問題,例如使用標籤 B/M/E/S(詞首/中/尾/單字詞)。
-
模型:
-
CRF(條件隨機場)
-
LSTM + CRF
-
BERT 等預訓練語言模型
-
二、常見中文斷詞工具:
工具名稱 | 特點 | 語言 |
---|---|---|
jieba | Python編寫,易用,支援三種模式(精確、全模式、搜尋引擎模式) | Python |
THULAC | 清華大學開發,分詞速度快,支援詞性標註 | C++ / Python |
Stanford NLP | 支援繁簡中文,基於統計模型(CRF) | Java |
pkuseg | 北大開發,針對不同領域有專屬模型 | Python |
CKIP Tagger | 中研院詞庫,繁體中文斷詞 | Python (支援繁體,準確率高) |
三、示例:使用 jieba
進行斷詞(Python)
import jieba
text = "我愛自然語言處理"
words = jieba.cut(text, cut_all=False) # 精確模式
print(" / ".join(words))
輸出:
我 / 愛 / 自然語言 / 處理
四、繁體中文斷詞推薦
若你處理的是繁體中文,建議使用:
-
Jieba for Traditional Chinese 可自建繁體詞庫
-
NLPIR 或 斷詞小幫手(如中研院開發)
五、實作時的注意事項:
-
自訂詞典:針對專業領域(如醫學、法律),建議加入自訂詞。
-
歧義詞處理:例如「研究生命起源」可斷為「研究 / 生命 / 起源」或「研究生 / 命起 / 源」。
-
評估準確率:可利用人工標註語料進行比對與精度測試(如 F1-score)。