rubyで簡単に文章の類似度を判定する
$KCODE =’u’ class String def trigram str def cacl_tri str h = {} a = str.split(//) s = a.size a.each_index{|v| h[a.slice(v, 3).join] = 1 if v+3 <= s } h end h1 = cacl_tri(self) h2 = cacl_tri(str) h3 = h1.merge h2 h1.size != 0 ? (h1.size + h2.size - h3.size).to_f / h1.size.to_f : 0 end end # google newsの見出し p "ポスト京都交渉、作業計画で合意".trigram("ポスト京都、作業計画を採択・国連部会閉幕、課題は先送り")
結果
0.461538461538462
0.2くらいを越えたら類似文章って言えそうだ。