天天看點

Ansj與hanlp分詞工具對比

一、Ansj

1、利用DicAnalysis可以自定義詞庫:

Ansj與hanlp分詞工具對比

2、但是自定義詞庫存在局限性,導緻有些情況無效:

比如:“不好用“的正常分詞結果:“不好,用”。

(1)當自定義詞庫”好用“時,詞庫無效,分詞結果不變。

(2)當自定義詞庫

“不好用”時,分詞結果為:“不好用”,即此時自定義詞庫有效。

3、由于版本問題,可能DicAnalysis, ToAnalysis等類沒有序列化,導緻讀取hdfs資料出錯

此時需要繼承序列化接口

1|case class myAnalysis() extends DicAnalysis with Serializable

2|val seg = new myAnalysis()

二、HanLP

同樣可以通過CustomDictionary自定義詞庫:

Ansj與hanlp分詞工具對比

但是在統計分詞中,并不保證自定義詞典中的詞一定被切分出來,是以使用者可在了解後果的情況下通過

1|StandardTokenizer.SEGMENT.enableCustomDictionaryForcing(true)強制生效

并發問題:

CustomDictionary是全局變量,不能在各節點中更改,否則會出現并發錯誤。

但是HanLP.segment(sentence),隻有一個參數,不能指定CustomDictionary,導緻在各個excutors計算的時候全局CustomDictionary無效。

由于CustomDictionary是全局變量,是以我采用一個方式:每個分區都對CustomDictionary加鎖并添加一次詞庫,性能影響較小:

Ansj與hanlp分詞工具對比

繼續閱讀