pyhanlp使用自定义词典进行分词

57 篇文章 1 订阅
1 篇文章 0 订阅
  • 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]

临时添加不会永久修改默认的字典,所以程序关闭后添加的词也就消失了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值