rasa train nlu详解:1.1-train_nlu()函数
本文使用《使用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 Nonereturn _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, # 微调时期fractionpersist_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
相关文章:
rasa train nlu详解:1.1-train_nlu()函数
本文使用《使用ResponseSelector实现校园招聘FAQ机器人》中的例子,主要详解介绍train_nlu()函数中变量的具体值。 一.rasa/model_training.py/train_nlu()函数 train_nlu()函数实现,如下所示: def train_nlu(config: Text,nlu_data: Op…...
使用ResponseSelector实现校园招聘FAQ机器人
本文主要介绍使用ResponseSelector实现校园招聘FAQ机器人,回答面试流程和面试结果查询的FAQ问题。FAQ机器人功能分为业务无关的功能和业务相关的功能2类。 一.data/nlu.yml文件 与普通意图相比,ResponseSelector训练数据中的意图采用group/intent格…...
ENVI IDL:如何基于气象站点数据进行反距离权重插值?
01 前言 仅仅练习,大可使用ArcGIS或者已经封装好的python模块进行插值,此处仅仅从底层理解如何从公式和代码理解反距离权重插值的过程,从而更深刻的理解IDL的使用和插值的理解。 02 函数说明 2.1 Read_CSV()函数 官方语法如下:…...
实战Leetcode(四)
Practice makes perfect! 实战一: 这个题由于我们不知道两个链表的长度我们也不知道它是否有相交的节点,所以我们的方法是先求出两个链表的长度,长度长的先走相差的步数,使得两个链表处于同一起点,两个链…...
C语言——个位数为 6 且能被 3 整除但不能被 5 整除的三位自然数共有多少个,分别是哪些?
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,j0;for(i100;i<1000;i) {if(i%106&&i%30&&i%5!0){printf("%6d",i); j;}}printf("\n一共%d个\n",j);return 0; } %6d起到美化输出格式的作用ÿ…...
基于Docker容器DevOps应用方案
文章目录 基于docker容器DevOps应用方案环境基础配置1.所有主机永久关闭防火墙和selinux2.配置yum源3.docker的安装教程 配置主机名与IP地址解析部署gitlab.server主机1.安装gitlab2.配置gitlab3.破解管理员密码4.验证web页面 部署jenkins.server主机1.部署tomcat2.安装jenkins…...
Apinto 网关进阶教程,使用 API Mock 生成模拟数据
什么是 API Mock ? API Mock 是一种技术,它允许程序员在不依赖后端数据的情况下,模拟 web服务器端 API 的响应。通常使用 API Mock 来测试前端应用程序,而无需等待后端程序构建完成。API Mock 可以模拟任何 HTTP 请求方法&#x…...
笔记:AI量化策略开发流程-基于BigQuant平台(一)
从本文开始,按照AI策略开发的完整流程(共七步),上手在BigQuant平台上快速构建AI策略。本文首先介绍如何使用证券代码模块指定股票范围和数据起止日期。重要的事情说三遍:模块的输入端口有提示需要连线的上游数据类型&a…...
Spring Cloud 微服务入门篇
文章目录 什么是微服务架构 Microservice微服务的发展历史微服务的定义微小的服务微服务 微服务的发展历史1. 微服务架构的发展历史2. 微服务架构的先驱 微服务架构 Microservice 的优缺点1. 微服务 e Microservice 优点2. 微服务 Microservice 缺点微服务不是银弹:…...
使用Go语言搭建区块链基础
引言 随着区块链技术的发展,越来越多的人开始关注并使用这一技术,其中,比特币和以太坊等区块链项目正在成为人们关注的焦点。而Go语言作为一种高效、简洁的编程语言,越来越多的区块链项目也选择使用Go语言来搭建其底层基础。本文…...
手搓MyBatis框架(原理讲解)
你在学完MyBatis框架后会不会觉得很神奇,为什么我改一个配置文件就可以让程序识别和执行不同的sql语句操作数据库? SqlSessionFactoryBuilder,SqlSessionFactory和SqlSession对象到底是怎样执行的? 如果你有这些问题看就完事了 …...
FRC-EP系列--你的汽车数据一站式管家
FRC-EP系列产品主要面向汽车动力总成测试的客户,主要应用方向为残余总线仿真及网关。本文将详细介绍FRC-EP的产品特性和应用场景。 应用场景: 汽车电子生成研发过程中,需要对汽车各个控制器进行仿真测试,典型的测试对象有&#…...
【ARM Trace32(劳特巴赫) 使用介绍 3 - trace32 访问运行时的内存】
请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 1.1 trace32 访问运行时的内存1.1.1 侵入式 运行时内存访问1.1.2 非侵入式运行时访问1.1.3 缓存一致性的非侵入式运行时访问 1.2 Trace32 侵入式和非侵入式 运行时访问1.2.1 侵入式访问1.2.2 非侵入式运行时访问 1…...
VirtualBox网络地址转换(NAT),宿主机无法访问虚拟机的问题
问题:NAT模式下,默认只能从内访问外面,而不能从外部访问里面,所以只能单向ping通,虚拟机的ip只是内部ip。 PS:桥接则是与主机公用网卡,有独立的外部ip。 解决:NAT模式可以通过配置 …...
【操作系统】考研真题攻克与重点知识点剖析 - 第 2 篇:进程与线程
前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…...
总结:利用原生JDK封装工具类,解析properties配置文件以及MF清单文件
总结:利用原生JDK封装工具类,解析properties配置文件以及MF清单文件 一背景描述:1.在不同的项目中,项目使用的开发框架都不一样,甚至是JDK原生开发模式。此时解析配置文件以及jar包中的清单文件,就只能利用…...
openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略
文章目录 openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略119.1 背景信息119.2 数据库程序目录及文件权限119.3 建议 openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略 119.1 背景信息 数据库在安装过程中…...
不可否认程序员的护城河已经越来越浅了
文章目录 那些在冲击程序员护城河低代码/无代码开发平台自动化测试和部署工具AI辅助开发工具在线学习和教育平台 面临冲击,程序员应该怎么做深入专业知识:不断学习全栈技能开发解决问题的能力建立人际网络管理和领导技能 推荐阅读 技术和应用的不断发展对…...
黑客技术-小白自学
前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…...
ZYNQ_project:key_beep
通过按键控制蜂鸣器工作。 模块框图: 时序图: 代码: /*1位按键消抖 */ module key_filter (input wire sys_clk ,input wire sys_rst_n ,input wire key_in ,output …...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
