【问题标题】:Making two strings match even if one of them contains typo使两个字符串匹配,即使其中一个包含错字
【发布时间】:2015-09-16 09:46:27
【问题描述】:

我有一个 array_subscribed_players,我正在检查这个数组是否包含这样的字符串:

array_subscribed_players.include?(subscription.user.full_name_inversed.downcase.strip)

我正在寻找一种方法让这个表达式返回true,即使我给出的字符串与array_subscribed_players 中包含的字符串不完全匹配。假设是否有一个或两个不同的字母,或者它是否有一个额外或更少的字母。

【问题讨论】:

  • Bob Jones 和 Rob Bones 匹配?只有两个字母不同,但显然不是错字。正则表达式无法实现 NLP,但如果两个字母不同,您可以进行粗略匹配以匹配,但您会得到一些非常不准确的结果

标签: ruby regex


【解决方案1】:

您最好使用进行模糊搜索的 gem,使用 trigrams 等方法,然后尝试您认为足够高的分数以算作匹配。

提供各种宝石:寻找三元组、模糊匹配等。

【讨论】:

    【解决方案2】:

    你想要的是一个模糊匹配算法。您可以开始使用solution suggested in this answer 或各种模糊匹配 Ruby 实现之一。

    一旦你有了算法(打包为一个方法),只需在数组的每个项目上调用该方法,而不是使用标准的字符串相等。

    【讨论】:

      【解决方案3】:

      您可以使用 gem 类似的文本。它提供了与两个字符串相比相似的百分比。你必须为你正在寻找的相似度建立逻辑。

      https://rubygems.org/gems/similar_text

      【讨论】:

        猜你喜欢
        • 2013-01-09
        • 2021-10-18
        • 2020-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多