インポートしたファイルを他の言語にローカライズできるシステムに取り組んでいます。
これは主に、MVC3、EntityFramework、LINQなどのコツをつかむためのプライベートプロジェクトです。したがって、私は最終結果を盛り上げるためにいくつかのクレイジーなことをするのが好きです。それらの1つは、類似した文字列の認識です。
次の文字列のリストがあるとします。これは、過去に使用したゲームから借用したものです。
- メガベス:ホーリーローラーユニフォーム-頭、胴体、脚が含まれています
- メガベス:ホーリーローラーユニフォームヘッド
- メガベス:ホーリーローラーユニフォームレッグ
- メガベス:ホーリーローラーユニフォームトルソ
- Megabeth:PAX East 2012ユニフォーム-頭、胴体、脚が含まれています
- メガベス:PAXEast2012ユニフォームヘッド
- メガベス:PAXEast2012ユニフォームレッグ
- メガベス:PAXEast2012ユニフォームトルソ
ご覧のとおり、ユーザーが最初の4つの文字列を翻訳すると、次の4つは多くの類似点を共有します。この場合は、次のようになります。
- メガベス
- ユニフォーム
- 頭、胴体、脚が含まれています
- 頭
- 足
- 胴体
最初の4つの文字列は実際にすでに翻訳されていると考えてください。ユーザーがリストから5番目の文字列を選択すると、「類似」のサブヘッダーの下にある最初の文字列(および場合によっては他の文字列)をユーザーに表示するためにどのようなアルゴリズムまたは手法を使用できますか文字列」?
編集-レーベンシュタイン距離についてのちょっとしたコメント:私は現在、データベースで10kの文字列をターゲットにしています。レーベンシュタイン距離は文字列ごとに文字列を比較するため、この場合は10k x(10k -1)の可能な組み合わせです。実行可能な方法でこれにどのようにアプローチしますか?この特定のアルゴリズムよりも優れた解決策はありますか?