係り受け解析ツール CaboCha (南瓜) を試してみよう! | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

係り受け解析ツール CaboCha (南瓜) を試してみよう!

テキストマイニングにおいて、日本語の文書の解析で、ある文章の文法的な関係を知りたい時があると思います。
今回は、自然言語処理の基礎技術である構文解析(係り受け解析)で有名なツールである、CaboCha (南瓜) をご紹介したいと思います。

スポンサーリンク
  • ■ CaboCha (南瓜) って ?

CaboCha (南瓜) は, CRF++ (条件付き確率場) に基づく日本語の係り受け解析器です。
係り受け解析器というのは文章を形態素に分けた後に、単語間の修飾関係を解析することです。
たとえば、以下のような文章があるとします。

僕のランチ代はおおよそ200円でした。

僕の → ランチ代は
ランチ代は → 200円でした。
おおよそ → 200円でした。
と修飾されます。
CaboChaを利用すれば、このような文章の構造を解析することが簡単に行うことが出来る、とても素晴らしいツールだと思います。

インストールの手順は、オフィシャルサイトを参照いただければと思います。
https://taku910.github.io/cabocha/

■ 試してみよう

それでは、実際に試してみたいと思います。

まずは、通常のコマンドを叩いてみます。

高丸は彼女とラーメン定食を食べに行った。
            高丸は-------D
           彼女と-D   |
     ラーメン定食を-D |
                          食べに-D
                          行った。
EOS

このように、 tree(CABOCHA_FORMAT_TREE) 形式で文章の解析が出来ています。

次に、 lattice(CABOCHA_FORMAT_LATTICE) 形式にて解析してみます。これは、コマンドに -f1 オプションを渡します。

高丸は彼女とラーメン定食を食べに行った。
* 0 4D 0/2 -1.320310
高丸  名詞,固有名詞,人名,姓,*,*,高丸,タカマル,タカマル
は   助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 0/1 0.122149
彼女  名詞,代名詞,一般,*,*,*,彼女,カノジョ,カノジョ
と   助詞,格助詞,一般,*,*,*,と,ト,ト
* 2 3D 1/2 0.645577
ラーメン    名詞,一般,*,*,*,*,ラーメン,ラーメン,ラーメン
定食  名詞,一般,*,*,*,*,定食,テイショク,テイショク
を   助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 3 4D 0/1 -1.320310
食べ  動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
に   助詞,格助詞,一般,*,*,*,に,ニ,ニ
* 4 -1D 0/1 0.000000
行っ  動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ
た   助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。   記号,句点,*,*,*,*,。,。,。
EOS

解析内容として、以下の意味合いを持ちます。

1行目

*
文節番号
係り先の文節番号(係り先なし:-1)
主辞の形態素番号/機能語の形態素番号
係り関係のスコア(大きい方が係りやすい)

2行目

表層形 (Tab区切り)
品詞
品詞細分類1
品詞細分類2
品詞細分類3
活用形
活用型
原形
読み
発音

また、コマンドのオプションに -f3 を渡すと、xml(CABOCHA_FORMAT_XML)形式の出力になります。

高丸は彼女とラーメン定食を食べに行った。
<sentence>
<chunk id="0" link="4" rel="D" score="-2.813300" head="0" func="1">
<tok id="0" feature="名詞,固有名詞,人名,姓,*,*,高丸,タカマル,タカマル">高丸</tok>
<tok id="1" feature="助詞,係助詞,*,*,*,*,は,ハ,ワ">は</tok>
</chunk>
<chunk id="1" link="2" rel="D" score="0.081201" head="2" func="3">
<tok id="2" feature="名詞,代名詞,一般,*,*,*,彼女,カノジョ,カノジョ">彼女</tok>
<tok id="3" feature="助詞,格助詞,一般,*,*,*,と,ト,ト">と</tok>
</chunk>
<chunk id="2" link="3" rel="D" score="0.645577" head="5" func="6">
<tok id="4" feature="名詞,一般,*,*,*,*,ラーメン,ラーメン,ラーメン">ラーメン</tok>
<tok id="5" feature="名詞,一般,*,*,*,*,定食,テイショク,テイショク">定食</tok>
<tok id="6" feature="助詞,格助詞,一般,*,*,*,を,ヲ,ヲ">を</tok>
</chunk>
<chunk id="3" link="4" rel="D" score="-2.813300" head="7" func="8">
<tok id="7" feature="動詞,自立,*,*,一段,連用形,食べる,タベ,タベ">食べ</tok>
<tok id="8" feature="助詞,格助詞,一般,*,*,*,に,ニ,ニ">に</tok>
</chunk>
<chunk id="4" link="-1" rel="D" score="0.000000" head="9" func="10">
<tok id="9" feature="動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ">行っ</tok>
<tok id="10" feature="助動詞,*,*,*,特殊・タ,基本形,た,タ,タ">た</tok>
<tok id="11" feature="記号,句点,*,*,*,*,。,。,。">。</tok>
</chunk>
</sentence>

解析内容として、以下の意味合いを持ちます。

chunk = 文節
chunk/id = 文節番号
chunk/link = 係り先の文節番号
chunk/rel = (不明)
chunk/score = 係り関係のスコア(大きい方が係りやすい)
chunk/head = 主辞の形態素番号
chunk/func = 機能語の形態素番号
tok = 形態素
tok/id = 形態素番号
tok/feature = 品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音
tok/値 = 表層形

このように XML 形式で出力すると、プログラムからの利用がしやすくなりますね。

■ 最後に

今回は 自然言語処理の基礎技術である構文解析(係り受け解析)のツールである CaboCha (南瓜) をご紹介しました。
単純な形態素だけでは、文章の意味を解析するのが、どうしても難しくなります。
一度、 CaboCha (南瓜) を利用してみて 単語間の修飾関係を解析してみてはいかがでしょうか。


03-6441-3336

いますぐ無料で
お試しください。

SiTestの革新的な機能を、
1か月間無料でお試しいただけます。

お名前【必須】
メールアドレス【必須】
電話番号【必須】

利用規約はこちら