Pythonで文書の類似度を測る

python ngram

crontabで周期起動しながら、JRの遅延情報をメール 送信するツールを作ったのだが、ページが細かい修正を 行いながら頻繁に更新するため、似たような内容の メールを何通も送ってしまう。

そこで今日の情報の中から似ている情報があれば メール送信しないようにしたい。そんな時に使える モジュールがPythonのngramモジュール。要は2つの テキストが似ているか似ていないかを数値で出力してくれる。

インストールは以下。

$ sudo pip install ngram

簡単な例は以下。

# vim:filecodeing=utf-8
# test_en.py
from ngram import ngram

str1 = "Hello World!"
str2 = "Hello Hoge!"
print ngram.compare(str1, str2)

バイトコードもOK。

# vim:filecoding=utf-8
# test_ja.py
from ngram import ngram

str1 = u"ほげおは、おはようと言った。"
str2 = u"ほげこは、こんにちはと言った。"
print ngram.compare(str1, str2)
$ python test_en.py
0.35
$ python test_ja.py
0.269230769231

ツールの中で使う際には、どのくらいで似ていると 判断するかがキモ。 私のツールでは0.4以上で似ていると判断している。