问题标签 [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.
python - Jellyfish 的 Damerau–Levenshtein 距离计算有问题吗?
我正在尝试使用Jellyfish来处理模糊字符串。我注意到Damerau-Levenshtein 距离算法的一些奇怪行为。例如:
在我看来,两者都应该得分 2。
在第一个例子中:
ZX
→XZ
(转置相邻字符)XZ
→XYZ
(插入Y
)
在第二个例子中:
BACD
→ABDC
(转置相邻BA
字符)ABDC
→ABCD
(转置相邻DC
字符)
这是算法有问题,还是我误解了度量?任何指导将不胜感激。
编辑
只是为了让事情变得更奇怪,我还观察到以下几点:
这特别奇怪,因为两个示例中的编辑数量不仅应该是两个,而且它们是完全相同的编辑:
在第三个例子中:
jellyifhs
→jellyfihs
(转置相邻字符if
)jellyfihs
→jellyfish
(转置相邻字符hs
)
在第四个例子中:
ifhs
→fihs
(转置相邻字符if
)fihs
→fish
(转置相邻字符hs
)
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
我错了,还是功能有问题?
python - Python 中字符串相似度的百分比?
我不知道如何做一个程序,给出两个相同长度的字符串的相似度百分比。
例如,forabcd
和abce
它应该给出 75%。
abcd
订单很重要,我不希望它给了我dcab
100%。
我知道 Levenshtein 模块可以做到这一点,但我想要一个可以做到这一点的程序。
audio - 在口语中分割语音音频
我有一个长文本的音频文件,其中不同的部分都以口语“章节”开头(由同一位演讲者讲述)。有没有办法在这些词处将音频文件拆分为较小的文件?
我正在考虑删除“章节”的一个单词出现,将其放在单独的音频文件中,然后使用一些工具将原始音频与短片段进行模糊匹配,以找到“章节”出现并拆分原始在这些事件中归档。
哪个工具可以做到这一点?索克斯?大胆?
python - 更好的模糊匹配性能?
我目前正在使用方法 get_close_matches 来自difflib的方法来遍历 15,000 个字符串的列表,以获得与另一个大约 15,000 个字符串列表的最接近匹配:
每个值需要 0.58 秒,这意味着完成循环需要 8,714 秒或 145 分钟。是否有另一种可能更快的库/方法或提高此方法速度的方法?我已经尝试将两个数组都转换为小写,但这只会导致速度略有提高。
python - 两个带字符串的列表的相似度得分
我有一个字符串列表作为查询和数百个其他字符串列表。我想将查询与其他所有列表进行比较并提取它们之间的相似度分数。
例子:
我现在正在做的,我对结果不满意的是对它们的绝对比较。
我找到了一个可以帮助我的库,但我在想你是否有其他建议。
ssis - SSIS:仅针对特定行的模糊分组
我在 Visual Studio 2012 中使用 SQL Server 集成服务,并尝试使用模糊分组组件查找不同客户引用的类似地址。这是一些示例数据(SQL Fiddle):
我以前做过这个,在没有进一步限制的情况下比较所有行没有问题。然而,今天,我只想比较列内具有不同值的CustomerId
行。因此,关于我的样本数据,我对第 1 行和第 2 行之间的任何相似性不感兴趣,也不对第 3 和第 4 行之间的任何相似性感兴趣。我想知道的是:
- 第 3 行与第 1 行或第 5 行重复(或“近亲”)的可能性有多大?
- 第 4 行与第 1 行或第 5 行重复(或“近亲”)的可能性有多大?
- 第 5 行与第 1 行或第 3 行重复(或“近亲”)的可能性有多大?
有没有办法在模糊分组组件中集成“不同的 CustomerId 值”要求?
提前致谢。
python - 我的 for 循环只会提供最后一个结果,而不是全部
我正在尝试使用分数比较两个文本之间的相似性。这是我的代码:
问题是我的输出文件只给了我最后一次比较的分数,尽管我的 risk_list1 和 risk_list2 中有 3 个不同的文本文件。我无法让这个循环正常运行。
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 库
matlab - 分类中的模糊逻辑示例
我需要使用模糊逻辑对对象进行分类。每个对象都有 4 个特征 - {大小、形状、颜色、纹理}。每个特征都被语言术语和一些隶属函数模糊化。问题是我无法理解如何去模糊化,以便我可以知道未知对象属于哪个类。使用 Mamdani Max-Min 推理,有人可以帮助解决这个问题吗?
对象 = {Dustbin, Can, Bottle, Cup} 或分别表示为 {1,2,3,4}。每个特征的模糊集是:
特征 : 尺寸
形状:
特征 : 颜色
特征 : 质地
If then else 分类规则是
R1:如果对象尺寸大且呈圆柱形且颜色偏绿且质地粗糙,则对象为垃圾箱
或以表格形式只是为了节省空间
然后,有一个未知特征的清晰值 X = {12cm, 52,120,11}。我该如何分类?还是我的理解不正确,我需要重新制定整个事情?