首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用word2vec,doc2vec计算两个文档之间的相似度

用word2vec,doc2vec计算两个文档之间的相似度
EN

Stack Overflow用户
提问于 2018-11-25 12:25:40
回答 1查看 1.3K关注 0票数 2

我正在试图计算两个文档之间的相似性,这两个文档由数千个句子组成。

基线是使用弓计算余弦相似度。

但是,我想捕捉文档之间更多的语义差异。

因此,我通过简单地平均每个文档中的所有单词向量,生成文档向量,并度量这些文档向量之间的余弦相似度,从而构建了文档嵌入和计算文档相似度。

然而,由于每个输入文档的大小相当大,我使用上述方法得到的结果非常类似于简单的弓余弦相似度。

我有两个问题,

Q1。我发现gensim模块提供了软余弦相似性。但是,我很难理解与上面使用的方法的区别,我认为这可能不是计算百万对文档之间相似性的机制。

Q2。我发现基于gensim的Doc2Vec更适合我的目的。但是我认识到训练Doc2Vec比我需要更多的内存(32 my )(我的整个文档的大小大约是100 my)。我有没有办法用整个语料库的小部分(比如20 to )来训练模型,并用这个模型来计算整个语料库的两两相似点?如果是的话,那么理想的火车设置大小是什么,我是否可以遵循任何教程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 01:52:52

Ad Q1:如果相似度矩阵包含单词嵌入的余弦相似性(或多或少,见SimBow在SemEval-2017任务3中的等式4),如果单词嵌入是L2归一化的,那么SCM (软余弦度量)相当于平均单词嵌入(即基线)。有关证明,请参见供应链管理的实现说明中的引理3.3。我的SCM的Gensim实现(12)还增加了相似矩阵的稀疏性,以保持较小的内存占用,并对嵌入进行正则化,因此您将获得与普通SCM略有不同的结果。如果嵌入平均给出的结果与简单的弓余弦相似,我会质疑嵌入的质量。

Ad Q2:在整个数据集上为一个时代训练一个Doc2Vec模型,相当于在整个数据集的较小部分上训练一个Doc2Vec模型,每个片段一个时期。请注意,Doc2Vec使用文档id作为培训过程的一部分,因此必须确保在分段后id仍然是唯一的(即第一个段的第一个文档必须具有与第二个段的第一个文档不同的id)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53467414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档