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

arrays - perl String::Approx on Arrays

我正在使用String::Approx从其他列表中找到最相似的匹配项。我惊喜地发现您可以使用amatch()数组与数组进行比较,尽管该功能没有记录在案;我准备编写自己的函数来做到这一点。我更惊讶地发现元素的顺序并不重要。但是,即使amatch()工作完美无缺,我在adist(). 考虑以下程序:

这是它的输出:

所以,它似乎选择了正确的答案(它忽略了['giraffe', 'elephant']and ['hawk', 'shark']),但它不能告诉我距离。最终目标是按距离对比赛进行排序并选择最喜欢的比赛@matchstr。实际上是否amatch()像我认为的那样工作,或者我只是使用了过于简单的输入?为什么不amatch()工作?

0 投票
2 回答
1367 浏览

python - 在 Python (url) 中的大量文本中模糊匹配字符串

我有一个公司名称列表,并且我有一个 url 提及公司名称的列表。

最终目标是查看 url,并找出 url 上的公司中有多少在我的列表中。

示例 URL:http ://www.dmx.com/about/our-clients

每个 URL 的结构都不同,所以我没有一个很好的方法来进行正则表达式搜索并为每个公司名称创建单独的字符串。

我想构建一个 for 循环来从 URL 的全部内容列表中搜索每个公司。但似乎 Levenshtein 更适合两个较小的字符串,而不是一个短字符串和一大段文本。

这个初学者应该在哪里寻找?

0 投票
1 回答
1446 浏览

groovy - 模糊字符串匹配

在一些图像上运行光学字符识别后,我得到了近似的文本。很多时候认可度不是很高。例如,实际文本“DATE”是“DHTE”或“0HTE”。基本上我需要识别和提取每一行中的数据,所以我不想要完美的识别,只需要识别日期线即可。我试图计算 Levenshtein 编辑距离,但不幸的是,这往往会为 DATE 和 TIME 提供相似的值。目前,我正在尝试探索是否可以使用正则表达式匹配数据模式。

是否有更好的匹配过程的方法/算法?好在我的套话量不是很大。

(我将 tesseract 用于 ocr 和 groovy/java 用于算法)

0 投票
4 回答
14833 浏览

r - 查找接近重复记录的技术

我正在尝试清理一个数据库,多年来,该数据库已获得许多重复记录,名称略有不同。例如,在公司表中,有“Some Company Limited”和“SOME COMPANY LTD!”之类的名称。

我的计划是将有问题的表格导出到 R 中,将名称转换为小写,替换常见的同义词(如“limited”->“ltd”),去掉非字母字符,然后使用agrep来查看看起来相似的内容。

我的第一个问题是agrep它只接受一个模式来匹配,并且循环遍历每个公司名称以匹配其他公司名称很慢。(某些要清理的表将有数万甚至数十万个名称要检查。)

我已经非常简要地查看了该tm包(JSS 文章),它看起来非常强大,但适用于分析大块文本,而不仅仅是名称。

我有几个相关的问题:

  1. tm软件包是否适合此类任务?

  2. 有更快的替代方案agrep吗?(所述功能使用 Levenshtein 编辑距离,这很慢。)

  3. 除了agrep和之外,R 中还有其他合适的工具tm吗?

  4. 我什至应该在 R 中执行此操作,还是应该直接在数据库中执行此类操作?(这是一个 Access 数据库,所以如果可能的话,我宁愿避免接触它。)

0 投票
1 回答
546 浏览

c# - 模糊文本匹配

我需要尝试将给定的文本与数据库中的文本进行匹配。

这方面的一个例子是:

给定文本:Acura MDX 技术包

数据库项目:

Tech Pkg Technology Pkg with Navigation Tech Pkg with Entertainment Pkg Base FWD w/Technology Package/18" Wheels FWD

这不必 100% 完美,只是一个最佳猜测。我应该特别注意哪些图书馆?

0 投票
2 回答
3536 浏览

ruby-on-rails - Ruby/Rails 中的模糊比较

