gem版levenshteinを使ってみる。

なんか、またしても無限ループから帰ってこないのでへこたれた。 原因不明だがまたlevenshteinのせいだろうか。 で、いっそのことCで書かれてて速いというライブラリ levenshtein0.2.0 を試してみることにする。 RubyForge levenshtein0.2.0 を拾ってくる。 .gemでもよかったのかもしれないが、.tar.gzをとってくる。

展開する。 rubygemsが無いよと言われたので、

# yum install rubygems

gccも入ってなかったので(汗)

# yum install gcc

それからやっと

$ ruby build.rb

が動いてなんちゃら .gem、.gemspecなどのファイルができた。 ここでも一度ネット検索して、

# gem install levenshteinxxxx.gem

まだ動かない。

require 'levenshtein'

ではなく

require 'rubygems'
require 'levenshtein'

やっと動いた。

distance = Levenshtein.normalized_distance(title_tmp, title)
if(distance < DISTANCE_MAX)
      sorted_similar << [title_tmp, distance]
end

とか。

ああ、やっと結果が出だしたぞ。 上の例でDISTANCE_MAX = 0.3にしたら、 「のなかみのる」と「すがやみつる」、「2月11日」と「2月21日」、「黒岩よしひろ」と「高橋よしひろ」、 「たがみよしひさ」と「あさりよしとお」などが似てると判定された。 ええっと。最後の例は一見似てないが、「よし」が一致している罠。 「のなかみのる」と「すがやみつる」は「み」と「る」が一致してる。 微妙(笑)。