3

我正在嘗試使用支持向量機(SVM)進行文檔分類。我擁有的文件是電子郵件的收集。我有大約3000個文檔來訓練SVM分類器,並且有大約700個需要分類的測試文檔集。使用LSA/SVD的文檔分類

我最初使用二進制DocumentTermMatrix作爲SVM訓練的輸入。測試數據的分類準確度達到了81%左右。 DocumentTermMatrix在刪除幾個停用詞後使用。因爲我想提高這個模型的準確性,我嘗試過使用基於LSA/SVD的降維,並使用由此產生的簡化因子作爲分類模型的輸入(我嘗試了20,50,100和200個奇異值原包〜3000字)。分類的表現在每種情況下都惡化。 (使用LSA/SVD的另一個原因是克服了65個響應變量之一的內存問題)。

有人可以提供一些關於如何提高LSA/SVD分類性能的指針嗎?我意識到這是一個沒有任何特定數據或代碼的普遍問題,但會從專家那裏開始調試的一些意見。

僅供參考,我使用的R用做文本預處理(包:TM,雪球,LSA)和建築分類模型(包:kernelsvm)

謝謝。

+0

您是否在分類過程中使用了相同的低級別轉換?您的測試文檔向量也必須減小尺寸。 – adi

回答

1

下面是一些一般性建議 - 沒有特定的LSA,但它可能有助於改善結果。

  1. 「二進制documentMatrix」似乎暗示您的數據是由二進制值表示的,即,1爲現有的文檔中的術語,且0爲不存在的術語;移至其他得分方案 (例如tf/idf)可能會導致更好的結果。

  2. 在某些情況下,LSA是降維的一個很好的指標,但在其他情況下則不那麼重要。因此,根據數據的確切性質,考慮其他方法可能是一個好主意,例如, Infogain。

  3. 如果降低維度的主要動機是65個等級的一個參數,那麼可以專門處理這個參數,例如,通過某種形式的量化,會導致更好的折衷?

1

這可能不是最好的定製答案。希望這些建議可能有幫助。

也許你可以使用詞法化來減少不可接受的結果。 短而密:http://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html

The goal of both stemming and lemmatization is to reduce inflectional forms and 
sometimes derivationally related forms of a word to a common base form. 

However, the two words differ in their flavor. Stemming usually refers to a crude 
heuristic process that chops off the ends of words in the hope of achieving this 
goal correctly most of the time, and often includes the removal of derivational 
affixes. Lemmatization usually refers to doing things properly with the use of a 
vocabulary and morphological analysis of words, normally aiming to remove 
inflectional endings only and to return the base or dictionary form of a word, 
which is known as the lemma. 

一個實例:

go,goes,going ->Lemma: go,go,go ||Stemming: go, goe, go 

,並使用一些預定一組規則;這樣短期的話就會被廣義化。例如:

I'am -> I am 
should't -> should not 
can't -> can not 

如何處理句子中的括號。

This is a dog(Its name is doggy) 

圓括號內的文字通常被稱爲所提及實體的別名。您可以刪除它們或執行correference analysis並將其視爲新句子。

1

嘗試使用Local LSA,與全局LSA相比,它可以改進分類過程。另外,LSA的功率完全取決於其參數,所以嘗試調整參數(從1開始,然後從2開始),並比較結果以提高性能。