AttributeError: объект «список» не имеет атрибута «сходство» - PullRequest
0 голосов
/ 05 мая 2019
ws = {}
nlp = spacy.load('de_core_news_sm')
data = 'Some long text'
train_corpus = nlp(data)
train_corpus = [token.text for token in train_corpus if not token.is_stop and len(token) > 4]
test_corpus = nlp('Some short sentence')   
ae = train_corpus.similarity(test_corpus)

Я получаю AttributeError: 'list' object has no attribute 'similarity' на ae = train_corpus.similarity(test_corpus). Если я удаляю train_corpus = [token.text for token in train_corpus if not token.is_stop and len(token) > 4], он работает, но со стоп-словами.

Как мне удалить стоп-слова, чтобы он все еще работал?

РЕДАКТИРОВАТЬ: ae = nlp(train_corpus).similarity(test_corpus) приводит к TypeError: Argument 'string' has incorrect type (expected str, got list).

1 Ответ

0 голосов
/ 07 мая 2019

Имейте в виду, что вы используете немецкую модель для английских фраз.В вашем случае вам нужно будет склеить оставшиеся токены и снова создать «пространственный объект».В вашем случае вы удаляете все токены с этим условием len (token)> 4 в любом случае.

import spacy

nlp = spacy.load('en_core_web_sm')
# nlp = spacy.load('de_core_news_sm')
ws = {}
#data = 'Some long text'
data = 'Some long text Elephant'
train_corpus = nlp(data)
train_corpus = nlp(" ".join([token.text for token in train_corpus if not token.is_stop and len(token) > 4]))
test_corpus = nlp('Some short sentence')
ae = train_corpus.similarity(test_corpus)

print(ae)
...