使用spacy
计算两个token
的相似性时,出现标题的警告。
similar_word.similarity(token)
UserWarning: [W008] Evaluating Doc.similarity based on empty vectors.
报错原因:当similar_word
不是一个有效的spacy doc
时,则会出现如下报错。 栗子
:
import spacy
nlp = spacy.load('en_core_web_md')
tokens = nlp(u'apple banana')
similar_word = nlp(u'')
for token in tokens:
print(token.text, similar_word.similarity(token))
similar_word = nlp(u'pear')
for token in tokens:
print(token.text, similar_word.similarity(token))
# 运行结果
apple 0.0
banana 0.0
UserWarning: [W008] Evaluating Doc.similarity based on empty vectors.
UserWarning: [W008] Evaluating Doc.similarity based on empty vectors.
apple 0.5968762355521726
banana 0.6300500965184214
解决方式: 在调用 similarity()
之前检查相似的单词是否有效,包括是否有一个有效的单词向量。
import spacy
nlp = spacy.load('en_core_web_md')
tokens = nlp(u'apple banana')
similar_word = nlp(u'')
if(similar_word and similar_word.vector_norm):
for token in tokens:
if(token and token.vector_norm):
print(token.text, similar_word.similarity(token))
# 运行结果
无输出