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加锁并添加一次词库,性能影响较小: