我正在训练一个Word2Vec
模型,例如:
model = Word2Vec(documents, size=200, window=5, min_count=0, workers=4, iter=5, sg=1)
和Doc2Vec
模型如:
doc2vec_model = Doc2Vec(size=200, window=5, min_count=0, iter=5, workers=4, dm=1)
doc2vec_model.build_vocab(doc2vec_tagged_documents)
doc2vec_model.train(doc2vec_tagged_documents, total_examples=doc2vec_model.corpus_count, epochs=doc2vec_model.iter)
具有相同的数据和可比的参数。
在此之后,我将这些模型用于我的分类任务。而且我发现,简单地对word2vec
文档的嵌入进行平均或求和比使用doc2vec
向量要好得多。我还尝试了更多的doc2vec
迭代(25、80 和 150 - 没有区别)。
任何提示或想法为什么以及如何改善doc2vec
结果?
更新:这是如何doc2vec_tagged_documents
创建的:
doc2vec_tagged_documents = list()
counter = 0
for document in documents:
doc2vec_tagged_documents.append(TaggedDocument(document, [counter]))
counter += 1
关于我的数据的更多事实:
- 我的训练数据包含 4000 个文档
- 平均900字。
- 我的词汇量大约是1000字。
- 我用于分类任务的数据平均要小得多(平均 12 个单词),但我也尝试将训练数据拆分为行并
doc2vec
像这样训练模型,但结果几乎相同。 - 我的数据与自然语言无关,请记住这一点。