空间相似函数

2022-05-15 00:00:00 python spacy similarity

问题描述

我正在尝试使用Spacy库进行句子相似性,我想了解它是如何工作的!?

他们的文档不清楚:

默认情况下,Spacy使用向量平均算法,使用 预先训练的向量(如果可用)(例如en_core_web_lg模型)。如果 不是,则使用doc.tensor属性,该属性由 标记器、解析器和实体识别器。这就是en_core_web_sm 模型提供了相似之处。通常,基于张量的相似性 将更具结构性,而单词向量的相似性将是 更具话题性。您还可以自定义.sisimily()方法,以 提供您自己的相似度函数,可以使用 有监督的技术。

我发现了这个问题:How does the .similiarity method works?它说它使用单词嵌入,但在我的实现中,我没有"en_core_web_lg模型",但我有en_core_web_sm,那么如何通过"标签、解析器和实体识别器"来计算相似度?


解决方案

仔细查看文档,我认为您可以找到您要搜索的内容。

首先,一个文档对象包含很多令牌。DOC的向量是令牌向量的平均值。

现在,记号的向量是多少?如果您使用mdlg模型,这意味着token.vec为您提供了令牌向量,这实际上是一个手套向量。如果您使用的是sm模型,则文档说明该向量包含结构信息。这意味着具有相同pos标签和相似DEP行为的令牌将具有比其他令牌更高的相似性分数,即使它们的语义非常不同。

一般备注是,如果您不打算对sm模型使用相似性方法,则不要使用该方法,因为很可能会得到不准确的结果。

相关文章