2013-05-22 26 views
0

我使用最常見的答案(Similarity between two text documents)中給出的代碼來計算文檔之間的TF-IDF。然而,我觀察到,當我運行代碼時沒有指定min_df(1,在代碼中)的自定義值,那麼如果兩個文檔完全不同(使得它們中沒有共同詞),而不是接收TF- 0 IDF值,我得到以下錯誤:Python Scikit-learn:在TF-IDF中使用空詞彙表

ValueError: empty vocabulary; training set may have contained only stop words or min_df (resp. max_df) may be too high (resp. too low).

有人能告訴我如何才能擺脫這種錯誤的?

+0

我認爲,而不是「TF-IDF值爲0」,但你的意思是「餘弦相似度爲0」。 TF-IDF值是大小爲'n_features == len(vectorizer.vocabulary_)'的向量,這個對中的每個文檔都有一個向量。 – ogrisel

回答

3

默認情況下(sklearn < = 0.13)min_df設置爲min_df=2這意味着每個單詞必須至少出現在要包含在矢量化程序的詞彙表中的語料庫的2個不同文檔中。雖然這對大型語料庫來說是一個合理的選擇,但僅僅通過幾個句子來包含玩具數據集中的任何內容就太具有限制性,因此,您會收到錯誤信息,我發現它們非常明確。在scikit-learn的開發分支中,min_df=2的默認值已更改爲min_df=1,以免讓那些在玩具數據集上嘗試具有默認參數值的庫的新用戶感到困惑。