Watson 对话意图和实体是否支持正则表达式?

Does watson conversation intents and entities support regular expressions?

我正在使用我公司想要创建的可能对话来测试 Watson Conversation API。我们正在开发巴西葡萄牙语。鉴于葡萄牙语是一种丰富的语言,有时用户会犯错误,我们希望预测这些可能的错误,主要是使用特殊字符和重音符号。

举个例子,单词produção可以被用户写成:produçãoproducaoproduçaoproducão。是否可以在意图和实体上使用正则表达式来获得如下图所示的内容?有时我们用另一个词来表达意思,例如 produção finalprodução geralprodução passada

另一个快速问题,是否可以使用 @(producao)(如图像)之类的东西来创建关于意图与实体值合并的示例?

谢谢

您不能在意图或实体中使用正则表达式,但我认为您仍然应该能够应对变化。

目前在匹配意图时没有内置的拼写错误处理或重音规范化,但是如果句子中有足够的特征可以匹配,偶尔出现的拼写错误应该不会造成问题。对于非常短的示例,为常见错误添加额外的示例可能会有一些价值。

对于实体,您可以包含同义词,我以前用它来包含常见错误。

您不应尝试在您的意图中直接包含对实体的引用。例如,您应该只有 Qual a produção,而不是 Qual a @(producao),以及具有相同意图的其他示例,可能具有不同的实体,或者同一实体的不同同义词。例如,对于 #directions 意图,我可能有以下示例...

  • 我怎么开车到酒店?
  • 你能告诉我去酒店的路吗?
  • 如果我乘火车旅行,最近的车站是哪个
  • 我乘坐哪条巴士路线可以到达酒店?

以及@transport 实体的值,如汽车、公共汽车、火车、自行车等。 (抱歉,我不能给出巴西葡萄牙语的例子!)没有必要明确命名你期望在意图中找到的 entity/entities。

最后,您可以在对话节点的条件中使用正则表达式,例如...

input.text.matches( 'produ[cç][aã]o' )

您无需担心重音、复数或拼写错误的单词。 Watson、LUIS、API.AI 等以此为特征,对每个词起作用。例如:

Cartão de Crédito > Kartão de Crédito > cartao de creb伊藤

所有这些都很好!

在这种情况下,只是为了补充和更多知识,几天前IBM Watson Conversation发布了一个新的Beta版本供使用Patterns.

@Entities 中的模式,您可以使用正则表达式。

The Patterns field lets you define specific patterns for an entity value. A pattern must be entered as a regular expression in the field.

在此示例中,对于实体 "ContactInfo",phone 的模式,电子邮件值可以定义如下:

示例:

  • localPhone(\d{3})-(\d{4}),例如426-4968

  • fullUSphone(\d{3})-(\d{3})-(\d{4}),例如800-426-4968

  • 电子邮件\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b,例如测试@gmail.com

通常在使用模式实体时,需要将与模式匹配的文本存储在对话树中的上下文变量(或操作变量)中。

想象一下您要向用户询问他们的电子邮件地址的情况。对话节点条件将包含类似于 @contactInfo:email 的条件。为了将用户输入的电子邮件分配为上下文变量,可以使用以下语法来捕获对话节点响应部分中的模式匹配:

{
    "context" : {
        "email": "@contactInfo.literal"
    }
}

Obs.: Conversation 服务使用的模式匹配引擎有一些语法限制,这些限制是必要的,以避免在使用其他正则表达式引擎时可能出现的性能问题.值得注意的是,实体模式可能不包含:

  • 正重复(例如,x*+)
  • 反向引用(例如 \g1)
  • 条件分支(例如,(?(cond)true))

在 Watson Conversation 中查看有关 Defining Entities 的更多信息(重点在第 7 步)