中文分詞技術
中文分詞技術(Chinese Word Segmentation) 指將一個漢字序列切分成一個個單獨的詞。分詞就是將連續的字序列按照一定的規則重新組合成詞序列的過程
目前中文分詞演算法有以下5類:
- 基於詞典的方法
- 基於統計的方法
- 基於規則的方法
- 基於人工智慧技術的方法
- 基於字標註的方法
在業務中,可以使用多種演算法進行比較選擇,其中比較選擇的原則有以下幾點:
- 總詞數越少越好
- 切分單字詞的數量越少越好
- 切分的單個詞的字數越多越好
- 切分結果中非詞典的詞越少越好
基於詞典的方法
其基本原理是按照一定的步長對文件取詞,把結果和詞典進行匹配,匹配成功則分詞成功,否則不予切分。這種方法實現簡單,實用性強,最大的缺點就是識別的成功率極大程度受限於詞庫的完整度
取詞的規則和演算法有許多,如:
- 正向最大匹配法
- 鄰近匹配法
- 逆向最大匹配法
- 雙向最大匹配法
- 最短路徑匹配法
- ...
最大正向匹配法(Maximun Matching,下文稱MM)
其原理是以詞庫的最大長度為初始長度,視窗為1,從左到右對字串進行掃描匹配,匹配不成功則減小視窗
其步驟是:
- 取得詞庫中最長的詞的長度
- 從左到右擷取1得到的長度的字串
- 到詞典中進行匹配
- 匹配成功,則把該字串切分,餘下字串繼續進行2操作
- 匹配不成功,則將該字串去掉最後一個字,餘下字串繼續進行3操作
- 重複上述過程,直到切分出所有詞為止
以“研究生命的起源”為例,假定詞典中的詞包含有:{研究、研究生、生命、命、的、起源},切分步驟如下:
研究生 #第一個詞匹配成功
命的起
命的
命 #第二個詞匹配成功
的起源
的起
的 #第三個詞匹配成功
起源 #第四個詞匹配成功
匹配結果為:“研究生 命 的 起源”
鄰近匹配法(Nearest Nerghbor Matching,下文稱NM)
MM在每次匹配過程中都要進行一次二分搜尋,演算法複雜度太高
NM則是在取到詞典中匹配的第一個詞後,往詞後拼接下一個字,拼接後的新詞在從詞典中尋找,如果詞典中有這個詞,則該詞一定會在鄰近位置
其步驟是:
- 取字串第一個字
- 到詞典中進行匹配
- 匹配不成功,則拼接下一個字,繼續進行2過程
- 匹配成功,則打一個標記,拼接下一個字,繼續到詞典中匹配,直到拼接後的字串不在詞典中,或者長度大於詞典詞的最大長度,則終止匹配,取被標記且字串最多的詞
- 重複上述過程,直到切分出所有詞為止
繼續以“研究生命的起源”進行分詞作為例子,切分步驟如下:
研
研究 #第一個詞第一次匹配成功並標記
研究生 #第一個詞第二次匹配成功並標記
研究生命 #超過詞典中最大長度3,則取詞:研究生
命 #第二個詞第一次匹配成功,並標記
命的 #第二個詞第二次匹配失敗,則取詞:命
的 #第三個詞第一次匹配成功,並標記
的起 #第三個詞第二次匹配失敗,則取詞:的
起源 #第四個詞匹配成功
匹配結果為:“研究生 命 的 起源”
逆向最大匹配法(Reverse Maximum Matching Method,下文稱RMM)
其原理與MM基本相同,只是掃描方向相反,是從右向左掃描,其步驟差不多,不再贅述。
繼續以“研究生命的起源”進行分詞作為例子,切分步驟如下:
的起源
起源 #第一個詞匹配成功
生命的
命的
的 #第二個詞匹配成功
究生命
生命 #第三個詞匹配成功
研究 #第四個詞匹配成功
匹配結果為:“研究生 命 的 起源”
雙向最大匹配法(Bi-directction Matching Method,下文稱Bi-MM)
該方法實際上是一個比較演算法,使用MM和RMM切分後再對結果進行比較,按照上文說的比較原則選擇其中一個最為結果。
例子“研究生命的起源”中
MM的結果為: 研究生 命 的 起源
RMM的結果為: 研究 生命 的 起源
詞數均為4,單字較少的為RMM,則
匹配結果為:研究 生命 的 起源
最短路徑匹配法(Shortest Path Matching Method,下文稱SPM)
該方法實際上也是一個比較演算法,先找出字串中所有可能的詞,每個詞有一個座標,相鄰兩個詞形成一條邊,根據座標既可以得到距離,找出從起點到終點中所有距離加起來最小的路徑,該路徑下所包含的詞就是切分結果
例子“研究生命的起源”中
所有可以切分的詞為:{研究、研究生、生命、命、的、起源}
可能的路徑有:“研究 生命 的 起源”、“研究生 命 的 起源”
若按照詞典排序後的索引值為座標,(只是舉例,可以根據場景設計座標方法)
排序後的詞典為:{命、生命、的、研究、研究生、起源}
則座標分別為:{3、1、2、5}和{4、0、2、5},記錄分別為:6、9,
選擇距離為6的匹配結果
匹配結果為:研究 生命 的 起源
實際上座標有很多種演算法,可以是二維座標,並把每個詞生成一個特徵向量,通過計算向量值達到比較的目的
基於統計的方法
該方法是沒有詞典的,主要思想是通過計算相鄰的字同時出現的次數來決定是否構成詞,次數越多越越有可能構成詞。
假設識別的文字已經統計好了所有可能的切分詞,那麼串聯這些詞的方式就有多種,從維度上理解,即為選擇第一個切分詞,則下一個切分詞也是詞的概率。
主要的統計模型有:
- N元文法模型(N-gram)
- 隱馬爾科夫模型(Hidden Markov Model, HMM)
- 最大熵模型
- ...
假設字串S分成m詞,則可以簡單描述為:S=W1W2W3...Wm
則出現S的概率為:P(S) = P(W1)P(W2|W1)P(W3|W1W2)...P(Wm|W1W2...Wm-1) = \(\prod_{i=1}^{m}\)P(Wi|W1W2...Wi-1)
結合馬爾科夫假設(Markov assumption),Wi 的出現只與之前的 n-1 個詞有關:P(Wi|W1W2...Wi-1) = P(Wi|Wi-n+1Wi-n+2...Wi-1)
則P(S) =\(\prod_{i=1}^{m}\)P(Wi|Wi-n+1Wi-n+2...Wi-1)
根據公式:
- 一元模型(n=1,unigram),P(S)=P(W1)P(W2)...P(Wi)...P(Wm)
- 二元模型(n=2,bigram),P(S)=P(W1)P(W2|W1)...P(Wi|Wi-i)...P(Wm|Wm-1)
- 三元模型(n=3,trigram),P(S)=P(W1)P(W2|W1)P(W3|W2W1)...P(Wi|Wi-i)...P(Wi|Wi-2Wi-1)...P(Wm|Wm-2Wm-1)
- ... ...
在實踐中用的最多的就是bigram和trigram了,而且效果很不錯
高於三元的用的很少,因為訓練它需要更龐大的語料,而且資料稀疏嚴重,時間複雜度高,精度卻提高的不多
基於規則的方法
其基本思想是針對語義、句法的分析對文字進行分詞
具體方法有:
- 有機狀態機
- 語法約束矩陣
- 特徵詞庫
- ...
基於字標註的方法
在2002年之前,自動分詞方法基本上是基於詞(或詞典)的,在此基礎上可進一步分成基於規則和基於統計的兩大類。第一篇基於字標註(Character-based Tagging)的分詞論文發表在2002年第一屆SIGHAN研討會上,當時並未引起學界的重視。一年後,Xue在最大熵(Maximum Entropy,ME)模型上實現的基於字的分詞系統參加了Bakeoff-2003的評測,在As語料庫的封閉測試專案上獲得第二名),然而其OOV 召回率Roov(0.729)卻位居榜首。Xue還在CityU語料庫的封閉測試中獲得第三名,其Roov(0.670)仍然是該項比賽中最高的。儘管在Bakeoff2003中各種分詞技術的優劣尚難分仲伯,但既然未登入詞對分詞精度的影響比分詞歧義至少大5倍以上,我們自然看好這種能獲致最高OOV召回的分詞方法。這一預測果然在Bakeoff2005上得到了證實。
基於字標註的分詞系統在Bakeoff-2005上嶄露頭角。其中Low的系統採用最大熵模型,在四項開放測試中奪得三項冠軍(AS,CityU,PKU)和一項亞軍(MSRA)。Tseng的系統採用條件隨機場模型,在四項封閉測試中取得兩項冠軍(CityU, MSRA)、一項亞軍(PKU)和一項季軍(AS)。到了Bakeoff-2006,基於字的分詞系統已遍地開花。其中,筆者用條件隨機場模型實現的基於字標註的分詞系統,在參加的六項分詞評測中,奪得四個第一(CityU開放,As開放,As封閉,CTB封閉)和兩個第三(CTB開放,CityU封閉)。
以往的分詞方法,無論是基於規則的還是基於統計的,一般都依賴於一個事先編制的詞表(詞典)。自動分詞過程就是通過詞表和相關資訊來做出詞語切分的決策。與此相反,基於字標註的分詞方法實際上是構詞方法。即把分詞過程視為字在字串中的標註問題。由於每個字在構造一個特定的詞語時都佔據著一個確定的構詞位置(即詞位),假如規定每個字最多隻有四個構詞位置:即B(詞首),M (詞中),E(詞尾)和S(單獨成詞),那麼下面句子(甲)的分詞結果就可以直接表示成如(乙)所示的逐字標註形式:
(甲)分詞結果:/上海/計劃/N/本/世紀/末/實現/人均/國內/生產/總值/五千美元/。
(乙)字標註形式:上/B海/E計/B劃/E N/S 本/s世/B 紀/E 末/S 實/B 現/E 人/B 均/E 國/B 內/E生/B產/E總/B值/E 五/B千/M 美/M 元/E 。/S
首先需要說明,這裡說到的“字”不只限於漢字。考慮到中文真實文字中不可避免地會包含一定數量的非漢字字元,本文所說的“字”,也包括外文字母、阿拉伯數字和標點符號等字元。所有這些字元都是構詞的基本單元。當然,漢字依然是這個單元集合中數量最多的一類字元。
把分詞過程視為字的標註問題的一個重要優勢在於,它能夠平衡地看待詞表詞和未登入詞的識別問題。在這種分詞技術中,文字中的詞表詞和未登入詞都是用統一的字標註過程來實現的。在學習架構上,既可以不必專門強調詞表詞資訊,也不用專門設計特定的未登入詞(如人名、地名、機構名)識別模組。這使得分詞系統的設計大大簡化。在字標註過程中,所有的字根據預定義的特徵進行詞位特性的學習,獲得一個概率模型。然後,在待分字串上,根據字與字之間的結合緊密程度,得到一個詞位的標註結果。最後,根據詞位定義直接獲得最終的分詞結果。總而言之,在這樣一個分詞過程中,分詞成為字重組的簡單過程。然而這一簡單處理帶來的分詞結果卻是令人滿意的。