文字列のセットを別の文字列のセットと比較して、どの文字列が類似しているかを見つける必要があります(あいまい文字列の一致)。例えば:
{ "A.B. Mann Incorporated", "Mr. Enrique Bellini", "Park Management Systems" }
and
{ "Park", "AB Mann Inc.", "E. Bellini" }
ゼロベースのインデックスを想定すると、一致は0-1、1-2、2-0になります。明らかに、この種のことで完璧なアルゴリズムはありません。
私はレーベンシュタイン距離アルゴリズムの実用的な実装を持っていますが、それを使用して各セットから類似の文字列を見つけるには、比較を行うために両方の文字列セットをループする必要があり、結果としてO(n ^ 2)アルゴリズムになります。これは、適度なサイズのセットでも許容できないほど遅くなります。
また、shinglingとJaccard係数を使用するクラスタリングアルゴリズムも試しました。残念ながら、これもO(n ^ 2)で実行されるため、ビットレベルの最適化を行っても速度が遅くなります。
これを実現するための、より効率的なアルゴリズム(O(n ^ 2)よりも高速)、またはさらに良いことに、すでにC#で記述されたライブラリを知っている人はいますか?