繁体   English   中英

Pymongo和n-gram搜索

[英]Pymongo and n-grams search

我在mongo db中有一些文档。 我正在使用Pymongo来访问并插入到此集合中。 我想做的是:

在python中,使用map reduce可以有效查询整个语料库中使用-gram短语的次数。

我知道如何对单个单词执行此操作,但是努力将其扩展为n-gram。 我不想做的是使用NLTK库进行标记化,然后运行map reduce。 我相信这将使解决方案失去效率。 谢谢。

如果您想要一个高效的系统,则需要提前分解n-gram并将它们编入索引。 当我编写5-Gram实验时 (不幸的是,由于必须归还硬件,后端现在已脱机),我创建了word => integer id的映射,然后将十六进制ID序列存储在MongoDB中集合的键字段(例如[10, 2] => "a:2" )。 然后,将大约3.5亿5克5克随机分布到10台运行MongoDB的计算机上,从而为整个数据集提供了亚秒级的查询时间。

您可以采用类似的方案。 带有如下文件:

{_id: "a:2", seen: [docId1, docId2, ...]}

您将能够找到给定n元语法的位置。

更新:实际上,有一个小小的修正:在上线的系统中,我最终使用了相同的方案,但是以二进制格式对n-gram密钥进行编码以提高空间效率(〜350M是很多 5克!),但是否则机制都是一样的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM