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
-, ,

執筆者:

関連記事

WindowsのRubyでExcelを操作~WIN32OLE

By: Môsieur J. version 9.1 – CC BY 2.0 目次1 WIN32OLE2 hello world3 Excelオブジェクトモデル4 絶対パスを取得するメソッ …

RailsでECサイト構築7 デプロイ~spree+apache2+passenger

  前提 Rails3.2のアプリをデプロイ~apache+passenger+postgresql Rails3.2+Apache2+Passenger環境でSSLを使ってみる &nbsp …

FullCalendarのagendaViewでselectの場所がずれる問題

  By: Ben Piddington 前回 Rails3.2でGoogle Calendarライクなカレンダーを使う〜fullcalendar-rails   gemは最新の1 …

Rails3.2.8でテーブル並び替えのテストを作る~cucumberと正規表現

前提 Railsのテーブル並び替えを実装する Rails3.2.8で自動テスト環境を整える〜cucumber+spork+guard 目次1 作戦(ストラテジー)2 have_contentの正規表現 …

Rails4で複雑な検索〜Ransack

By: eric molina – CC BY 2.0 株価データをつかって複雑な絞り込み検索ができるようにしてみた データは、こちらのサンプルを使わせていただいた datawarehou …