Rubyで形態素解析
最初はMeCab+nattoで試したのですが、MeCabのサイトで公開されているライブラリは64bit Rubyでは動作しませんでした。他はないのかと検索したところ、こちらでRubyによる形態要素エンジンokura(注:ocraではない)が公開されていましたので早速インストール。
公開サイトでは、ruby1.9専用と書かれていますが、こちらの動作環境(Windows 10 64bit / ruby 2.2.3p173 (2015-08-18 revision 51636) [x64-mingw32])でも問題は無い様です。
公開サイトおよび入手先
- Rubyによる形態素解析エンジンokura 0.0.1をリリースしました - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
- NAIST Japanese Dictionary
導入
- okuraのインストール
gem install okura
okura compile mecab-naist-jdic-0.6.3b-20111013/ okura-dic
公開サイトのサンプルプログラムの実行
okuraは文字コードutf-8を使用するので、入出力でcp932(Windows-31J)とのエンコードが必要
#coding: cp932 require 'okura/serializer' dict_dir='./okura-dic' # コンパイルした辞書フォルダの置き場所 tagger=Okura::Serializer::FormatInfo.create_tagger dict_dir str='すもももももももものうち'.encode('utf-8') # 文字列から単語候補を計算 nodes=tagger.parse(str) # 単語候補の中で、一番最もらしい組み合わせを選択 nodes.mincost_path.each{|node| word=node.word s = (' ' + word.surface.encode('cp932'))[-5..-1] # 空白は全角スペース s << ' ' s << word.left.text.encode('cp932') puts s # word.surface # : 単語の表記 # puts word.left.text # : 品詞 # 品詞はword.leftとword.rightがありますが、一般的に使われる辞書(IPA辞書やNAIST辞書)では # 両方同じデータが入ってます }
実行結果
C:\okura>ruby test.rb 1589586 S/EOS BOS/EOS すもも 名詞,一般,*,*,*,*,* も 助詞,係助詞,*,*,*,*,も もも 名詞,一般,*,*,*,*,* も 助詞,係助詞,*,*,*,*,も もも 名詞,一般,*,*,*,*,* の 助詞,連体化,*,*,*,*,の うち 名詞,非自立,副詞可能,*,*,*,* S/EOS BOS/EOS