Python 使用NLTK模块将列表作为输入的Bigram
我有下面的列表,我想获得同等的,但重新排列在bigrams中:Python 使用NLTK模块将列表作为输入的Bigram,python,nltk,Python,Nltk,我有下面的列表,我想获得同等的,但重新排列在bigrams中: filtered_words = ['friends', 'friend, 'know', 'hate', 'love', 'you?', 'like', 'name?'] 然后,应用bigrams函数时,按以下方式: list(bigrams(filtered_words)) 我得到:'list'对象不可调用 我还尝试了listbigrams[过滤的单词],得到了相同的结果。之所以会出现这种情况,是因为您使用了保留名称bigr
filtered_words = ['friends', 'friend, 'know', 'hate', 'love', 'you?', 'like', 'name?']
然后,应用bigrams函数时,按以下方式:
list(bigrams(filtered_words))
我得到:'list'对象不可调用
我还尝试了listbigrams[过滤的单词],得到了相同的结果。之所以会出现这种情况,是因为您使用了保留名称bigrams作为列表。例如,请参见下面的代码
In [9]: bigrams = [bigram for bigram in bigrams(filtered_words)]
In [10]: bigrams(filtered_words)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-10-32c8287373b9> in <module>()
----> 1 bigrams(filtered_words)
TypeError: 'list' object is not callable
首先,列表中的第二项末尾没有“结束”。检查您的情况是否是这样,或者以上只是一个示例。“list”对象不可调用通常意味着,在代码中的某个地方需要一个函数,但通过[]传递列表是可复制的,例如,将列表视为函数。从NLTK的API文档判断,您的代码应该可以工作。确保错误确实来自您的代码片段。
In [11]: import nltk
In [12]: bigrams_list = [bigram for bigram in nltk.bigrams(filtered_words)]
In [13]: bigrams_list
Out[13]:
[('friends', 'friend'),
('friend', 'know'),
('know', 'hate'),
('hate', 'love'),
('love', 'you?'),
('you?', 'like'),
('like', 'name?')]