2017-03-08 11 views
1

こんにちは私は、行と列のファジー一致スコアでいっぱいになった2D配列を持っています。非常に簡単な例2D配列で最も近い一致する文字列ペアを見つける方法

---------------------------------------- 
|  -  | fst_name | last_name | 
---------------------------------------- 
| First Name | 89  | 72  | 
---------------------------------------- 
| Last Name | 82  | 95  | 
---------------------------------------- 

私は(i,j)が最大であるペアを知りたいために言うが、我々は1 iが一つだけjとペアリングすることができていることを確認する必要があります。ここでiとjは行と列のインデックスです。 どのように私はそれをPythonで行うことができます。ファジーについては、私はlevenshtein距離を使用しています。私はバックトラックを実装しようとしましたが、私のユースケースでは非常に遅いです。

+0

'(i、j)'は最大の平均とは何ですか?上記の表を見ると、どのようなインデックスペアが必要ですか? – pingul

+0

あなたは1つの最大SUMペアをすべて見つけたいだけですか?すべての合計が最大ですか? – BufBills

答えて

0

あなたは自分をコーディングしますが、これはあなたが始めるかもしれません:タプル(i, j, distance)

  • distance

  • に基づいてリスト Lをソートして

    1. はフラットリストLに2D配列を変換します

    2. ソートされたリストから最大の要素を選んで比較します。

    +1

    私の問題を解決!お返事ありがとうございます –

    0

    あなたはレーベンシュタイン距離の割り当て問題を解決するためにHungarian algorithmを使用するライブラリを見つけたいと思うでしょう。 SciPyの実装と、Python package munkresの実装については、私には分かりません。

    +0

    ありがとうございます。私はハンガリーのアルゴリズムを勉強するのを楽しんだ。 –

    関連する問題