我正在使用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>
这是什么意思:“生成器对象在0x7ff1d81d2468处的ngrams”? 为什么我既不能检查也不能打印n-gram?
答案 0 :(得分:1)
生成器对象是可迭代的,但只能迭代一次-请参见this answer。当print
试图显示它们时,它显示的是类型而不是实际的“项目”。您可以使用
>>> bigrams=list(ngrams(token,2))
然后他们使用
打印项目>>> print(bigrams)
由于它们现在是列表对象,因此将打印其项目,而不是对其进行“描述”。