我刚刚开始使用Watson Conversation,我遇到了以下问题。
我对#greetings有一般意图(你好,嗨,问候....)和#general-issues的另一个意图(我有问题,我有问题,东西不能用,等等.... )。如果用户说:“你好,我的产品有问题。”,它与#greetings意图匹配并回复,但在这种情况下,我想匹配#general-issue intent。
根据:https://console.bluemix.net/docs/services/conversation/dialog-overview.html#dialog-overview
我希望首先匹配列表顶部的节点,所以我在对话树的底部有#greetings节点,以便有机会首先匹配“更高权重”节点,但它似乎每次都不起作用。
在#general中重复#greeting意图发布这里唯一的解决方案吗?
答案 0 :(得分:3)
因此,根据我的经验尝试帮助您,您可以使用intents[0].confidence
作为您的青睐。
例如:
在我的示例中,我创建了一个条件:
intents[0].confidence > 0.75
因此,如果用户为#greetings Intent
的训练有素的示例输入非常类似的内容,Watson就会识别此意图。
如你所见,效果很好:
答案 1 :(得分:2)
因此,您可以采取另外两种方法。
在构建会话系统时,了解最终用户实际说的内容非常重要。所以收集真实用户的问题。
你会发现没有多少人会说问候和问题。我个人没有完成我已经完成的项目的统计机会,但至少有一些轶事,我没有经常看到它。
了解这一点,您可以尝试从您的意图中删除主题/聊天聊天。因为它没有完全反映您想要训练的域名。
要解决此问题,您可以使用off topic / chit-chat创建更详细的第二个工作区。如果您没有在主工作区上获得好评,您可以呼叫第二个工作区。您可以通过向主工作区中的计数器示例添加chit-chat来改进这一点。
您还可以通过简单地对用户的初始响应进行措辞来缓解此问题。例如,如果您的初始响应是问候语,请让系统提出问题。或者让它进行谈话,其中hello变得多余。
目前,只有在应用层才能轻松实现。
将alternate_intents
设置为true
将返回前10个意图及其信心。
在进一步说明之前,如果最高意图< 0.2那么它需要更多的培训(所以不需要继续)。
如果> 0.2你可以在图表上映射这些,你可以直观地看出前两个意图。例如:
要让您的应用程序看到这一点,您可以使用k-means算法创建两个桶(k = 2)。这将是相关和无关紧要的。
一旦您看到更多相关的内容,您就可以采取措施忽略闲聊/偏离主题。
还有更多细节,sample code here。