正向最大匹配

2021-06-25 16:07:33 字數 994 閱讀 7801

按照網上資料,中文分詞演算法可分為三大類:基於字典、詞庫匹配的分詞方法;基於詞頻度統計的分詞方法和基於知識理解的分詞方法。基於詞庫的方法,有幾個問題要解決,一是詞庫和資料結構,二是字串在詞庫的匹配方式,三是多種滿足匹配的選擇。正向最大匹配是基於詞庫的分詞方法,基本思想是按照文字的正方向,與詞庫中的詞作比對,如果多個詞匹配,則取最長的詞。有正向,就有逆向,就是反方向讀取語句中的字去比對,據統計,準確率比正向的高。正向最大匹配就拿mmseg4j的**學習下。找到的mmseg4j版本是1.9.1。

首先,類mmseg使用pushbackreader將字元乙個乙個按順序讀取,判斷字元的型別,將字元儲存到乙個stringbuilder中,直到遇到不符規則的字元,將該字元推回到輸入流的前端。如果輸入中有中文字元(其他的日文之類的這裡就不管了),則對中文字元子串進行分詞處理。裡面有3種分詞方式,先看下******seg。

while(read && (data=readnext()) != -1)
}

******seg就是尋找在詞庫中最長的匹配。

public chunk seg(sentence sen) 

return chunk;

}

在遇到葉子節點或匹配不下去時,就是最長的匹配。

public arraylistmaxmatch(arraylisttaillens, char sen, int offset) {

treenode node = head;

for(int i=offset; icomplexseg與******seg相比,每次匹配時,有兩種切分的情況,第一種是從詞庫找到最大匹配的詞,第二種將剩下的待切分的字串的第乙個字作為單字詞。兩種切出乙個新詞後,將剩餘字串繼續切分,直到產生了三個詞後終止迴圈,根據規則選擇最合適的分詞。如果3次切分每次都能在詞庫找到長度大於1的詞,就產生6種切分方式。分詞規則可以看看這裡

mmseg的歧義規則。

中文分詞 正向最大匹配與逆向最大匹配

正向 前向 最大匹配與逆向 後向 最大匹配。中文分詞目前可以分為 規則分詞 統計分詞 混合分詞 規則 統計 這三個主要流派。這次介紹下基於規則的分詞,其是一種機械的分詞方法,主要通過維護詞典,在切分語句時,將語句的每個字串與詞表中的詞逐一進行匹配,找到則切分,否則不予切分。正向最大匹配演算法 這裡需...

分詞之正向最大匹配法

完整資料和 獲取位址github zlhcsm 知識普及 正向最大匹配法 對於輸入的一段文字從左至右 以貪心的方式切分出當前位置上長度最大的詞。正向最大匹配演算法是基於詞典的分詞方法,其分詞原理是 單詞的顆粒度越大,所能表示的含義越確切。1,一般從乙個字串的開始位置,選擇乙個最大長度的詞長的片段,如...

分詞演算法 正向最大匹配和逆向最大匹配實現

假設已經有正向匹配演算法原始碼,則可以將文件進行倒序處理,生成逆序文件,然後根據逆序詞典,對逆序文件使用正向最大匹配法處理即可。同理已經存在逆向最大匹配演算法,則只要將文件倒序處理,正向詞典倒序變為逆序詞典,則可以送入逆向西大匹配演算法中進行分詞處理。class imm object def ini...