我一直在为 Rails 中的模糊比较寻找一些好的选择。

本质上,我有一组字符串,我想与我的数据库中的一些字符串进行比较,如果适用,我想获得最接近的字符串。在这种特殊情况下,我对检测乱序/拼写错误的字母不是很感兴趣,而是忽略无关单词(额外信息、标点符号、诸如:the、and、it 等单词)并挑选出最佳匹配。这些字符串的长度通常在 2-7 个单词之间。

你会建议什么是最好的宝石/方法?我看过 amatch (http://flori.github.com/amatch/doc/index.html) 但我想知道还有什么。

谢谢!

0 投票
3 回答
1323 浏览

python - 使用 TRE 在 python 中近似正则表达式:奇怪的 unicode 行为

我正在尝试在 python 中使用TRE -library 来匹配拼写错误的输入。
重要的是,它确实可以很好地处理 utf-8 编码的字符串。

一个例子:
德国首都的名字是柏林,但从发音上看是一样的,如果人们写“Bärlin”

到目前为止它正在工作,但如果非 ASCII 字符位于检测到的字符串的第一个或第二个位置,则范围和检测到的字符串本身都不正确。

输出

并不是说对于正则表达式'.*Berlin'它工作正常,而对于正则表达式'Berlin'

不工作,而

按预期工作。

我的编码有什么问题吗?你知道什么诀窍吗?

0 投票
1 回答
10452 浏览

elasticsearch - elasticsearch 模糊匹配 max_expansions & min_similarity

我在我的项目中使用模糊匹配主要是为了查找拼写错误和同名的不同拼写。我需要准确理解弹性搜索的模糊匹配是如何工作的,以及它是如何使用标题中提到的 2 个参数的。

据我了解,min_similarity是查询字符串与数据库中的字符串匹配的百分比。我找不到有关如何计算此值的确切描述。

据我所知, max_expansions是应该执行搜索的 Levenshtein 距离。如果这实际上是 Levenshtein 距离,那对我来说将是理想的解决方案。无论如何,它不起作用,例如我有“Samvel”这个词

文档说了一些我实际上不明白的内容:

所以请任何人向我解释这些参数究竟是如何影响搜索结果的。

0 投票
1 回答
1949 浏览

ruby-on-rails - 如何规范公司名称

我们有用户生成的雇主名称,有各种变体。例如,人们输入或导入:


歌 谷歌公司
谷歌公司
谷歌公司

到数据库搜索这个,看起来就像是一家不同的公司。我们已经更改了一些内容,将每个雇主映射到一个“标准化”名称,但是总共有 70,000 个,很难手动完成。

有没有人对如何规范化现有条目以及如何维护我们对所有传入名称执行此操作有建议?

0 投票
2 回答
194 浏览

sql-server - 查找拼写错误或其他信息更改的客户之间重复交易的技术?

这不是 SQL Server 特定的问题;但这里可能有 tSQL 特定的选项。

我有一堆客户详细信息;他们中的许多人取消并退出了​​他们的服务。他们获得了一个全新的帐户;我们的数据验证充其量只是粗略的;所以他们经常打错电子邮件地址或其他数据。

问题分为两部分:

第一的; 我有诸如名字和姓氏、电子邮件、信用卡最后 4 位、邮政编码、电话号码等信息。是否有一种算法/过程我可以查看我的数据集并寻找常见的重复池,以便我可以确定数据的一些手动特征,这些特征往往是回头客的“陷阱”项目——即 80% 的时间电子邮件“相似”且邮政编码相同,是回头客(基于我的人工匹配技能)?

第二; 我该如何表达数据集之间的相似性——即如果 5 个字段中有 3 个匹配,则有一个称为匹配的项目?所有不同数据点之间的某种相似性指数?我知道我可以在某种程度上在名称上使用 soundex……在电子邮件地址上不太确定。

所以,我对快速和肮脏的解决方案都感兴趣(我今晚正在整理分析;但我也对解决这个问题的“正确”方法非常感兴趣。)这两个答案都会赢得我的爱和尊重。=)