中文斷詞

 中文斷詞(又稱「中文分詞」)是將一段連續的中文文字切分為一個個有意義的詞語的過程,這在資訊檢索、自然語言處理(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))

輸出:

我 / 愛 / 自然語言 / 處理

四、繁體中文斷詞推薦

若你處理的是繁體中文,建議使用:


五、實作時的注意事項:

  1. 自訂詞典:針對專業領域(如醫學、法律),建議加入自訂詞。

  2. 歧義詞處理:例如「研究生命起源」可斷為「研究 / 生命 / 起源」或「研究生 / 命起 / 源」。

  3. 評估準確率:可利用人工標註語料進行比對與精度測試(如 F1-score)。