Ansj與hanlp分詞工具對比

adnb34g發表於2019-06-21


一、 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加鎖並新增一次詞庫,效能影響較小:

 


 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2648324/,如需轉載,請註明出處,否則將追究法律責任。

相關文章