问题标签 [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.
algorithm - 模糊匹配数
我一直在使用 Double Metaphone 和 Caverphone2 进行字符串比较,它们在姓名、地址等方面效果很好(Caverphone2 最适合我)。但是,当您获取数字值(例如电话号码、IP 地址、信用卡号码等)时,它们会产生太多误报。
因此,我查看了Luhn和Verhoeff算法,它们基本上描述了我想要的,但并不完全。它们似乎擅长验证,但似乎不是为模糊匹配而构建的。有没有像 Luhn 和 Verhoeff 一样的行为,可以检测到涉及两个相邻数字的单个数字错误和换位错误,用于类似于模糊字符串算法的编码和比较目的?
我想对一个数字进行编码,然后将其与 100,000 个其他数字进行比较,以找到非常相似的匹配项。因此,像 7041234 这样的东西会与 7041324 匹配,作为可能的转录错误,但像 4213704 这样的东西不会。
sql - 在文本中进行单词搜索以查找包含最匹配变体的文本
我想找到一种方法从表中找到最合适的行,其中包含与我输入的单词最相似的单词。任何想法?(我使用的 OCR 会发现不完全相同的单词有时会将单词“特定”读作“特定”)
java - H2数据库中的模糊匹配?
我只是想知道是否有一种简单的方法可以使用 H2 数据库实现字符串的模糊匹配。我在数据库中有一个名称列表,我希望能够使用 3 个字符来搜索它们,这些字符可以按照输入 3 个字符的顺序在名称中找到。
我不确定这是否可行,但如果可以通过 SQL 而不是 Java 在数据库中完成,那会让生活变得更轻松
python - 使用 Python 解析 Excel 工作表中的列标题
我有一个看起来像这样的 Excel 电子表格:
我试图找到包含 ABC 和 JKL 的行。请注意,我传递的字符串可能与确切的列标题不匹配。
我正在使用xlrd
并且正在做这样的事情:
由于“ABC”与电子表格中的“ABC Col”不完全匹配。它失败。如果 mysetOfheadings
包含完全匹配,它会起作用。
关于如何使用集合交集进行正则表达式匹配的任何想法?
algorithm - OCR:根据最后 N 个结果选择最佳字符串(OCR 的自适应过滤器)
我已经看到一些关于根据不同引擎的输出确定最佳 OCR 结果的问题,答案通常是“选择最佳引擎”。但是,我想捕获几帧文本图像,可能会有临时遮挡或临时故障。我将 tesseract-ocr 与 python-tesseract 一起使用。
考虑到最后 N 帧的 OCR 输出,我想确定什么是最好的结果(为简单起见,逐行)。
例如,对于 N=3,我们可以使用中值过滤:
当 3 个字符中有 2 个相等时,多数人获胜,因此结果为 ABCD。但是,对于不同的字符串大小,这并不容易。如果我期望给定大小 M(如果扫描价格表,行通常是 XX.XX),我总是可以对大于 M 的字符串进行惩罚。
如果我们谈论数字,中值滤波会很好用(计算机视觉中的简单背景减法),或者一些最小均方自适应滤波。还有相似字符的问题:l
并且1
可能非常相似,具体取决于字体。
我也在考虑在每个字符串之间使用字符串距离。例如,选择与其他字符串的距离总和最小的字符串。
以前有没有人解决过这种问题?我应该知道这种问题的任何已知算法吗?
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)
字段名称的字段类型如下。
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。而且我认为这些算法不足以解决这个简写名称问题
python - 模糊字符串比较
我正在努力完成的是一个程序,它读取一个文件并根据原始句子比较每个句子。与原文完全匹配的句子将获得 1 分,完全相反的句子将获得 0 分。所有其他模糊句子将获得介于 1 和 0 之间的分数。
我不确定使用哪个操作可以让我在 Python 3 中完成此操作。
我已经包含了示例文本,其中 Text 1 是原始文本,其他前面的字符串是比较。
文本:示例
文本 1:那是一个黑暗而暴风雨的夜晚。我一个人坐在红色的椅子上。我并不孤单,因为我养了三只猫。
文本 20:那是一个阴暗的暴风雨之夜。我一个人坐在深红色的椅子上。我并不完全孤单,因为我有三只猫科动物//应该得分高,但不是 1
文本 21:那是一个阴暗而暴风雨的夜晚。我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物 // 得分应该低于文本 20
文本 22:我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物。这是一个阴暗而暴风雨的夜晚。// 得分应该低于文本 21 但不是 0
文本 24:那是一个黑暗而暴风雨的夜晚。我并不孤单。我没有坐在红色的椅子上。我养了三只猫。// 应该得 0 分!
image - 如何判断图像是否为 90% 黑色?
我以前从未做过图像处理。
我现在需要浏览来自相机的许多 jpeg 图像,以丢弃那些非常暗(几乎是黑色)的图像。
是否有我可以使用的免费库 (.NET)?谢谢。
python - 字符加扰的Levenshtein距离?
我正在寻找一个字符串比较度量 ala Levenshtein,当字符串中的字符被打乱时,它也可以工作。有谁知道这样的指标?如果有一个 Python 模块可以计算这样的指标,那就太好了。谢谢!