对于词典,直接加载文本会很慢,因此HanLP对于文本文件作了一些预处理,生成了后缀名为.txt.bin的二进制文件。 这些二进制文件至关于缓存,避免了每次加载去读取多个文件。 经过这种txt和bin结合的方式,HanLP一方面方便用户编辑查看词典,另外一方面bin方便加载,这种方式可谓是兼两者之长,设计上堪称典范。java
打开hanlp的data目录data\dictionary\custom,删除全部的.txt.bin文件,这样一来,HanLP下次加载词典时会自动构建.txt.bin,这样一来,你对文本文件所作的更改才会生效。对于HanLP中的字典,每次更改以后,都必须从新生成bin才能够,不然不会生效。 实际上,这种方式不够智能,能够改进为检查文件日期的方式,若是当前目录下的最新的词典文件比bin文件新,那么bin文件失效,须要从新构建bin。 构建bin的过程是比较缓慢的,它须要把全部的相关文本文件中的词语合并到一个里面,每次构建大概须要2min,构建完成以后下次启动就很快了。缓存
更改hanlp.properties,添加mine.txt.测试
#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用“文件名 词性”形式则表示这个词典的词性默认是该词性。优先级递减。 #另外data/dictionary/custom/CustomDictionary.txt是个高质量的词库,请不要删除 CustomDictionaryPath=data/dictionary/custom/mine.txt; CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf
在data/dictionary/custom/目录下新建mine.txt,添加一些词语。好比里面加上”兰陵笑笑生“。设计
随便编一个程序测试一下code
List<Term> res = HanLP.segment("兰陵笑笑生笑道:你他娘的真是个天才"); System.out.println(res);//[兰陵笑笑生/nr, 笑/v, 道/q, :/w, 你/r, 他/r, 娘/n, 的/uj, 真/d, 是/v, 个/q, 天才/n] for (String i : HanLP.Config.CustomDictionaryPath) { System.out.println(i); }