rasa train nlu详解:1.1-train_nlu()函数

news2025/1/15 10:59:17

  本文使用《使用ResponseSelector实现校园招聘FAQ机器人》中的例子,主要详解介绍train_nlu()函数中变量的具体值。

一.rasa/model_training.py/train_nlu()函数
  train_nlu()函数实现,如下所示:

def train_nlu(
    config: Text,
    nlu_data: Optional[Text],
    output: Text,
    fixed_model_name: Optional[Text] = None,
    persist_nlu_training_data: bool = False,
    additional_arguments: Optional[Dict] = None,
    domain: Optional[Union[Domain, Text]] = None,
    model_to_finetune: Optional[Text] = None,
    finetuning_epoch_fraction: float = 1.0,
) -> Optional[Text]:
    """Trains an NLU model.  # 训练一个NLU模型。

    Args:
        config: Path to the config file for NLU.  # NLU的配置文件路径。
        nlu_data: Path to the NLU training data.  # NLU训练数据的路径。
        output: Output path.  # 输出路径。
        fixed_model_name: Name of the model to be stored.  # 要存储的模型的名称。
        persist_nlu_training_data: `True` if the NLU training data should be persisted with the model.  # 如果NLU训练数据应该与模型一起持久化,则为`True`。
        additional_arguments: Additional training parameters which will be passed to the `train` method of each component.  # 将传递给每个组件的`train`方法的其他训练参数。
        domain: Path to the optional domain file/Domain object.  # 可选domain文件/domain对象的路径。
        model_to_finetune: Optional path to a model which should be finetuned or a directory in case the latest trained model should be used.  # 可选路径,指向应该进行微调的模型,或者在应该使用最新训练的模型的情况下指向一个目录。
        finetuning_epoch_fraction: The fraction currently specified training epochs in the model configuration which should be used for finetuning.  # 模型配置中当前指定的训练时期的fraction,应该用于微调。

    Returns:
        Path to the model archive.  # 模型归档的路径。
    """
    if not nlu_data:  # 没有NLU数据
        rasa.shared.utils.cli.print_error(  # 打印错误
            "No NLU data given. Please provide NLU data in order to train "  # 没有给出NLU数据。请提供NLU数据以训练
            "a Rasa NLU model using the '--nlu' argument."  # 使用--nlu参数训练Rasa NLU模型
        )
        return None

    # 只训练NLU,因此仍然必须选择训练文件
    file_importer = TrainingDataImporter.load_nlu_importer_from_config(
        config, domain, training_data_paths=[nlu_data], args=additional_arguments
    )

    training_data = file_importer.get_nlu_data()  # 获取NLU数据
    if training_data.contains_no_pure_nlu_data():  # 如果没有纯NLU数据
        rasa.shared.utils.cli.print_error(  # 打印错误
            f"Path '{nlu_data}' doesn't contain valid NLU data in it. "  # 路径{nlu_data}中不包含有效的NLU数据
            f"Please verify the data format. "  # 请验证数据格式
            f"The NLU model training will be skipped now."  # 现在将跳过NLU模型训练
        )
        return None

    return _train_graph(  # 训练图
        file_importer,  # 文件导入器
        training_type=TrainingType.NLU,  # 训练类型
        output_path=output,  # 输出路径
        model_to_finetune=model_to_finetune,  # 模型微调
        fixed_model_name=fixed_model_name,  # 固定模型名称
        finetuning_epoch_fraction=finetuning_epoch_fraction,  # 微调时期fraction
        persist_nlu_training_data=persist_nlu_training_data,  # 持久化NLU训练数据
        **(additional_arguments or {}),  # 额外的参数
    ).model  # 模型

1.传递来的形参数据
  形参config=“config.yml”,nlu_data=“data”,output=“models”,persist_nlu_training_data=False,其它的都是None,如下所示:

2.train_nlu()函数组成
  该函数主要由3个方法组成,如下所示:

  • file_importer = TrainingDataImporter.load_nlu_importer_from_config(*) #file_importer数据类型为NluDataImporter
  • training_data = file_importer.get_nlu_data() #根据nlu数据创建一个TrainingData类对象
  • return _train_graph(*) #训练config.yml文件中pipline对应的图

