基于python的分词算法的实现(3) - 建立字典

这篇博客介绍了如何使用Python建立分词算法的字典和短语词典。首先,字典以分块方式存储,包含Header、Index和Blocks,以减少内存消耗。然后,通过处理大量新闻数据来构建短语词典,初始尝试导致高内存使用,通过优化策略如周期性存盘,成功降低了内存占用。最终,短语词典包含约7.3m个项,经过频率筛选,词典体积减小到10mb左右。
摘要由CSDN通过智能技术生成

单词词典里面基本只要保存词的词性的频率,另外考虑到一次性把词典读入内存的消耗太大,必须把词典分块,当有需求的时候才将特定

的块装载进内存中。在这样的需求下,设计采用如下结构的词典:

+-------------+
| Header      | -----> 包括词数量,总频率,索引开头位置,索引大小等
+-------------+
| Index       | -----> 每个索引项对应于一个词表块。索引项指示了词表块的位置大小等信息。
+-------------+
| Blocks      | -----> 以首字分区的块。
+-------------+


建立完成的单词词典有4Mb,180k+的单词。大概足够了。

接下来要建立短语词典了。这个稍微麻烦一点。手头上的材料有一大堆网上的新闻。原则上把这些新闻进行分词,然后把两两邻接的词拼凑在一起,再将结果进行统计就可以了。但麻烦在于手头上没有好的分词算法,而且如果按照某一种分词方法对句子分词,必然使得到的短语字典的统计概率和该分词算法的行为高度一致,就失去了一般性。考虑再三,决定不采用任何方法进行预分词。直接暴力一点,把句子里所有可能的分词都找出来,一起统计其概率。在大量语料的帮助下,不合理的短语或词的组合应该有较低的出现概率,可以在最终根据概率大小进行筛选的时候把它们去掉。

第一版短语字典选用了大概130M作用的新闻作为语言来源。python的效率实在称不上高,第一次运行用了30+分钟,内存使用更是惊人的达

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值