smartcn優化方案

smartcn,基於HMM模型的一套智能分詞器,是ictclas的java簡化版,原理網上已經能找到,也可以看我前面寫的

http://blog.csdn.net/lgnlgn/archive/2010/06/13/5669855.aspx

 

smartcn 通過計算能提高分詞精度(比如 和服 的問題),這也會導致一個語義連貫的短語可能在不同的上下文產生不同的切分結果,因此用來做搜索引擎的分詞器會存在切分不一致的問題,會直接降低搜索的查全率。因此我們當然希望搜索的分詞既具有較高的準確性,但語義完整的詞語不會在不同上下文(搜索框輸入查詢的往往很短)下產生不同的結果。

 

結合smartcn內部原理,我想了幾個針對搜索查詢的優化方案:

1. 首先smartcn計算構詞的跳轉時,標點也參與計算,另外句首句尾分別增加了首尾特殊字符。其實標點和首尾特殊字符可以不需要,統一成一個標點,比如空格,設定一個較大的權值,這樣可以讓一些上下文不一致的機會少一些.

 

2. 正文不被切開比如“橄欖油”,查詢被切開的“橄欖”“油”:把所有smartcn內部的詞,都單獨切一下,如果能切開的,最後如果正文裏有的,把切開的可能也補上,比如“民族英雄”在正文是個詞,把“民族”“影響補上”;另外那些自己想多切的詞也可以記錄下來,比如“集團公司”,這些可以通過最小正向匹配或者其他分詞器來切。同時也可以加入同義詞。

 

3. 正文切開了,查詢沒切開:對分詞結果遍歷檢查連續的詞是不是也能構成一個詞,如果是,多造一個出來。

 

4. 優化詞典,跳轉頻率。smartcn內置的詞庫詞量不大,對於搜索切分來說,不必加入短語,但需要加入專有名詞比如人名地名,網上能找實現了的增加詞庫代碼;smartcn消歧依靠的是跳轉頻率庫,然而我覺得它的單詞庫和跳轉庫似乎不是來源於一個語料。有些詞在跳轉庫中頻率比詞庫的頻率還高....當然收集詞庫也是最難

 

 

 

最後來看看結果

“看李東垣還是看中華人民共和國成立的時候” 加入個新詞“李東垣”可以原始分詞結果:

看/李東垣/還/是/看/中華人民共和國/成立/的/時候/

 

加入一些多分信息和同義詞變成這樣:

看/東垣/李東垣/還是/還/是/看/中華/中國/中華人民共和國/人民/共和國/誕生/成立/的/時候/

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章