二.training_data数据类型
  training_data数据类型为rasa.shared.nlu.training_data.training_data.TrainingData,如下所示:

1.MIN_EXAMPLES_PER_ENTITY=2
每个实体的最小样本数量。

2.MIN_EXAMPLES_PER_INTENT=2
每个意图的最小样本数量。

3.action_names=set()
action名字集合。

4.entities=set()
entity集合。

5.entity_examples=[]
entity例子集合。

6.entity_groups=set()
entity组的集合。

7.entity_roles=set()
entity角色集合。

8.entity_synonyms=set()
entity近义词集合。

9.intent_examples=[25*Message]
  intent例子列表,列表中数据为rasa.shared.nlu.training_data.message.Message数据结构。对于普通意图,Message数据结构如下所示:

  对于检索意图,Message数据结构如下所示:

10.intents
具体数值为set(‘faq’, ‘goodbye’, ‘greet’)。

11.lookup_tables=[]
查找表。

12.nlu_examples=[25*Message]
内容和intent_examples相同,不再介绍。

13.number_of_examples_per_entity
每个entity例子的数量。

14.number_of_examples_per_intent
每个intent例子的数量,即{‘faq’: 14, ‘goodbye’: 5, ‘greet’: 6}。

15.number_of_examples_per_response
  每个response例子的数量,如下所示:

{'faq/notes': 1, 'faq/work_location': 1, 'faq/max_job_request': 1, 'faq/audit': 1, 'faq/write_exam_participate': 1, 'faq/write_exam_location': 1, 'faq/write_exam_again': 1, 'faq/write_exam_with-out-offer': 1, 'faq/interview_arrangement': 1, 'faq/interview_times': 1, 'faq/interview_from': 1, 'faq/interview_clothing': 1, 'faq/interview_paperwork': 1, 'faq/interview_result': 1}  

16.regex_features=[]
正则特征。

17.response_examples=[14*Message]
  response例子,如下所示:

18.responses
  response例子,如下所示:

19.retrieval_intents=set(‘faq’)
检索意图。

20.training_examples=[25*Message]
内容和intent_examples相同,不再介绍。

参考文献:
[1]https://github.com/RasaHQ/rasa
[2]rasa 3.2.10 NLU模块的训练:https://zhuanlan.zhihu.com/p/574935615

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1197645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

transformers安装避坑

1.4 下载rust编辑器 看到这里你肯定会疑惑了,我们不是要用python的吗? 这个我也不知道,你下了就对了,不然后面的transformers无法安装 因为是windows到官网选择推荐的下载方式https://www.rust-lang.org/tools/install。 执行文…

使用ResponseSelector实现校园招聘FAQ机器人

本文主要介绍使用ResponseSelector实现校园招聘FAQ机器人,回答面试流程和面试结果查询的FAQ问题。FAQ机器人功能分为业务无关的功能和业务相关的功能2类。 一.data/nlu.yml文件   与普通意图相比,ResponseSelector训练数据中的意图采用group/intent格…

【Armstrong公理】【求闭包和候选码】【判断范式】

1. Armstrong公理 2.求闭包和候选码 3.判断范式

WebSphere Liberty 8.5.5.9 (二)

WebSphere Liberty 8.5.5.9 (二) encode and decode Pre WebSphere Liberty 8.5.5.9 xor and AES 提取 D:\wlp-webProfile7-java8-8.5.5.9\wlp\lib 下必要加解密包 com.ibm.ws.crypto.certificateutil_1.0.12.jar com.ibm.ws.crypto.passwordutil_1…

2023 年合成数据的用例和应用

合成数据,也称为人工生成的数据,为数据科学应用中经常遇到的问题(例如数据隐私和小数据量)提供了解决方案。我们列出了不同行业和部门/业务单位中合成数据的功能和最常见的用例。 合成数据支持哪些与行业无关的用例/功能&#xf…

浅谈高并发以及三大利器:缓存、限流和降级

引言 高并发背景 互联网行业迅速发展,用户量剧增,系统面临巨大的并发请求压力。 软件系统有三个追求:高性能、高并发、高可用,俗称三高。三者既有区别也有联系,门门道道很多,全面讨论需要三天三夜&#…

Install Nginx in Linux

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。 1.yum 安装 nginx [rootVM-8-7-centos nginx]# yum install -y nginx Loaded plugins: fastestmirror, lang…

移动端模型部署框架

移动端模型部署框架 1. MNN整体特点轻量性通用性高性能易用性架构设计主体工具致谢移动端模型部署框架 1. MNN https://www.yuque.com/mnn/cn/about MNN是全平台轻量级高性能深度学习引擎,广泛支持了阿里巴巴在计算机视觉、语音识别技术、自然语言处理等领域的70多个AI应用…

vue3 文字轮播打字机效果

实现效果 1.安装依赖 npm install duskmoon/vue3-typed-js 2.html <div class"title_left_1"><Typed :options"options" class"typedClass"><div class"typing"></div></Typed> </div> 3.ts…

基于单片机的空调智能控制器的设计

**单片机设计介绍&#xff0c;基于单片机的空调智能控制器的设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的空调智能控制器需要具备输入输出端口、定时器、计数器等模块&#xff0c;以便对空调进行精确控制。下…

单词规律问题

给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern “abba”, s “dog cat cat d…

Java学习 10.Java-数组习题

一、创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100 代码实现 public static void main(String[] args) {int[] arrnew int[100];for (int i 0; i < arr.length; i) {arr[i]i1;}System.out.println(Arrays.toString(arr));} 运行结果 二、改变…

僵尸进程问题如何处理

现象&#xff1a; 工作中遇到docker内有很多的僵尸进程&#xff0c;导致CPU过高&#xff0c;直接卡死。 原因&#xff1a; 每个进程都有一个唯一的标识&#xff0c;称为 pid&#xff0c;pid 是一个非负的整数值&#xff0c;使用 ps 命令可以查看其中 PID 是表示进程号。系统中…

开发知识点-Ant-Design-Vue

Ant-Design-Vue a-input a-input Vue组件 a-spin 加载中的效果 data字段 mounted钩子函数 Ant Design Vue 组件库 list-type“picture-card” 上传的图片作为卡片展示 name show-upload-list action :beforeUpload“handleBeforeUpload” :headers“customHeaders” :disabl…

公开数据集:灵长类动物多通道感觉运动皮层电生理学的研究

Nonhuman Primate Reaching with Multichannel Sensorimotor Cortex Electrophysiology. 1 公开数据集网址&#xff1a;https://zenodo.org/records/3854034 目录 General DescriptionPossible usesVariable namesDecoder ResultsVideosSupplementsContact InformationCitation…

数据结构与算法【二分查找】Java实现

需求&#xff1a;在有序数组 A 内&#xff0c;查找值target 如果找到返回索引如果找不到返回 -1 前提 给定一个内含 n 个元素的有序数组 A&#xff0c;一个待查值 target 1 设置 i0&#xff0c;jn-1 2 如果 i \gt j&#xff0c;结束查找&#xff0c;没找到 3 设置 m (…

afsim 下载链接

afsim是一个通用的建模框架&#xff0c;能够构建典型的虚拟威胁环境和相关模型。能够以可视化形式分析软件仿真结果&#xff0c;显示平台、路由、传感器区域等内容&#xff0c;能够基于事件生成图表&#xff0c;进行结果统计&#xff0c;能够按类型进行统计分析。 苦于网上没有…

36 Gateway网关 快速入门

3.Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式…

基于SSM的飞机航班管理系统

基于SSM的飞机航班管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringMyBatisSpringMVC工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 航班列表 管理员界面 航班管理 订单管理 用户管理 摘要 飞机航班管理系统是…

Gold-YOLO最新YOLO系列模型

论文地址https://arxiv.org/pdf/2309.11331.pdf 代码地址https://github.com/huawei-noah/Efficient-Computing 目录 01论文介绍 01摘要 02模型训练过程 01安装环境 02修改train中参数 01修改--data-path参数 02修改--conf-file参数 03其他参数设置 03训练 04出现问…