ホーム DoRuby 【ruby】CaboChaによる係り受け解析のやり方
【ruby】CaboChaによる係り受け解析のやり方
 

【ruby】CaboChaによる係り受け解析のやり方

この記事はアピリッツの技術ブログ「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というものでも構造解析ができるらしいです。

参考

記事を共有

最近人気な記事