【问题标题】:spacy similarity bigger than 1空间相似度大于 1
【发布时间】: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


【解决方案1】:

来自https://spacy.io/usage/vectors-similarity

相同的标记显然彼此 100% 相似(只是不 由于矢量数学和浮点数,总是正好为 1.0 不精确)。

按照https://stackoverflow.com/a/13232356/447599使用np.clip

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-26
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2014-02-25
    • 2016-01-25
    • 2013-07-18
    相关资源
    最近更新 更多