问题标签 [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 投票
0 回答
405 浏览

java - 模糊匹配无序字符串

我有一堆字符串,它们的措辞完全随机,我需要找到与关键字的最佳匹配。我尝试过使用三元组和 Levenshtein 的算法,但我仍然得到不规则的结果。我尝试按字符串的第一个字符对字符串进行排序,然后运行 ​​Levenshtein 的算法,以便能够获得更准确的结果,但这并没有帮助。

我的关键字每个可能是 1-3 个单词,但我尝试匹配的目标字符串有时是 >10-20 个单词。我可以使用任何其他算法来有效地将关键字匹配到正确的字符串吗?

我尝试使用的三胞胎方法:

其中 A 和 B 是三元组数组(一个单词的 3 个字符,由 1 索引生成),例如

而 A ∩ B 是 A 和 B 中相似的三元组。这种方法看起来很有效,但最终给了我很多不规则的结果。

那么有什么办法可以改进这种模糊匹配呢?

0 投票
2 回答
2034 浏览

algorithm - 日期类型值的模糊匹配

我没有真正的问题,但我更喜欢为一个问题寻求创造性的输入。

我想比较两个(很可能不相等的)日期值并计算它们的相似性比率。因此,例如,如果我进行比较08.01.201310.01.2013我会得到一个相对较高的值,但介于两者之间08.01.201317.04.1998它会非常低。

但现在我不确定我应该如何准确计算相似度。首先,我正在考虑将 Date 值转换为字符串,然后在它们上使用 EditDistance(将一个字符串转换为另一个字符串的单个字符操作的数量)。在某些情况下,这似乎是一个好主意,我肯定会实现它,但我还需要一个适当的计算,比如31.01.201302.02.2013

0 投票
1 回答
1703 浏览

image - matlab图像比较

我正在尝试建立一个可用于与当前图像进行比较的图像数据库(因此,如果当前图像相等或几乎等于被比较的图像,它将给出匹配)

然而,要开始这个项目,我只想使用 Matlab 比较 2 个图像,看看这个过程是如何工作的。

有谁知道我可以如何比较 image1.jpg 和 image2.jpg 来了解它们之间的关系有多密切?所以基本上如果我要比较 image1.jpg 和 image1.jpg 关系应该是 100%,但是比较 2 个不同的图像可能会给我一个非常密切的关系。

我希望这有点道理!!!

谢谢,

0 投票
3 回答
3364 浏览

.net - 比较小数的最佳方法是什么?

比较小数的最佳方法是什么?

假设我有 2 个值,比如3.45and 3.44,可靠比较它们的最佳方法是什么?

我正在考虑将所有数字存储为345344以便我只比较整数,并且只向用户显示带小数点的格式化数字。

另一种解决方案是使用自定义函数来测试差异,当差异小于数字时0.01,数字应该相等。

还有哪些其他可能的解决方案(更好的解决方案)?

0 投票
1 回答
739 浏览

similarity - 使用模糊匹配聚合字符串

假设我有一个错误日志,并且我希望获得每种错误类型的计数。我已经通过按错误消息分组进行了简单的计数,但是许多消息包含特定于上下文的信息,这意味着尽管是由相同的错误引起的,但我不能简单地按消息文本进行分组。

一些示例,其中斜体部分因错误实例而异:

  • 未能在/primate/gorilla页面上检索用户188a9e12-6797-4d9b-8adf-4588b2435326 的结果
  • 未能在/primate/monkey页面上检索用户08c610d2-27d2-4f97-bf60-d5b3010e8dd6 的结果

我想使用一些模糊逻辑对所有此类消息进行分组。我知道 Levenshtein 距离算法对于这种类型的处理很有价值,但我猜原始距离没有价值,因为它没有根据字符串的长度加权(在 1000 个字符的字符串中,30 的距离不太重要,而 30 100)。

所以我的目标是遍历消息列表并获得某种模糊匹配的计数。为每个模糊匹配的消息生成某种一致的密钥可能会有一个附带问题?我该怎么办?

0 投票
4 回答
1719 浏览

mysql - SQL和模糊比较

假设我们有一张 People 表(姓名、姓氏、地址、SSN 等)。

我们想找到与指定人员 A“非常相似”的所有行。我想对 A 和表 People 中的所有行进行某种模糊逻辑比较。将有几个模糊推理规则分别在几个列上工作(例如,3 个名称模糊规则,2 个姓氏规则,5 个地址规则)

问题是以下两种方法中哪一种更好,为什么?

  1. 将所有模糊规则实现为存储过程,并使用一个繁重的 SELECT 语句来返回与 A“非常相似”的所有行。这种方法可能包括使用 soundex、sim metric 等。

  2. 实现一个或多个更简单的 SELECT 语句,该语句返回不太准确的结果,与 A“相当相似”,然后将 A 与所有返回的行(数据库外部)进行模糊比较以获得“非常相似”的行。所以模糊比较将用我最喜欢的编程语言来实现。

表 People 应该有多达 500k 行,我想每天进行大约 500-1000 次这样的查询。我使用 MySQL(但这还有待考虑)。

0 投票
2 回答
1232 浏览

python - Python“正则表达式”模块:模糊值

我正在使用Regex模块的“模糊匹配”功能。

如何获得“匹配”的“模糊值”,它指示模式与字符串的不同程度,就像 Levenshtein 中的“编辑距离”一样?

我以为我可以在 Match 对象中获得值,但它不存在。官方文档也没说什么。

例如:

a.captures()告诉我“for”这个词是匹配的,但我想知道模糊值,1在这种情况下应该是。

有没有办法做到这一点?

0 投票
3 回答
10065 浏览

java - 如何计算java中两个字符串之间的匹配分数?

我想将两个字符串分类为相似或不相似。例如

我正在寻找一个可以在 2 个字符串之间给出匹配分数的 java 库,并且从该分数中我可以确定它们是否相似。我的程序只需要处理一个小数据集(~2000 个字符串)。你知道那里是否已经有可用的东西吗?

0 投票
0 回答
126 浏览

algorithm - 鲁棒的非语音非密集模糊子串匹配

如果您正在编写代码来模糊匹配两个字符串,例如“coca-cola”与“koca-cola”,有一些标准的方法可以做到这一点,例如

  1. 比较 Levenshtein 编辑距离 ( http://en.wikipedia.org/wiki/Levenshtein_distance )
  2. 计算每个字符串的基于语音的散列(例如双变音)并进行比较。

但是,我找不到有关为子字符串执行此操作的标准且有效方法的信息。例如,对于输入“告诉我可口可乐”(“干草堆”),您想选择公司“可口可乐”(“针”)。

您不能使用修改后的 Levenshtein 算法,因为您可能有数百万根针头(数据库中的公司),这会占用太多资源。您可能可以计算大海捞针中每个单词的语音散列并与每个针进行比较,但是语音表示也有很多限制,我想知道是否有一个完善的标准来处理这个不使用语音的问题?

我正在寻找一种简单易懂且可扩展的算法。已经发布了类似的问题,其中给出了建议的答案,例如 Bitap 算法,但就像 Levenshtein 一样,这似乎没有规模化。

0 投票
3 回答
9295 浏览

python - Pandas 模糊合并/匹配名称列,有重复项

我目前有两个数据框,一个donors用于fundraisers. 我正在尝试查找是否有任何人fundraisers也捐赠过,如果有,请将其中的一些信息复制到我的fundraiser数据集中(捐赠者姓名、电子邮件和他们的第一次捐赠)。我的数据的问题是:

  1. 我需要按姓名和电子邮件进行匹配,但用户的姓名可能略有不同(例如“Kat”和“Kathy”)。
  2. donors和的名称重复fundraisers
    • 2a) 对于捐赠者,我可以获得唯一的姓名/电子邮件组合,因为我只关心第一个捐赠日期
    • 2b)虽然我需要保留两行并且不会丢失日期等数据,但在筹款活动中。

我现在拥有的示例代码:

所以这给我留下了每个捐赠者的第一笔捐款(假设任何具有完全相同姓名和电子邮件的人都是同一个人)。

理想情况下,我希望我的fundraisers数据集看起来像:

  • 我尝试关注这个线程:是否可以与 python pandas 进行模糊匹配合并?但不断出现索引超出范围错误(猜测它不喜欢筹款活动中的重复名称):(那么有什么想法可以匹配/合并这些数据集吗?

  • 用 for 循环来做(它有效,但速度非常慢,我觉得必须有更好的方法)

代码: