本文是翻译的这篇文章:,这篇文章对聊天机器人中上下文进行了探讨,对于实现聊天机器人有很好的参考意义。
下面是正文:
2017年已经带来,我们中的一部人可能思考一个形而上学的问题。当他们在时代广场上丢球的时候,他们会问自己“我该怎样丢这个球”。
别担心,本文不是另一则新年前夕的激励文章,要求你仔细深入探索你的灵魂并怀疑哪里出错了。与之相反的是,本文是关于促进聊天机器人的对话上下文。说到上下文,在一个星期六下午,我在经常漫步的附近雪道散步。不知为什么,我拿出我的决定跟siri和助手进行一段聊天。下面的对话是我已经想好的
非常简单对吧?我是说,我问我在哪里,然后这是我心里的上下文,我问为什么我在这里?是的,我知道这很感伤;孤单的我刚刚跟我的机器人有了一段小小的对话。但是,这对聊天机器人很简单吗?哦,在你对“这里”部分不以为然之前,我完全可以替代问题“我为什么在这个位置”,你将在下面看到我的最终行为。顺便一提,这个问题是NLP歧义消除问题,但是本文不纠结于此。
现在,想象一下我在看到谷歌助手和Siri的结果是多么的吃惊。我没有展示我一开始问的问题“我在哪里”。放心,我确实问了第一个问题,然后两个聊天机器人都上拉出了一个地图,尽管都没有继续识别这条雪道的地标名。谷歌助手比Siri在“我在哪里”问题上表现的更好一点,但仅仅是勉强好一点点。正如我说的,没有一个能够告诉我我是在一条雪道上,尽管GPS位置已经在谷歌地图上识别出来了。
就算接受它们不能够告诉我我是在一条雪道上,它们给出的答案也是荒谬的。我还特意的问为什么我在这个位置;所以这种模糊的回答是不可原谅的。但是,更重要的是,机器人没有保持上下文。它们对待这些问题都是当做独立的对话。这些机器人更像基于NLP的信息搜索引擎。它们不是真的聊天机器人或者真正的会话AI接口。
相反的是,机器人的对话管理器应该持有上下文变量,比如:
通过获得上下文变量的值来维护对话状态是任意一个聊天机器人对话管理器的关键特性。上下文变量可以是直接从用户获取,或者在上面的插图,或者其他外部应用执行一个动作之后的结果(比如,获取的GPS位置)。值得表扬的是,机器人通过个性化的基于一个用户的对话和访问信息历史来获取上下文变量。想象一下下面的对话:
评论(0)