如何在基于Lucene的中文分词器中添加自定义词典(如Paoding、mmseg4j、IK Analyzer)
mmseg4j 默认从当前目录下的 data 目录读取上面的文件。当然也可以指定别的目录,如:new ComplexAnalyzer("./my_dic")。
所以如果想自己定义词典,直接讲词加到wordsXXX.dic里面即可。如果加了自定义的词,要用 simple 或 complex 分词模式是检验它是否有效。因为目前 max-word 模式分出来的词长不会超过2。
未添加自定义词典之前,分词效果如下:
SimplexAnalyzer分词结果是:普|洱|市|孟|连|县|赴|华南理工大学|进行|产|学|研|合作|洽谈|。
ComplexAnalyzer分词结果是:普|洱|市|孟|连|县|赴|华南理工大学|进行|产|学|研|合作|洽谈|。
MaxWordAnalyzer分词结果是:普|洱|市|孟|连|县|赴|华南|理工|大学|进行|产|学|研|合作|洽谈|。
然后我将“普洱市”和“孟连县”加入自定义词典words-my.dic,分词效果如下:
SimplexAnalyzer分词效果为:普洱市|孟连县|赴|华南理工大学|进行|产|学|研|合作|洽谈|。
ComplexAnalyzer分词效果为:普洱市|孟连县|赴|华南理工大学|进行|产|学|研|合作|洽谈|。
MaxWordAnalyzer分词效果为:普|洱|市|孟|连|县|赴|华南|理工|大学|进行|产|学|研|合作|洽谈|。
?
3. 使用IK Analyzer自定义词典
?
IK Analyzer 可以加载扩展停止词典,也可以自定义词典,配置过程也很简单,将自己定义的词写入到文档中,存储为XXX.dic格式,例如ext.dic,放在与stopword.dic同一个目录下,打开IKAnalyzer.cfg.xml,内容如下:
?
<properties> ?
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典-->
<entry key="ext_dict">ext.dic;</entry>
?
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
?
</properties>
将自定义词典在配置文件里面写入即可。
未添加自定义词典之前,分词效果如下:普洱|市|孟|连县|赴|华南理工大学|进行|产学研|合作|洽谈|。然后我将“普洱市”和“孟连县”加入自定义词典ext.dic,分词效果如下:普洱市|孟连县|赴|华南理工大学|进行|产学研|合作|洽谈|。?另外,需要说明的是?imdict-chinese-analyzer不支持自定义词库,自带了两个字典,coredict核心字典和bigramdict词关系字典,这是两个最重要的字典,没有地名和人名的词典,所以要识别人名地名比较麻烦。转载:http://lilongbao.blog.163.com/blog/static/2128760512013689194583/