我正在用Python的scikit-learn對Livejournal的博客進行情感分類。我有大約40000個職位,我使用其中的4/5作爲訓練集,剩餘部分作爲測試集。有監督學習的情感分類
有6種情緒:['joy','sadness','anger','surprise','love','fear']
我experiented幾個分類(包括樸素貝葉斯,SVM,SGD ..)但問題是,預測是非常非常不準確的。其實這幾乎是微不足道的,因爲幾乎測試集中的每個博客都被預測爲「喜悅」,這是火車集中最常見的情緒(45%)。
該功能集基本上包括一袋文字功能(我試過unigrams和bigrams),對於unigram,總共有613822個功能。
Besiedes,我添加了一些使用SentiWordnet分數的基於詞典的特徵:計算名詞,形容詞,形容詞,動詞和總詞的正面和負面分數的總和。在博客中。所以每個博客都會有613822 + 5個功能。
我也應用了一些特徵選擇方法,如chi2來減少特徵數量,但沒有任何明顯的改進。
scikit-learn的CountVectorizer
和DictVectorizer
用於向量化特徵,Pipeline.FeatureUnion
用於連接它們。
我猜這個糟糕的結果是由於過大的單詞功能集 - 可能是文本中有太多拼錯的單詞? (我已經刪除了停用詞並完成了一些詞形化作業) 我還認爲基於詞典的功能並不真正起作用,因爲BOW功能太大。
我希望在我的方法中找到任何明顯的錯誤,或者我可以做些什麼來提高準確性。
感謝您的任何建議!
原諒潛在的無知問題,但你的任何技術解釋句子長度和標點符號?如果沒有,並且你在乎回答,爲什麼不呢? –