Rubyで形態素解析してみた
昨日の晩あたりから、形態素解析したい気分だったのでやってみました。
形態素解析というのは以下のようなもの。
対象言語の文法の知識(文法のルールの集まり)や辞書(品詞等の情報付きの単語リスト)を情報源として用い、自然言語で書かれた文を形態素(Morpheme, おおまかにいえば、言語で意味を持つ最小単位)の列に分割し、それぞれの品詞を判別する作業を指す。
形態素解析 - Wikipedia
圧縮新聞にも使われているそうです。
今回は、MeCab(和布蕪)という形態素解析エンジン利用させて頂きました。
Ubuntu環境で実験しましたが、大抵同じような作業で動くと思います。文字コードの指定のみ適時読み替えてください。
ファイルの取得
MeCab本体(mecab-0.97.tar.gz)、辞書ファイル(mecab-ipadic-2.7.0-20070801.tar.gz)、Rubyバインディング(mecab-ruby-0.97.tar.gz)をダウンロードします。
MeCabのインストール
MeCab本体と辞書ファイルを導入します。
本体。
% tar xvfz mecab-0.97.tar.gz % ./configure % make % make check % sudo make install
辞書。
% tar xvfz mecab-ipadic-2.7.0-20070801.tar.gz % cd mecab-ipadic-2.7.0-20070801/ % ./configure --with-charset=utf8 % sudo ldconfig /usr/local/lib/ % make % sudo make install
これで導入は完了です。動作チェックをしてみます。
% mecab すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
Rubyで使う
% tar xvfz mecab-ruby-0.97.tar.gz % cd mecab-ruby-0.97/ % ruby extconf.rb % make % sudo make install
これで完了。
サンプルを動かします。
#!/usr/bin/ruby -Ku # mecab_test.rb require 'MeCab' m = MeCab::Tagger.new("-Ochasen") print m.parse("今日もしないとね")
結果。
% ruby mecab_test.rb
今日 キョウ 今日 名詞-副詞可能
も モ も 助詞-係助詞
し シ する 動詞-自立 サ変・スル 未然形
ない ナイ ない 助動詞 特殊・ナイ 基本形
と ト と 助詞-接続助詞
ね ネ ね 助詞-終助詞
EOS
以下のサンプルは文章をバラバラにして、1文字以上のカタマリを取り出します。
#!/usr/bin/ruby -Ku # mecab_test2.rb require 'MeCab' class String def each_char scan(/./m) do |c| yield(c) end end def char_count n = 0 each_char do n += 1 end n end end m = MeCab::Tagger.new("-Owakati") str = '後半はアニメのプロット。パラパラ見た感じは、脚本テイストの文章が珍しくてよさそう。攻殻機動隊のイメージが掴めている人なら楽しめそうな内容です。' p m.parse( str ).split.map { |item| item if item.char_count > 1 }.compact
結果。
% ruby mecab_test2.rb ["後半", "アニメ", "プロット", "パラパラ", "感じ", "脚本", "テイスト", "文章", "珍しく", "そう", "機動", "イメージ", "掴め", "いる", "なら", "楽しめ", "そう", " 内容", "です"]
辞書に単語を追加する
攻殻スキーとしては「攻殻機動隊」を認識させたいところです。辞書に追加してみます。
辞書ファイルを展開したディレクトリで作業します。
% cd mecab-ipadic-2.7.0-20070801
foo.csvというファイルを作り、単語情報を登録します。
% vi foo.csv 攻殻機動隊,-1,-1,3000,名詞,固有名詞,組織,*,*,*,攻殻機動隊,コウカクキドウタイ,コウカクキドウタイ
再コンパイル&インストールします。
% /usr/local/libexec/mecab/mecab-dict-index -f utf8 -t utf8 % sudo make install
サンプルを実行すると「攻殻機動隊」を認識していることを確認できます。
% ruby mecab_test2.rb ["後半", "アニメ", "プロット", "パラパラ", "じは", "脚本", "テイスト", "文章", "しくてよさそう", "攻殻機動隊", "イメージ", "めている", "なら", "楽しめ", "そう", " 内容", "です"]
まとめ
辞書ファイルを作りこめば面白そう。
- 作者: 秋山智俊
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2005/04
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 286回
- この商品を含むブログ (86件) を見る