如何使用RASA NLU处理复合类型的实体?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用RASA NLU处理复合类型的实体?相关的知识,希望对你有一定的参考价值。

让我说我有这句话:“我叫John James Doe”

{
    "rasa_nlu_data": {
        "common_examples": 
        [
          {
             "text": "My name is John James Doe",
             "intent": "Introduction",
             "entities": [
                           {
                              "start": 11,
                              "end": 25,
                              "value": "John James Doe",
                              "entity": "Name"
                           }
                         ]
                    }
        ],
        "regex_features" : [],
        "entity_synonyms": []
    }
}

这里子字符串John James DoeName类型的复合实体,具有3个简单实体(First NameMiddle NameLast Name),如下所示:

  • 约翰 - 名字(简单实体)
  • 詹姆斯 - 中间名(简单实体)
  • Doe - 姓氏(简单实体)

那么,RASA中有没有我可以制作一种训练格式来处理这些复合类型的实体。

感谢任何帮助,谢谢。

答案

我相信如果你继续训练一个实体类型的Name,为所有名称提取一段文本,然后尝试从返回的实体文本处理单个复合部分,你会更容易。原因在于,如果您尝试训练组件,您将很快在训练数据中提供大量组合,这将无效。

还要记住,当你走得更深时,这不是一个微不足道的问题。如果您单独使用位置来确定第一个/中间/最后一个,那么您可能在日本遇到问题(https://www.sljfaq.org/afaq/names-for-people.html),如果您尝试根据内容进行训练以识别名称(即选择Doe作为姓氏),则很容易问题:美国人不知道其他人被认为是姓氏的名字(杰克逊,亨特等),中间名也有很大差异(https://en.m.wikipedia.org/wiki/Middle_name

以上是关于如何使用RASA NLU处理复合类型的实体?的主要内容,如果未能解决你的问题,请参考以下文章

rasa 介绍文档

rasa 介绍文档

无法使用Rasa NLU / Sklearn训练新模型

markdown 构建Rasa NLU训练数据集

使用Botkit和Rasa NLU构建智能聊天机器人

Rasa学习记录 01