Doc2Vec适合情感分析吗?

我最近阅读了一些关于情感分类(分析)的现代文章,例如这篇

以IMDB数据集为例,我发现使用Doc2Vec获得的准确率百分比相似(88%),然而使用简单的tfidf向量化器和三元语法进行特征提取时结果要好得多(91%)。我认为这与Mikolov 2015年的论文中的表2相似。

我原本以为使用更大的数据集会改变这种情况。因此,我重新运行了实验,使用来自这里的100万训练样本和100万测试样本。不幸的是,在这种情况下,我的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

我尝试使用了400和1200个特征来构建Doc2Vec模型:

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)

在分类方面,我尝试了几种线性方法,但发现简单的逻辑回归效果还不错…


回答:

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,以及介于100到400之间的size,但我已经有一段时间没有进行这些实验了。

有时,在最终模型上重新推断向量,使用大于默认值的passes参数,而不是重复使用批量训练的向量,也可能略有帮助。尽管如此,这些可能只是收敛到与Tfidf类似的性能——它们都依赖于相同的词特征,并且数据量不是很大。

转向半监督方法,其中一些文档标签代表已知的情感,有时也可能有所帮助。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注