c# - 複数行 - vb.net datetime 比較




スマートな文字列の比較 (2)

私は2つの文字列のスマートな比較を可能にするライブラリ/クラスを探しています。 せいぜい、2つの文字列がどのように似ているかという結果のパーセントを与えるでしょう。 私は会社名、異なるリポジトリに記録されたアドレスを比較しているので、多くのスペルミスや名前の不一致があります。

比較するサンプル文字列:

 "Good Company Ltd." vs. "GoodCompany" 
 "Baker Street 2" vs. "Baker Str. 2" 

alikenessのパーセンテージで結果が得られれば、これはそのようなデータのスマートマージの入力になります。

あなたはそのようなスマートな文字列を比較できるようにする良いライブラリを知っていますか?


Levenshtein Distanceの実装を探したいかもしれません。 2つの文字列を等しくするために必要な挿入/削除と置換の数を示します。

以下は、Levenshtein Distanceと他のテキスト比較アルゴリズムを実装しているC#のライブラリに関する記事です: テキストアルゴリズムの.NETライブラリ?

しかし、私はあなたが方法のいくつかの組み合わせを使用する必要があると思う、Levenshteinを使用すると、あなたに言うだろうGood Company Ltd. 「Bad Company Ltd.」に類似しています 「GoodCompany」よりも。

たぶん、あなたは 'str'を展開していくつかの前処理をしなければならないでしょう。 'ストリート'に移動し、 'Ltd.'を削除する 文字列比較の意味で「無意味な」単語として。

更新1

Francesco De Lisi suggests 、音韻的アルゴリズムを使用するsuggestsをsuggestsしています。 スペルミスの名前を比較するのに適しているように見えます。 それでも住所を表音/非表音の部分(建物番号など)に分割し、別々に比較する必要があります。

更新2

アドレスの比較に関しては、この記事この目的のためにGoogle Maps APIを使用することを示唆し 、別の記事ではアドレス解析について説明しています 。 私は、Googleが最も正しい通りの名前のスペルを見つけることができる通りの住所のデータベースを持っているので、Googleが信頼できる結果を生み出すことができると思います。 正しい通り/会社名のリストがなければ、間違った名前がいくつか出てくる可能性がありますが、多くの異なる正しい名前が似ています。


あなたが探しているものは、 Levenshtein distanceWikipedia )です:

... Levenshtein距離は、2つのシーケンス間の差を測定するための文字列メトリックです。 非公式に、2つの単語間のレーベンシュタイン距離は、ある単語を他の単語に変更するために必要な最小限の1文字編集(挿入、削除、置換)の数です





string-comparison