- ubuntu 18.04.4 LTS
- python 3.6.9
- pyhanlp 0.1.66
- hanlp jar 1.7.8
- hanlp data 1.7.8
在没有使用自定义词典时:
>>> from pyhanlp import HanLP
>>> print(pyhanlp.HanLP.segment('大数据技术'))
[大/a, 数据/n, 技术/n]
可以发现’大’和’数据’被分开了,而我们希望’大数据’是一个词,这时就需要我们自定义词典,将’大数据’放在词典中
通过自定义词典
创建词典
# 为了后面方便,这里我放在pyhanlp的默认字典路径下,其他路径也是可以的
>>> vim /home/microfat/.local/lib/python3.6/site-packages/pyhanlp/static/data/dictionary/custom/my.txt
大数据
数据
据
编辑配置文件
>>> hanlp --version
jar 1.7.8: /home/microfat/.local/lib/python3.6/site-packages/pyhanlp/static/hanlp-1.7.8.jar
data 1.7.8: /home/microfat/.local/lib/python3.6/site-packages/pyhanlp/static/data
config : /home/microfat/.local/lib/python3.6/site-packages/pyhanlp/static/hanlp.properties
上面输出的最后一行就是config文件的路径
编辑config文件
>>> vim /home/microfat/.local/lib/python3.6/site-packages/pyhanlp/static/hanlp.properties
CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns; my.txt IT;data/dictionary/person/nrf.txt nrf;
词典路径用分号分割,并且一定注意,词典路径前有空格代表与上一个词典在同意目录下.词典后可自定义词性,这里我自定义成IT这个词性
删除缓存文件
>>> rm CustomDictionary.txt.bin
测试
>>> from pyhanlp import HanLP
>>> print(pyhanlp.HanLP.segment('大数据技术'))
[大数据/IT, 技术/n]
由于最长匹配算法,所以并没有按照词典中的’数据’和’据’进行分词
通过命令
如果只是想临时添加一些词,不想修改文件,可以用下面的方法:
>>> from pyhanlp import HanLP JClass
>>> CustomDictionary = JClass("com.hankcs.hanlp.dictionary.CustomDictionary")
>>> CustomDictionary.add("大数据", "IT 1024")
True
# insert方法会覆盖已经存在的词, add方法会跳过已经存在的词
# CustomDictionary.remove("大数据");
>>> print(CustomDictionary.get('大数据'))
IT 1024
>>> print(HanLP.segment('大数据技术'))
[大数据/IT, 技术/n]
临时添加不会永久修改默认的字典,所以程序关闭后添加的词也就消失了