wit.ai故事训练结果难以预测?

时间:2016-06-01 20:48:15

标签: wit.ai

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

  1. 我使用故事和理解标签训练系统。机智的行为对我来说似乎无法预测 - 它结合了故事(我猜它应该这样做),所以似乎是随机的。
  2. 即使使用相同的故事,意图值也不一致。我使用调试器来显示意图值。例如,我说"什么是天气",训练的意图值应该是forecast_all,但有时它变成"什么",有时其他故事的其他实体显示诸如" off_topic"我为非主题对话创建的实体。然后机器人的行为将与我的训练故事不同。
  3. 有什么见解?难道我做错了什么?我错过了什么?非常感谢你的帮助!

2 个答案:

答案 0 :(得分:8)

我感到痛苦:)

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

我的意思是:

如果用户说What's the weather,您可以使用名称wth引入另一个自定义实体,并在“理解”标签中将其设为关键字,并添加与weather字相关的严格关键字列表(预测...)。

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

在我的一些应用程序中 - 对于每个故事我都想到“这个故事在做什么” - 什么是切入点,所以说并想出一个实体,通过使用Actions引导用户走下对话路径选项卡并设置Only if ... Always if ...对回复和操作的要求。

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

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

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

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

答案 1 :(得分:2)

我想在这里澄清一个重要的概念。上下文你的。 Wit只读取它以预测下一步或通过变量生成Bot答案。我们永远不会更新我们这方面的背景。

您可以在旁边使用操作来更新上下文中的键。这些键可以反过来影响基于故事的预测。 Wit使用当前上下文(目前仅为密钥),上下文的状态(在交互N-1,N-2 ......)以及用户消息(特征实体)来预测下一个动作。

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