2014-10-01 86 views
0

我檢查了各種svm分類器,它使用特徵/值對格式進行分類。 (我專注於svmlight - http://svmlight.joachims.org/)格式是這樣的:如何將純文本轉換爲特徵/值對格式

-1 1:0.43 3:0.12 9284:0.2 # abcdef 

但正如我收到用戶輸入以純文本的形式,用svmlight分類它,我需要純文本轉換爲這種格式。

它是如何做到的?

+0

難道你不能對你的輸入文本做tf-idf並且編寫一個腳本來將結果轉換成libsvm格式嗎? – greeness 2014-10-01 23:41:55

回答

1

你必須使用一些實際價值嵌入。換句話說,你在文本空間中有數據,這些文本或多或少都是不同長度的單詞序列的空間。有許多方法,一個更好地爲一個目的,等 - 另一種,是最簡單的包括:

  • 上的字級編碼,所以每個字爲「維」,所以你的情況 - 你創造一個單詞詞典併爲每個單詞分配一個連續的整數。現在每個文檔可以被編碼爲一個矢量,其中每個特徵的值例如是「如果該單詞在文檔中」(單詞集合)或者可能是「單詞出現了多少次」(單詞袋;也被稱爲tf)或一些更復雜的統計(例如tf-idf;詞頻與正向文件頻率相乘)。
  • 與ngram的編碼水平相似,但不是列舉每個單詞列舉每個n-gram(n-gram是n個單詞的任何序列),這是更合理的特徵,但需要顯着更多要訓​​練的數據。
  • 使用一些「神奇編碼」或專門的「字符串內核」。

前兩種方法可以使用scikit學習的TFIDF矢量器輕鬆完成,看到http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html。最後一個需要更復雜的軟件。