HanLP的自定义词典使用方式与注意事项介绍

简介: 对于词典,直接加载文本会很慢,所以HanLP对于文本文件做了一些预处理,生成了后缀名为.txt.bin的二进制文件。

 

【环境】python 2.7

 

方法一:使用pyhanlp,具体方法如下:

pip install pyhanlp  # pyhanlp

进入python安装包路径,如

/usr/lib/python2.7/site-packages/pyhanlp/static/

http://hanlp.properties.in改名为备份文件。

 

mv hanlp.properties.in hanlp.properties.in.bak

 

修改hanlp.properties

 

vim hanlp.properties

 

CustomDictionaryPath修改为你自定义的词典路径,如:

 

CustomDictionaryPath=data/dictionary/custom/self_define_dict.txt; 现代汉语补充词库.txt; 全国地名大全.txt; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns; data/dictionary/person/nrf.txt nrf;

 

保存。

 

python脚本,调用pyhanlp示例:

 

from pyhanlp import *

print HanLP.segment("在你想要放弃的时候,想想是什么让你当初坚持走到了这里。总是有人要赢的,那为什么不能是我")

 

运行脚本后,系统会检查配置文件hanlp.properties,读取词库的路径,对于自定义词典,第一次会重新生成二进制文件(以后直接用)。

 

方法二:使用grpc调用hanlp(python调用java包常用手段)

 

方法三:使用hanlp调用jar包(官方文档有说明),自定义词典没设置成功。

 

注意事项:

 

对于词典,直接加载文本会很慢,所以HanLP对于文本文件做了一些预处理,生成了后缀名为.txt.bin的二进制文件。

这些二进制文件相当于缓存,避免了每次加载去读取多个文件。

通过这种txt和bin结合的方式,HanLP一方面方便用户编辑查看词典,另一方面bin方便加载,这种方式可谓是兼二者之长,设计上堪称典范。

 

打开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,添加一些词语。比如里面加上”兰陵笑笑生“。

 

随便编一个程序测试一下

 

 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);

    }

相关文章
|
3月前
|
自然语言处理 IDE 前端开发
5个可保存的在线代码片段平台推荐-变成自己的代码词典库
5个可保存的在线代码片段平台推荐-变成自己的代码词典库
51 0
|
11月前
|
自然语言处理 搜索推荐 Python
jieba分词器(应用及字典的补充)及文档高频词提取实战
jieba分词器(应用及字典的补充)及文档高频词提取实战
|
自然语言处理 开发工具 网络架构
自定义词库|学习笔记
快速学习自定义词库。
127 0
自定义词库|学习笔记
|
开发者
自定义词库 | 学习笔记
快速学习自定义词库
58 0
自定义词库 | 学习笔记
|
自然语言处理
hanlp添加自定义字典的步骤介绍
本篇分享一个hanlp添加自定义字典的方法,供大家参考!总共分为两步:第一步:将自定义的字典放到custom目录下,然后删除CustomDicionary.txt.bin,因为分词的时候会读这个文件。
856 0
HanLP-停用词表的使用示例
停用词表的修改停用词表在“pyhanlpstaticdatadictionary”路径下的“stopwords.txt”文件中,CoreStopWordDictionary.apply方法支持去除停用词。
5417 0
|
JavaScript C++ 自然语言处理
VS Code英汉词典v0.0.8: 批量翻译文件部分命名
实现VS code插件, 基于本地词典数据, 提供英汉翻译功能, 添加批量命名翻译功能. Improve vscode extension to translate English word or phrase to Chinese, by supporting translating all identifiers in a file.
1674 0
|
自然语言处理 应用服务中间件 nginx
hanlp 加载远程词库示例
说明 ·目前的实现方式是以远程词库的内容重新构建CustomDictionary.trie,demo主要是为了实现同步远程词库,对性能暂不作考虑,对性能要求要以CustomDictionary.dat为基础实现 按hanlp作者述 trie后期可能会取消   目前CustomDictionary使用DAT储存词典文件中的词语,用BinTrie储存动态加入的词语,前者性能高,后者性能低 之所以保留动态增删功能,一方面是历史遗留特性,另一方面是调试用;来可能会去掉动态增删特性。
1187 0
|
自然语言处理 Java
Hanlp1.7版本的新增功能一览
Hanlp1.7版本在去年下半年的时候就随大快的DKH1.6版本同时发布了,截至目前1.7大版本也更新到了1.7.1了。本篇分别就1.7.0和1.7.1中新增的功能做一个简单的汇总介绍。
2225 0
|
机器学习/深度学习 自然语言处理 Java
hanlp提取文本关键词的使用方法记录
如何在一段文本之中提取出相应的关键词呢? 之前有想过用机器学习的方法来进行词法分析,但是在项目中测试时正确率不够。于是这时候便有了 HanLP-汉语言处理包 来进行提取关键词的想法。
1763 0