为意图分配权重
Assigning weights to intents
我刚刚开始使用 Watson Conversation,我 运行 进入以下问题。
我对#greetings(你好,嗨,问候......)有一个总体意图,对#general-issues 有另一个意图(我有一个问题,我有一个问题,东西不工作,等等...... ...)。如果用户说:"hello, I have a problem with your product.",它匹配#greetings 意图并回复,但在这种情况下我想匹配#general-issue 意图。
根据:https://console.bluemix.net/docs/services/conversation/dialog-overview.html#dialog-overview
我希望列表顶部的节点首先匹配,所以我在对话树的底部有#greetings 节点,让 "higher weight" 节点有机会被匹配先匹配,但好像每次都不行
复制#general-issue 中的#greeting 意图是这里唯一的解决方案吗?
所以,根据我的经验来帮助你,你可以使用intents[0].confidence
作为你的帮助。
例如:
在我的示例中,我创建了一个条件:
intents[0].confidence > 0.75
因此,只要用户为 #greetings Intent
.
如您所见,效果很好:
- 查看有关使用 Watson Conversation 构建复杂对话框的更多信息。
- 在此处的对话中查看有关 Confidence 的更多信息。
因此,您可以采用另外两种方法。
将偏离主题视为污染。
构建对话系统时,了解最终用户实际在说什么很重要。所以收集真实用户的问题。
你会发现没有多少人会说一句问候一句问一句。我个人没有对我做过的项目进行过统计机会,但至少在轶事中我没有看到它经常发生。
了解这一点后,您可以尝试从意图中删除离题/闲聊。因为它不能完全反映您要训练的领域。
为了解决这个问题,您可以关闭 topic/chit-chat 创建一个更详细的第二个工作区。如果您没有在主要工作区获得成功,您可以呼叫第二个工作区。您可以通过在主工作区中添加 chit-chat 来对抗示例来改进这一点。
您也可以通过简单地向用户说明您的初始响应来缓解这种情况。例如,如果您的初始回答是“你好”,让系统也问一个问题。或者让它在对话变得多余时推进对话。
检测可能的复合意图。
目前,这只能在应用层轻松实现。
将 alternate_intents
设置为 true
将 return 前 10 个意图及其置信度。
在继续之前,如果最高意图 < 0.2 则需要更多训练(因此无需继续)。
如果 > 0.2,你可以将这些映射到图表上,你可以直观地看到前两个意图。例如:
要让您的应用程序看到这一点,您可以使用 k-means 算法创建两个桶 (k=2)。那将是相关的和无关的。
一旦您看到超过一个相关的,您可以采取行动忽略 chit-chat/off-topic。
还有更多的细节,sample code here。
我刚刚开始使用 Watson Conversation,我 运行 进入以下问题。
我对#greetings(你好,嗨,问候......)有一个总体意图,对#general-issues 有另一个意图(我有一个问题,我有一个问题,东西不工作,等等...... ...)。如果用户说:"hello, I have a problem with your product.",它匹配#greetings 意图并回复,但在这种情况下我想匹配#general-issue 意图。
根据:https://console.bluemix.net/docs/services/conversation/dialog-overview.html#dialog-overview
我希望列表顶部的节点首先匹配,所以我在对话树的底部有#greetings 节点,让 "higher weight" 节点有机会被匹配先匹配,但好像每次都不行
复制#general-issue 中的#greeting 意图是这里唯一的解决方案吗?
所以,根据我的经验来帮助你,你可以使用intents[0].confidence
作为你的帮助。
例如:
在我的示例中,我创建了一个条件:
intents[0].confidence > 0.75
因此,只要用户为 #greetings Intent
.
如您所见,效果很好:
- 查看有关使用 Watson Conversation 构建复杂对话框的更多信息。
- 在此处的对话中查看有关 Confidence 的更多信息。
因此,您可以采用另外两种方法。
将偏离主题视为污染。
构建对话系统时,了解最终用户实际在说什么很重要。所以收集真实用户的问题。
你会发现没有多少人会说一句问候一句问一句。我个人没有对我做过的项目进行过统计机会,但至少在轶事中我没有看到它经常发生。
了解这一点后,您可以尝试从意图中删除离题/闲聊。因为它不能完全反映您要训练的领域。
为了解决这个问题,您可以关闭 topic/chit-chat 创建一个更详细的第二个工作区。如果您没有在主要工作区获得成功,您可以呼叫第二个工作区。您可以通过在主工作区中添加 chit-chat 来对抗示例来改进这一点。
您也可以通过简单地向用户说明您的初始响应来缓解这种情况。例如,如果您的初始回答是“你好”,让系统也问一个问题。或者让它在对话变得多余时推进对话。
检测可能的复合意图。
目前,这只能在应用层轻松实现。
将 alternate_intents
设置为 true
将 return 前 10 个意图及其置信度。
在继续之前,如果最高意图 < 0.2 则需要更多训练(因此无需继续)。
如果 > 0.2,你可以将这些映射到图表上,你可以直观地看到前两个意图。例如:
要让您的应用程序看到这一点,您可以使用 k-means 算法创建两个桶 (k=2)。那将是相关的和无关的。
一旦您看到超过一个相关的,您可以采取行动忽略 chit-chat/off-topic。
还有更多的细节,sample code here。