Railsで使えるGem

テキストマイニングの初歩 Rubyで形態素解析を行う〜ruby-mecab

投稿日:

環境 ubuntu server 12.04

英語は単語を空白で区切るのでコンピュータでの解析に向いているが、日本語は助詞などを続けて書くのが通常で、さらに続く語によって活用が変化するのでコンピュータでの解析は難しい

そこで日本語の文章を構成する要素を解析するソフトが必要になる

こういうのを形態素解析というらしい

実例を見たほうが早い

このように文章を入力すると構成要素と品詞、動詞等の場合は通常の活用などを解析してくれる

mecabのインストール

mecabのインストール

 

ipa辞書のインストール

形態素解析は辞書を使った解析なので解析の精度は辞書に依存する

おすすめされるのがIPA辞書なのでこれをインストールする

ubuntuではインストールすればこれを標準の辞書に自動的に設定してくれる

*ipa辞書のutf-8化

辞書がEUC-JPというlinux標準のエンコードだった場合は、今はUTF-8にしておくほうが扱いやすい

添付してあるコンバーターで変換できる

*表記ゆれ辞書も含んだNaist辞書というのもあるみたい fukushimu.blog.shinobi.jp/Entry/72/

 

試す

mecabではなぜか「すもももももももものうち」と試す例が多い

結果は冒頭のとおりとなる

飽きたらctrl + c で抜けられる

 

mecab-rubyのインストール

準備

mecab-configという命令が必要になる

ダウンロード

同じバージョンのものをダウンロードする code.google.com/p/mecab/

 

解凍・コンパイル・インストール

makeのときに何か警告が出たがとりあえず動いている

試す

test.rbが同梱されているので実行する

orz

test.rbの2行目に次のエンコード指定を挿入

 

太郎は認識したけど二郎は認識できなかったみたい

 

ここから、この文書ではこの名詞が何回使われているとか、この名詞とこの形容詞はセットで使われていることが多いとかいったことを分析していくことができる

 

使い方

www.ie.u-ryukyu.ac.jp/~e035724/Unix/mecab-0.81/doc/bindings

解析結果の取得

MeCab::Tagger というクラスのインスタンスを生成し, parse (もしくは parseToString) というメソッドを呼ぶことで, 解析結果が文字列として取得できます

ということなので、サンプルを参考に

parseメソッド

parseはこんな出力

簡単に情報を一覧するのに便利だと思う

parseToNodeメソッド

parseToNodeでNodeクラスのインスタンスを呼び出すことができる

Nodeインスタンスは文頭・文末という特殊な形態素(”BOS/EOS”)があり、nextメソッドで次の形態素を呼び出すことができる

情報を分析するのは主にこのNodeインスタンスをプログラムで扱っていくことになる

文頭と文末を除くとこんなかんじで順に値を取ることができる

ipa辞書の品詞体系はこちら http://www.unixuser.org/~euske/doc/postag/index.html#chasen

グッチ裕三なんかはこうなる

ちなみに該当した単語だけ欲しい時はsurficeメソッド

 

名詞だけを集める

文章の内容を分析するのは名詞の分析が中心になる

そこで文書に含まれる名詞のリストが欲しい場合はこんな感じでnodeインスタンスから順に取り出すことができる

 

かぶってる単語もあるから出てきた単語の個数とかも欲しい

 

 

ユーザー辞書を追加する

一般名詞なんてどうでもいい 「ももいろクローバーZ」の情報を調べたいんだってときにはユーザー辞書を活用することになる

mecab.googlecode.com/svn/trunk/mecab/doc/dic.html

の順番でcsvをつくって(必要なところだけでOK)ただし、コストは出現判定の優先度のよう(低いほうが優先)なので低く設定しておく

リンク先を参考に

 

辞書コンパイルスクリプト /usr/lib/mecab/mecab-dict-index

辞書ファイル保存先 /var/lib/mecab/dic/ipadic-utf8/

えーと?カレントディレクトリにmy.dicができた

あとは、/etc/mecabrcでユーザー辞書を指定すれば

これで「ももいろクローバーZ」と一緒に出てくる形容詞や名詞をブログや2chなんかで集めれば、ももクロに関するイメージが調査できたりもする

そういうのは以下を参照

mecabは全角半角を区別するので、全角の辞書も作らないといけないっぽい

リンク

あとでやってみる

rubyで自分のツイートデータから頻出語を見つける

Mecabのコスト計算に関して

日本テレビ東京で学ぶMeCabのコスト計算

MeCabのコマンドライン引数一覧とその実行例

はてなキーワードからMecCab辞書を生成する(Ruby版)

そのほかのMecabバインディングのgem

rubyのmecabバインディングnattoを使う

-Railsで使えるGem
-, ,

執筆者:

関連記事

SimpleCovのカバレッジをvimに表示させる~simplecov-vim

      github.com/nyarly/Simplecov-Vim 参照 Rails3でテストカバレッジを計測する~simplecov,thin 自分のgem上の …

Mac OSXにHyper EstraierのRuby Bindingをインストールする

By: Kanko* – CC BY 2.0 目次1 環境2 Hyper Estraierのインストール3 ソースのダウンロード4 パッチを適用する5 rvmのためにconfigureファ …

no image

kaminari + Twitter Bootstrap2テーマでFirst,Prev,Next,Lastだけおかしい場合

前につくったTwitter Bootstrap2用のkaminariテーマをコピーして使おうとしたら表題の通り、First,Prev,Next,Lastがおかしい あと…も表示されない G …

no image

MongoidでMapReduceに挑戦中

MongoDBの薄い本の素材をMongoidでやろうとしたけど途中経過 MapReduceをやることの利点は、並列処理ができるということとSQLより柔軟な処理なできるということらしい(MongoDBに …

RubyでFaye-websocketを試す

By: Jenny Ondioline – CC BY 2.0 目次1 公式2 インストール3 サーバ側4 クライアント側5 エラー 公式 faye-websocketは、fayeからwe …