【问题标题】:TypeError: argument of type 'spacy.tokens.token.Token' is not iterableTypeError:“spacy.tokens.token.Token”类型的参数不可迭代
【发布时间】:2019-08-24 08:53:06
【问题描述】:

我需要检查句子的主语是否存在于一个列表中,但是我对这个错误有一些问题,我不明白如何解决它

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

【问题讨论】:

    标签: python spacy


    【解决方案1】:

    因为它应该是可迭代的,所以我认为问题与内部的一些错误有关,可能是特定于版本的(顺便说一下,下次请多分享一些关于您的环境的信息,即您使用的不同框架的版本) 经过搜索,我发现这个似乎是相关的

    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
    

    【讨论】:

    • 我也发现了这个,但是没有用。我的输出是一个字符串,我试图转换为一个列表并告诉我这个 TypeError: Argument 'other' has wrong type (expected spacy.tokens.token.Token, got str) 我用了这个主题 = [] subject.append(令牌)
    【解决方案2】:

    这不是错误——Token 对象是单个令牌数据的容器对象,而不是可迭代序列。在您的代码中,您正在检查item in subject,它期望subject(令牌)是一个序列。如果要检查令牌文本是否与字符串匹配,实际上是要检查token.text == string

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 2011-10-04
      • 2020-05-07
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      相关资源
      最近更新 更多