首页 > 解决方案 > TFIDVECTORIZER:所有文本都是导致错误的停用词

问题描述

我正在运行此代码

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 导致错误。有什么好的解决方法吗?

标签: stop-wordstfidfvectorizer

解决方案


这是一个愚蠢的问题。实际上,我在数据准备中犯了一个错误并且错过了 NaN 值,因为我在将数据框列转换为列表之前documents忘记使用。.dropna()


推荐阅读