如何为两个文档生成相似度得分

时间:2019-06-14 22:24:15

标签: gensim word2vec similarity cosine-similarity doc2vec

我想在语义上比较两个文档并生成相似度分数。以下文档来自维基百科,当与它们进行比较时,我希望world_1和world_2的得分更高,因为它们具有相似的上下文。

是否可以在“ world_1”上训练Doc2vec模型并用该模型测试其他两个文档是一种好方法?

thermo =“热力学主要基于一组四个定律,当将它们应用到属于每个定律所约束的系统时,这些定律普遍有效。在热力学的各种理论描述中,这些定律可能以看似不同的形式表示,但是最突出的表述如下:热力学的塞洛斯定律:如果两个系统各自处于热平衡且第三个系统彼此处于热平衡,则该陈述暗示着热平衡是一组系统的等价关系。正在考虑热力学系统。”

world_1 =“第一次世界大战(通常缩写为WWI或WW1),也称为第一次世界大战或第一次世界大战,是一场起源于欧洲的全球战争,持续了1914年7月28日至1918年11月11日。作为结束一切战争的战争,[7]导致动员了7,000万军事人员,其中包括6000万欧洲人,这使其成为历史上规模最大的战争之一。[8] [9]也是其中之一这是历史上最致命的冲突,[10]战争的直接结果是估计有900万战斗人员和700万平民丧生,而种族灭绝和1918年的流感大流行又在全世界造成了50至1亿人死亡。1914年6月28日,波斯尼亚塞族南斯拉夫民族主义者加夫里洛·普林西普(Gavrilo Princip)在萨拉热窝暗杀了奥匈帝国的继承人弗朗兹·费迪南德大公,导致了7月的危机。”

world_2 =“第二次世界大战(通常简称为第二次世界大战或第二次世界大战)是一场持续到1939年至1945年的全球战争。世界上绝大多数国家(包括所有大国)最终形成了两个对立的军事同盟:同盟国和轴心国。一场全面战争的状态出现了,直接涉及来自30多个国家的1亿多人。主要参与者将全部经济,工业和科学能力投入了战争的努力二战是人类历史上最致命的冲突,其死亡人数为50至8500万,其中大多数是苏联和中国的平民。”

1 个答案:

答案 0 :(得分:0)

是的,但是您想在大量文档上训练Doc2Vec模型,该文档包含您要代表的文档主题的全部范围(例如所有Wikipedia文章),而不仅仅是在一个文档上。

然后,如果要比较的文档是在训练集中命名的,则可以从模型中查找它们的向量。但是,如果它们是使用相似语言的新文档,则可以在其单词标记上使用Doc2Vec.infer_vector()方法(应与训练数据一样对其进行预处理/标记)。

在您的问题中,您似乎已经选择了两个已知有些相似的文档(也许是因为它们共享人类指定的类别),然后随机选择了第三个文档,希望模型能够正确确定前三个比第三个更相似。

在大量文档三元组上执行此操作是一个很好的模型评估过程!实际上,在原始“段落向量”(Doc2Vec)工作的后续论文中,这就是针对Wikipedia和Arxiv文档语料库对算法进行评估和参数优化的方法。参见:

Document Embedding with Paragraph Vectors