Daily programming #0048

言語処理100本ノック 2015の#46をやっていく。

第5章: 係り受け解析

夏目漱石の小説『吾輩は猫である』の文章(neko.txt)をCaboChaを使って係り受け解析し,その結果をneko.txt.cabochaというファイルに保存せよ.このファイルを用いて,以下の問に対応するプログラムを実装せよ.

このあたりの記述を参考にCaboChaをインストールし、neko.txt.cabochaを作成する。

neko.txt.cabochaのサイズが大きく、glot.ioではそのまま実行できないため、第5章は実行結果を記載する方針とする。

46. 動詞の格フレーム情報の抽出[Golang]

Question

45のプログラムを改変し,述語と格パターンに続けて項(述語に係っている文節そのもの)をタブ区切り形式で出力せよ.45の仕様に加えて,以下の仕様を満たすようにせよ.

  • 項は述語に係っている文節の単語列とする(末尾の助詞を取り除く必要はない)
  • 述語に係る文節が複数あるときは,助詞と同一の基準・順序でスペース区切りで並べる

「吾輩はここで始めて人間というものを見た」という例文(neko.txt.cabochaの8文目)を考える.この文は「始める」と「見る」の2つの動詞を含み,「始める」に係る文節は「ここで」,「見る」に係る文節は「吾輩は」と「ものを」と解析された場合は,次のような出力になるはずである.

始める  で      ここで
見る    は を   吾輩は ものを

Code

100knock #46

Output

$ ./main ../neko.txt.cabocha > output.txt
$ head -n 10 output.txt
生れる で   どこで
つく  と が かとんと 見当が
泣く  で   した所で
する  て だけ    泣いて いた事だけは
始める で   ここで
見る  は を 吾輩は ものを
聞く  で   あとで
捕える を   我々を
煮る  て   捕えて
食う  て   煮て

結果は例として先頭から10個を表示した

Comment

45のコードに「述語に係っている文節」を出力するように変更しただけ