Ошибка типа: аргумент типа 'spacy.tokens.token.Token' не повторяется - PullRequest
0 голосов
/ 03 апреля 2019

Мне нужно проверить, существует ли тема предложения в списке, но у меня есть некоторые проблемы с этой ошибкой, и я не понимаю, как ее исправить

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 голосов
/ 04 апреля 2019

Это не ошибка - объект Token является контейнерным объектом для данных одного токена, а не повторяемой последовательности.В вашем коде вы проверяете item in subject, который ожидает, что subject (токен) будет последовательностью.Если вы хотите проверить, соответствует ли текст токена строке, вы действительно хотите проверить token.text == string.

0 голосов
/ 03 апреля 2019

Поскольку это должно быть итеративно, я предположил, что проблема связана с некоторой ошибкой во внутреннем устройстве, возможно, с конкретной версией (кстати, в следующий раз, пожалуйста, расскажите немного больше о вашей среде, то есть, какую версию различных фреймворков вы используете) После поиска я нашел этот, который, кажется, имеет отношение

Ошибка типа: объект 'spacy.tokens.token.Token' не повторяется

Просто скопируйте и вставьте предложенные решения

@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
...