请教下实际应用中的多轮对话 怎么让程序知道上下文的句子?

比如一轮对话: 
第一轮:请帮我订一张纽约到北京的机票。 -请问什么时候出发?
第二轮:下周一 。  -请问下周一几点?
第三轮:12点之前。 - 好的,已经订好。
 
 
例子可能不是特别好,但是大致是这个意思。如何让每轮之间的对话内容相通?

dGuo

赞同来自: fish JasonGo

这个问题请参考最后一节课第一部分,"A Network based End-to-End Trainable Task-orientation Dialogue System"里面的belief tracker,或者参考第六节课,MemNet应用里面的"Learning End-to-End Goal-Oriented Dialog"。 这两个都是订餐这个目标导向(即论文题目里面的task-oriented, goal-oriented)的对话系统。在这种应用里面,你需要定义一些关键词,例如“地址,菜系,价格范围,人数”等,从用户的输入里面提取这些关键词,在整个对话过程中保留并及时更新这些关键词的值,并且在某些关键词缺失的时候,提示用户输入这些信息。 从第一篇论文的图4,5和第二篇论文的图1里面你可以看到一些特别具体直观的例子解释task oriented dialogue的流程。如果你看我们最后一节课的api.ai 的 demo,看创建一个bot时候定义的intent和关键词,也可以帮助理解目标导向的对话流程。 更多的信息你可以调研一下DST (dialogue state tracker), DSTC(dialogue state tracker challenge,微软推出的一个年度竞赛)以及NLU(natural language understanding)。

要回复问题请先登录注册