我正在寻找一种支持模糊字符串匹配的算法,如Damerau-Levenshtein或DICE或Longest Common Subsequence。但是这个算法应该能够匹配不同语言的单词,并且当它们用各自的语言拼写时它们是相等的,或者如果在各自的语言中拼写不正确则关闭它们。
我认为一个例子可以更好地解释我的意思( 1,2,5,6 组成一个组 3,4,7,8 ):
A well spelled cmpny name A well spelled term we can find in multiple languages
_____________ ___________________________________________________
1 StackOverflow Question // would easily match with 2
2 StackOverflow Frage // would easily match with 1
3 Swiss Life Pension Fund // would easily match with 4
4 Swiss Life Caisse de pension // would easily match with 3
另外,即使拼写不正确,我希望它们能够轻松匹配:
A misspelled company name A misspelled term we can find in multiple languages
_________________________ ____________________________________________________
5 stackverflow qestion // would match easily with 1,2,6
6 SteckOverflw frge // would match easily with 1,2,5
7 Swisslife pension // would match easily with 3,4,8
8 swizerland life caisse pension // would match easily with 3,4,7
通过比赛我的意思是得分很高。我实际上尝试使用Dice和lcs来实现这种比较,但问题是它对于用多种语言拼写的单词非常弱。
在一个棘手的案例中看Dice coef:
name 1 name 2 coef
____________________ ______________________ _______________
migros pensionskasse sig pensionskasse 0.769230769
migros pensionskasse caisse pensions migros 0.727272727
上面的第一个更好只是因为pensionskasse
匹配并且大于migros
或sig
。但是因为pensionskasse
意味着caisse de pension
,所以我想要的算法中第二个应该更好。
我知道可以用各种语言拼写的可能单词,这样我就可以创建一个包含这些单词之间联系的字典。
我也可以摆脱它们(多语言的单词),但后来我会根据这些连接松散一些有见地的信息来构建组。
有没有人看过这样的实现?理想情况下在C#?