4

3 桁または 4 桁の整数の文字列表現を比較したい。それらを「近さ」のペアにグループ化したいと思います。つまり、pc_dud[3]とペアにする必要がありdud[0]ます。

dud = ['3433', '3467', '3551', '345', '345', '3613'] 
pc_dud = ['3401', '3402', '3430', '0342', '3584']

これを行うための優れたツールを知っている人はいますか (クラゲのようなものだと思っていました)。もちろん、別の解決策は、「近さ」の指標として算術差を使用することです。何かご意見は?

4

4 に答える 4

2

difflibモジュールを使用できます。

例:

>>> import difflib
>>> dud = ['3433', '3467', '3551', '345', '345', '3613'] 
>>> pc_dud = ['3401', '3402', '3430', '0342', '3584']
>>> difflib.get_close_matches(dud[0], pc_dud)
['3430']
于 2013-07-31T14:57:37.800 に答える
0

Paul が推奨するレーベンシュタイン距離ルートに進む場合は、Apache のPyLuceneを見てください 。lucene の FuzzyQuery はこれに基づいていると思います。

于 2013-07-31T15:14:09.417 に答える
0

1 つの方法として、dud の各整数文字列と pc_dud の各整数文字列の間のレーベンシュタイン距離を計算する方法があります。このアルゴリズムは、数字の各シーケンス間の編集距離を生成します。編集距離の数値は、特定のシーケンスを別のシーケンスに変換するために必要な最小ステップ数を示します。挿入、削除、および置換を考慮します。

比較されたシーケンスに関連する編集距離の結果を格納するためのデータ構造も必要になります。次に、どの編集距離が最小であるかを調査し、それらをペアとしてグループ化できます。

これは、レーベンシュタインと比較した場合に、配列からの 2 つの数値シーケンスがどのように見えるかを示す視覚的な例です。このツールを使用してスクリーンショットを作成しました。http://www.let.rug.nl/kleiweg/lev/

http://imgur.com/OTJia7W

右下隅の数字は最小編集距離です。

于 2013-07-31T15:02:37.660 に答える