因爲漢語單字成詞的特色,正向最小匹配和逆向最小匹配通常不多使用。通常說來,逆向匹配的切分精度略高於正向匹配,遇到的歧義現象也較少算法
1、最大正向匹配算法數據庫
一般簡稱爲MM法。其基本思想爲:假定分詞詞典中的最長詞有i個漢字字符,則用被處理文檔的當前字串中的前i個字做爲匹配字段,查找字典。若字典中存在這樣的一個i字詞,則匹配成功,匹配字段被做爲一個詞切分出來。若是詞典中找不到這樣的一個i字詞,則匹配失敗,將匹配字段中的最後一個字去掉,對剩下的字串從新進行匹配處理…… 如此進行下去,直到匹配成功,即切分出一個詞或剩餘字串的長度爲零爲止。這樣就完成了一輪匹配,而後取下一個i字字串進行匹配處理,直到文檔被掃描完爲止。spa
例子:「今天來了許多新同事’」
假設:正向最大匹配方式,最大長度爲5 (即詞庫詞典中最長的詞長度爲5)
今天來了許
今天來了
今天來
今天 >>>>>>> 獲得一個詞:今天
來了許多新
來了許多
來了許
來了
來 >>>>>>>>> 獲得一個詞:來
了許多新同
了許多新
了許多
了許
了 >>>>>>>>> 獲得一個詞:了 (在實際生產環境 「了」會被做爲停用詞過濾掉)
許多新同事
許多新同
許多新
許多 >>>>>>>>> 獲得一個詞:許多
新同事
新同
新 >>>>>>>>> 獲得一個詞:新
同事 >>>>>>>>> 獲得一個詞:同事
最後正向最大匹配的結果是:
/今天/來/了/許多/新/同事/ orm
2、逆向最大匹配文檔
一般簡稱爲RMM法。RMM法的基本原理與MM法相同 ,不一樣的是分詞切分的方向與MM法相反,並且使用的分詞辭典也不一樣。逆向最大匹配法從被處理文檔的末端開始匹配掃描,每次取最末端的i個字符(i字字串)做爲匹配字段,若匹配失敗,則去掉匹配字段最前面的一個字,繼續匹配。相應地,它使用的分詞詞典是逆序詞典,其中的每一個詞條都將按逆序方式存放。在實際處理時,先將文檔進行倒排處理,生成逆序文檔。而後,根據逆序詞典,對逆序文檔用正向最大匹配法處理便可。it
例子:「今天來了許多新同事’」
假設:正向最大匹配方式,最大長度爲5 (即詞庫詞典中最長的詞長度爲5)效率
許多新同事
多新同事
新同事
同事 ====》獲得一個詞:同事
來了許多新
了許多新
許多新
多新
新 ====》獲得一個詞:新
天來了許多
來了許多
了許多
許多 ====》獲得一個詞:許多
今天來了
天來了
來了
了 ====》獲得一個詞:了
今天來
天來
來 ====》獲得一個詞:來
今天 ====》獲得一個詞:今天
最後反向最大匹配的結果是:
/今天/來/了/許多/新/同事/ 基礎
正向最大匹配和反向最大匹配的結果並不必定都相同
例子:’我一我的吃飯’
1.正向最大匹配方式,最大長度爲5
我一我的吃
我一我的
我一個
我一
我 ====》獲得一個詞: 我
一我的吃飯
一我的吃
一我的
一個 ====》獲得一個詞:一個
人吃飯
人吃
人 ====》獲得一個詞:人
吃飯 ====》獲得一個詞:吃飯
最後正向最大匹配的結果是:
/我/一個/人/吃飯/
2.反向最大匹配方式,最大長度爲5
一我的吃飯
我的吃飯
人吃飯
吃飯 ====》獲得一個詞:吃飯
我一我的
一我的
我的 ====》獲得一個詞:我的
我一
一 ====》獲得一個詞:一
我 ====》獲得一個詞:我
最後反向最大匹配的結果是:
/我/一/我的/吃飯/
此次兩種方式的結果就不一致了。 原理
3、雙向匹配方法
將正向最大匹配法與逆向最大匹配法組合。先根據標點對文檔進行粗切分,把文檔分解成若干個句子,而後再對這些句子用正向最大匹配法和逆向最大匹配法進行掃描切分。若是兩種分詞方法獲得的匹配結果相同,則認爲分詞正確,不然,按最小集處理
4、最少切分法
使每一句中切出的詞數最少
5、全切分
全切分要求得到輸入序列的全部可接受的切分形式,而部分切分只取得一種或幾種可接受的切分形式,因爲部分切分忽略了可能的其餘切分形式,因此創建在部分切分基礎上的分詞方法無論採起何種歧義糾正策略,均可能會遺漏正確的切分,形成分詞錯誤或失敗。而創建在全切分基礎上的分詞方法,因爲全切分取得了全部可能的切分形式,於是從根本上避免了可能切分形式的遺漏,克服了部分切分方法的缺陷。
全切分算法能取得全部可能的切分形式,它的句子覆蓋率和分詞覆蓋率均爲100%,但全切分分詞並無在文本處理中普遍地採用,緣由有如下幾點:
1)全切分算法只是能得到正確分詞的前提,由於全切分不具備歧義檢測功能,最終分詞結果的正確性和徹底性依賴於獨立的歧義處理方法,若是評測有誤,也會形成錯誤的結果。
2)全切分的切分結果個數隨句子長度的增加呈指數增加,一方面將致使龐大的無用數據充斥於存儲數據庫;另外一方面當句長達到必定長度後,因爲切分形式過多,形成分詞效率嚴重降低。