1、Ansj併發
一、利用DicAnalysis能夠自定義詞庫:性能
二、可是自定義詞庫存在侷限性,致使有些狀況無效:blog
好比:「很差用「的正常分詞結果:「很差,用」。繼承
(1)當自定義詞庫」好用「時,詞庫無效,分詞結果不變。接口
(2)當自定義詞庫ci
「很差用」時,分詞結果爲:「很差用」,即此時自定義詞庫有效。it
三、因爲版本問題,可能DicAnalysis, ToAnalysis等類沒有序列化,致使讀取hdfs數據出錯io
此時須要繼承序列化接口class
1|case class myAnalysis() extends DicAnalysis with Serializable 變量
2|val seg = new myAnalysis()
2、HanLP
一樣能夠經過CustomDictionary自定義詞庫:
可是在統計分詞中,並不保證自定義詞典中的詞必定被切分出來,所以用戶可在理解後果的狀況下經過
1|StandardTokenizer.SEGMENT.enableCustomDictionaryForcing(true)強制生效
併發問題:
CustomDictionary是全局變量,不能在各節點中更改,不然會出現併發錯誤。
可是HanLP.segment(sentence),只有一個參數,不能指定CustomDictionary,致使在各個excutors計算的時候全局CustomDictionary無效。
因爲CustomDictionary是全局變量,所以我採用一個方式:每一個分區都對CustomDictionary加鎖並添加一次詞庫,性能影響較小: