问题标签 [string-metric]

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 回答
651 浏览

algorithm - 仅使用对角线的 Levenshtein 矩阵

根据维基百科,Wagner-Fischer-algorithm 有一个可能的修改,它可以计算两个单词的 Levenshtein 距离是否低于某个阈值,如果你只想知道的话,这比原来的要快得多。

“通过检查对角线而不是行,并使用惰性求值,我们可以在 O(m (1 + d)) 时间内找到 Levenshtein 距离(其中 d 是 Levenshtein 距离),这比常规动态规划算法快得多如果距离很小。”

这个解决方案是如何工作的?我很难将其可视化,因为感觉任何矩阵单元格的值都取决于上方、左侧和对角线左侧的单元格的值,所以我不知道如何遍历仅使用对角线的矩阵。

0 投票
1 回答
309 浏览

java - 在java中识别具有相同含义的字符串

我有以下问题。我想在java中识别具有相似含义的字符串。我试图用Stringmetrics计算字符串之间的相似性。这按预期工作,但我需要更方便的东西。

例如,当我有以下 2 个字符串(1 个单词)时:

那么这两个字符串非常相似。当我使用余弦相似度时,我得到以下结果:

但是当我使用 damerau-levenshtein 相似性时,我得到以下结果:

下一个问题是单词有很多同义词。对于 Stringmetrics,这些同义词不被考虑。

例如,这两个字符串应该被认为是相同的:

我希望你们能帮助我。

0 投票
4 回答
156 浏览

c# - 逐字比较并显示变化

可以标记为重复,但我还没有找到合适的解决方案。

我需要编写一个函数,逐字比较 2 段文本,并打印出显示添加/删除/更改的单词的文本。例如:

StringOriginal = "我是 Tim,今年 27 岁"

StringEdited = "我是 Kim,我没那么老"。

结果:我是Tim Kim,我27 岁,还不算老。

我发现的大多数差异算法都倾向于逐字符比较。这很好用,直到你在同一个索引上有两个不同的单词,并且有相互的字符。

“我是蒂姆”编辑为“我是金”结果为:

我是T

代替

我是蒂姆·金。

任何指针?

0 投票
0 回答
55 浏览

r - 大型数据集名称对的字符串距离

我在一个数据框中有一个相当大的数据集,其中包含大约 400,000 个不同的客户端名称。一些名称被用户多次输入错误。通常,名称不完全匹配但非常接近(即“Bob's Garage”和“Bob's Garage Inc”)。我想使用 tidy_stringdist 来识别那些紧密配对以进行调查和清理,但在实施时遇到了麻烦。

问题 1:要比较的所有可能名称配对的数据集太大。我可以运行第一个单词及其所有对,仅将结果保持在某个权重阈值以上,然后转到下一个单词并重复到最后吗?

问题 2:当我创建要比较的名称配对时,我还想保留该名称的 ID 和 data_source 吗?原因是我稍后需要使用 ID 和 data_source 重新连接到另一个表。

问题 3:我想通过 data_source 运行分析(因此仅在 data_source 相同时测试名称配对)。

问题 4:从结果中,我想排除 weight = 1 时的情况,但前提是该对的 ID 相同。这是一个小样本数据集:

我尝试了以下方法:

我理想的输出将是一个看起来像这样的数据框:

V1_data_source | V1_id | V1_名称 | V2_data_source| V2_id | V2_名称 | 重量

感谢您提供的任何帮助。

0 投票
0 回答
14 浏览

python - 基于形状的数字相似度

我有一个标准化代码列表,由于光学扫描仪解释手写数字并输出替代数字(如 5 变为 6、1 变为 7、4 变为 9、0 变为 8),似乎存在数据输入错误。

Soundex 字符串度量的参数是将听起来相似的辅音分组,并且可以根据该度量测试两个字符串“听起来”是否相似。对于“看起来”相似的数字是否有类似的指标?

我想替换给定代码中的数字,用附加信息测试代码,看看替换的数据是否解决了一些数据不规则性。

0 投票
0 回答
35 浏览

algorithm - 推荐用于字符串检测的字符串度量算法?

我们正在尝试为我们的字符串比较程序选择一个字符串度量算法。如果我们想要检测单词的拼写错误和更改(例如将字母更改为单词或符号、添加额外的字母或反转单词等),那么哪个是最好的字符串度量算法?对不起糟糕的英语

0 投票
0 回答
10 浏览

string - 具有拼写更改的单词的理想字符串度量算法(反转,添加额外字符,在前缀或后缀内)

再会!我们目前遇到了障碍,因为我们找不到理想的字符串度量算法用于我们的程序。字符串度量算法有很多,一一测试和检查并不理想。

我们需要证明选择的字符串度量对于我们试图解决的问题是理想的,即检测句子中的亵渎词。我们最初选择了 Jaro-Winkler 距离,但与其他算法相比,我们无法完全证明它是正确的算法。我们只能将它与 Levenshtein 和 Hamming Distance 进行比较。

当前的问题在于拼写更改,因为我们需要有一个特定的阈值来证明一个词是否亵渎。我们需要能够捕捉到拼写错误(添加/减少字母)、颠倒、音节重新排列等的亵渎词。然后我们不确定 Jaro-Winkler 是否适合这类问题。

现在我们不会专注于像 @$$ 这样的 leet/特殊形式。

任何帮助和建议将不胜感激!