1

我正在寻找一种支持模糊字符串匹配的算法,例如 Damerau–Levenshtein 或 DICE 或最长公共子序列。但是该算法应该能够匹配不同语言中的单词,并在用各自语言拼写时认为它们相等,如果在各自语言中拼写错误则认为它们接近。

我认为一个例子可以更好地解释我的意思(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匹配并且大于migrosor sig。但是因为pensionskasse意味着caisse de pension第二个在我寻求的算法中应该更好。

我知道可以用各种语言拼写的可能单词,因此我可以制作一本字典,其中包含这些单词之间的联系。

我也可以摆脱它们(多语言单词),但随后我会丢失一些有见地的信息来建立基于这些联系的小组。

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

4

0 回答 0