【问题标题】:Normalized word count comparisons标准化字数比较
【发布时间】:2017-04-28 14:56:40
【问题描述】:

是否有标准的计算方法来比较两个无序的字符串。

我喜欢标准化的东西,尽管我认为我正在进行一系列比较,我可以用最高分标准化,尽管对于我的特定建议而言,这将是低效的。

例子:

c1 = magicFunc("big truck red", "big red truck")
c2 = magicFunc("big red truck", "big red truck")
c3 = magicFunc("big red red truck", "big red truck")
c4 = magicFunc("big blue truck", "big red truck")

c1、c2 和 c3 的“分数”高于 c4 我对 c2 vs c3 有点漠不关心(但 c3 可能应该更高)并且 c1 应该等于 c2 因为顺序无关紧要。

【问题讨论】:

  • 什么是c5?什么是无序字符串?
  • 另外,为什么这标记为javascriptpython
  • 我的最后一个问题:你如何评价magicFunc("big red red truck", "big big red truck")
  • @aryamccarthy 应该是 c4。
  • @aryamccarthy 因为代码库在两者中,我会找到答案(我想在这个意义上任何语言都可以......)

标签: javascript python nlp word-count


【解决方案1】:

你应该看看_.uniq

您可以使用该函数然后编写您的magicFunc 来比较两个字符串,方法是将它们转换为数组并通过_.uniq 传递它们。

您也可以通过简单的.maping 或.reduceing .split up 字符串来实现您自己的。我可能会从 lodash 开始,看看它会把我带到哪里。

【讨论】:

  • 与标准库setcollections.Counter 有何不同? 编辑:没关系。由于某种原因,这个问题被标记为 JavaScript 和 Python。
  • @aryamccarthy 查看我对这个问题的评论。
【解决方案2】:

试一试:

from collections import Counter

def magicFunc(str1, str2):
    bag1, bag2 = Counter(str1.split()), Counter(str2.split())
    overlap = bag1 & bag2
    return sum(overlap.values())

在您给出的输入中,得分为 3、3、3 和 2。

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多