【问题标题】:Using Regex with Rasa (How to recognize entities not in training examples)将正则表达式与 Rasa 一起使用(如何识别不在训练示例中的实体)
【发布时间】:2020-06-16 20:59:33
【问题描述】:

我正在开发一个客户关系聊天机器人。用户可以输入问候语、用户名、电话号码等,

我在 nlu.md 文件中创建了一些训练示例(50 多个名称)来帮助聊天机器人。但问题是,如果未在训练数据 (nlu.md) 文件中指定用户名,则聊天机器人无法将其识别为实体。

我也写了一个正则表达式,但如果我给一个新名称,nlu 引擎仍然无法识别它。

我使用的是 rasa 1.0.7,我有管道:受监督的嵌入

例如

nlu.md 文件:

##regex.names
- [a-zA-Z\s]+$


##intent:inform
- John
- Roshan
- Sanvi
–> have few more

如果用户给出任何新名称意味着,我的实体是空的。还附上 rasa interactive 消息。

您的输入 -> 约翰
[John](姓名)的“通知”意图是否正确,所有实体的标签是否正确? (是/否)
您的输入 -> adrena
您的 NLU 模型将“adrena”分类为意图“通知”并且没有实体,这是正确的吗? (是/否)

当指定了用户名时,我应该怎么做才能让机器人理解?我在某处看到可以使用查找表。但是当我尝试使用查找表时,它仍然无法识别 user_name 不是训练示例的一部分。

我提到的以下链接。
https://forum.rasa.com/t/regex-entity-names/11739/10
How rasa_nlu using lookup_tables for entity extraction?
但我的问题没有运气。我也可以接受任何选择。

谢谢。

【问题讨论】:

    标签: rasa-nlu rasa nlu


    【解决方案1】:

    对于该特定实体,您可以使用 SpaCyEntityExtractor 和维度 PERSON 而不是 CRFEntityExtractor。对于个人姓名识别,这几乎总是会给你更好的结果,因为有很多名字的可能性。 AFAIK PERSON SpaCy 模型本身区分大小写。您仍然可以使用CRFEntityExtractor 提取其他自定义实体。在您的管道中,这看起来像:

    language: "en"
    
    pipeline:
    - name: "WhitespaceTokenizer"
    - name: "RegexFeaturizer"
    - name: "CRFEntityExtractor"
    - name: "EntitySynonymMapper"
    - name: "CountVectorsFeaturizer"
    - name: "EmbeddingIntentClassifier"
    - name: "SpacyNLP"
      model: "en_core_web_md"
    - name: "SpacyEntityExtractor"
      dimensions: ["PERSON"]
    
    

    【讨论】:

      【解决方案2】:

      晚了,但可能对其他人有用,使用 RASA 2:

      我会尝试:

      1. 将自定义实体 name 配置为 RASA 查找表,
      2. 在专用意图name 中提供示例,其中包含包含对象中实体的句子:
      version: "2.0"
      
      nlu:
      
        - lookup: name
          examples: |
            - John
            - Roshan
            - Sanvi
            - Anita
            - Anna
            # many others names (hundreds)
      
        - intent: name
          examples: |
            - [John](name)
            - call me [Roshan](name)
            - [Sanvi](name) is my name
            - my name is [Paola](name)
            - I'm [Annabelle](name)
            # etc etc.
      

      查看类似问题的解决方案: https://stackoverflow.com/a/68793356/1786393

      顺便说一句,@Melina 使用 Spacy PERSON 预定义实体的解决方案也是一个可能的好解决方案(对于属于单个选定的 Spacy 语言模型的名称),它可能与自定义实体/意图解决方案合作,只是命名自定义意图PERSON(待验证/我不确定)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-15
        • 2020-02-21
        • 1970-01-01
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        相关资源
        最近更新 更多