Python 奇怪的相似性导致空间性
我在玩Spacy中的相似函数,观察到一些我不理解的东西:Python 奇怪的相似性导致空间性,python,spacy,Python,Spacy,我在玩Spacy中的相似函数,观察到一些我不理解的东西: import spacy nlp = spacy.load('en_core_web_sm') doc1 = nlp("Honda Civic Toyota") doc2 = nlp("Honda Civic Toyota car Christian God") for token in doc1: print (token.text, doc1[0].similarity(token)) for token in doc2
import spacy
nlp = spacy.load('en_core_web_sm')
doc1 = nlp("Honda Civic Toyota")
doc2 = nlp("Honda Civic Toyota car Christian God")
for token in doc1:
print (token.text, doc1[0].similarity(token))
for token in doc2:
print (token.text, doc2[0].similarity(token))
输出:
Honda 1.0
Civic 0.6631208
Toyota 0.4700994
Honda 1.0
Civic 0.6806056
Toyota 0.54713947
car 0.22469836
Christian 0.5016042
God 0.4778438
本田一词与doc1和doc2中的所有其他词进行比较,可以观察到,当本田与思域和丰田进行比较时,doc1和doc2中的相似性是不同的。
我的理解是,相似度是根据单词手套向量的一致相似度计算的,该向量是从“en_core_web_sm”加载的。如果是这样的话,那么同一对词之间的相似性不应该与上下文无关吗
我想我显然误解了什么,如果有人能澄清一下,我将不胜感激。如文件中所述:
相似性是通过比较单词向量或“单词嵌入”(单词的多维意义表示)来确定的。为了使它们紧凑和快速,spaCy的小型模型(所有软件包
以sm结尾)不要附带单词向量,只包括
上下文敏感张量。这意味着您仍然可以使用
similarity()
比较文档、跨度和标记的方法–但是
结果不会那么好,而且单个令牌不会有任何向量
所以为了使用真实的词向量,你需要下载一个更大的模型
所以小模型不使用词向量来表示相似性