在数百万个使用Python的文档中找到最常见的句子/短语



我有大约500万个文档。一份文件由许多句子组成,可能有一到五页长。每个文档都是一个文本文件。

我必须在所有文档中找到最常见的句子/短语(至少5个单词长)。我该如何做到这一点?

对于正好5个单词长的短语,这是相对简单的Python(可能需要大量内存)。对于长度不等的短语,情况就有点复杂了——&可能需要额外的说明,你想找到什么样的长短语。

对于5个单词(又名'5-gram')的情况:

对语料库进行一次遍历,生成所有5-g, &统计它们的出现次数(比如进入Counter),然后报告top-N。

例如,假设docs是所有标记文本的Python序列,其中每个单独的项都是字符串单词列表。然后大约:

from collections import Counter
ngram_size = 5
tallies = Counter()
for doc in docs:
for i in range(0, len(doc)-4):
ngram = tuple(doc[i:i+5])
tallies[ngram] += 1
# show the 10 most-common n-grams
print(tallies.most_common(10))

如果你还想考虑更长的短语,那就有点棘手了——但请注意,任何这样的短语都必须从你已经找到的5克开始。

所以你可以考虑逐渐重复以上,为6克,7克等

但是为了优化内存/工作量,您可以添加一个步骤来忽略所有n-gram,这些n-gram不是您从早期运行中选择的前n个候选中的一个开始的。(例如,在6克的跑步中,上面的+=线将以6克开始为条件-与您已经考虑感兴趣的少数5克中的一个。)

进一步,当(例如)前8个g的计数已经低于相关的前n个短n-g的计数时,您将停止寻找更长的n-g。(也就是说,当任何更长的n个图的出现频率都肯定低于你感兴趣的前n个图的出现频率。)

相关内容

  • 没有找到相关文章

最新更新