spaCy相似性有时很奇怪。 如果我们比较完全相等的文本,则得到1.0分。 但文字几乎相等,我们可以得到> 1的分数。 此行为可能会损害我们的代码。 为什么我们得到这个> 1.0的分数,我们可以预测吗?
def calc_score(text_source, text_target):
return nlp(text_source).similarity(nlp(text_target))
# nlp = spacy.load('en_core_web_md')
calc_score('software development', 'Software development')
# 1.0000000155153665
答案 0 :(得分:0)
来自https://spacy.io/usage/vectors-similarity
:
相同的令牌显然彼此100%相似(只是不相似) 由于向量数学和浮点数,总是精确为1.0 精确度)。
只需按照https://stackoverflow.com/a/13232356/447599使用np.clip