我如何使用 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].confidence 和 intents[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 不允许请求标头字段授权”