【发布时间】:2019-09-06 16:29:28
【问题描述】:
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
【问题讨论】:
-
这看起来是由于浮点数不准确造成的。您可以使用
numpy.clip之类的东西将值裁剪到所需范围(例如最大值 1)。 -
您没有完全相等的文本!。第一个是software,第二个是Software。如果你使用 same 文本,你会得到正确的 1.0
-
@Aris F. 问题不是关于相等文本的 1 分,而是关于分数 > 1。可以翻译为“优于相等”,对吗?我们有完整的,完整的,完美的分数1,作为“完全平等”。而且,什么?这是一个更好的分数,>1,比完美更好!
标签: machine-learning nlp spacy