python - spacy 相似性方法无法正常工作
问题描述
我正在使用spacy
. 我正在通过测量单词之间的相似性来过滤掉单词。
我编写并使用了 spacy 文档中显示的以下简单代码,但结果看起来不像文档。
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
特别是“狗”和“猫”之间的相似度应该在0.8左右,但这并不是一个非常小的值。
此外,“狗”和“香蕉”之间的相似度为 0.0,但“香蕉”和“狗”之间的相似度为 -7.828739256116838e+17。
我不知道如何解决它。
请帮我。
解决方案
首先安装大型 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
推荐阅读
- excel - Debug.Print in VBA
- javascript - 如何发出命令来回复某个用户 ID?
- vue.js - 如何使用 nginx 使 vue 项目中的 css 和 js 文件在生产中工作
- python - RuntimeError: Expected hidden size (2, 24, 50), got (2, 30, 50)
- javascript - 如何将 ID 从 JavaScript 传递到 Laravel PHP 脚本?
- maven - 为什么“mvn deploy”命令正在重建 .jar?
- python - 使用 Python 脚本下载 Outlook 附件的正确模块是什么?
- drools - 我不明白为什么 drools 规则会产生错误
- reactjs - 如何在过渡期间移除overflowX
- php - 如何在 Wordpress 主题上显示我自己的自定义字段?