正则表达式实体

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

复合正则表达式

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

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

  • ^[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. 打开 Dialogflow CX 控制台
  2. 选择 GCP 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击实体类型
  6. 点击创建
  7. 选中正则表达式实体
  8. 填写剩余字段。
  9. 点击保存

API

EntityType.kind 字段设置为 KIND_REGEXP

为 EntityType 参考选择协议和端口

协议 V3 V3beta1
REST EntityType 资源 EntityType 资源
RPC EntityType 接口 EntityType 接口
C++ EntityTypesClient 不可用
C# EntityTypesClient 不可用
Go EntityTypesClient 不可用
Java EntityTypesClient EntityTypesClient
Node.js EntityTypesClient EntityTypesClient
PHP 不可用 不可用
Python EntityTypesClient EntityTypesClient
Ruby 不可用 不可用

限制

存在以下限制:

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