1.問(wèn)題
Kaggle競(jìng)賽Bag of Words Meets Bags of Popcorn是電影評(píng)論(review)的情感分析,可以視作為短文本的二分類問(wèn)題(正向、負(fù)向)。標(biāo)注數(shù)據(jù)集長(zhǎng)這樣:
評(píng)價(jià)指標(biāo)是AUC。因此,在測(cè)試數(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ù)測(cè)類別的AUC為0.84436,預(yù)測(cè)概率的AUC則為0.92154。
2.分析
傳統(tǒng)方法
傳統(tǒng)方法一般會(huì)使用到兩種特征:BoW (bag of words),n-gram。BoW忽略了詞序,只是單純對(duì)詞計(jì)數(shù);而n-gram則是考慮到了詞序,比如bigram詞對(duì)"dog run"、"run dog"是兩個(gè)不同的特征。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)
在一個(gè)句子中,不同的詞重要性是不同的;需要用TFIDF來(lái)給詞加權(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。
競(jìng)賽tutorial給出用word2vec詞向量特征來(lái)做分類,并兩個(gè)生成特征思路:
對(duì)每一條評(píng)論的所有詞向量求平均,將其平均值作為改評(píng)論的特征;
對(duì)訓(xùn)練的詞向量做聚類,然后對(duì)評(píng)論中的詞類別進(jìn)行計(jì)數(shù),把這種bag-of-centroids作為特征。
把生成這種特征喂給分類器,進(jìn)行分類。但是,這種方法的AUC不是太理想(在0.91左右)。無(wú)論是做平均還是聚類,一方面丟失了詞向量的特征,另一方面忽略了詞序還有詞的重要性。因此,分類效果不如tfidf化的n-gram。
大神Mikolov在推出word2vec之后,又鼓搗出了doc2vec(gensim有實(shí)現(xiàn))。簡(jiǎn)單地說(shuō),就是可以把一段文本變成一個(gè)向量。與word2vec不同的是,參數(shù)除了doc對(duì)應(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ù)測(cè)概率組合成一個(gè)新特征,喂給LR分類器;多次迭代后求平均。ensemble結(jié)構(gòu)圖如下:
以上所有方法的AUC對(duì)比如下:
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文章
5431瀏覽量
120790
原文標(biāo)題:【從傳統(tǒng)方法到深度學(xué)習(xí)】情感分析
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論