簡體   English   中英

Scikit-TF-IDF空詞匯

[英]Scikit - TF-IDF empty vocabulary

我必須計算兩個或多個文本的距離/相似度。 有些文本確實很小,或者沒有形成適當的英語單詞,例如“ A1024515”。 這意味着它應該接受列表中的每個單詞。

作為測試用例,我將以下列表用作一個語料庫。

words= ['A', 'A', 'A']

vect = TfidfVectorizer(min_df =0)
dtm = vect.fit_transform(words)
df_tf_idf = pd.DataFrame(dtm.toarray(), columns=vect.get_feature_names())

但是,出現以下錯誤

ValueError: empty vocabulary; perhaps the documents only contain stop words

如何確保列表被接受為可能的單詞,並確保不從語料庫中刪除停用詞?

問題不在於停用詞,默認情況下沒有停用詞。 問題是測試案例中的句子太短(1個字符)。

默認情況下, tfidfVectorizer使用r'(?u)\\b\\w\\w+\\b'將給定的句子集標記為單詞列表。 不適用於單個字符串。

sklearn.feature_extraction.text.TfidfVectorizer(... token_pattern=’(?u)\b\w\w+\b’, ...)

您可以使用自己的正則表達式,給令牌化器作為構造函數參數(在這種情況下,給定令牌化器會覆蓋正則表達式)。 或者使用更長,更實際的測試用例。

請參考以下問題的答案:“ CountVectorizer對短字引發錯誤 ”:

words= ['A', 'A', 'A']

vect = TfidfVectorizer(token_pattern='(?u)\\b\\w+\\b')
dtm = vect.fit_transform(words)

vect.get_feature_names()

給出輸出:

['a']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM