核心概念#

分詞問題不僅存在於中文,也存在於日語、韓語、泰語等亞洲語言,甚至英語的手寫體識別也需要分詞。本章以中文分詞為例,說明如何用統計方法解決這個問題。

中文分詞方法的演變#

查字典法#

  • 最早由北京航空航天大學的梁南元教授提出,做法是從左到右掃描句子,遇到字典中的詞就標識出來,遇到複合詞就找最長匹配
  • 這個方法可以解決七八成以上的分詞問題,但遇到歧義性問題就無能為力
  • 例如「發展中國家」應分為「發展-中國-家」還是「發展-中-國家」,查字典法無法判斷

最少詞數的分詞理論#

  • 哈爾濱工業大學的王曉龍博士提出:一句話應分成數量最少的詞串
  • 但這種方法在遇到二義性(雙重理解意思)時同樣失效

統計語言模型分詞#

  • 1990 年前後,清華大學的郭進博士率先用統計語言模型成功解決了分詞二義性問題,將錯誤率降低了一個數量級
  • 核心思想:假設一個句子 $S$ 有多種分詞方式,最好的分詞方式應使分詞後句子出現的概率最大
  • 這可以視為一個動態規劃(Dynamic Programming)問題,利用維特比算法(Viterbi Algorithm)快速找到最佳分詞

統計語言模型分詞的關鍵洞見:不需要人為制定複雜的語法規則,只要用概率模型計算每種分詞結果的可能性,選最大者即可。

分詞的局限與實務#

  • 分詞準確率無法達到百分之百,因為語言模型本質上是依照「大眾的想法」,在特定情境下可能出錯
  • 不同應用需要不同的分詞系統,Google 早期也是直接使用外部通用分詞器,後來才針對搜索需求自行開發
  • 中文分詞的技術也被應用到英語手寫體識別中

延伸閱讀:如何衡量分詞的結果#

分詞的一致性#

  • 不同人對同一句話可能有不同的分詞方式,例如「清華大學」有人認為是一個詞,有人認為應分為「清華-大學」
  • 1994 年的實驗顯示,30 名清華大學本科生對同樣的句子,分詞一致性只有 85%–90%
  • 當統計語言模型被廣泛應用後,不同分詞器之間的差異遠小於不同人之間的差異

詞的顆粒度和層次#

  • 分詞的不一致性主要來自人們對詞的顆粒度認知不同
  • 解決方案:建立基本詞表複合詞表,先用基本詞表進行小顆粒度分詞,再用複合詞表進行第二次分詞,由不同應用自行決定使用哪個層次
  • 分詞錯誤可分為越界型錯誤(如「北京大學生」分成「北京大學-生」)和覆蓋型錯誤(如「賈里尼克」拆成四個字)

本章小結#

中文分詞以統計語言模型為基礎,經過幾十年的發展和完善,今天基本上可以看做是一個已經解決的問題。分詞器之間的差別主要在於數據的使用和工程實現的精度。