Hatena::Groupkakisute

g5nの書き殴り

2007-12-11

MeCabで分かたれるカタカナ語を探す

22:20 | MeCabで分かたれるカタカナ語を探す - g5nの書き殴り を含むブックマーク はてなブックマーク - MeCabで分かたれるカタカナ語を探す - g5nの書き殴り

namazu.cgi は検索時に wakati.c を使い、カタカナを分かたない。そのためインデックスされてる語と異なるので引っかからないことが多い。wakati.c にパッチをあてるという手もあるけど、Namazuアップグレードが面倒になるので、辞書登録がいいと判断。で、とりあえず、辞書登録すべき単語の候補を拾い上げるという作業が必要だったのでやってみた。

namazu-wakati-miss.rb

#! ruby -Ke

require "nkf"
require "MeCab"

mecab = MeCab::Tagger.new("-Owakati")

a = NKF.nkf("-Ew", "")
n = NKF.nkf("-Ew", "")
_ = NKF.nkf("-Ew", "")

words = Hash.new(0)
Dir["**/*.html"].each{|f|
  File.read(f).scan(/[#{a}-#{n}#{_}]+/u).each{|w|
    words[w] += 1
  }
}

words.keys.map{|w| NKF.nkf("-We", w)}.sort.each{|w|
  if w.size > 1 and words[NKF.nkf("-Ew", w)] > 2
    wakati = mecab.parse(w).strip
    puts(w != wakati ? "#{words[NKF.nkf("-Ew", w)]} #{w} [#{wakati}]" : w)
  end
}

こういうのを2分くらいで書ければいいんだがMeCabの使い方を調べてたら10分くらいかかった。