3

同じオブジェクトを示すフリー テキストを含む 2 つのデータ リストを比較しようとしています。例

List 1 ['abc LLC','xyz, LLC']
List 2 ['abc , LLC','xyz LLC']

これは単純な例ですが、問題は大文字と小文字の変更や「.」の追加など、多くの変更がある可能性があることです。間に。比較を行い、類似度を測定できる python パッケージはありますか?

4

2 に答える 2

7

Wikibooksの例のように、非正確な文字列マッチングにはレーベンシュタイン距離アルゴリズムの実装を使用できます。

別のオプションは、たとえば、生の比較の前にすべてを小文字に折りたたんだり、スペースを削除したりすることです。これはもちろん、ユースケースによって異なります。

import string, unicodedata
allowed = string.letters + string.digits
def fold(s):
  s = unicodedata.normalize("NFKD", unicode(s).lower()).encode("ascii", "ignore")
  s = "".join(c for c in s if c in allowed)
  return s

for example in ['abc LLC','xyz, LLC', 'abc , LLC','xyz LLC']:
  print "%r -> %r" % (example, fold(example))

印刷します

'abc LLC' -> 'abcllc'
'xyz, LLC' -> 'xyzllc'
'abc , LLC' -> 'abcllc'
'xyz LLC' -> 'xyzllc'
于 2012-04-04T07:54:38.760 に答える
3

文字列間のレーベンシュタイン距離 (編集距離) を使用して類似性を推定する優れたバイナリ ライブラリがあります。試してみる:

https://github.com/miohtama/python-Levenshtein

于 2012-04-04T08:21:34.407 に答える