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

Li *_* Ye 2 wit.ai

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

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

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

Gee*_*982 8

我觉得你的痛苦:)

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

我的意思是:

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

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

在我的几个应用程序中 - 对于每个故事,我都想到"这个故事在做什么" - 什么是切入点,所以说出来并想出一个实体,通过使用"操作"选项卡和设置引导用户进入该对话路径Only if...... Always if对答复和行动的要求.

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

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

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

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