Watson Conversation:条件匹配输入到上下文数组
Watson Conversation: condition matching input to context array
以汽车仪表板为例,我将初始@genre 节点更改为@genre:classical。我还在 contex
中添加了一个列表
"choices":["Beethoven","Mahler 9","Brahms 3rd"]
Watson 的响应是 "I have 3 selections"
。下一个节点的条件是$choices.contains(input.text)
。 "Found a match" 响应仅用于测试。它看起来像这样:
当我在 api 工具中测试它并键入 "Beethoven" 时,"Found a match" 和 "Great choice!..." 都会出现。其他两个选择也一样,但前提是我键入 exact 选择,例如 "Mahler 9"。输入 "Mahler" 或 "mahler" 没有匹配。我通读了 SpEL 文档,但在单行条件下看不到一种方法来解析列表以查找部分匹配项。
所以我的问题是,是否存在匹配部分用户输入的条件表达式,例如 "Mahler"?我将使用 Java SDK 对应用程序服务器进行编码,所以我想知道是否可以为此序列添加一个临时的 @entity 而不是使用上下文列表,然后在对话完成后将其删除?或者有没有办法在 MessageRequest 中构造更复杂的条件,Watson 会识别它吗?或者这不是解决这个问题的正确方法?非常感谢任何指针、示例或文档。
So my question is, is there an condition expression that would match partial user input
您不能添加临时实体或意图。添加它们会迫使 Watson 开始自我训练(即使您可以通过代码进行训练)。
但是,您可以创建非常复杂的正则表达式,将它们作为上下文变量传入。
例如你的高级节点可以有:
{
"output": {
"text": "Please ask me a question."
},
"context": {
"rx": "fish|[0-9]+"
}
}
然后在你的条件下你会写。
input.text.matches(context.rx)
如果此人提到数字或鱼这个词,就会触发。因此,您可以通过这种方式创建部分用户输入检查。
以汽车仪表板为例,我将初始@genre 节点更改为@genre:classical。我还在 contex
中添加了一个列表"choices":["Beethoven","Mahler 9","Brahms 3rd"]
Watson 的响应是 "I have 3 selections"
。下一个节点的条件是$choices.contains(input.text)
。 "Found a match" 响应仅用于测试。它看起来像这样:
当我在 api 工具中测试它并键入 "Beethoven" 时,"Found a match" 和 "Great choice!..." 都会出现。其他两个选择也一样,但前提是我键入 exact 选择,例如 "Mahler 9"。输入 "Mahler" 或 "mahler" 没有匹配。我通读了 SpEL 文档,但在单行条件下看不到一种方法来解析列表以查找部分匹配项。
所以我的问题是,是否存在匹配部分用户输入的条件表达式,例如 "Mahler"?我将使用 Java SDK 对应用程序服务器进行编码,所以我想知道是否可以为此序列添加一个临时的 @entity 而不是使用上下文列表,然后在对话完成后将其删除?或者有没有办法在 MessageRequest 中构造更复杂的条件,Watson 会识别它吗?或者这不是解决这个问题的正确方法?非常感谢任何指针、示例或文档。
So my question is, is there an condition expression that would match partial user input
您不能添加临时实体或意图。添加它们会迫使 Watson 开始自我训练(即使您可以通过代码进行训练)。
但是,您可以创建非常复杂的正则表达式,将它们作为上下文变量传入。
例如你的高级节点可以有:
{
"output": {
"text": "Please ask me a question."
},
"context": {
"rx": "fish|[0-9]+"
}
}
然后在你的条件下你会写。
input.text.matches(context.rx)
如果此人提到数字或鱼这个词,就会触发。因此,您可以通过这种方式创建部分用户输入检查。