具有自定义字符映射的Levenstein算法

本文关键字:Levenstein 算法 映射 字符 自定义 | 更新日期: 2023-09-27 18:28:43

我想使用Levenstein算法在字符串列表中进行搜索。我想实现一个自定义的字符映射,以便键入拉丁字符并用希腊语搜索项目。

映射示例:

a = α, ά
b = β
i = ι,ί,ΐ,ϊ
... (etc)
u = ου, ού

因此,使用在列表中使用abu进行搜索

  • αbu
  • ab
  • ας(所有希腊字符)

将与列表中的所有项目一起生成。(订单不是问题)

如何在算法中应用映射?(这是我开始的地方)

具有自定义字符映射的Levenstein算法

我认为最好的方法是将符号预处理为一种确定的形式(例如,全部为拉丁形式),然后像正常情况一样使用Levenstein。

在伪代码中:

int func(String latinStr, String greekStr) {
   String mappedStr = convertToLatin(greekStr); // e.g. now αβ would be ab 
   return Levenstein(latinStr, mappedStr);
}

convertToLatin中,您可以逐个符号地询问Dictionary,其中包含替换和构造新字符串

的映射