有些实体需要匹配模式,而不是具体字词。 例如,国民身份证号码、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)
创建正则表达式实体
控制台
- 打开 Dialogflow CX 控制台。
- 选择 GCP 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击实体类型。
- 点击创建。
- 选中正则表达式实体。
- 填写剩余字段。
- 点击保存。
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 | 不可用 | 不可用 |
限制
存在以下限制: