Python 空间相似函数

Python 空间相似函数,python,similarity,spacy,Python,Similarity,Spacy,我正在尝试使用Spacy库进行句子相似性分析,我想了解它是如何工作的 他们的文件不清楚: 默认情况下,spaCy使用向量平均算法,使用 预先训练的向量(如可用),例如en_core_web_lg模型。如果 否则,将使用doc.tensor属性,该属性由 标记器、解析器和实体识别器。这就是en_core_web_sm 模型提供了相似性。通常是基于张量的相似性 将更加结构化,而单词向量的相似性将 更具话题性。您还可以自定义.similarity方法,以 提供您自己的相似性函数,可以使用 监督技术 我

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

他们的文件不清楚:

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


我发现了这个问题:这意味着它使用了单词嵌入,但在我的实现中,我没有en_core_web_lg模型,但我有en_core_web_sm,因此通过这种方式,标记器、解析器和实体识别器如何计算相似度?

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

首先,doc对象包含很多标记。doc的向量是令牌向量的平均值

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

如果您不打算用它来获取语义,那么一般的意见是不要对sm模型使用相似性方法,因为您很可能会得到不准确的结果