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

執筆者:

関連記事

TwitterBootstrapでアイコンが微妙な感じだったらFontAwesomeを試してみるといい

かもしれない fortawesome.github.com/Font-Awesome/ hallojsで使ってるのは上 github.com/bokmann/font-awesome-rails gi …

no image

Railsで動画を管理する2 動画のサムネイルを作成する~CarrierWave + Flowplayer

  *とりあえず動いているけど、もっとましな方法があるとおもいます 前提 Railsで動画ファイルを管理する~CarrierWave Flowplayer 参考 Rubyでffmpegのラッ …

Ubuntu ServerのGuardからGrowl for Windowsにネットワーク経由で通知する

github.com/guard/guard 普段はWindows7から仮想環境(VirtualBox)のUbuntu Server 12.04.1へputtyで接続して開発してます. Virtual …

RailsでECサイト構築6 固定ページを作る~spree

  ECサイトを作成するときには日本の法律にしたがって色々と表示しなければならない 表示しなければならないことについては次のページが詳しかった 本サイトについて 実際のECサイトをみれば実例 …

no image

RailsでGoogle Mapを使ってみる~Google-Maps-for-Rails

github.com/apneadiving/Google-Maps-for-Rails   前提

こんな感じで perso …