Pythonで文字列の類似性を調べる

2010-04-07
このエントリーをはてなブックマークに追加

Pythonで文字列と文字列がどれくらい似ているか、を調べる方法です。これを活用すると、Google等の検索エンジンによくある「もしかして~」ができるようになります。名寄せ、表記ゆれの是正ですね。

import difflib

a = u”スパゲッティ”
b = u”スパゲティー”
print difflib.SequenceMatcher(None, a, b).ratio()

ハセテツの環境(WindowsXP、Python2.5.2)では、0.8333333~が返ってきます。0.6以上だと「よく似ている」そうです。これはレーベンシュタイン距離になるのかな?N-グラムではないよね。

コンテンツ内検索等を実装するとき、名寄せは重要になります。ECで商品検索したらタイプミスがあって欲しい商品にたどり着けなかった、なんてことは良くあります。これで必要な情報がユーザに届くようになるとうれしいですね。

Tags: