问题标签 [fuzzy-comparison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4874 浏览

algorithm - 模糊匹配数

我一直在使用 Double Metaphone 和 Caverphone2 进行字符串比较,它们在姓名、地址等方面效果很好(Caverphone2 最适合我)。但是,当您获取数字值(例如电话号码、IP 地址、信用卡号码等)时,它们会产生太多误报。

因此,我查看了LuhnVerhoeff算法,它们基本上描述了我想要的,但并不完全。它们似乎擅长验证,但似乎不是为模糊匹配而构建的。有没有像 Luhn 和 Verhoeff 一样的行为,可以检测到涉及两个相邻数字的单个数字错误和换位错误,用于类似于模糊字符串算法的编码和比较目的?

我想对一个数字进行编码,然后将其与 100,000 个其他数字进行比较,以找到非常相似的匹配项。因此,像 7041234 这样的东西会与 7041324 匹配,作为可能的转录错误,但像 4213704 这样的东西不会。

0 投票
2 回答
169 浏览

sql - 在文本中进行单词搜索以查找包含最匹配变体的文本

我想找到一种方法从表中找到最合适的行,其中包含与我输入的单词最相似的单词。任何想法?(我使用的 OCR 会发现不完全相同的单词有时会将单词“特定”读作“特定”)

0 投票
1 回答
1441 浏览

java - H2数据库中的模糊匹配?

我只是想知道是否有一种简单的方法可以使用 H2 数据库实现字符串的模糊匹配。我在数据库中有一个名称列表,我希望能够使用 3 个字符来搜索它们,这些字符可以按照输入 3 个字符的顺序在名称中找到。

我不确定这是否可行,但如果可以通过 SQL 而不是 Java 在数据库中完成,那会让生活变得更轻松

0 投票
2 回答
613 浏览

python - 使用 Python 解析 Excel 工作表中的列标题

我有一个看起来像这样的 Excel 电子表格:

我试图找到包含 ABC 和 JKL 的行。请注意,我传递的字符串可能与确切的列标题不匹配。

我正在使用xlrd并且正在做这样的事情:

由于“ABC”与电子表格中的“ABC Col”不完全匹配。它失败。如果 mysetOfheadings包含完全匹配,它会起作用。

关于如何使用集合交集进行正则表达式匹配的任何想法?

0 投票
1 回答
624 浏览

algorithm - OCR:根据最后 N 个结果选择最佳字符串(OCR 的自适应过滤器)

我已经看到一些关于根据不同引擎的输出确定最佳 OCR 结果的问题,答案通常是“选择最佳引擎”。但是,我想捕获几帧文本图像,可能会有临时遮挡或临时故障。我将 tesseract-ocr 与 python-tesseract 一起使用。

考虑到最后 N 帧的 OCR 输出,我想确定什么是最好的结果(为简单起见,逐行)。

例如,对于 N=3,我们可以使用中值过滤:

当 3 个字符中有 2 个相等时,多数人获胜,因此结果为 ABCD。但是,对于不同的字符串大小,这并不容易。如果我期望给定大小 M(如果扫描价格表,行通常是 XX.XX),我总是可以对大于 M 的字符串进行惩罚。

如果我们谈论数字,中值滤波会很好用(计算机视觉中的简单背景减法),或者一些最小均方自适应滤波。还有相似字符的问题:l并且1可能非常相似,具体取决于字体。

我也在考虑在每个字符串之间使用字符串距离。例如,选择与其他字符串的距离总和最小的字符串。

以前有没有人解决过这种问题?我应该知道这种问题的任何已知算法吗?

0 投票
0 回答
836 浏览

solr - Solr 对长度小于 4 的短词的模糊查询

我正在尝试使用以下查询对名称字段进行模糊搜索。

当我运行查询时q=(name:'smiht'~0.25) AND (name:'will'~0.25) ,返回的记录的名称类似于Will Smith, William D Hamilton DC, William I Smith JR

现在,当我在下面的查询末尾添加一个像“dc”这样的词时,它不会返回任何结果。我期待看到所有名称为“William D Hamilton DC”的记录。solr 模糊查询不适用于较短的单词吗?有人可以帮忙吗?

q=(name:'smiht'~0.25) AND (name:'will'~0.25) AND (name:'dc'~0.25)

字段名称的字段类型如下。

0 投票
1 回答
1698 浏览

c# - 模糊字符串比较 - 检测速记名称

这将是我第二次询问计算语言学/模糊字符串匹配,但这次不是关于词干。

我的第一个问题是使用模糊字符串匹配对数据库进行重复数据删除,我已经做到了。现在,我必须检测一个字符串是否是另一个字符串的简写。例如:

  • JOHN ADRIAN FREEMAN WELTER 等于 JAF Welter 或 JAFWelter
  • MICROSOFT OFFICE 等于 MS OFFICE
  • BUILDING 等于 BLDG

我目前正在使用 SimMetrics 的 .Net 版本来解决我的第一个问题。那么,SimMetrics 中有没有一种方法可以解决我的问题呢?如果没有,那么解决这个问题的最佳方法是什么?

以下是 SimMetrics 中实现的指标:

  • 汉明距离
  • 莱文斯坦距离
  • Needleman-Wunch 距离或卖方算法
  • 史密斯-沃特曼距离
  • Gotoh 距离或 Smith-Waterman-Gotoh 距离
  • 街区距离或L1距离或城市街区距离
  • 蒙格埃尔坎距离
  • Jaro 距离度量
  • 雅罗·温克勒
  • SoundEx 距离指标
  • 匹配系数
  • 骰子系数
  • Jaccard 相似度或 Jaccard 系数或 Tanimoto 系数
  • 重叠系数
  • 欧几里得距离或 L2 距离
  • 余弦相似度
  • 变分距离
  • 海灵格距离或巴塔查亚距离
  • 信息半径(Jensen-Shannon 散度)
  • 谐波平均值
  • 偏差散度
  • 混淆概率
  • Fellegi 和 Sunters (SFS) 指标
  • TFIDF 或 TF/IDF
  • 快速A
  • 爆破
  • 最大匹配
  • q-gram
  • Ukkonen 算法

我对所有这些算法都不是很熟悉。我已经在这里使用的是 Leveshtein Distance、Needleman-Wunch、Jaro-Winkler、SoundEx 和 TF/IDF。而且我认为这些算法不足以解决这个简写名称问题

0 投票
5 回答
87238 浏览

python - 模糊字符串比较

我正在努力完成的是一个程序,它读取一个文件并根据原始句子比较每个句子。与原文完全匹配的句子将获得 1 分,完全相反的句子将获得 0 分。所有其他模糊句子将获得介于 1 和 0 之间的分数。

我不确定使用哪个操作可以让我在 Python 3 中完成此操作。

我已经包含了示例文本,其中 Text 1 是原始文本,其他前面的字符串是比较。

文本:示例

文本 1:那是一个黑暗而暴风雨的夜晚。我一个人坐在红色的椅子上。我并不孤单,因为我养了三只猫。

文本 20:那是一个阴暗的暴风雨之夜。我一个人坐在深红色的椅子上。我并不完全孤单,因为我有三只猫科动物//应该得分高,但不是 1

文本 21:那是一个阴暗而暴风雨的夜晚。我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物 // 得分应该低于文本 20

文本 22:我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物。这是一个阴暗而暴风雨的夜晚。// 得分应该低于文本 21 但不是 0

文本 24:那是一个黑暗而暴风雨的夜晚。我并不孤单。我没有坐在红色的椅子上。我养了三只猫。// 应该得 0 分!

0 投票
2 回答
251 浏览

image - 如何判断图像是否为 90% 黑色?

我以前从未做过图像处理。

我现在需要浏览来自相机的许多 jpeg 图像,以丢弃那些非常暗(几乎是黑色)的图像。

是否有我可以使用的免费库 (.NET)?谢谢。

0 投票
3 回答
272 浏览

python - 字符加扰的Levenshtein距离?

我正在寻找一个字符串比较度量 ala Levenshtein,当字符串中的字符被打乱时,它也可以工作。有谁知道这样的指标?如果有一个 Python 模块可以计算这样的指标,那就太好了。谢谢!