- 更新日: 2015年10月3日
- Ruby
MacabをRubyで使う
Mecab はオープンソースの形態素解析のためのライブラリです。Mecab を Ruby から使うには、mecab という gem を使うのが簡単そう。他にもいくつか Ruby から Mecab を使うための gem があるみたいです。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
https://github.com/markburns/mecab
— 環境 —
Mac OS X Yosemite
mecab 0.996
mecab のインストール
mecab の ruby gem をインストール。
Gemfile
1 |
gem 'mecab' |
1 2 3 4 5 |
$ bundle install An error occurred while installing mecab (0.996), and Bundler cannot continue. Make sure that `gem install mecab -v '0.996'` succeeds before bundling. |
ここでエラーが起きた。mecab ネイティブのライブラリが入ってなかったので、homebrew で探してインストール。
1 2 3 4 5 6 7 |
$ brew search mecab josegonzalez/php/php53-mecab josegonzalez/php/php56-mecab mecab-jumandic mecab-unidic josegonzalez/php/php54-mecab mecab mecab-ko josegonzalez/php/php55-mecab mecab-ipadic mecab-ko-dic homebrew/php/php53-mecab homebrew/php/php54-mecab homebrew/php/php55-mecab homebrew/php/php56-mecab |
調べたところ、mecab, mecab-ipadic をインストールすれば良いらしい。
1 2 3 4 |
$ brew install mecab $ brew install mecab-ipadic |
その後、もう一度 mecab の gem をインストール。これで mecab gem が使えるようになりました。
mecab gem の使い方
GitHub の Readme にあるサンプルを pry-rails で試す。
1 2 3 4 5 6 7 8 |
$ bundle exec rails c pry> require 'mecab' pry> sentence = "太郎はこの本を二郎を見た女性に渡した。" pry> tagger = MeCab::Tagger.new pry> tagger.parse(sentence) => "太郎\t名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー\nは\t助詞,係助詞,*,*,*,*,は,ハ,ワ\nこの\t連体詞,*,*,*,*,*,この,コノ,コノ\n本\t名詞,一般,*,*,*,*,本,ホン,ホン\nを\t助詞,格助詞,一般,*,*,*,を,ヲ,ヲ\n二\t名詞,数,*,*,*,*,二,ニ,ニ\n郎\t名詞,一般,*,*,*,*,郎,ロウ,ロー\nを\t助詞,格助詞,一般,*,*,*,を,ヲ,ヲ\n見\t動詞,自立,*,*,一段,連用形,見る,ミ,ミ\nた\t助動詞,*,*,*,特殊・タ,基本形,た,タ,タ\n女性\t名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ\nに\t助詞,格助詞,一般,*,*,*,に,ニ,ニ\n渡し\t動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ\nた\t助動詞,*,*,*,特殊・タ,基本形,た,タ,タ\n。\t記号,句点,*,*,*,*,。,。,。\nEOS\n" |
ちょっと見難いの配列形式で見やすくしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
pry(main)> tagger.parse(sentence).split("\n").map{|i| i.split("\t")}.tap{|arr| arr.pop}.map{|i| [ i[0], i[1].split(',') ]} => [["太郎", ["名詞", "固有名詞", "人名", "名", "*", "*", "太郎", "タロウ", "タロー"]], ["は", ["助詞", "係助詞", "*", "*", "*", "*", "は", "ハ", "ワ"]], ["この", ["連体詞", "*", "*", "*", "*", "*", "この", "コノ", "コノ"]], ["本", ["名詞", "一般", "*", "*", "*", "*", "本", "ホン", "ホン"]], ["を", ["助詞", "格助詞", "一般", "*", "*", "*", "を", "ヲ", "ヲ"]], ["二", ["名詞", "数", "*", "*", "*", "*", "二", "ニ", "ニ"]], ["郎", ["名詞", "一般", "*", "*", "*", "*", "郎", "ロウ", "ロー"]], ["を", ["助詞", "格助詞", "一般", "*", "*", "*", "を", "ヲ", "ヲ"]], ["見", ["動詞", "自立", "*", "*", "一段", "連用形", "見る", "ミ", "ミ"]], ["た", ["助動詞", "*", "*", "*", "特殊・タ", "基本形", "た", "タ", "タ"]], ["女性", ["名詞", "一般", "*", "*", "*", "*", "女性", "ジョセイ", "ジョセイ"]], ["に", ["助詞", "格助詞", "一般", "*", "*", "*", "に", "ニ", "ニ"]], ["渡し", ["動詞", "自立", "*", "*", "五段・サ行", "連用形", "渡す", "ワタシ", "ワタシ"]], ["た", ["助動詞", "*", "*", "*", "特殊・タ", "基本形", "た", "タ", "タ"]], ["。", ["記号", "句点", "*", "*", "*", "*", "。", "。", "。"]]] |
形態素解析で品詞ごとに分割して、品詞とその種類、活用形などの情報が返ってきているっぽいです。* のとことか詳細が不明なので調べないと。あと、配列・ハッシュやオブジェクトなど分かりやすいフォーマットで返してくれる API があるかもしれないので、あるならそっち使ったほうが良いかと思います。これも要調査です。
- – 参考リンク –
- Ruby – Macにmecabインストール – Qiita
- Homebrewを使ってrubyでmecab(形態素解析用ツール)を使えるようにする(Mac OS X Lion) – Qiita
- Ruby の関連記事
- Gemの作り方(Ruby Gem)
- ローカル開発中のgemをGemfileに書いてインストール
- 熊本地震の余震が夜に多いのは本当か?Rubyプログラムで検証してみた
- El Capitanでgemのnative extensionビルド失敗に対応
- Rubyで親クラスから子クラスの定数を参照
- rbenv/ruby-buildでRuby最新バージョンをインストール
- Rubyでクラスインスタンス変数にインスタンスメソッドからアクセス
- 距離1kmあたりの緯度・経度の度数を計算(日本・北緯35度)
- Google Maps Geocoding APIで住所から緯度・経度を取得するRubyコード
- Yahoo地図API(YOLP)のジオコーダAPIで住所から緯度・経度を求めるRubyコード
- 初回公開日: 2015年10月2日
Leave Your Message!