Doc2Vec适合情感分析吗?

时间:2016-07-12 09:01:54

标签: machine-learning sentiment-analysis gensim word2vec doc2vec

我一直在阅读更多关于情感分类(分析)的现代帖子,例如this

以IMDB数据集为例,我发现使用Doc2Vec(88%)获得了相似的准确度百分比,然而使用带有三元组的简单tfidf矢量化器进行特征提取时效果更好(91%) 即可。我认为这与Mikolov's 2015 paper中的表2类似。

我认为通过使用更大的数据集,这会改变。所以我使用来自here的1毫米训练和1毫米测试的细分来重新进行我的实验。不幸的是,在那种情况下,我的tfidf矢量化特征提取方法增加到93%,但doc2vec下降到85%。

我想知道这是否可以预期,而其他人发现即使对于大型语料库,tfidf也优于doc2vec?

我的数据清理很简单:

def clean_review(review):
    temp = BeautifulSoup(review, "lxml").get_text()
    punctuation = """.,?!:;(){}[]"""
    for char in punctuation
        temp = temp.replace(char, ' ' + char + ' ')
    words = " ".join(temp.lower().split()) + "\n"
    return words

我尝试过为Doc2Vec模型使用400和1200功能:

model = Doc2Vec(min_count=2, window=10, size=model_feat_size, sample=1e-4, negative=5, workers=cores)

而我的tfidf矢量图有40,000个最大特征:

vectorizer = TfidfVectorizer(max_features = 40000, ngram_range = (1, 3), sublinear_tf = True)

对于分类,我尝试了一些线性方法,然而发现简单的逻辑回归就可以了......

1 个答案:

答案 0 :(得分:3)

Mikolov发布的示例代码(https://groups.google.com/d/msg/word2vec-toolkit/Q49FIrNOQRo/J6KG8mUj45sJ)使用了-cbow 0 -size 100 -window 10 -negative 5 -hs 0 -sample 1e-4 -threads 40 -binary 0 -iter 20 -min-count 1 -sentence-vectors 1选项 - 其中gensim类似于dm=0, dbow_words=1, size=100, window=10, hs=0, negative=5, sample=1e-4, iter=20, min_count=1, workers=cores

我的预感是,最佳值可能涉及较小的window和较高的min_count,也许size介于100到400之间,但自那以来已经有一段时间了我进行了那些实验。

有时可以使用大于默认值passes的参数,在最终模型上重新推断向量,而不是重新使用批量训练向量。尽管如此,这些可能只是集中在与Tfidf相似的性能上 - 它们全部依赖于相同的字功能,而不是非常多的数据。

采用半监督方式,其中一些文档标签代表已知的情绪,有时也有帮助。