查找名称/字符之间比较的算法

时间:2012-07-18 13:07:15

标签: algorithm math comparison compare

我想稍微关注一下这个挑战。

我的目的是找到一些在系统内发展的解决方案。

在我公司(土木工程)的业务中,我有以下情况:

我们在数据库中注册了元素/材料,但我们的数千家供应商拥有相同的元素/材料,名称不同但相似。

所以我有一个通过XML发票的元素列表(例如水泥)。

另一方面,我在我的数据库中注册了相同类型的元素,但名称不同(大多数情况下它们几乎相同),我想在发票清单中找到更像是比较它们的名字。< / p>

有没有类似于贝叶斯算法,我可以比较名称,并在“0”和“1”之间有一个值? “1”将是100%相同的字符。

示例(我将更改水果元素的类型):

如果我必须比较: raspberry

Invoice List - Values of Algortim
---------------------------------
 strawberry ........ 0,89
 blueberry ......... 0,77
 cherry ............ 0,46
 grape ............. 0,11
 raspberry ......... 1,00
 pineapple ......... 0,13

重要的是在我没有完美组合时找出最接近的名字。

还有其他技术吗?

很高兴看到你们的想法!

1 个答案:

答案 0 :(得分:6)

我不确定我是否完全关注 - 但如果您正在寻找计算两个字符串彼此相似的方法,您可以尝试Levenshtein Distance,它通常用于这些目的。

您可以稍后对结果进行标准化,使其达到您想要的范围,例如简单的标准化将是:

                                            distance(u,v)
normalized_distance(u,v) =               ----------------
                              max{distance(x,v) | for each x in the collection }