Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文档中提取n-gram并计算其频率_Python_Nltk_N Gram - Fatal编程技术网

Python 从文档中提取n-gram并计算其频率

Python 从文档中提取n-gram并计算其频率,python,nltk,n-gram,Python,Nltk,N Gram,我想从文件中提取n-gram,然后计算它们的频率。我的问题是,他们没有实际产出,只是说: <generator object ngrams at 0x7fad3d528580> Process finished with exit code 0 当前程序正在返回一个生成器对象,其行为类似于迭代器。也就是说,它被设计为使用for循环等进行迭代以生成单个值。打印它们通常只返回默认的、模糊的Python表示 生成器函数允许您声明一个行为类似于迭代器的函数,即它可以在for循环中使用

我想从文件中提取n-gram,然后计算它们的频率。我的问题是,他们没有实际产出,只是说:

<generator object ngrams at 0x7fad3d528580>

Process finished with exit code 0

当前程序正在返回一个生成器对象,其行为类似于迭代器。也就是说,它被设计为使用
for
循环等进行迭代以生成单个值。打印它们通常只返回默认的、模糊的Python表示

生成器函数允许您声明一个行为类似于迭代器的函数,即它可以在for循环中使用

为了利用它的值,您可以使用
for
循环遍历生成器对象,并
打印出每个项


但是,如中所述,更好的选择是将generator对象传递给
list()
构造函数,该构造函数将自动遍历该对象并返回一个更有用且可打印的列表。

将最后一行更改为
print(list(esBigrams))
。在这里,您可以了解列表和生成器之间的区别:基本上,生成器就像一个列表,但它只在您迭代下一个对象时计算,而不必让代码等待所有元素都计算出来。
import nltk, re, string, collections
from nltk.util import ngrams
with open("corpus.txt", "r", encoding='latin-1') as file:
 text = file.read()
 text = text[0:100]

tokenized = text.split()
esBigrams = ngrams(tokenized, 2)
esBigramFreq = collections.Counter(esBigrams)
esBigramFreq.most_common(10)
print(esBigrams)