2

我正在为以下示例寻找模糊字符串算法:给定一个现有名称的数据库,如果匹配准确度高于输入阈值(例如 90%),则将输入匹配到最匹配的名称,否则为 NA

database = [James Bond, Michael Smith]

输入

James L Bond->James Bond
JBondL->James Bond
Bond,James->James Bond
BandJamesk->James Bond
Jenny,Bond->N/A

目前,像 Levenstein 这样的大多数算法和像 Soundex 这样的基于语音的算法都无法匹配像 BondJames 这样的倒置名称。到目前为止 cosine 和 Jacquard 产生了最好的结果,但我正在寻找更多,以便我可以选择最好的或可能组合算法。

4

1 回答 1

5

鉴于你的例子,我会考虑:

  • 将 n1 - 输入中的名称和 n2 - 数据库中的名称分隔为单词(通过分隔符和大写字母):n1 -> {u1,u2,...}, n2 -> {v1,v2,... }
  • 找到 n2 中单词顺序的排列,使s = sum(L(u, v)) 最小化,其中 L 是 Levenshtein 距离。
  • 选择最小化s的数据库条目。

当 L1 中的单词数和 L2 中的单词数不匹配时 - 你应该 'penalize' s

于 2017-07-18T16:52:02.703 回答