係り受け解析ツール 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 (南瓜) を利用してみて 単語間の修飾関係を解析してみてはいかがでしょうか。

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

グラッドキューブは
「ISMS認証」を取得しています。

認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業

「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。

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

SiTest の革新的な機能を
お試しいただけます。
利用規約

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