今天在博客園看了 一個開源的分詞 軟件 “盤古分詞”。下載下來后,發(fā)現(xiàn)是vs 2008 版本的,花了點(diǎn)時間轉(zhuǎn)換成 2005格式的版本。
編譯了以后,跟蹤了一下代碼,代碼應(yīng)該是高手寫的,非常的清晰。只是因?yàn)闆]有文檔,時間有限,不能深入研究它的算法。基本的算法是這樣的:
比如句子:“盤古分詞 簡介: 盤古分詞 是由eaglet 開發(fā)的一款基于字典的中英文分詞組件”
先根據(jù) 非中文符號,對句子進(jìn)行切分,如下:
盤古分詞/ /簡介/: /盤古分詞/ /是由/eaglet/ 開發(fā)的一款基于字典的中英文分詞組件
然后,對上面的每個部分進(jìn)行 切分,切分的算法沒有仔細(xì)看,估計(jì)是最大正向匹配,應(yīng)該不是統(tǒng)計(jì)分詞的算法。
在這個過程中,還對人名進(jìn)行識別。人名識別,用的不是統(tǒng)計(jì)方法,具體的沒有仔細(xì)看。
現(xiàn)在分詞中,準(zhǔn)確率最高的是 統(tǒng)計(jì)分詞,google 的分詞 按照其員工 吳軍 的說法就是統(tǒng)計(jì)方法。所以我估計(jì)盤古分詞的準(zhǔn)確率不會很高。
比如下面的句子:鄧穎超生于1916年
我用中科院的分詞 分出的結(jié)果是 鄧穎超/生于/1986年/,是對的。
用盤古分詞的結(jié)果是 鄧/穎/超生/于/1916/年/ 不是很準(zhǔn)確。
盤古分詞的字典算法是用漢字的第一個字做索引,字典大起來的話,可能效率不是很高,這里可能要改進(jìn)一下。
機(jī)械分詞最好的(我測試過的,個人感覺)
http://www.ftphp.com/scws/demo/v4.php 這個項(xiàng)目也是開源的,字典非常大,估計(jì)用了40萬字,它的字典算法非常的好,用的是 平衡二叉樹。
盤古分詞如果要精度更高,個人認(rèn)為提高字典的速度和質(zhì)量是一個方法,添加一本30萬字以上的字典。一般來說,機(jī)械分詞的準(zhǔn)確性,主要決定于字典。