5

名前と住所の 2 つのリストを比較して、一意のデータを見つけようとしています。両方のリストでまったく同じ文字列であるすべてを簡単に抽出できます。その後、名前と住所は異なりますが、同じ人物である可能性があります。すなわち:

リスト 1 のエントリ Smith J Ph234567 34 Smith st

リスト 2 のエントリ Smith John Ph234567 34 Smith st

また

リスト 1 のエントリ Smith J Ph234567 34 Smith Rd

リスト 2 のエントリ スミス J Ph234567 34 スミス ロード

80%一致など、似ていると思われるエントリにタグを付けたいです。

ネストされた Foreach ループは、すべての単語または文字に一致するため機能しません (他のすべての単語または文字で文字列にどのように記述するかによって異なります)。

1 回の変更で for ループが機能しない J vrs John は、変更後にエントリごとにエラーを作成します。

vb.net で書いていますが、C# から翻訳することもできます

4

1 に答える 1

13

この種の問題は、通常、文字列間の編集距離を計算することで解決されます。たとえば、レーベンシュタイン距離から始めます。

これにより、スコア (1 つの文字列を別の文字列に変換するのに必要な「編集操作」の数) が得られます。これをパーセント単位に変換するには、より大きな文字列の長さで正規化する必要があります (の行に沿ったものpercent = (largerString.Length - editDistance) / largerString.Length)。

于 2013-03-13T23:55:53.240 に答える