Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

Windows上のrubyでMeCabをちょっこっと使ってみたい

ActiveRubyとかからちょろっとMeCabを使ってみたい、、、でもMeCabruby bindingとか使うのは億劫、って人向けに書いてみました。単にpopenで直接MeCabを呼んでるだけですが、、、

#!/bin/ruby -Ks
# -*- coding: euc-jp -*-
# 
# easymecab.rb
#
class MeCab
  def initialize(option)
    @path = "/cygdrive/c/MeCab/bin/mecab.exe" # MeCabへのパス
    @option = option
  end
  def parse_file(s)
    cmd_string = [@path, @option, s].join(" ")
    word_list = []
    io = IO.popen(cmd_string, "r")
    until io.eof?
      word_list.concat io.gets.split(' ')
    end
    return word_list
  end
end

上のコードはcygwinrubyで試してみました。MeCabへのパスは、自分の環境にあうように修正してください。そしたらこんな感じ↓で使えます。たぶん・・・。

#!/bin/ruby -Ks
# -*- coding: euc-jp -*-
# mecabtest.rb
require 'easymecab'
m = MeCab.new("-O wakati")
p m.parse_file("test.txt")

実行結果↓

/wk/ruby$ cat test.txt
すもももももももものうち
/wk/ruby$ ./mecabtest.rb
["すもも", "も", "もも", "も", "もも", "の", "うち"]