我如何使用 Watson Conversation 确定否定答案

Posted

技术标签:

【中文标题】我如何使用 Watson Conversation 确定否定答案【英文标题】:How i can determine negative answers using Watson Conversation 【发布时间】:2017-03-14 22:37:34 【问题描述】:

例如:如果用户在 Watson Conversation Service 中写入:

“我不想在我的新房子里有一个游泳池,但我想住在公寓里”

你怎么知道用户不想拥有游泳池,但他喜欢住在公寓里?

【问题讨论】:

【参考方案1】:

这是一个很好的问题,是的,这有点棘手......

目前,您最好的办法是提供尽可能多的应归类为特定意图的话语示例,作为该意图的训练示例 - 您提供的示例越多,NLU(自然语言理解)就越健壮。

话虽如此,请注意使用以下示例:

“我想在我的新房子里有一个游泳池,但我不喜欢住在公寓里”

对于intent-pool

“我不想在我的新房子里有一个游泳池,但我想住在公寓里”

for intent-condo 将使系统正确分类这些句子,但它们之间的置信度差异可能很小(因为当你只看文本时它们非常相似)。

所以这里的问题是,是否值得让系统对此类意图进行开箱即用的分类,或者在更简单的示例上训练系统,并在您发现前 N 个意图低的情况下使用某种形式的消歧置信度差异。

【讨论】:

【参考方案2】:

Sergio,在这种情况下,您可以测试对等节点有效的所有条件(继续),而您的否定(其他示例)可以使用“true”。

尝试使用意图来确定流程和实体来定义条件。

查看更多:https://www.ibm.com/watson/developercloud/doc/conversation/tutorial_basic.shtml

PS:您可以使用以下方法获取实体的值:

【讨论】:

【参考方案3】:

这是对话服务中多意图的典型场景。每次用户说话时,都会识别出所有前 10 个意图。您可以像这样更改对话 JSON 编辑器以查看所有意图。


  "output": 
    "text": 
      "values": [
        "<? intents ?>"
      ],
      "selection_policy": "sequential"
    
  

例如,当用户发表一个声明时,将触发两个意图,您会看到 intents[0].confidenceintents[1].confidence两者都很高,这意味着对话从用户文本中识别出两种意图。

但是到目前为止,它有一个主要限制,对于已识别的意图没有保证的顺序,即,如果你说过 “我不想在我的新房子里有一个游泳池,但我想住在公寓里”,不能保证积极的意图“would_not_want”会是意图[0] .intent 和intent "would_want" 将是intents[1].intent。因此,在您的应用程序中以更高的准确度实现此场景会有点困难。

【讨论】:

【参考方案4】:

现在,这在 Watson Assistant 中很容易实现。您可以通过创建上下文实体来做到这一点。

在您的意图中,您标记相关实体并将其标记为您定义的实体。上下文实体现在将学习句子的结构。这不仅会了解您已标记的内容,还会检测您未标记的实体。

因此,下面的示例成分已被标记为需要和不需要。

当你运行它时,你会得到这个。

此处为完整示例:https://sodoherty.ai/2018/07/24/negation-annotation/

【讨论】:

以上是关于我如何使用 Watson Conversation 确定否定答案的主要内容,如果未能解决你的问题,请参考以下文章

当用户输入输入时,如何使 Watson Conversation Api 调用 Web 应用程序 URL?

在IBM Watson Conversation中标识没有任何实体的输入文本

IBM Watson Conversation API:“预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权”

如何从 javascript 调用 IBM Watson 服务

如何向 watson 对话响应添加操作?

配对 Watson Assistant 和 Watson Language Translator