使用 spacy (python) 记录相似之处

Der*_*Tay 2 python spacy

sent1 = nlp("I am happy")

sent2 = nlp("I am sad")

sent3 = nlp("I am joyous")
Run Code Online (Sandbox Code Playgroud)

在这里,我想比较三个句子的相似之处,显然sent1应该更相似于sent3与相比sent1

sent1.similarity(sent2) = 0.9492464724721577

sent1.similarity(sent3) = 0.9239675481730458
Run Code Online (Sandbox Code Playgroud)

正如您从输出中看到的,sent1更类似于sent2,我的代码有什么问题吗?

yve*_*man 10

你的代码没有任何问题。spaCy 中的句子相似度基于词嵌入,而词嵌入的一个众所周知的弱点是它们很难区分同义词(快乐-快乐)和反义词(快乐-悲伤)。

根据您的数字,您可能已经在这样做了,但请确保您使用的是 spaCy 的大型英文模型 ,en_core_web_lg以获得最佳的词嵌入。

为了更准确地嵌入完整句子,可能值得检查替代方案,例如谷歌的通用句子编码器。请参阅: https: //tfhub.dev/google/universal-sentence-encoder/4