我总是从堆栈溢出中获得很多帮助。 一直谢谢你。
我正在使用spacy
进行简单的自然语言处理。
我正在通过测量单词之间的相似性来过滤掉单词。
我编写并使用了spacy文档中显示的以下简单代码,但结果看起来并不像documentation。
import spacy
nlp = spacy.load('en_core_web_lg')
tokens = nlp('dog cat banana')
for token1 in tokens:
for token2 in tokens:
sim = token1.similarity(token2)
print("{:>6s}, {:>6s}: {}".format(token1.text, token2.text, sim))
代码的结果如下。
dog, dog: 1.0
dog, cat: 2.307269867164827e-21
dog, banana: 0.0
cat, dog: 2.307269867164827e-21
cat, cat: 1.0
cat, banana: -0.04468117654323578
banana, dog: -7.828739256116838e+17
banana, cat: -8.242222286053048e+17
banana, banana: 1.0
特别是,“ dog”和“ cat”之间的相似度应为0.8,但这并不是一个非常小的值。
此外,“ dog”和“ banana”之间的相似度为0.0,但“ banana”和“ dog”之间的相似度为-7.828739256116838e + 17。
我不知道如何解决它。
请帮助我。
答案 0 :(得分:1)
首先安装大型EN模型(或所有模型)。
python3 -m spacy.en.download all
接下来,使用
按照文档尝试示例代码 nlp = spacy.load('en_core_web_md')
如果这样不起作用,请尝试加载上面的内容,而不是上面的
nlp = spacy.load('en')
进行上述更改后,结果将根据文档。
python3 /tmp/c.py
dog, dog: 1.000000078333395
dog, cat: 0.8016855098942641
dog, banana: 0.2432764518408807
cat, dog: 0.8016855098942641
cat, cat: 1.0000001375986456
cat, banana: 0.2815436412709355
banana, dog: 0.2432764518408807
banana, cat: 0.2815436412709355
banana, banana: 1.000000107068369
答案 1 :(得分:0)
我终于解决了这个问题。
只需添加代码import numpy as np
即可。
仅此而已。