Watson助手 - 插槽查询

时间:2018-04-18 20:52:04

标签: ibm-watson watson watson-conversation

我有两个与使用插槽功能相关的查询。

  1. 我创建了一个提示用户输入数字的插槽。所以我使用了@sys-number并创建了一个上下文变量$ number来捕获它。但是,我还要检查用户输入的数字是否正好是5位数。有没有办法执行此验证?

  2. 在另一种情况下,我必须提示用户提供2个号码 - 客户ID和订单ID。两者都是数字。所以我再次使用@sys-number创建了2个插槽,并创建了2个上下文变量来捕获customerId和orderId。现在我的问题是如何在用户输入中找出这些数字的顺序。所以,如果用户写道“请给我ID为100的订单状态”,我怎么能确保100被解释为orderId而不是customerId。目前因为我的第一个插槽是customerId,watson假设提供的数字是customerId而不是orderId,它再次提示用户提供customerId。有没有办法以更好的方式设计它。我希望如果我能得到第1点的答案,可能是我可以检查数字位数并做点什么。

  3. 期待这里的一些提示。谢谢!

2 个答案:

答案 0 :(得分:1)

你可以通过chughts using entities as a pattern(正则表达式)来解决第一个问题。

对于第二个问题,有点复杂,但如果客户端没有在同一输入上通知customerid + orderid,那么您可以使用“order”和“customer”等值创建一个新实体并使用条件进入插槽或找到插槽,例如“if @sys-number&& @type:order&&!@type:customer”。但最好的解决方案会根据问题的方式以及客户的响应方式而有所不同。

如果您需要处理带有信息的输入并且无法分离,问题或重新确认某些信息,我唯一能想到的就是使用实体的位置来定义@sys的信息 - 数字参考。

如果customerid和orderid有不同的模式(ex customerid有6个数字,orderid有10个数字),那么更容易,你可以使用模式。

就个人而言,当我需要使用系统实体时,我更喜欢使用单个节点或一个永远不匹配的“检查”,所以我可以测试离开力进入插槽并测试未找到的所有内容,但这取决于需求。

答案 1 :(得分:0)

创建一个正则表达式定义的实体,并使用它代替@ sys-number。