我一直在阅读更多关于情感分类(分析)的现代帖子,例如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)
对于分类,我尝试了一些线性方法,然而发现简单的逻辑回归就可以了......
答案 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相似的性能上 - 它们全部依赖于相同的字功能,而不是非常多的数据。
采用半监督方式,其中一些文档标签代表已知的情绪,有时也有帮助。