Python 如何在Spacy中找到标记相似性?

Python 如何在Spacy中找到标记相似性?,python,nlp,spacy,Python,Nlp,Spacy,我试图计算spacy中的标记相似性。也就是说,单词标记之间的距离有多近。我使用的是spacy 2.0.5版。这是我的一个小例子 import spacy from spacy.lang.en import English from spacy.tokenizer import Tokenizer nlp = spacy.load('en') x = nlp(u'apple') y = nlp(u'apple') x.similarity(y) 这个返回值是-81216639732921

我试图计算spacy中的标记相似性。也就是说,单词标记之间的距离有多近。我使用的是spacy 2.0.5版。这是我的一个小例子

import spacy
from spacy.lang.en import English
from spacy.tokenizer import Tokenizer

nlp = spacy.load('en') 

x = nlp(u'apple')
y = nlp(u'apple')

x.similarity(y)
这个返回值是-8121663973292144.0,但我原以为是1.0

另外

x = nlp(u'apple')
y = nlp(u'apples')
x.similarity(y)
返回0.0038385278814858344,这似乎也是错误的


我应该如何做这个标记相似性,以便它工作?我真的很想呆在Spacy内(而不是使用不同的字符串距离包),但如果Spacy无法做到这一点,我也欢迎您的建议

我试着用spacy版本0.100.7做同样的事情。对我来说没问题

import spacy
from spacy.en import English
from spacy.tokenizer import Tokenizer

nlp = spacy.load('en') 

x = nlp(u'apple')
y = nlp(u'apple')

print (x.similarity(y)) # prints 0.999999947205

x = nlp(u'apple')
y = nlp(u'apple')

print (x.similarity(sy)) # prints 0.6678450944

你能检查一下你的spacy版本吗。另外,您是否只安装了deafult en型号?

我也遇到了版本2.0.5的相同问题,您可以回滚到版本2.0.2,在那里,您将获得类似于1.0000000593284066的分数,用于“苹果”与“苹果”的比较

首先,您必须卸载与Spacy 2.0.5版相关的所有库

for dep in $(pip show spacy | grep Requires | sed 's/Requires: //g; s/,//g') ; do pip uninstall -y $dep ; done
然后安装版本2.0.2

pip install spacy=='2.0.2'
下一步

python -m spacy validate
它可能会要求您安装某些库,如ftfy或其他库,当您尝试安装时,它将已安装。对于那些先卸载它们,然后再重新安装的库(对于不同的库,这种情况可能发生3-4次)。我们必须这样做,因为很多库在安装spacy 2.0.5时会更新到最新版本。最后下载模型

python -m spacy download en_core_web_sm

通过查找标记的stemma/lemmatized版本之间的相似性来尝试一下。@Tanu我尝试过,使用nlp=spacy.load('en')tokenizer=tokenizer(nlp.vocab)x=tokenizer(u'apple')y=tokenizer(u'apple')x.similarity(y)仍然得到一个0的结果,这不是很好,您在spacy模块中使用的是哪个版本?我尝试了“苹果”和“苹果”的相似性,它返回了99%左右,我试图让它在spacy 2.0.5版中运行。我以前在早期版本中使用过它,但是现在我需要它在2.0.5中使用,并且我已经安装了英语vocab,带有from spacy.lang.en import english--非常感谢您对我的帮助!