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

2、但是自定義詞庫存在局限性,導緻有些情況無效:
比如:“不好用“的正常分詞結果:“不好,用”。
(1)當自定義詞庫”好用“時,詞庫無效,分詞結果不變。
(2)當自定義詞庫
“不好用”時,分詞結果為:“不好用”,即此時自定義詞庫有效。
3、由于版本問題,可能DicAnalysis, ToAnalysis等類沒有序列化,導緻讀取hdfs資料出錯
此時需要繼承序列化接口
1|case class myAnalysis() extends DicAnalysis with Serializable
2|val seg = new myAnalysis()
二、HanLP
同樣可以通過CustomDictionary自定義詞庫:
但是在統計分詞中,并不保證自定義詞典中的詞一定被切分出來,是以使用者可在了解後果的情況下通過
1|StandardTokenizer.SEGMENT.enableCustomDictionaryForcing(true)強制生效
并發問題:
CustomDictionary是全局變量,不能在各節點中更改,否則會出現并發錯誤。
但是HanLP.segment(sentence),隻有一個參數,不能指定CustomDictionary,導緻在各個excutors計算的時候全局CustomDictionary無效。
由于CustomDictionary是全局變量,是以我采用一個方式:每個分區都對CustomDictionary加鎖并添加一次詞庫,性能影響較小: