1

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 を使用してこの種の比較を達成しようとしましたが、問題は、複数の言語で綴られた単語に対して非常に弱いことです。

トリッキーなケースでダイス係数を見てください:

name 1                  name 2                      coef
____________________    ______________________      _______________

migros pensionskasse    sig pensionskasse           0.769230769
migros pensionskasse    caisse pensions migros      0.727272727

が一致し、またはpensionskasseよりも大きいという理由だけで、上記の最初のほうが優れています。しかし、私が求めるアルゴリズムでは2番目の方が優れているはずだからです。migrossigpensionskassecaisse de pension

さまざまな言語でつづりができる可能性のある単語を知っているので、それらの単語間の関係を辞書にまとめることができます。

それら (多言語の単語) を取り除くこともできますが、それらのつながりに基づいてグループを構築するための洞察に満ちた情報を失うことになります。

このような実装を見た人はいますか? 理想的にはC#で?

4

0 に答える 0