2

我正在尝试开发一个天气机器人并且遇到了一些问题。

  1. 我用故事和理解选项卡训练了系统。机智的行为对我来说似乎不可预测 - 它结合了故事(我猜它应该这样做),所以似乎随机交谈。
  2. 即使使用相同的故事,意图值也不一致。我使用调试器来显示意图值。例如,我说“天气怎么样”,训练后的意图值应该是 forecast_all,但有时会变成“什么”,有时会出现来自其他故事的一些其他实体,例如我为离题对话创建的“off_topic”实体。然后机器人的行为将与我的训练故事不同。

有什么见解吗?难道我做错了什么?我错过了什么?非常感谢您的帮助!

4

2 回答 2

8

我感觉到你的痛苦:)

您必须根据用户输入“强制” wit.ai 进入正确的故事,如果您需要用户跟随故事直到最后 - 您将不得不继续“强制”他们进入对话链。

我的意思是:

如果用户说What's the weather您可以通过名称再引入一个自定义实体,wth并在“理解”选项卡中使其基于关键字并添加与该weather单词相关的严格关键字列表(预测...)。

这可能是你的“指导线”。当此实体出现时 = 用户使用了与天气问题相关的关键字 = 您可以将该实体wth用作故事的每个操作和响应的要求(操作选项卡)。

在我拥有的一些应用程序中——对于我想到的“这个故事在做什么”的每个故事——切入点是什么,可以这么说,并想出了一个实体,通过使用“操作”选项卡和设置来引导用户走上对话路径Only if……Always if对答复和行动的要求。

这种方法非常严格,但它可以让您对用户从您的“机器人”接收到的内容有一定程度的控制,因此您可以预测操作和回复。

我在玩另一种方法,你有很多故事,它们都是“不完整的”,但它们试图涵盖用户可能的不同答案。所以用户开始在一个故事中聊天,然后根据他的回答 - 另一个故事开始了,然后是另一个故事,然后是另一个故事......

也是一种有效的、更灵活的方法,但它需要对“机器人回复”\故事进行非常好的规划,以便他们感觉以一种合乎逻辑的、对话的方式联系在一起。是的,它还需要仔细的上下文管理,因为如果每个故事都会添加上下文 - 它可能会变成一大堆实体和值,所以你需要认为故事 A 将实体 A1 添加到上下文中,但如果稍后故事 B启动并将 B1 实体添加到上下文中,然后我需要删除 A1,因为它们是冲突的......

总结一下:看起来你想要更多的控制权并知道对话的去向。为此 - 尝试“操作”选项卡并设置答案和操作的要求。你可以让它非常直接和直接。

于 2016-06-02T08:25:54.717 回答
2

我想在这里澄清一个重要的概念。上下文是的。Wit 仅读取它以预测下一步或通过变量生成 Bot 答案。我们从不更新我们这边的上下文。

您将使用自己的操作来更新上下文中的键。这些键可以反过来影响基于故事的预测。Wit 使用当前上下文(现在只有键)、上下文的先前状态(在交互 N-1、N-2 ......)以及用户消息(特征实体)来预测下一个动作。

此处的附加信息:https ://wit.ai/docs/recipes#manage-context-and-session-id

于 2016-07-13T18:31:10.410 回答