1. 程式人生 > >常見的中文分詞方法

常見的中文分詞方法

常見的中文分詞方法

1.基於規則的方法(字串匹配、機械分詞)


    定義:按照一定規則將待分析的漢字串與詞典中的詞條進行匹配,找到則切分,否則不予切分。按照匹配切分的方式,主要有正向最大匹配方法、逆向最大匹配方法和雙向最大匹配三種方法。

1.1正向最大匹配方法


    正向最大匹配方法(Maximum Match Method, MM法):假定分詞詞典中的最長詞有i個漢字字元,則用被處理文件的當前字串中的前i個字作為匹配欄位,查詢字典。若字典中存在這樣的一個i字詞,則匹配成功,匹配欄位被作為一個詞切分出來。如果詞典中找不到這樣的一個i字詞,則匹配失敗,將匹配欄位中的最後一個字去掉,對剩下的字串重新進行匹配處理。如此進行下去,直到匹配成功,即切分出一個詞或剩餘字串的長度為零為止。這樣就完成了一輪匹配,然後取下一個i字字串進行匹配處理,直到文件被掃描完為止。
例如:待分析文字為:我們在野生動物。假設詞典中最長詞長度為7。則從前往後取詞7-1:
第1次:“我們在野生動物”,掃描7字詞典,無
第2次:“我們在野生動”,掃描6字詞典,無
。。。。

第6次:“我們”,掃描2字詞典,有
掃描中止,輸出第1個詞為“我們”,去除第1個詞後開始第2輪掃描,即:

第2輪掃描:
第1次:“在野生動物園玩”,掃描7字詞典,無
第2次:“在野生動物園”,掃描6字詞典,無
。。。。

第6次:“在野”,掃描2字詞典,有
依次類推,直到掃描終止。

1.2逆向最大匹配方法


    逆向最大匹配方法(Reverse Maximum Match Method, RMM法):其基本原理與MM發相同,不同的是切分的方向與MM發相反。相對於正向匹配,該方法可以適當提高精確度,即RMM法比MM法誤差要小。
舉個例子:待分析文字為:我們在野生動物。假設詞典中最長詞長度為7。則從後往前取詞7-1:
第1輪掃描:“在野生動物園玩”
第1次:“在野生動物園玩”,掃描7字詞典,無
第2次:“野生動物園玩”,掃描6字詞典,無
。。。。
第7次:“玩”,掃描1字詞典,有
掃描中止,輸出“玩”,單字字典詞加1,開始第2輪掃描
第2輪掃描:“們在野生動物園”
第1次:“們在野生動物園”,掃描7字詞典,無
第2次:“在野生動物園”,掃描6字詞典,無
第3次:“野生動物園”,掃描5字詞典,有
掃描中止,輸出“野生動物園”,開始第3輪掃描
…..
第4輪掃描:“我們”
第1次:“我們”,掃描2字詞典,有
掃描中止,輸出“我們”,整體掃描結束。
逆向最大匹配法,最終切分結果為:“我們/在/野生動物園/玩”

1.3雙向最大匹配方法


    正向最大匹配法和逆向最大匹配法,都有其侷限性,我舉得例子是正向最大匹配法侷限性的例子,逆向也同樣存在(如:長春藥店,逆向切分為“長/春藥店”),因此有人又提出了雙向最大匹配法,雙向最大匹配法。即,兩種演算法都切一遍,然後根據大顆粒度詞越多越好,非詞典詞和單字詞越少越好的原則,選取其中一種分詞結果輸出。
如:“我們在野生動物園玩”
正向最大匹配法,最終切分結果為:“我們/在野/生動/物/園/玩”,其中,兩字詞3個,單字字典詞為2,非詞典詞為1。

逆向最大匹配法,最終切分結果為:“我們/在/野生動物園/玩”,其中,五字詞1個,兩字詞1個,單字字典詞為2,非詞典詞為0。
非字典詞:正向(1)>逆向(0)(越少越好)

單字字典詞:正向(2)=逆向(2)(越少越好)

總詞數:正向(6)>逆向(4)(越少越好)
因此最終輸出為逆向結果。

2.基於統計的方法詞


    其主要思想是,在上下文中,相鄰的字同時出現的次數越多,就越可能構成一個詞。因此,字與字相鄰出現的概率能較好的反應詞的可信度。其步驟一般分為:
(1)建立統計語言模型。
(2)對句子進行單詞劃分,然後對劃分結構進行概率計算,獲得概率最大的分詞方式。

2.1 N-gram模型(N元模型)

    模型基於這樣一種假設,第n個詞的出現只與前面N-1個詞相關,而與其它任何詞都不相關,整句的概率就是各個詞出現概率的乘積 。

P ( t ) = p ( w 1 ) p ( w 2 | w 1 ) p ( w 3 | w 1 w 2 ) . . . p ( w n | w 1 w 2 . . . w n 1 )

其中t為一個句子,由詞 w 1 , w 2 . . . w n 組成。
當n=1時稱為一元模型。此時存在引數空間過大和資料係數嚴重的問題。此時,我們引入馬爾科夫假設:一個詞的出現僅僅依賴於它前面出現有限的一個或者幾個詞。當n=2時,一個詞的出現僅依賴與他前面的一個詞,這種模型稱為二元模型(bigram)。此時,

P ( t ) = p ( w 1 ) p ( w 2 | w 1 ) p ( w 3 | w 2 ) . . . p ( w n | w n 1 )

2.2 HMM模型

    隱馬爾科夫模型是將分詞作為字在字串中的序列標註任務來實現的。其基本思路是:每個字在構造一個特定的詞語時都佔據一個確定的構詞位置,目前每個字最多隻有四個構詞位置。