使用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))
# 运行结果
无输出

 
                 
    