SWI-Prologには、Chat80をインストールする準備ができています。必要な変更を加えて、あなたが求めているものと非常に似ていると思います。
セッションログからの単なるサンプルクエリ(注:SWI-Prologへのchat80の私自身の古いポートでした。パックはおそらくより機能的ですが、実行しようとはしていません):
what rivers are there ?
Parse: 0.0168457sec.
whq
$VAR
1
s
np
3+plu
np_head
int_det(B)
[]
river
[]
verb(be,active,pres+fin,[],pos)
void
[]
Semantics: 0.0170898sec.
answer([B]) :-
river(B)
& exists B
true
Planning: 0.0sec.
answer([B]) :-
river(B)
& exists B
true
amazon, amu_darya, amur, brahmaputra, colorado, congo_river, cubango, danube, don, elbe, euphrates, ganges, hwang_ho, indus, irrawaddy, lena, limpopo, mackenzie, mekong, mississippi, murray, niger_river, nile, ob, oder, orange, orinoco, parana, rhine, rhone, rio_grande, salween, senegal_river, tagus, vistula, volga, volta, yangtze, yenisei, yukon and zambesi.
Reply: 0.166992sec.
談話が質問に答えるために必要な論理形式は、システムの中心点です。地面から作るのは本当に簡単ではありません!
私は本Prolog and Natural Language Analysis
、F.Pereira、S.Shieber、1987年(イタリア語に翻訳された)を読みましたが、それでも私の好みです!英語のオリジナルはここから無料で入手できます。