1.問題
Kaggle競賽Bag of Words Meets Bags of Popcorn是電影評論(review)的情感分析,可以視作為短文本的二分類問題(正向、負(fù)向)。標(biāo)注數(shù)據(jù)集長這樣:
評價指標(biāo)是AUC。因此,在測試數(shù)據(jù)集上應(yīng)該給出概率而不是類別;即為predict_proba而不是predict:
# random frorest result = forest.predict_proba(test_data_features)[:, 1] # not `predict` result = forest.predict(test_data_features)
采用BoW特征、RF (random forest)分類器,預(yù)測類別的AUC為0.84436,預(yù)測概率的AUC則為0.92154。
2.分析
傳統(tǒng)方法
傳統(tǒng)方法一般會使用到兩種特征:BoW (bag of words),n-gram。BoW忽略了詞序,只是單純對詞計數(shù);而n-gram則是考慮到了詞序,比如bigram詞對"dog run"、"run dog"是兩個不同的特征。BoW可以用CountVectorizer向量化:
from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer(analyzer="word", tokenizer=None, preprocessor=None, stop_words=None, max_features=5000) train_data_features = vectorizer.fit_transform(clean_train_reviews)
在一個句子中,不同的詞重要性是不同的;需要用TFIDF來給詞加權(quán)重。n-gram特征則可以用TfidfVectorizer向量化:
from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer(max_features=40000, ngram_range=(1, 3), sublinear_tf=True) train_x = vectorizer.fit_transform(clean_train_reviews)
使用unigram、bigram、trigram特征 + RF分類器,AUC為0.93058;如果改成LR分類器,則AUC為0.96330。
競賽tutorial給出用word2vec詞向量特征來做分類,并兩個生成特征思路:
對每一條評論的所有詞向量求平均,將其平均值作為改評論的特征;
對訓(xùn)練的詞向量做聚類,然后對評論中的詞類別進行計數(shù),把這種bag-of-centroids作為特征。
把生成這種特征喂給分類器,進行分類。但是,這種方法的AUC不是太理想(在0.91左右)。無論是做平均還是聚類,一方面丟失了詞向量的特征,另一方面忽略了詞序還有詞的重要性。因此,分類效果不如tfidf化的n-gram。
大神Mikolov在推出word2vec之后,又鼓搗出了doc2vec(gensim有實現(xiàn))。簡單地說,就是可以把一段文本變成一個向量。與word2vec不同的是,參數(shù)除了doc對應(yīng)的詞列表外,還有類別(TaggedDocument)。結(jié)果證明doc2vec的效果還不如word2vec生成特征,AUC只有0.87915。
doc2vec = Doc2Vec(sentences, workers=8, size=300, min_count=40, window=10, sample=1e-4)
pangolulu嘗試把BoW與doc2vec做ensemble,采用stacking的思路——L1層BoW特征做LR分類、doc2vec特征做RBF-SVM分類,L2層將L1層的預(yù)測概率組合成一個新特征,喂給LR分類器;多次迭代后求平均。ensemble結(jié)構(gòu)圖如下:
以上所有方法的AUC對比如下:
3.參考資料:
[1] Zygmunt Z.,Classifying text with bag-of-words: a tutorial.
[2] Michael Czerny,Modern Methods for Sentiment Analysis.
-
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5500瀏覽量
121112
原文標(biāo)題:【從傳統(tǒng)方法到深度學(xué)習(xí)】情感分析
文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論