2016-07-27 31 views
2

我想分析線條給出的文本,並且我希望在python中使用sckit-learn軟件包的TF-IDF矢量化進行矢量化。 問題是,矢量化可以通過單詞或n-gram來完成,但我希望它們可以用於行,而且我已經排除了將每行作爲單個單詞向量化的工作(因爲以這種方式單詞和它們的含義不會被考慮)。Tf-Idf矢量分析器從線條而不是字詞分析矢量

通過文檔查看我沒有找到如何做到這一點,那麼有沒有這樣的選擇?

回答

1

你似乎誤解了TF-IDF矢量化正在做什麼。對於每個單詞(或N-gram),它爲單詞分配一個權重,該單詞是術語(TF)的頻率和文檔中其他術語(IDF)的反向頻率的函數。將它用於單詞(例如,知道單詞「pizza」出現的頻率)或N-grams(例如,2克的「Cheese pizza」)是合理的。

現在,如果你在線上, 會發生什麼?除非你碰巧有一個語料庫中的行重複準確(例如「我需要Python中的幫助」),否則你的TF-IDF轉換將是垃圾,因爲每個句子只會在文檔中出現一次。如果你的句子確實總是與標點符號相似,那麼對於所有意圖和目的,它們不是語料庫中的句子,而是單詞。這就是爲什麼沒有選擇用句子做TF-IDF的原因:它使實際或理論上沒有意義。

+0

是的,我明白了,那正是我想要做的。我有幾乎完全重複的行。 – snufsan

+0

就是這樣一個觀點:如果它們幾乎完全重複,那麼它們在Scikit的眼中就會完全不同,就像TF-IDF在單詞上的轉換將「Word」和「Work」看作完全不同的單詞一樣。如果你想要的是從相同單詞的重複中分析它們的相似性,那麼你需要將它們的單詞(或N-gram)內容進行矢量化,然後將矢量或一個句子與另一個單詞的矢量進行比較。如果要將完整文檔與另一個文檔進行比較,則比較文檔之間句子的平均餘弦差異。 – Andreq

+0

我想做一些像n-grams分析的事情,問題是我的線條長度不同。 – snufsan