扫描词汇中的大型文本语料库计数短语

时间:2013-03-27 18:44:25

标签: python mysql text-mining

我需要扫描大约150万个文本文档的语料库,并匹配长度在1到4之间的任何词组,而不是大约180万个词组的词汇。

从每个文本文件中提取单词n-gram不是问题,并且非常快;瓶颈在于对词汇的检查。

我的词汇表存储在MySQL表中,正确编入索引,我正在查询每个短语:

SELECT (1) FROM vocab WHERE phrase=%s;

整个事情慢慢地发展。任何优化想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

我的建议是将整个词汇量读入内存一次,然后你就可以很快地对它进行一些查询。您可以将其投放到setdict,或者如果您感觉有点想象,您甚至可以使用布隆过滤器来检查是否包含。我对这一点有偏见,但如果你选择走这条路,我建议pybloomfiltermmap

如果你使用布隆过滤器,一个优点是它比在内存中存储set要紧凑得多,而且它们非常快。它们确实对假阳性率有一定的限制,并且在实践中可以控制在可接受的水平。