TFIDVECTORIZER: все тексты являются стоп-словами, вызывающими ошибку - PullRequest
0 голосов
/ 02 марта 2020

Я запускаю этот код

from sklearn.feature_extraction.text import TfidfVectorizer

def lemmatizer(text):
    return [word.lemma_ for word in nlp(text)]

# we need to generate the lemmas of the stop words
stop_words_str = " ".join(STOP_WORDS) # nlp function needs a string
stop_words_lemma = set(word.lemma_ for word in nlp(stop_words_str))

tfidf_lemma = TfidfVectorizer(max_features=100, 
                              stop_words=stop_words_lemma.union({"pax", "west", "hyatt", "wscc","borderlands"}),
                                tokenizer=lemmatizer)

tfidf_lemma.fit(documents)
print(tfidf_lemma.get_feature_names())

и получаю следующую ошибку:

ValueError: np.nan is an invalid document, expected byte or unicode string.

Я подозреваю, что это потому, что некоторые из ответов, с которыми я имею дело, чисто сделан из стоп-слов. Я использую стоп-слова из Spacy.

from spacy.lang.en import STOP_WORDS

Я прочитал некоторые ответы, и есть такие, как «есть что-то для всех», которые, как я полагаю, при фильтрации по стоп-словам превращаются в NaN, вызывая ошибку. Любое хорошее решение для этого?

1 Ответ

0 голосов
/ 04 марта 2020

Это глупый вопрос. Я действительно допустил ошибку при подготовке данных и пропустил значения NaN в documents, потому что я забыл использовать .dropna() перед преобразованием столбца данных в список.

...