问题标签 [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 回答
3686 浏览

python - Jellyfish 的 Damerau–Levenshtein 距离计算有问题吗?

我正在尝试使用Jellyfish来处理模糊字符串。我注意到Damerau-Levenshtein 距离算法的一些奇怪行为。例如:

在我看来,两者都应该得分 2。

在第一个例子中

  1. ZXXZ(转置相邻字符)
  2. XZXYZ(插入Y

在第二个例子中

  1. BACDABDC(转置相邻BA字符)
  2. ABDCABCD(转置相邻DC字符)

这是算法有问题,还是我误解了度量?任何指导将不胜感激。

编辑

只是为了让事情变得更奇怪,我还观察到以下几点:

这特别奇怪,因为两个示例中的编辑数量不仅应该是两个,而且它们是完全相同的编辑:

在第三个例子中

  1. jellyifhsjellyfihs(转置相邻字符if
  2. jellyfihsjellyfish(转置相邻字符hs

在第四个例子中

  1. ifhsfihs(转置相邻字符if
  2. fihsfish(转置相邻字符hs
0 投票
1 回答
620 浏览

string - JellyFish 中 Jaro 距离的特殊行为

我正在尝试使用 Jellyfish 来处理模糊字符串。我注意到 jaro_distance 算法的一些奇怪行为。

我之前在使用 damerau_levenshtein_distance 算法时遇到了一些问题,这似乎是代码中的一个错误,然后堆栈用户在 github 上将其作为问题提出。

我不确定我是否在考虑测量错误,或者它是否是一个真正的错误。我查看了源代码(http://goo.gl/YVMl8k),但我不熟悉 C,所以我很难知道这是一个实现问题,还是我错了。

请注意以下事项:

现在,如果我对 jarrow 距离测量的理解是正确的,我相信结果应该是0.9285714285

我已经确定了计算出错的原因。要计算度量,我认为以下是正确的:

(7.0/7.0 + 7.0/7.0 + ((7.0 - (3.0/2.0))/7.0) * (1.0/3.0) = 0.9285714285

该表达式中的关键数字是 3.0。这个数字必须代表“匹配的数量(但顺序不同)”(维基百科)。在我看来,在 S1 和 S2 中,匹配但序列顺序不同的字符是“e”、“r”、“v”。

然而,JellyFish 在计算时似乎只识别出两个转置:

(7.0/7.0 + 7.0/7.0 + ((7.0 - (2.0/2.0))/7.0) * (1.0/3.0) = 0.95238095

我错了,还是功能有问题?

0 投票
5 回答
5061 浏览

python - Python 中字符串相似度的百分比?

我不知道如何做一个程序,给出两个相同长度的字符串的相似度百分比。

例如,forabcdabce它应该给出 75%。

abcd订单很重要,我不希望它给了我dcab100%。

我知道 Levenshtein 模块可以做到这一点,但我想要一个可以做到这一点的程序。

0 投票
1 回答
1477 浏览

audio - 在口语中分割语音音频

我有一个长文本的音频文件,其中不同的部分都以口语“章节”开头(由同一位演讲者讲述)。有没有办法在这些词处将音频文件拆分为较小的文件?

我正在考虑删除“章节”的一个单词出现,将其放在单独的音频文件中,然后使用一些工具将原始音频与短片段进行模糊匹配,以找到“章节”出现并拆分原始在这些事件中归档。

哪个工具可以做到这一点?索克斯?大胆?

0 投票
5 回答
6456 浏览

python - 更好的模糊匹配性能?

我目前正在使用方法 get_close_matches 来自difflib的方法来遍历 15,000 个字符串的列表,以获得与另一个大约 15,000 个字符串列表的最接近匹配:

每个值需要 0.58 秒,这意味着完成循环需要 8,714 秒或 145 分钟。是否有另一种可能更快的库/方法或提高此方法速度的方法?我已经尝试将两个数组都转换为小写,但这只会导致速度略有提高。

0 投票
1 回答
7781 浏览

python - 两个带字符串的列表的相似度得分

我有一个字符串列表作为查询和数百个其他字符串列表。我想将查询与其他所有列表进行比较并提取它们之间的相似度分数。

例子:

我现在正在做的,我对结果不满意的是对它们的绝对比较。

我找到了一个可以帮助我的库但我在想你是否有其他建议。

0 投票
1 回答
487 浏览

ssis - SSIS:仅针对特定行的模糊分组

我在 Visual Studio 2012 中使用 SQL Server 集成服务,并尝试使用模糊分组组件查找不同客户引用的类似地址。这是一些示例数据(SQL Fiddle):

我以前做过这个,在没有进一步限制的情况下比较所有行没有问题。然而,今天,我只想比较列内具有不同值的CustomerId行。因此,关于我的样本数据,我对第 1 行和第 2 行之间的任何相似性不感兴趣,也不对第 3 和第 4 行之间的任何相似性感兴趣。我想知道的是:

  1. 第 3 行与第 1 行或第 5 行重复(或“近亲”)的可能性有多大?
  2. 第 4 行与第 1 行或第 5 行重复(或“近亲”)的可能性有多大?
  3. 第 5 行与第 1 行或第 3 行重复(或“近亲”)的可能性有多大?

有没有办法在模糊分组组件中集成“不同的 CustomerId 值”要求?

提前致谢。

0 投票
2 回答
74 浏览

python - 我的 for 循环只会提供最后一个结果,而不是全部

我正在尝试使用分数比较两个文本之间的相似性。这是我的代码:

问题是我的输出文件只给了我最后一次比较的分数,尽管我的 risk_list1 和 risk_list2 中有 3 个不同的文本文件。我无法让这个循环正常运行。

0 投票
1 回答
1465 浏览

fuzzy-search - 使用 SimMetrics 库进行模糊匹配

我需要一些帮助。我将如何创建一个简单的 SQL 语句来使用这些函数选择 Names @userEnteredName。换句话说,我想从用户输入 smyth 的客户表中获取客户名称,然后返回 smith、smitty 等。

...或一句话我如何使用下面创建的函数来查询数据库表。

预先感谢您的帮助。

<code>declare @userEnteredLastName varchar(200); declare @userEnteredFirstName varchar(200); set @userEnteredLastName='smyth'; set @userEnteredFirstName='Jon';

SELECT * FROM Customer WHERE JaroWinkler(CustomerLastName, @userEnteredLastName) > .75 AND JaroWinkler(CustomerFirstName, @userEnteredFirstName) > .75</code>

我使用位于 SimMetrics 的 SimMetrics

0 投票
2 回答
5129 浏览

matlab - 分类中的模糊逻辑示例

我需要使用模糊逻辑对对象进行分类。每个对象都有 4 个特征 - {大小、形状、颜色、纹理}。每个特征都被语言术语和一些隶属函数模糊化。问题是我无法理解如何去模糊化,以便我可以知道未知对象属于哪个类。使用 Mamdani Max-Min 推理,有人可以帮助解决这个问题吗?

对象 = {Dustbin, Can, Bottle, Cup} 或分别表示为 {1,2,3,4}。每个特征的模糊集是:

特征 : 尺寸

形状:

特征 : 颜色

特征 : 质地

If then else 分类规则是

R1:如果对象尺寸大且呈圆柱形且颜色偏绿且质地粗糙,则对象为垃圾箱

或以表格形式只是为了节省空间

然后,有一个未知特征的清晰值 X = {12cm, 52,120,11}。我该如何分类?还是我的理解不正确,我需要重新制定整个事情?