gpt4 book ai didi

python - 在多个大文件中查找顶部二元组

转载 作者:行者123 更新时间:2023-12-01 03:29:26 24 4
gpt4 key购买 nike

从 nltk“操作方法”指南中,我知道我可以使用 Python 来查找文件中最高 x 个二元组/三元组,如下所示:

>>> import nltk
>>> from nltk.collocations import *
.....
>>> text = inputFile.read()
>>> tokens = nltk.wordpunct_tokenize(text)
>>> bigram_measures = nltk.collocations.BigramAssocMeasures()
>>> finder = BigramCollocationFinder.from_documents(filename)
>>> finder.nbest(bigram_measures.pmi, 10)

问题是我必须将文件加载到内存中,这仅在目前有效,因为我已将所需的文本分割成多个较小的 block 。我绝对没有足够的内存来将所有文件合并到一个文件或一个字符串中进行搜索(总大小约为 25GB)。因此,如果我想搜索前 X 个二元组,我必须通过文件来执行此操作,但随后我会遇到二元组在输出中重复的问题。我还会错过其他二元组,这些二元组共同出现在前 X 个二元组中,但不会出现在我的其他文件中。

有什么方法可以使用 nltk 库来完成此任务,或者这只是我必须解决的限制?或者是否有其他库或方法可以实现相同的目标?

最佳答案

将数据拆分为 N 个文件,使得 N 足够大,可以将每个文件读入 RAM 并进行整体处理。 N=25或50可能是一个不错的选择。对于每个文件,找到 X 个最常见的二元组并将它们组合在单个列表 L0 中。然后选择列表中最小的频率 f0。

在第二遍时,再次检查所有文件并收集任何文件中频率至少为 f0/N 的二元组(这使它们有希望进入前 X)。

最后,计算收集到的每个二元组的总频率,将其插入L0,并选择前X个二元组。

如果每个文件中的二元组频率遵循 Zipf 定律,您应该能够使用有限的 RAM 提取前 X 个二元组。

关于python - 在多个大文件中查找顶部二元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41094134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com