以下の環境にMeCab 0.992 と ruby-mecab 0.992をインストールする。
環境
- MacOSX 10.6
- ruby 1.9.2p312 (2011-08-11 revision 32926) [x86_64-darwin10.8.0]
参考
MeCabインストール
MeCab本体は公式サイトに乗っている通りにソースからインストール。ちなみに僕は~/localにインストールした。
$ tar zxfv mecab-0.992.tar.gz $ cd mecab-0.992 # MeCabインストール $ ./configure --prefix=/Users/your_home/local $ make $ make check $ make install辞書はUTF-8で作成するようにした。
# IPAの辞書インストール $ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz $ mecab-ipadic-2.7.0-20070801 $ ./configure --prefix=/Users/your_home/local --with-charset=utf8 $ make $ make installこれでインストールで来たので、コマンドラインで確認。
$ mecab # これでREPLとして起動する すもももももももものうち # <= ターミナルに打ち込む すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
Rubyバインディングインストール
ダウンロードページからRubyバインディングをダウンロードする。
$tar xzvf mecab-ruby-0.992.tar.gz $ cd mecab-ruby-0.992ここで、僕はMeCabを~/localにインストールしているので、以下のパッチをextconf.rbにあててライブラリの参照先を修正した。/usr/localにインストールしている場合は不要(たぶん)。 (参考)
--- extconf.rb.org 2012-02-08 14:10:41.000000000 +0900 +++ extconf.rb 2012-02-08 14:13:08.000000000 +0900 @@ -8,5 +8,6 @@ } $CFLAGS += ' ' + `#{mecab_config} --cflags`.chomp +$LDFLAGS = '-L/Users/your_home/local/lib' have_header('mecab.h') && create_makefile('MeCab')で、コンパイルしてインストール。
$ ruby extconf.rb $ make $ make install付属のtest.rbがそれらしく動けばOK。
$ ruby test.rb 0.992 太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー は 助詞,係助詞,*,*,*,*,は,ハ,ワ この 連体詞,*,*,*,*,*,この,コノ,コノ 本 名詞,一般,*,*,*,*,本,ホン,ホン を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ # (略)
mecab-rubyのエンコーディング
mecab-rubyをRuby 1.9で使うと、結果の文字列のエンコーディングがascii-8bitになっている。
# coding: utf-8 require 'MeCab' t = MeCab::Tagger.new node = t.parseToNode('日本語のテスト') surface = node.next.surface p [:surface, surface.encoding, surface] # => [:surface, #<Encoding:ASCII-8BIT>, "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"]仕方がないのでString#force_encodingで強制的にUTF-8に変換する。 http://d.hatena.ne.jp/miyapong/20100706/1278419260
surface = node.next.surface.force_encoding("UTF-8") p [:surface, surface.encoding, surface] # => [:surface, #<Encoding:UTF-8>, "日本語"]
No comments:
Post a Comment