正则表达式实体

有些实体需要匹配模式,而不是具体字词。 例如,国民身份证号码、ID、牌照等。 借助正则表达式实体,您可以提供正则表达式进行匹配。

如何查找此数据

构建代理时,最常见的方法是使用 Dialogflow ES 控制台(访问文档打开控制台)。以下说明着重介绍如何使用控制台。如需访问实体数据,请执行以下操作:

  1. 转到 Dialogflow ES 控制台
  2. 选择一个代理。
  3. 在左侧边栏菜单中选择实体 (Entities)。

如果您要使用 API 而非控制台来构建代理,请参阅 EntityTypes 参考。 API 字段名称与控制台字段名称类似。 以下说明重点介绍控制台与 API 之间的重要区别。

复合正则表达式

每个正则表达式实体都对应一个模式,但如果它们都代表某一模式的变体,您可提供多个正则表达式。 代理训练期间,单个实体的所有正则表达式与交替运算符 (|) 结合形成一个复合正则表达式

举例来说,如果您提供以下电话号码正则表达式:

  • ^[2-9]\d{2}-\d{3}-\d{4}$
  • ^(1?(-?\d{3})-?)?(\d{3})(-?\d{4})$

复合正则表达式变为:

  • ^[2-9]\d{2}-\d{3}-\d{4}$|^(1?(-?\d{3})-?)?(\d{3})(-?\d{4})$

正则表达式的顺序很重要。 复合正则表达式中的每个正则表达式按顺序进行处理。 发现有效匹配后,搜索就会停止。 举例来说,如果最终用户表述为“Seattle”:

  • Sea|Seattle 会匹配“Sea”
  • Seattle|Sea 会匹配“Seattle”

语音识别功能的特殊处理

如果您的代理使用语音识别(也称为音频输入或语音转文字 (STT)),您的正则表达式在匹配字母和数字时需要特殊处理。 最终用户所说话语经过语音识别程序处理后才能进行实体匹配。 当话语中包含一系列字母或数字时,识别程序会用空格填充各个字符。 此外,识别程序会用字词形式解读数字。 举例来说,最终用户说出的“My ID is 123”可能会被识别为以下任意一种形式:

  • “My ID is 123”
  • “My ID is 1 2 3”
  • “My ID is one two three”

如要容纳三位数字,您可以使用以下正则表达式:

\d{3}
\d \d \d
(zero|one|two|three|four|five|six|seven|eight|nine) (zero|one|two|three|four|five|six|seven|eight|nine) (zero|one|two|three|four|five|six|seven|eight|nine)

创建正则表达式实体

如需创建正则表达式实体,请执行以下操作:

  1. 打开现有实体或创建新实体。
  2. 勾选正则表达式实体
  3. 在条目表格中输入一个或多个正则表达式。
  4. 点击保存 (Save)。

正则表达式实体的屏幕截图

如果您使用 API 创建或更新实体,请在实体种类字段使用 KIND_REGEXP

限制

正则表达式实体存在以下限制:

  • 正则表达式实体无法启用模糊匹配。 这些特性会互相排斥。
  • 每个代理最多可拥有 50 个正则表达式实体。
  • 实体的复合正则表达式长度上限为 1024 个字符。