You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rasa中利用正则表达式特征检测电话号码、合同ID等实体?

嘿,我刚好在项目里用过Rasa的正则特征来处理电话号码、合同ID这类实体,给你捋清楚怎么操作~

用Rasa正则特征绑定实体的完整步骤

1. 先定义正则表达式(对应教程里的zipcode示例)

首先在nlu.yml里给每个要识别的实体创建对应的正则规则,覆盖这类实体的所有可能格式:

nlu:
  - regex: phone_number
    examples: |
      - \d{3}-\d{3}-\d{4}
      - \(\d{3}\)\s\d{3}-\d{4}
      - \d{10}
  - regex: contract_id
    examples: |
      - C-\d{6}
      - CONTRACT-\d{8}
      - CT-\d{4}-\d{4}

这里的regex:后面是你给正则起的标识名,examples:下面就是该实体对应的各种格式的正则模式,每个模式前加-即可。

2. 把正则和实体关联起来(教程里没写的关键部分)

接下来要让Rasa知道这些正则对应的是哪个实体,核心是在训练数据里标注实体示例,让模型把正则模式和实体类型关联起来。

在nlu.yml里添加带实体标注的训练样本:

nlu:
  # 上面的正则定义继续保留
  - intent: request_contract_details
    examples: |
      - Can you look up my contract *C-123456*[contract_id]?
      - My phone number is *555-789-0123*[phone_number]
      - I need help with *CONTRACT-87654321*[contract_id]
      - Call me at *(555) 123-4567*[phone_number]

这里的*实体内容*[实体名称]是Rasa的实体标注格式,实体名称要和你后续在domain.yml里定义的实体名保持一致。

3. 配置Pipeline让正则生效

确保你的config.yml里包含RegexFeaturizer组件,它会把你定义的正则转换成模型能理解的特征,辅助实体识别。一般默认Pipeline里已经有这个组件,但最好明确写出来:

language: zh  # 中文场景用zh,英文用en
pipeline:
  - name: WhitespaceTokenizer
  - name: RegexFeaturizer  # 关键组件:提取正则特征
  - name: LexicalSyntacticFeaturizer
  - name: CountVectorsFeaturizer
  - name: CountVectorsFeaturizer
    analyzer: char_wb
    min_ngram: 1
    max_ngram: 4
  - name: DIETClassifier
    epochs: 100

RegexFeaturizer会扫描输入文本,一旦匹配到你定义的正则(比如匹配到电话号码格式),就会给模型传递信号:“这里大概率是phone_number实体”,结合你标注的训练数据,模型就能精准识别这类格式固定的实体。

额外选项:直接用正则提取实体(无需模型学习)

如果你的实体格式绝对固定,不需要模型泛化,也可以用RegexEntityExtractor直接通过正则匹配提取实体,不用依赖DIET模型。只需要在Pipeline里添加这个组件:

pipeline:
  # ... 其他组件
  - name: RegexEntityExtractor
    case_sensitive: False  # 是否区分大小写,按需设置
    use_regexes: True  # 启用正则匹配

这种方式适合完全标准化的实体,比如合同ID只有C-xxxxxx这一种格式,不需要模型猜测,直接匹配就行。

关于教程里的zipcode例子

教程里的zipcode正则,其实是和上面的逻辑一致:先定义了zipcode的正则,然后在训练数据里标注了zipcode实体的例子,RegexFeaturizer把正则作为特征,帮助DIETClassifier识别zipcode实体,只是教程省略了训练数据和Pipeline配置的细节,导致你没看到完整关联过程。

总结一下,核心就是正则定义+实体标注+Pipeline配置这三步,就能让Rasa利用正则精准识别电话号码、合同ID这类实体啦~

内容的提问来源于stack exchange,提问作者Daneel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:16:29