我试着弄清楚如何实现一个 . 我想在bar的上下文中实现一个人机 spoken dialogue system ,它将来自用户的文本短语作为输入(对给定产品的请求:芯片,可乐,水,咖啡等)并作为输出返回相应的反应(超越行动,但这没关系) .
我希望达到的对话示例:
你好,你好吗?
S:嘿那里 . 我很好 . 请问有什么可以帮你?
U:我想要一份咖啡和一个带果酱的羊角面包“
S:好的 . 在这里你的订单!
你好,谢谢!再见 .
S:也谢谢你 . 祝你有美好的一天!
也就是说,现在我只需要在他们之间就酒吧的订单进行简单的对话 .
我想知道是否有人知道如何实施对话系统的教程,最好是在Prolog中 . 无论如何,任何其他语言对我来说都是有益的,至少可以理解这些系统是如何实现的 .
附:我在互联网上搜索过,但是我发现很多材料让我感到困惑,而且没有一个材料是如何实现对话系统的例子 . 最后我只是希望它作为我的PC上的软件(不是Web应用程序或类似软件) .
谢谢!
1 回答
ELIZA这是典型的聊天机器人 .
它并不真正“理解”对话框的语法结构,但可能是一个好的开始 .
非常simple example在SWISH . 这是一些代码在我的HD上睡觉(IIRC,它来自Clocksin - Mellish,移植到SWI-Prolog) .
编辑回答评论...
好吧,那段代码是由Prolog大师编写的,而不是我:)所以,我们应该尝试理解它......这两个子句实现了'incremental dictionary',数据结构不完整 . 它们在刺激和响应之间绑定任意短语,并且是ELIZA这种紧凑编码的关键(原始程序并非如此简单,尽管......) . 要遵循用法,Prolog调试是可能的:
您可以看到关联列表的尾部在退出时是空闲的,因此根据需要扩展了Dictionary . 巧妙地使用不完整的数据结构 . 参见“Prolog的艺术”第15章