我想稍微关注一下这个挑战。
我的目的是找到一些在系统内发展的解决方案。
在我公司(土木工程)的业务中,我有以下情况:
我们在数据库中注册了元素/材料,但我们的数千家供应商拥有相同的元素/材料,名称不同但相似。
所以我有一个通过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
重要的是在我没有完美组合时找出最接近的名字。
还有其他技术吗?
很高兴看到你们的想法!
答案 0 :(得分:6)
我不确定我是否完全关注 - 但如果您正在寻找计算两个字符串彼此相似的方法,您可以尝试Levenshtein Distance,它通常用于这些目的。
您可以稍后对结果进行标准化,使其达到您想要的范围,例如简单的标准化将是:
distance(u,v)
normalized_distance(u,v) = ----------------
max{distance(x,v) | for each x in the collection }