compare - 语言特定怪癖的 Damerau–Levenshtein 距离

标签 compare fuzzy linguistics levenshtein-distance fuzzy-comparison

对于讲荷兰语的人来说,两个字符“ij”被认为是一个字母,可以轻松地与“y”交换。

对于我正在从事的项目,我想要 Damerau–Levenshtein distance 的变体将“ij”和“y”之间的距离计算为 1,而不是当前值 2。

我自己也尝试过,但失败了。我的问题是,我不知道如何处理两个文本长度不同的事实。 有人对如何解决这个问题有建议/代码片段吗?

谢谢。

最佳答案

维基百科文章的术语相当宽松。 “自然语言”中不存在“字符串”这样的东西。自然语言中存在音素,可以用书面字符和字符组合来表示。

一些字符组合是历史惯例的遗迹,一直延续到现代,例如在现代英语“rough”中,“gh”听起来像 -f- 或根本不发出声音。在我看来,在关注原始“字符串”时,算法必须对语言和拼写约定的历史关系不可知,这会在字符组合与单个音素相关时导致一些任意的度量。如何衡量“粗糙”到“ruf”?还是“通过”到“通过”? 或者德语的 o 元音变音“oe”?

在您的情况下,-y- 可以在语音和拼写上与 -ij- 交换。那么根据算法,两次删除后插入,还是一次删除 -j- 或 -i- 然后将剩余字符转置为 -y- 是什么?或者 -ij- 被合并并且合并之后是转置?

我建议您在应用算法之前为 -ij- 使用另一个未使用的组合字符,也许是 U00EC,带有重音符号的拉丁小写字母 i。

该算法如何处理多码点字符?

关于compare - 语言特定怪癖的 Damerau–Levenshtein 距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4593930/

相关文章:

nlp - Praat Script::打印频率输出

mysql - 如何连接同一个表来检查 a>b 是否为 10

比较两个字符串并删除相同的字母

r - 在 R 中使用 frbs.learn() 训练 ANFIS 模型时出错

.net - .NET 的模糊日期/时间管理库

nlp - 雪球词干 : defining Null Region

parsing - 如何解析对于正式语法而言过于可变但对于 NLP 而言又过于受限的文本?

java - 通过字节 block 比较两个文件java

javascript - 如何在 Javascript 中比较完全相同的字符串但具有不同的 charCodes

Ruby, FuzzBert, 无法将 Proc 转换为 String (TypeError)