【问题标题】:Fuzzy Matching with threshold filter C#使用阈值过滤器 C# 进行模糊匹配
【发布时间】:2011-05-04 10:34:22
【问题描述】:

我需要实现一些这样的:

string textToSearch = "Extreme Golf: The Showdown";
string textToSearchFor = "Golf Extreme Showdown";
int fuzzyMatchScoreThreshold = 80; // One a 0 to 100 scale
bool searchSuccessful = IsFuzzyMatch(textToSearch, textToSearchFor, fuzzyMatchScoreThreshold);
if (searchSuccessful == true)
{
    -- we have a match.
}

这是用 C# 编写的函数存根:

public bool IsFuzzyMatch (string textToSearch, string textToSearchFor, int fuzzyMatchScoreThreshold)
{
   bool isMatch = false;
   // do fuzzy logic here and set isMatch to true if successful match.
   return isMatch;
}

但我不知道如何在 IsFuzzyMatch 方法中实现逻辑。 有任何想法吗?或许为此目的有现成的解决方案?

【问题讨论】:

标签: c# fuzzy-search fuzzy-logic


【解决方案1】:

我喜欢 Dice Coeffiecient、Levenshtein Distance、Longest Common Subsequence 以及有时 Double Metaphone 的组合。前三个将为您提供一个阈值。我更喜欢以某种方式将它们结合起来。 YMMV。

我刚刚发布了一篇博客文章,其中包含每个名为 Four Functions for Finding Fuzzy String Matches in C# Extensions 的 C# 实现。

【讨论】:

    【解决方案2】:

    您需要Levenshtein Distance Algorithm 来查找如何通过插入、删除和修改操作从一个字符串转到另一个字符串。你fuzzyMatchScoreThreshold 是一个Levenshtein Distance 以简单的方式除以字符串的长度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-12
      • 2014-07-16
      • 2010-10-29
      • 1970-01-01
      • 2019-09-06
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多