在 SWI-Prolog 中,有准备安装的Chat80 。我认为可能与您所追求的非常相似,比照了。
只是会话日志中的一个示例查询(注意:是我自己的 chat80 到 SWI-Prolog 的旧端口,该包可能功能更强大,但我没有尝试运行):
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(意大利语翻译),仍然是我的首选!英文原版可在此处免费获得。