Levenshtein距离/string匹配algorithm的短语

我有两个电子表格,每个电子表格都提供有关在工作networking上运行的一大堆应用程序的信息。 他们是由两个独立的人创造的,他们从来没有见过这样的人。

因此,它们给予应用程序的名称在表单之间是不固定的。 但是,它们是相似的。 例如,可能会调用一个应用程序“Office 2010”,另一个“MS Office 10”或其他东西。

我已经查阅了Levenshteinalgorithm,但是这似乎只适用于单词顺序不变的单个单词或短语,而只有拼写不同。 (我不是计算机科学家,请随时纠正我)。

因此,我正在寻找一种algorithm,对于一个表中的每个名称,可以遍历另一个表中的每个名称并find最接近的匹配。 不一定是完美的,任何事情都会有所帮助。

有任何想法吗? 感谢所有能够帮助的人。

Levenshtein距离是编辑距离的一种普遍forms,它编辑编辑的数量 – 插入,删除和replace – 将一个string转换为另一个string。 你是对的,它不能很好地处理换位,但取决于你的需求,它仍然可以完成这项工作。

模糊string匹配是一个启发式的领域,所以最好的做法是四处游玩,以达到您的具体目标。 例如,可以尝试通过对文本进行折叠来对文本进行预处理,然后在编辑距离之前按照字典顺序对令牌进行sorting,这在很多情况下有助于进行换位。 如果一个string是另一个string的近似子string,那么也可以减去两个string之间的绝对长度差异,但要小心,因为如果这样做,空string将匹配所有内容。

总的来说,你总是会在特异性和敏感性之间进行权衡,所以诀窍就是简单地调整启发式的方式,使其以你所熟悉的方式执行。