自定义 python-levenshtein 字符值

Customising python-levenshtein character values

我正在使用 python-levenshtein 模块分析很长一段时间内的爱尔兰语文本;随着时间的推移,文本会发生许多正字法变化,例如bí -> ḃí -> bhí,'b' 上的变音符号和 b 后面的 'h' 都代表相同的语法形式的弱音(在第一句中未显示)。

在所有这些形式之间我想要一个相当低的距离,但是使用 python-levenshtein 距离在 Levenshtein.ratio(u'ḃí', u'bí') = 0.5Levenshtein.ratio(u'xí', u'bí') = 0.5 之间给出了相同的距离,显然对字符 'b' 的微小正字法更改以及用 'x' 的完全替换(从国外借来的引导词)不应该有相同的分数。

那么有没有办法修改特定字符更改的值,例如减少 bí 到 ḃí 的距离,但增加 bí 和 xí 之间的距离?还是我需要自己制作实现?

Levenshtein 算法 ("edit distance") 不允许字符之间有不同的距离,但是有一个概括 - Needleman-Wunsch 算法 - 允许。我不知道 Python 实现,但建议在实现自己的实现之前寻找一个 - 这是可能的,但 non-trivial.