我需要检查句子的主语是否存在于列表中,但是此错误存在一些问题,我不知道该如何解决
def __init__(self, user_input):
personal_words = ["I", "ME", "US"]
er = ["YOU"]
pos = pop(user_input)
for token in pos:
if token.dep == nsubj:
subject = token
print(subject)
if any(item in subject for item in personal_words):
personal()
elif any(item in subject for item in er):
era()
else:
n_personal()
TypeError:“ spacy.tokens.token.Token”类型的参数不可迭代
答案 0 :(得分:0)
由于它应该是可迭代的,所以我认为问题与内部版本可能特定于版本的某些错误有关(顺便说一句,请下次再分享一些有关您的环境的信息,即您所使用的不同框架的版本) 搜索后,我发现了这似乎与之相关的
TypeError: 'spacy.tokens.token.Token' object is not iterable
只需复制粘贴建议的解决方案
@larry0123du I solved this by installing Spacy==1.9 (I was using Spacy==2.0 before)
if word is "spacy.tokens.token.Token",you can chage it to "word.text" in Spacy==2.018 @larry0123du @ @brandenchan
答案 1 :(得分:0)
这不是错误-Token
对象是单个令牌数据的容器对象,而不是可重复的序列。在您的代码中,您正在检查item in subject
,它期望subject
(令牌)是一个序列。如果要检查令牌文本是否与字符串匹配,则实际上是要检查token.text == string
。