一種利用ngram模型來消除歧義的中文分詞方法

這裏的歧義是指:一樣的一句話,可能有兩種或者更多的切分方法,這些切分結果,有的正確,有的不正確。java

消除歧義的目的就是從切分結果中挑選切分正確的。git

假設咱們要切分句子:結婚的和還沒有結婚的,使用逆向最大匹配正向最大匹配算法的結果以下:github

逆向最大匹配:[結婚, 的, 和, 還沒有, 結婚, 的]
正向最大匹配:[結婚, 的, 和尚, 未結, 婚, 的]

再好比,這幾塊地面積還真不小算法

逆向最大匹配:[這, 幾塊, 地, 面積, 還真, 不小]
正向最大匹配:[這, 幾塊, 地面, 積, 還真, 不小]

這裏就出現了歧義現象,這種歧義現象稱爲交集型歧義。spa

交集型歧義的特色是,其中的一個字既能夠和前面的字結合成詞,也能夠和後面的字結合成詞,如上面所說的和還沒有"中就是這樣的字,既能夠和前面的字結合成「和尚」也能夠和後面的字結合成「還沒有」。還有「地面積」中的,既能夠是地面,也能夠是面積code

那麼咱們該選擇哪個分詞結果呢?內存

咱們能夠利用ngram模型來消除歧義,咱們看第一個例子的分詞過程:get

初始化bigram
bigram初始化完畢,bigram數據條數:1519443

利用bigram爲逆向最大匹配算法的分詞結果進行評分:

二元模型 結婚:的 得到分值:16.970562
二元模型 和:還沒有 得到分值:2.0
二元模型 還沒有:結婚 得到分值:1.4142135
二元模型 結婚:的 得到分值:16.970562

逆向最大匹配:[結婚, 的, 和, 還沒有, 結婚, 的] : ngram分值=37.35534

利用bigram爲正向最大匹配算法的分詞結果進行評分:

二元模型 結婚:的 得到分值:16.970562
二元模型 的:和尚 得到分值:3.0

正向最大匹配:[結婚, 的, 和尚, 未結, 婚, 的] : ngram分值=19.970562

最大分值:37.35534, 消歧結果:[結婚, 的, 和, 還沒有, 結婚, 的]

接着看第二個例子:it

利用bigram爲逆向最大匹配算法的分詞結果進行評分:

二元模型 地:面積 得到分值:1.7320508

逆向最大匹配:[這, 幾塊, 地, 面積, 還真, 不小] : ngram分值=1.7320508

利用bigram爲正向最大匹配算法的分詞結果進行評分:

正向最大匹配:[這, 幾塊, 地面, 積, 還真, 不小] : ngram分值=0.0

最大分值:1.7320508, 消歧結果:[這, 幾塊, 地, 面積, 還真, 不小]

這裏要解釋的是,ngram中的n>1,咱們這裏取2(bi),咱們看到bigram中數據的條數有1519443,bigram須要從人工標註的語料庫中提取,提取方法參考word分詞項目,bigram中的數據格式以下:io

結婚:登記 91
結婚:的 288
地:面積 3
和:還沒有 4
還沒有:結婚 2
的:和尚 9

表示的含義是在人工標註的語料庫中,結婚這個詞後面跟着登記這個詞的出現次數是91次,結婚這個詞後面跟着這個詞的出現次數是288次。

若是ngram中的n爲3,則數據格式以下:

結婚:的:事情 3
結婚:的:人 4
結婚:的:信念 2
結婚:的:決定 13

表示的含義和bigram一致。

經過分析bigram和trigram,咱們知道,在ngram中,n越大,消歧的效果就越好,可是數據也越大,耗費的內存就更多了。

利用ngram模型來消除歧義,依賴人工標註的語料庫,利用了統計學的大數定律,這種方法的缺點在於沒法處理少見的語言現象,以及沒法處理樣本覆蓋不到的狀況。

相關文章
相關標籤/搜索