例如:如果用户在 Watson Conversation Service 中写入:
“我不想在我的新房子里有一个游泳池,但我想住在公寓里”
你怎么知道用户不想拥有游泳池,但他喜欢住在公寓里?
例如:如果用户在 Watson Conversation Service 中写入:
“我不想在我的新房子里有一个游泳池,但我想住在公寓里”
你怎么知道用户不想拥有游泳池,但他喜欢住在公寓里?
这是一个很好的问题,是的,这有点棘手......
目前,您最好的选择是提供尽可能多的应归类为特定意图的话语示例作为该意图的训练示例 - 您提供的示例越多,NLU(自然语言理解)就越健壮。
话虽如此,请注意使用以下示例:
“我想在我的新房子里有一个游泳池,但我不喜欢住在公寓里”
对于intent-pool
和
“我不想在我的新房子里有一个游泳池,但我想住在公寓里”
forintent-condo
将使系统正确分类这些句子,但它们之间的置信度差异可能很小(因为当你只看文本时它们非常相似)。
因此,这里的问题是,是否值得让系统对此类意图进行开箱即用的分类,或者在更简单的示例上训练系统并使用某种形式的消歧,如果您发现前 N 个意图的置信度差异较低。
现在,这在 Watson Assistant 中很容易实现。您可以通过创建上下文实体来做到这一点。
在您的意图中,您标记相关实体并将其标记为您定义的实体。上下文实体现在将学习句子的结构。这不仅会了解您已标记的内容,还会检测您未标记的实体。
当你运行它时,你会得到这个。
这是对话服务中多意图的典型场景。每次用户说话时,都会识别出所有前 10 个意图。您可以像这样更改对话 JSON 编辑器以查看所有意图。
{
"output": {
"text": {
"values": [
"<? intents ?>"
],
"selection_policy": "sequential"
}
}
}
例如,当用户发表一个将触发两个意图的语句时,您会看到intents[0].confidence和intents [1].confidence都非常高,这意味着 Conversation 识别了用户的两个意图文本。
但是到目前为止,它有一个很大的限制,没有保证确定的意图的顺序,即如果你说 “我不想在我的新房子里有一个游泳池,但我想住在一个Condo",不能保证积极的意图 "would_not_want" 将是意图 [0].intent 和意图 "would_want" 将是意图 [1].intent。因此,在您的应用程序中以更高的精度实现此场景会有点困难。
Sergio,在这种情况下,您可以测试对等节点有效的所有条件(继续)和您的否定(其他示例),您可以使用“true”。
尝试使用意图来确定流程和实体来定义条件。
查看更多:https ://www.ibm.com/watson/developercloud/doc/conversation/tutorial_basic.shtml
PS:您可以使用以下方法获取实体的值: