分享更有价值
被信任是一种快乐

如何使用Hanlp加载大字典

文章页正文上

这篇文章将为大家详细讲解有关如何使用Hanlp加载大字典,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 问题因为需要加载一个 近 1G 的字典到Hanlp中,一开始使用了CustomDictionay.add() 方法来一条条的加载,果然到了中间,维护DoubleArraTre 的成本太高,添加一个节点,都会很长时间,本来时间长一点没有关系,只要训练出.bin 的文件,第二次加载就会很快,然而作为以空间换时间的DAT结构,内存消耗很大,预料之内的出现了out of memory: heap size1的问题。 后来尝试直接加载了1G 的字典,显然更不行。思路阅读了Hanlp的 部分源码,也请教了原作者一部分问题, 就打算从源免费主机域名码入手。初步想法大概是将原始字典split 成多份,然后分别将多份的小字典 训练成 多个小的.bin 文件,再完整的加载到内存中,基于的原则则是:加载两个10M的字典的消耗比一个20M的要小。然后又优化了一部分,现在加载一个大概1G的字典,占内存约3g+ ,已经可以免费主机域名使用了。大概流程修改 CustomDictionary.java 设置一个 hashmap 或者 一个 list 来存储所有的小Dat将所有的dat加载完,这里就不再区分主副字典了。修改Segment.java里面的combineByCustomDictionary 函数,源码中只有一个dat, 这里我们需要选择我们容器中其中某一个dat作为要匹配使用,之前使用的方案是,遍历所有的dat,知道有了匹配,但是这样缺陷很明显,解决不了多个字典匹配同一个词的字串的情况,这里我的考察方案是,字典中的同一个字开始的词条映射到同一个文件,这样不会出现字串问题了。关于“如何使用Hanlp加载大字典”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

相关推荐: Oracle系列中事务有什么用

这篇文章主要为大家展示了“Oracle系列中事务有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle系列中事务有什么用”这篇文章吧。回顾什么是事务?一个不可分割的子操作形成一个整体,该整体要么全部执行…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册