言語処理100本ノック 第5章 CaboChaを使うための環境構築
pythonでCaboChaを使うための、最初の環境構築で滅茶苦茶つまづいたが、おおむね以下の3つのサイトにお世話になった。
qiita.com
hytmachineworks.hatenablog.com
qiita.com
CaboChaや係り受け解析についての詳しい説明はこちらを見ると良い。
qiita.com
まずは試しに基本的なことをやってみる。
import CaboCha c = CaboCha.Parser() sentence = "太郎はこの本を次郎を見た女性に渡した。" tree = c.parse(sentence) print(tree.toString(CaboCha.FORMAT_TREE))
太郎は-----------D この-D | 本を---D | 次郎を-D | 見た-D | 女性に-D 渡した。
表示の仕方をいろいろと変えることができる。
print(tree.toString(CaboCha.FORMAT_LATTICE))
* 0 6D 0/1 -2.457381 太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー は 助詞,係助詞,*,*,*,*,は,ハ,ワ * 1 2D 0/0 1.532201 この 連体詞,*,*,*,*,*,この,コノ,コノ * 2 4D 0/1 0.091699 本 名詞,一般,*,*,*,*,本,ホン,ホン を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ * 3 4D 1/2 2.132370 次 名詞,一般,*,*,*,*,次,ツギ,ツギ 郎 名詞,一般,*,*,*,*,郎,ロウ,ロー を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ * 4 5D 0/1 1.416783 見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ * 5 6D 0/1 -2.457381 女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ * 6 -1D 0/1 0.000000 渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 EOS
print(tree.toString(CaboCha.FORMAT_XML))
<sentence> <chunk id="0" link="6" rel="D" score="-2.457381" head="0" func="1"> <tok id="0" feature="名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー">太郎</tok> <tok id="1" feature="助詞,係助詞,*,*,*,*,は,ハ,ワ">は</tok> </chunk> <chunk id="1" link="2" rel="D" score="1.532201" head="2" func="2"> <tok id="2" feature="連体詞,*,*,*,*,*,この,コノ,コノ">この</tok> </chunk> <chunk id="2" link="4" rel="D" score="0.091699" head="3" func="4"> <tok id="3" feature="名詞,一般,*,*,*,*,本,ホン,ホン">本</tok> <tok id="4" feature="助詞,格助詞,一般,*,*,*,を,ヲ,ヲ">を</tok> </chunk> <chunk id="3" link="4" rel="D" score="2.132370" head="6" func="7"> <tok id="5" feature="名詞,一般,*,*,*,*,次,ツギ,ツギ">次</tok> <tok id="6" feature="名詞,一般,*,*,*,*,郎,ロウ,ロー">郎</tok> <tok id="7" feature="助詞,格助詞,一般,*,*,*,を,ヲ,ヲ">を</tok> </chunk> <chunk id="4" link="5" rel="D" score="1.416783" head="8" func="9"> <tok id="8" feature="動詞,自立,*,*,一段,連用形,見る,ミ,ミ">見</tok> <tok id="9" feature="助動詞,*,*,*,特殊・タ,基本形,た,タ,タ">た</tok> </chunk> <chunk id="5" link="6" rel="D" score="-2.457381" head="10" func="11"> <tok id="10" feature="名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ">女性</tok> <tok id="11" feature="助詞,格助詞,一般,*,*,*,に,ニ,ニ">に</tok> </chunk> <chunk id="6" link="-1" rel="D" score="0.000000" head="12" func="13"> <tok id="12" feature="動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ">渡し</tok> <tok id="13" feature="助動詞,*,*,*,特殊・タ,基本形,た,タ,タ">た</tok> <tok id="14" feature="記号,句点,*,*,*,*,。,。,。">。</tok> </chunk> </sentence>
print(tree.toString(CaboCha.FORMAT_CONLL))
1 太郎 太郎 名詞 名詞-固有名詞-人名-名 feature=名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー|begin_chunk=1|head=1 2 _ _ _ 2 は は 助詞 助詞-係助詞 feature=助詞,係助詞,*,*,*,*,は,ハ,ワ|func=1 13 D _ _ 3 この この 連体詞 連体詞 feature=連体詞,*,*,*,*,*,この,コノ,コノ|begin_chunk=1|head=1|func=1 4 D _ _ 4 本 本 名詞 名詞-一般 feature=名詞,一般,*,*,*,*,本,ホン,ホン|begin_chunk=1|head=1 5 _ _ _ 5 を を 助詞 助詞-格助詞-一般 feature=助詞,格助詞,一般,*,*,*,を,ヲ,ヲ|func=1 9 D _ _ 6 次 次 名詞 名詞-一般 feature=名詞,一般,*,*,*,*,次,ツギ,ツギ|begin_chunk=1 7 _ _ _ 7 郎 郎 名詞 名詞-一般 feature=名詞,一般,*,*,*,*,郎,ロウ,ロー|head=1 8 _ _ _ 8 を を 助詞 助詞-格助詞-一般 feature=助詞,格助詞,一般,*,*,*,を,ヲ,ヲ|func=1 9 D _ _ 9 見 見る 動詞 動詞-自立 feature=動詞,自立,*,*,一段,連用形,見る,ミ,ミ|begin_chunk=1|head=1 10 _ _ _ 10 た た 助動詞 助動詞 feature=助動詞,*,*,*,特殊・タ,基本形,た,タ,タ|func=1 11 D _ _ 11 女性 女性 名詞 名詞-一般 feature=名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ|begin_chunk=1|head=1 12 _ _ _ 12 に に 助詞 助詞-格助詞-一般 feature=助詞,格助詞,一般,*,*,*,に,ニ,ニ|func=1 13 D _ _ 13 渡し 渡す 動詞 動詞-自立 feature=動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ|begin_chunk=1|head=1 14 _ _ _ 14 た た 助動詞 助動詞 feature=助動詞,*,*,*,特殊・タ,基本形,た,タ,タ|func=1 15 _ _ _ 15 。 。 記号 記号-句点 feature=記号,句点,*,*,*,*,。,。,。 0 _ _ _
何だか長くなりそうなので問題は次の記事で解くことにしよう。