我正在尝试计算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)
这会返回-81216639937292144.0,但我原以为它是1.0。
另外
x = nlp(u'apple')
y = nlp(u'apples')
x.similarity(y)
返回0.0038385278814858344,这似乎也是错误的。
我应该如何做这个令牌相似性以使其有效?我真的想留在Spacy(而不是使用不同的字符串距离包),但如果这不能在spacy中完成,也会欢迎建议。
答案 0 :(得分:1)
我尝试使用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型号吗?
答案 1 :(得分:0)
我也遇到了与版本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