如何在gensim doc2vec中获取与标记文档最相似的单词

问题描述 投票:0回答:1

我训练了一个doc2vec模型。

doc2vec = Doc2Vec(vector_size= 300,
                    window=10,
                    min_count=100, 
                    dm=1,
                    epochs=40)
doc2vec.build_vocab(corpus_file=train_data, progress_per=1000)
doc2vec.train(....)

文档用增量整数 0、1、...1000 进行标记。

为了获取与 tag=0 的文档最相似的单词,我使用了:

doc_vector = doc2vec.dv[tag]
sims = doc2vec.wv.similar_by_vector(doc_vector, top_n=20)

相似度是有道理的,但是,相似度分数确实看起来很“奇怪”,几乎都是

1.0
。我检查了
top_n=3000
,仍然在1.0左右。获取所有具有高相似度分数的单词是否有意义。

nlp gensim cosine-similarity doc2vec
1个回答
0
投票

在将此算法用于各种自然语言文本的传统用途中,不,最相似的“最近邻居”文本都具有接近

1.0
相似度的情况并不常见。

这表明您的设置可能存在问题 - 除非您的数据确实包含大量几乎相同的“文本”。

您是否可能使用一些非典型语料库,也许不是自然语言,其中这么多超接近的相似度分数仍然准确且有用?这就是最终的考验。

也就是说:如果对于一堆文档探针,“相似词”有所不同,并且对于原始文档而言单独合理/有用,我就不会太担心相似性分数的绝对大小。

这些分数相互比较比任何绝对量表都更有意义。

0.9
的相似度不能被有意义地解释为“X% 相似”,甚至“在前 X% 最相似的候选者中”。它仅意味着“比具有 0.8 相似度的项目更相似,并且比具有 0.95 相似度的项目更不相似” .

如果想更好地了解是否出现问题,需要注意一些事项:

是否至少有一些单词的相似度分数要低得多,这些单词有意义吗?文档与文档之间的比较似乎大致合理吗?

您的数据的大致特征和大小是什么?您的语料库中有多少文档和独特单词?训练后的模型中还剩下多少幸存单词(应用

min_count=100
截止后)?

如果您在启用日志记录的情况下运行,各种步骤和进度报告是否表明正在创建预期大小和培训工作的模型?

© www.soinside.com 2019 - 2024. All rights reserved.