我不能用 Python3 对一个句子进行二连词

I can't bigram a sentece with Python3

我正在使用 python3,我正在训练一个句子的二元语法,但口译员给了我一个我无法理解的问题。

~$ python3
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
>>> from nltk import word_tokenize
>>> from nltk.util import ngrams
>>> text = "Hi How are you? i am fine and you"
>>> token=nltk.word_tokenize(text)
>>> bigrams=ngrams(token,2)
>>> bigrams
<generator object ngrams at 0x7ff1d81d2468>
>>> print (bigrams)
<generator object ngrams at 0x7ff1d81d2468>

什么意思:"generator object ngrams at 0x7ff1d81d2468"? 为什么我既不能检查也不能打印 n-gram?

生成器对象是可迭代的,但只能迭代一次 - 参见 this answer。当 print 试图显示它们时,它显示的是它们的类型而不是它们实际的 'items'。您可以使用

将生成器对象转换为列表
>>> bigrams=list(ngrams(token,2))

他们使用

打印他们的项目
>>> print(bigrams)

因为它们现在是一个列表对象,所以它们的项目被打印而不是 'description'。