0

以下を無視して、最小限のコードで 2 つの文字列を比較する最も簡単な方法は次のとおりです。

"hello  world" == "hello world"                   // spaces
"hello-world"  == "hello world"                   // hyphens
"Hello World"  == "hello worlD"                   // case
"St pierre"    == "saint pierre" == "St. Pierre"  // word replacement

これは以前に行われたと確信しており、この種のことを行うためのライブラリがいくつかありますが、私は知りません。これは C++ であることが望ましいですが、他の言語で非常に短いオプションがある場合は、それについても聞きたいと思います。

あるいは、一致率が得られるライブラリにも興味があります。ハイフンhello-worldhello wolrdスペルミスだけで、同じ意味である可能性が 97% あります。

4

5 に答える 5

2
于 2013-05-08T17:19:12.730 に答える
1

私はライブラリを知りませんが、平等のために、速度が問題にならない場合は、文字ごとの比較を行い、「特殊」文字を無視できます(それぞれ、テキスト内でイテレータをさらに移動します)。

テキストの比較に関しては、単純なレーベンシュタイン距離を使用できます。

于 2013-05-08T17:10:13.590 に答える
1

スペースとハイフンの場合は、文字列内のすべてのスペース/ハイフンを置き換えて比較します。大文字と小文字を区別するには、すべてのテキストを大文字または小文字に変換して比較します。単語を置換するには、キーが略語で、値が置換単語である単語の辞書が必要です。レーベンシュタイン距離アルゴリズムを使用して、あるフレーズが別のフレーズにどの程度類似しているかを示すことも検討してください。単語/フレーズが別の単語/フレーズにどれだけ近いかの統計的確率が必要な場合は、比較を行うためのサンプル データが必要になります。

于 2013-05-08T17:10:17.947 に答える