原文鏈接:原文鏈接
分詞算法設(shè)計(jì)中的幾個基本原則:
1、顆粒度越大越好:用于進(jìn)行語義分析的文本分詞,要求分詞結(jié)果的顆粒度越大,即單詞的字?jǐn)?shù)越多,所能表示的含義越確切,如:“公安局長”可以分為“公安 局長”、“公安局 長”、“公安局長”都算對,但是要用于語義分析,則“公安局長”的分詞結(jié)果最好(當(dāng)然前提是所使用的詞典中有這個詞)
2、切分結(jié)果中非詞典詞越少越好,單字字典詞數(shù)越少越好,這里的“非詞典詞”就是不包含在詞典中的單字,而“單字字典詞”指的是可以獨(dú)立運(yùn)用的單字,如“的”、“了”、“和”、“你”、“我”、“他”。例如:“技術(shù)和服務(wù)”,可以分為“技術(shù) 和服 務(wù)”以及“技術(shù) 和 服務(wù)”,但“務(wù)”字無法獨(dú)立成詞(即詞典中沒有),但“和”字可以單獨(dú)成詞(詞典中要包含),因此“技術(shù) 和服 務(wù)”有1個非詞典詞,而“技術(shù) 和 服務(wù)”有0個非詞典詞,因此選用后者。
3、總體詞數(shù)越少越好,在相同字?jǐn)?shù)的情況下,總詞數(shù)越少,說明語義單元越少,那么相對的單個語義單元的權(quán)重會越大,因此準(zhǔn)確性會越高。
下面詳細(xì)說說正向最大匹配法、逆向最大匹配法和雙向最大匹配法具體是如何進(jìn)行的:
先說說什么是最大匹配法:最大匹配是指以詞典為依據(jù),取詞典中最長單詞為第一個次取字?jǐn)?shù)量的掃描串,在詞典中進(jìn)行掃描(為提升掃描效率,還可以跟據(jù)字?jǐn)?shù)多少設(shè)計(jì)多個字典,然后根據(jù)字?jǐn)?shù)分別從不同字典中進(jìn)行掃描)。例如:詞典中最長詞為“中華人民共和國”共7個漢字,則最大匹配起始字?jǐn)?shù)為7個漢字。然后逐字遞減,在對應(yīng)的詞典中進(jìn)行查找。
下面以“我們在野生動物園玩”詳細(xì)說明一下這幾種匹配方法:
1、正向最大匹配法:
正向即從前往后取詞,從7->1,每次減一個字,直到詞典命中或剩下1個單字。
第1次:“我們在野生動物”,掃描7字詞典,無
第2次:“我們在野生動”,掃描6字詞典,無
。。。。
第6次:“我們”,掃描2字詞典,有
掃描中止,輸出第1個詞為“我們”,去除第1個詞后開始第2輪掃描,即:
第2輪掃描:
第1次:“在野生動物園玩”,掃描7字詞典,無
第2次:“在野生動物園”,掃描6字詞典,無
。。。。
第6次:“在野”,掃描2字詞典,有
掃描中止,輸出第2個詞為“在野”,去除第2個詞后開始第3輪掃描,即:
第3輪掃描:
第1次:“生動物園玩”,掃描5字詞典,無
第2次:“生動物園”,掃描4字詞典,無
第3次:“生動物”,掃描3字詞典,無
第4次:“生動”,掃描2字詞典,有
掃描中止,輸出第3個詞為“生動”,第4輪掃描,即:
第4輪掃描:
第1次:“物園玩”,掃描3字詞典,無
第2次:“物園”,掃描2字詞典,無
第3次:“物”,掃描1字詞典,無
掃描中止,輸出第4個詞為“物”,非字典詞數(shù)加1,開始第5輪掃描,即:
第5輪掃描:
第1次:“園玩”,掃描2字詞典,無
第2次:“園”,掃描1字詞典,有
掃描中止,輸出第5個詞為“園”,單字字典詞數(shù)加1,開始第6輪掃描,即:
第6輪掃描:
第1次:“玩”,掃描1字字典詞,有
掃描中止,輸出第6個詞為“玩”,單字字典詞數(shù)加1,整體掃描結(jié)束。
正向最大匹配法,最終切分結(jié)果為:“我們/在野/生動/物/園/玩”,其中,單字字典詞為2,非詞典詞為1。
2、逆向最大匹配法:
逆向即從后往前取詞,其他邏輯和正向相同。即:
第1輪掃描:“在野生動物園玩”
第1次:“在野生動物園玩”,掃描7字詞典,無
第2次:“野生動物園玩”,掃描6字詞典,無
。。。。
第7次:“玩”,掃描1字詞典,有
掃描中止,輸出“玩”,單字字典詞加1,開始第2輪掃描
第2輪掃描:“們在野生動物園”
第1次:“們在野生動物園”,掃描7字詞典,無
第2次:“在野生動物園”,掃描6字詞典,無
第3次:“野生動物園”,掃描5字詞典,有
掃描中止,輸出“野生動物園”,開始第3輪掃描
第3輪掃描:“我們在”
第1次:“我們在”,掃描3字詞典,無
第2次:“們在”,掃描2字詞典,無
第3次:“在”,掃描1字詞典,有
掃描中止,輸出“在”,單字字典詞加1,開始第4輪掃描
第4輪掃描:“我們”
第1次:“我們”,掃描2字詞典,有
掃描中止,輸出“我們”,整體掃描結(jié)束。
逆向最大匹配法,最終切分結(jié)果為:“我們/在/野生動物園/玩”,其中,單字字典詞為2,非詞典詞為0。
3、雙向最大匹配法:
正向最大匹配法和逆向最大匹配法,都有其局限性,我舉得例子是正向最大匹配法局限性的例子,逆向也同樣存在(如:長春藥店,逆向切分為“長/春藥店”),因此有人又提出了雙向最大匹配法,雙向最大匹配法。即,兩種算法都切一遍,然后根據(jù)大顆粒度詞越多越好,非詞典詞和單字詞越少越好的原則,選取其中一種分詞結(jié)果輸出。
如:“我們在野生動物園玩”
正向最大匹配法,最終切分結(jié)果為:“我們/在野/生動/物/園/玩”,其中,兩字詞3個,單字字典詞為2,非詞典詞為1。
逆向最大匹配法,最終切分結(jié)果為:“我們/在/野生動物園/玩”,其中,五字詞1個,兩字詞1個,單字字典詞為2,非詞典詞為0。
非字典詞:正向(1)>逆向(0)(越少越好)
單字字典詞:正向(2)=逆向(2)(越少越好)
總詞數(shù):正向(6)>逆向(4)(越少越好)
因此最終輸出為逆向結(jié)果。