この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
ハロウィーンの時期がやってまいりました。ハロウィーンといえばジャック・オー・ランタン、つまりカボチャですね。 そこで、係り受け解析ツールCaboChaを使って係り受け解析をしてみたいと思います。
ハロウィーンの時期がやってまいりました。ハロウィーンといえばジャック・オー・ランタン、つまりカボチャですね。
そこで、係り受け解析ツールCaboChaを使って係り受け解析をしてみたいと思います。
係り受け解析とは
まず係り受け解析とは、修飾語と被修飾語のように、関係し合っている文節や単語の解析を行うことです。
「母のおいしい料理」という文の係り受けの構造は
というようになります。
係り受け解析ツール CaboCha
今回はCaboChaというフリーソフトウェアを使います。unixとwindowsで動かせるそうです。
インストール
mecab
文章を形態素解析するときに使います。(「すもももももももものうち」を「すもも も もも も もも の うち」のように分けます。)
Groonga を使うとインストールが簡単
sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
sudo yum makecache
sudo yum install mecab mecab-ipadic
export PATH=$PATH:/usr/bin/mecab
CRF++
https://taku910.github.io/crfpp/ から最新ファイルを持ってくる。
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801/
./configure --with-charset=utf8
sudo make install
pcre
Perlの正規表現と互換性のある正規表現を他の言語でも使うために作られたライブラリです。
http://www.pcre.org/ から最新ファイルを持ってくる。
tar zxvf pcre-8.41.tar.gz
cd pcre-8.41
./configure
make
sudo make install
cabocha
https://taku910.github.io/cabocha/ から最新ファイルを持ってくる。
tar zxvf CRF++-0.58.tar.gz
cd CRF++-0.58
./configure --with-charset=utf8
make
sudo make install
swig
cabochaをrubyで使えるようにするためのツールです。
http://www.swig.org/ から最新ファイルを持ってくる。
tar zxvf swig-3.0.12.tar.gz
cd swig-3.0.12
./configure
make
sudo make install
make ruby
cd ../ruby/
ruby extconf.rb
make
gem
gem install cabocha
bundler、pry-byebug、rake、rake-compiler、rspecが必要です。
実際に動かしてみる
irb(main):001:0> require 'CaboCha'
=> true
irb(main):002:0> sentence = "太郎はこの本を二郎を見た女性に渡した。"
=> "太郎はこの本を二郎を見た女性に渡した。"
irb(main):003:0> c = CaboCha::Parser.new
=> #<CaboCha::Parser:0x0000560e74ef2df0 @__swigtype__="_p_CaboCha__Parser">
irb(main):004:0> puts c.parseToString(sentence)
太郎は-----------D
この-D |
本を---D |
二郎を-D |
見た-D |
女性に-D
渡した。
EOS
=> nil
ちょっと分かりにくいですが、
- 太郎は→渡した
- この→本
- 二郎を→見た
- 見た→女性に
- 女性に→渡した
にかかっているということを表しています。
まとめ
rubyで使えるようにしようとしたため、インストールするものが多くなってしまいました。
そして、そもそもCRF++とかよくわからないままインストールしているからどういったものか調べたい。
また、係り受け解析自体にまだまだ問題点がたくさんあるようで、
– 「母のおいしい料理」
– 「味の濃い料理」
のように、形は同じだけど、かかっている場所が異なるような文章が難しいようです。
最近はGoogleから出ているSyntaxNetというものでも構造解析ができるらしいです。
参考
- 統計的係り受け解析入門
https://www.slideshare.net/unnonouno/ss-5724050 - 日本語係り受け解析器 CaboCha
https://www.mlab.im.dendai.ac.jp/~yamada/ir/SyntacticAnalyzer/CaboCha.html - mecab,cabochaをインストール
https://qiita.com/katsuta/items/cedb51c8e4156e9918ec - 日本語係り受け解析器CaboChaをRuby(とRubyGems)から扱う
https://qiita.com/uetchy/items/665e9db0d4b70decbc69 - cabocha-rubyの使い方メモ
https://qiita.com/aadiimmz/items/d0f08517037b4894702d