千家信息网

如何使用Hanlp加载大字典

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章将为大家详细讲解有关如何使用Hanlp加载大字典,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题因为需要加载一个 近 1G 的字典到Hanlp中,一开始使
千家信息网最后更新 2024年11月19日如何使用Hanlp加载大字典

这篇文章将为大家详细讲解有关如何使用Hanlp加载大字典,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

 问题

因为需要加载一个 近 1G 的字典到Hanlp中,一开始使用了CustomDictionay.add() 方法来一条条的加载,果然到了中间,维护DoubleArraTre 的成本太高,添加一个节点,都会很长时间,本来时间长一点没有关系,只要训练出.bin 的文件,第二次加载就会很快,然而作为以空间换时间的DAT结构,内存消耗很大,预料之内的出现了

out of memory: heap size

1

的问题。 后来尝试直接加载了1G 的字典,显然更不行。

思路

阅读了Hanlp的 部分源码,也请教了原作者一部分问题, 就打算从源码入手。初步想法大概是将原始字典

split 成多份,然后分别将多份的小字典 训练成 多个小的.bin 文件,再完整的加载到内存中,基于的原则则是:加载两个10M的字典的消耗比一个20M的要小。

然后又优化了一部分,现在加载一个大概1G的字典,占内存约3g+ ,已经可以使用了。

大概流程

修改 CustomDictionary.java 设置一个 hashmap 或者 一个 list 来存储所有的小Dat

将所有的dat加载完,这里就不再区分主副字典了。

修改Segment.java里面的combineByCustomDictionary 函数,源码中只有一个dat, 这里我们需要选择我们容器中其中某一个dat作为要匹配使用,之前使用的方案是,遍历所有的dat,知道有了匹配,但是这样缺陷很明显,解决不了多个字典匹配同一个词的字串的情况,这里我的考察方案是,字典中的同一个字开始的词条映射到同一个文件,这样不会出现字串问题了。

关于"如何使用Hanlp加载大字典"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

字典 问题 内存 文件 源码 篇文章 多个 方案 时间 更多 消耗 训练 不行 不错 原始 实用 很大 明显 两个 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全始终高悬 转行学软件开发 6k 网络安全教育国旗下讲话高中 网络软件开发公司叫什么名字 手机软件开发工程师工作内容 快捷录入数据到数据库 红险评级网络安全风险评级 方舟生存进化服务器如何禁用物品 天津智慧安全教育展馆软件开发 软件开发市场容量或变化趋势 国内服务器厂商都有哪家 spring数据库锁 公安局网络技术协警 志强e5620服务器好吗 邮件服务器类型 别找茬原醉天下关闭服务器了吗 数据库上机考题 添加网络安全性选择哪个 大学生对网络安全作出贡献 监控中流媒体服务器 苹果如何移动多个软件开发 国防信息学院信息网络技术 华为针对网络安全的要求 在服务器里面装模组 信息科网络安全与维护 网络安全与工业互联网上市公司 计算机网络技术英文需要多好 怎样发布自建网络数据库 福州亿博网络技术开发有限公司 邮件服务器类型
0