模糊字符串匹配,支持多种语言的单词或具有相同含义的不同单词

时间:2013-11-14 09:57:00

标签: c# algorithm string-matching fuzzy-search multiple-languages

我正在寻找一种支持模糊字符串匹配的算法,如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匹配并且大于migrossig。但是因为pensionskasse意味着caisse de pension,所以我想要的算法中第二个应该更好。

我知道可以用各种语言拼写的可能单词,这样我就可以创建一个包含这些单词之间联系的字典。

我也可以摆脱它们(多语言的单词),但后来我会根据这些连接松散一些有见地的信息来构建组。

有没有人看过这样的实现?理想情况下在C#?

0 个答案:

没有答案