Prolog化したWikipediaファイルのjavaによる検索時間

prologのfact文にしたwikipediaファイルを検索するためのjavaプログラムを作成した。prologによる開発効率が悪いので、あっさりjavaで、という狙いだった。プログラム自体は簡単にできた。ただ、じっさいそれで、「ロボット」と「模型」といった、2語を同時に含む文章を検索させると、1ファイルあたり7.8秒かかる。wikipedia本文の全部を544ファイルにしてあるうちの1ファイルにこれくらいの時間がかかるということだ。

prologにしてあるからで、元々のテキストから検索すれば、もっと早いのではないかと思われるかもしれない。単純な検索ならば、もっと早くなる可能性がないとは言えないが、prologのfact化してあるものは、そこにjuman++によるカテゴリ、品詞データ、ドメインなどの形態素解析やknpによる構文解析結果がはめ込まれているので、それらを含めれば比べ物にならない。つまり、元々のテキストに、こうした自然言語解析をやりながら、データの検索をかければ、もっと時間がかかってしまうだろうということだ。

もちろん、googleなどは、もっと上手いことをやっているんだろうが、それほどの環境やシステム、能力を持っていない。

となると、prolog化したwikipediaは、キホ的なところは、prologで検索しなければならないと思われる。

swiprologは、プログラム/データをバイナリ化して保持するので、自分の思う通りの検索をやらせれば、もっともっと速かった。

prologというもののすごさがわかる。