RASA NLU:无法提取实体

时间:2018-11-10 15:06:11

标签: rasa-nlu

我以某种方式训练了我的rasa nlu模型,该模型将方括号之间的内容识别为 pst 实体。在培训部分,我用超过50个示例介绍了这两种情况。


有两种情况(只有空间差异):

  1. 我通过http://www.google.comm, 1283923, [9283911,9309212,9283238]时,仅考虑将[括号作为pst实体。

  2. 当我通过http://www.google.comm, 1283923, [9283911, 9309212, 9283238]时,它工作正常,并按预期将[9283911, 9309212, 9283238]识别为pst实体。


对于场景1,我已经尝试了所有可能的管道,但是它只将第一个方括号[识别为pst实体

在响应中,我得到以下输出:

{
  'intent': {
    'name': None,
    'confidence': 0.0
  },
  'entities': [
    {
      'start': 0,
      'end': 22,
      'value': 'http://www.google.comm',
      'entity': 'url',
      'confidence': 0.8052099168500071,
      'extractor': 'ner_crf'
    },
    {
      'start': 24,
      'end': 31,
      'value': '1283923',
      'entity': 'defect_id',
      'confidence': 0.8334249141074151,
      'extractor': 'ner_crf'
    },
    {
      'start': 33,
      'end': 34,
      'value': '[',
      'entity': 'pst',
      'confidence': 0.5615805162522188,
      'extractor': 'ner_crf'
    }
  ],
  'intent_ranking': [],
  'text': 'http://www.google.comm, 1283923, [9283911,9309212,9283238]'
}

那么,有人可以告诉我配置中缺少的内容吗?问题是仅由于间距而发生的,在为这两种情况提供训练数据时,我的模型应该具有间距的知识。

1 个答案:

答案 0 :(得分:0)

出于您的目的使用Regex是个好主意。 Rasa NLU支持Regex提取实体。正常的NLU训练数据如下所示

{
    "rasa_nlu_data": {
    "common_examples": [
    {
        "text": "Hi",
        "intent": "greet",
        "entities": []
     }]
    } 
} 

您可以在NLU json文件中提供正则表达式数据进行培训,如下所示。

{
    "rasa_nlu_data": {
        "regex_features": [
            {
                "name": "pst",
                "pattern": "\[..*\]"
            },
        ]
    }
}

参考:Regular Expression in Rasal NLU