Pythonで文書の類似度を測る
Posted on Mon, 29 Dec 2008 10:46:10 +0900
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以上で似ていると判断している。