3

おおよその文字列一致を使用して、データ ストア内のどのエントリがほぼ重複しているかを調べようとしています。

Pythonで次のアプローチの実装はありますか、それとも自分で試してロールバックする必要がありますか?

ありがとう :)

ウィキペディアから

...

強引なアプローチは、T のすべての部分文字列について P までの編集距離を計算し、距離が最小の部分文字列を選択することです。ただし、このアルゴリズムの実行時間は O(n3 m) になります。

動的計画法を利用したより良い解決策 [3][4] は、問題の別の定式化を使用します。テキスト T の各位置 j とパターン P の各位置 i について、i 番目の最初の文字間の最小編集距離を計算します。パターン Pi と、位置 j で終わる T の部分文字列 Tj',j。

これを多くの文字列に適用する最も効率的な方法は何ですか?

4

4 に答える 4

1

difflib.get_close_matchesが作業を行う必要があります。

于 2011-03-04T10:35:55.543 に答える
1

はい。

google("python levenshtein")
于 2011-03-04T10:27:52.630 に答える
0

difflib答えかもしれません、例えば、

from difflib import context_diff

a = 'acaacbaaca'
b = 'accabcaacc'

print ''.join(context_diff(a,b))
于 2011-03-04T10:23:18.233 に答える
0

レーベンシュタイン距離は、fuzzywuzzy 標準の ratio() 関数と非常によく似た機能を果たします。fuzzywuzzy は difflib を使用しますhttp://seatgeek.com/blog/dev/fuzzywuzzy-fuzzy-string-matching-in-python

fuzzywuzzy ドキュメントの例: https://github.com/seatgeek/fuzzywuzzy

fuzz.ratio("this is a test", "this is a test!")
    96
于 2013-08-02T23:12:53.490 に答える