芥川龍之介『羅生門』全文をprolog宣言文に変換した

この間作成したJAVAの変換プログラムで、青空文庫にある芥川龍之介「羅生門」の全文を、二分木のprologの宣言文にした(プログラムは、その後改定されているが、まだgithubには反映されていない)。結果は、ベタでここに載せるのは長すぎるので、以下のzipファイルをダウンロードし解凍して、適当なテキストエディタでご覧ください。

jprolog.swi.zip

具体的な手法などは、前の記事を参照のこと。変換にかかった時間は、1分2.832秒で、許容範囲。

swiprologに読み込にかかる時間は、ほんの一瞬。listingした結果(一部)は以下のような感じだ。

washida:~/Project/Robot/MakeKnowledge/JProlog/data $ swipl -f jprolog.swi 
Welcome to SWI-Prolog (threaded, 64 bits, version 7.6.4)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.

For online help and background, visit http://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).

1 ?- listing.

:- dynamic exception/3.
:- multifile exception/3.


plsample19(line0, node(へ, node([], [], どこ), node([], 行く, []))).
plsample19(line1, node([], [], [])).

plsample11(line0, node(あるが, node(の, node(と, 見る, 楼), node(には, 内, node(に, 噂, node([], [聞いた, 聞く], node([], 通り, node(つかの, 幾, node(が, 死骸, node([], 無造作に, [棄てて, 棄てる])))))))), node(の, 火, node(の, 光, node([], 及ぶ, node(が, 範囲, node(より, [思った, 思う], node(ので, 狭い, node(は, 数, node(つとも, 幾, node(ない, [わから, わかる], []))))))))))).
plsample11(line1, node(である, node(ながら, node([], ただ, おぼろげ), node(は, 知れるの, node(に, node([], その, 中), node(と, node(の, 裸, 死骸), node(を, 着物, node([], [着た, 着る], node(とが, 死骸, node(と, ある, node([], いう, 事))))))))), [])).
plsample11(line2, node(いるらしい, node(には, node([], 勿論, 中), node(も, 女, node(も, 男, [まじって, まじる]))), [])).
plsample11(line3, node(だと, node(は, node([], node([], そうして, その), 死骸), node(が, node([], 皆, それ), node([], かつて, node(いた, [生きて, 生きる], 人間)))), node([], 云う, node(さえ, 事実, node(れる, [疑わ, 疑う], node([], ほど, node(を, 土, node([], [捏ねて, 捏ねる], node([], [造った, 造る], node(のように, 人形, node([], node(を, 口, [開いたり, 開く]), node(を, 手, node(して, [延ばしたり, 延ばす], node(の, node([], ごろごろ, 床), node(に, 上, node(いた, [ころがって, ころがる], [])))))))))))))))).
plsample11(line4, node(しかも, [], node(とか, 肩, node(とかの, 胸, node(なっている, 高く, node(に, 部分, node(の, node([], node([], ぼんやり, [した, する]), 火), node(を, 光, node([], [うけて, うける], node(の, node(なっている, 低く, 部分), node(を, 影, node([], 一層, node(しながら, 暗く, node(に, 永久, node(の如く, 唖, node(いた, [黙って, 黙る], [])))))))))))))))).

plsample35(line0, node(の, 下人, node(は, 行方, node(も, 誰, node(ない, [知ら, 知る], []))))).
・・・・・・
・・・・・・
以下延々と続く

使い方のヒントは、例えばこの記事を参考に。