hanlp 加载远程词库示例

简介: 说明·目前的实现方式是以远程词库的内容重新构建CustomDictionary.trie,demo主要是为了实现同步远程词库,对性能暂不作考虑,对性能要求要以CustomDictionary.dat为基础实现按hanlp作者述 trie后期可能会取消 目前CustomDictionary使用DAT储存词典文件中的词语,用BinTrie储存动态加入的词语,前者性能高,后者性能低之所以保留动态增删功能,一方面是历史遗留特性,另一方面是调试用;来可能会去掉动态增删特性。


说明

·目前的实现方式是以远程词库的内容重新构建CustomDictionary.trie,demo主要是为了实现同步远程词库,对性能暂不作考虑,对性能要求要以CustomDictionary.dat为基础实现

hanlp作者述 trie后期可能会取消

 

目前CustomDictionary使用DAT储存词典文件中的词语,用BinTrie储存动态加入的词语,前者性能高,后者性能低

之所以保留动态增删功能,一方面是历史遗留特性,另一方面是调试用;来可能会去掉动态增删特性。

·ik的方案,远程词库并不含有词性词频等额外信息,这里为了保证词库和复用也保持一致,默认词性为Nature.nz,词频为1 CoreDictionary.Attribute att = new CoreDictionary.Attribute(Nature.nz, 1);

·ik支持多个远程词库,该示例只支持单项

多词库在现方案下,要作任务协作的处理,虽然不难,但改动后和ik原码的差距会比较大

项目只是个参考,因此代码尽量和ik保持一致,一个远程词库,对大部分场景也够用了

 

测试

启动nginx作为远程词库服务

docker run -d --name nginx -p 1888:80 -v $(pwd)/nlp:/usr/share/nginx/html/nlp nginx:1.13.12

 

测试是否成功

 

curl http://127.0.0.1:1888/nlp/words.txt

 

启动服务

编译

mvn clean package -Dmaven.test.skip=true

执行

java -jar target/hanlp-web-2.0.0.RC2.jar

测试url

http://127.0.0.1:1889/hanlp?sentence=小明北飘在北京

词库同步任务间隔1分钟,服务启动后浏览器多刷新几次便能看到区别

如要扩展至本地项目

1 添加依赖

 

<dependency>

<groupId>org.apache.httpcomponents</groupId>

<artifactId>httpclient</artifactId>

<version>4.5.2</version>

</dependency>

2 拷贝ExtDictionary,Monitor

 

3 添加配置resources/hanlp_ext.properties

最后,代码全是抄的,这个项目只是基本的搬运,可能对新手会有点帮助


 

相关文章
|
C# C++
GDAL打开中文路径和读写中文字段的问题
版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/40394839 GDAL不同的版本对中文的默认支持不一,有时候默认支持,有时候需要自己去设置。
1629 0
|
4月前
|
Java
Java实现1.指定关键字搜索 2.指定后缀名搜索 3.文件/文件夹复制
Java实现1.指定关键字搜索 2.指定后缀名搜索 3.文件/文件夹复制
25 1
|
10月前
|
Go
Golang 基础案例集合:中文拼音转换、解析二维码、压缩 zip、执行定时任务
曾经,因为不够注重基础吃了好多亏。总是很喜欢去看那些高大上的东西,却忽略了最基本的东西。然后会错误的以为自己懂的很多,但是其实是沙堆中筑高台,知道很多高大上的架构,但是基础的东西却不太了解。我觉得,可
223 0
|
Python
Python批量提取多目录下多个word文档中的图片
Python批量提取多目录下多个word文档中的图片
166 0
|
Python
python搜索指定类型文件&批量移动文件程序
python搜索指定类型文件&批量移动文件程序
228 0
python搜索指定类型文件&批量移动文件程序
|
自然语言处理
hanlp添加自定义字典的步骤介绍
本篇分享一个hanlp添加自定义字典的方法,供大家参考!总共分为两步:第一步:将自定义的字典放到custom目录下,然后删除CustomDicionary.txt.bin,因为分词的时候会读这个文件。
852 0
HanLP-停用词表的使用示例
停用词表的修改停用词表在“pyhanlpstaticdatadictionary”路径下的“stopwords.txt”文件中,CoreStopWordDictionary.apply方法支持去除停用词。
5416 0
|
自然语言处理 算法
中文分词算法工具hanlp源码解析
词图指的是句子中所有词可能构成的图。如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。
1671 0
|
容器 存储
如何使用Hanlp加载大字典
    问题 因为需要加载一个 近 1G 的字典到Hanlp中,一开始使用了CustomDictionay.add() 方法来一条条的加载,果然到了中间,维护DoubleArraTre 的成本太高,添加一个节点,都会很长时间,本来时间长一点没有关系,只要训练出.bin 的文件,第二次加载就会很快,然而作为以空间换时间的DAT结构,内存消耗很大,预料之内的出现了 1   out of memory: heap size 的问题。
1605 0
|
自然语言处理
在Hanlp词典手动添加未登录词的方式介绍
在使用Hanlp词典进行分词的时候,会出现分词不准的情况,原因是内置词典中并没有收录当前这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作呢,
1110 0