TypeError:“ spacy.tokens.token.Token”类型的参数不可迭代

时间:2019-04-02 23:13:06

标签: python spacy

我需要检查句子的主语是否存在于列表中,但是此错误存在一些问题,我不知道该如何解决

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”类型的参数不可迭代

2 个答案:

答案 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