2012-03-22 9 views
4

Levenshteinアルゴリズムを使用して文字列のリストを検索したいと考えています。ラテン文字を入力し、ギリシャ語の項目を検索するために、カスタム文字マッピングを実装したいと思います。カスタム文字マッピングを使用したLevenshteinアルゴリズム

マッピング例:

a = α, ά 
b = β 
i = ι,ί,ΐ,ϊ 
... (etc) 
u = ου, ού 

だから

  • αbu
  • abούαού(すべてのギリシャ文字)

が再ます

で、リスト内の abuを使用して検索リスト内のすべての項目を使用します。 (アイテムの順序は問題ありません)

アルゴリズムにマッピングを適用するにはどうすればよいですか? (thisは私が始めたところです)

+1

あなたはシンボルごとに交換して構築する新しい文字列のマッピングで辞書を求めることができるconvertToLatinで? – Jon

+0

Levenshteinアルゴリズムは、編集距離メトリックに基づいて2つの文字列を比較します。これは通常、あなたが話していることを包含すると思われる置換ルールを定義します。いくつかのサンプルコードを取得してください(サンプルコードは通常、文字に関係なくA-Zで置き換えられます)。これを特定の置換ルールに置き換えてください。 –

+0

@Jonアルゴリズムでマッピングを適用するにはどうすればよいですか? – Odys

答えて

7

あなたのシンボルを一つの明確なフォーム(例:すべてラテン語)に前処理し、normalyと同じようにLevenshteinを使うのが最善の方法だと思います。擬似コードで

int func(String latinStr, String greekStr) { 
    String mappedStr = convertToLatin(greekStr); // e.g. now αβ would be ab 
    return Levenstein(latinStr, mappedStr); 
} 

そして質問は何

+1

あなたが参照しているプロセスは、「標準化」と呼ばれています。 –

関連する問題