Doc2Vec 适用于情感分析吗?

Is Doc2Vec suited for Sentiment Analysis?

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

以 IMDB 数据集为例,我发现我使用 Doc2Vec (88%) 获得了类似的准确率百分比,但是使用简单的 tfidf vectoriser 和 tri-grams 进行特征提取的结果要好得多(91%)。我认为这类似于 Mikolov's 2015 paper.

中的 Table 2

我认为通过使用更大的数据集这会有所改变。所以我重新 运行 我的实验,使用 here 的 1mill 训练和 1mill 测试的分解。不幸的是,在那种情况下,我的 tfidf vectoriser 特征提取方法增加到 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 vectoriser 最多有 40,000 个特征:

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

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

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 之间,但我已经有一段时间了ve 运行 那些实验。

使用大于默认 passes 的参数,而不是重新使用批量训练的向量,有时也可以在最终模型上重新推断向量。不过,这些可能只是收敛于与 Tfidf 相似的性能——它们都依赖于相同的词特征,而不是太多的数据。

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