2

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

例如,单词produção可以由用户编写,例如:produção, producao, produçao, producão. 是否可以在意图和实体上使用正则表达式以获得如下图所示的内容?有时我们用另一个词来表示意义produção final,如produção geral,、、produção passada等。

在此处输入图像描述

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

谢谢

4

3 回答 3

3

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

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

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

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

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

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

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

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

于 2016-09-21T22:10:15.673 回答
2

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

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

Patterns 字段允许您定义实体值的特定模式。必须在字段中输入模式作为正则表达式。

如本例所示,对于实体“ContactInfo”,电话、电子邮件值的模式可以定义如下:

例子:

  • 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,例如test@gmail.com

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

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

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

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

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

了解有关在 Watson Conversation 中定义实体的更多信息(重点在步骤 7 中)

于 2017-10-06T20:09:20.377 回答
1

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

Cartão de Crédito > K artão de Crédito > cart a o de cre b ito

所有这些工作正常!

于 2017-03-09T12:33:11.653 回答