当前位置: 首页 > news >正文

Rasa NLU中的组件

  Rasa NLU部分主要是解决NER(序列建模)和意图识别(分类建模)这2个任务。Rasa NLP是一个基于DAG的通用框架,图中的顶点即组件。组件特征包括有顺序关系、可相互替换、可互斥和可同时使用。有向无环图(DAG)在很多地方都有用到,比如Spark中等。虽然问答系统类型很多,比如闲聊问答、文档问答、知识库问答、知识图谱问答、任务型问答等,但在实际场景中任务型多轮问答最实用。通过构建任务引导型人机辅助系统,在沟通前/沟通中/沟通后全链路,实时通过语音的识别、意图的检测、话术&解决方案的推荐等,辅助销售在多渠道与商家沟通提效、提高任务完成率。

一.典型Rasa NLU组件
  一个典型的Rasa NLP管道包含各类组件,如下所示:

1.语言模型组件
  为了加载模型文件,为后续的组件提供框架支持,如初始化spaCy和BERT。
2.分词组件
  将文本分割成词,为后续的高级NLP任务提供基础数据。
3.特征提取组件
  提取词语序列的文本特征,可以同时使用多个特征提取组件。
4.NER组件
  根据前面提供的特征对文本进行命名实体的识别。
5.意图分类组件
  按照语义对文本进行意图的分类,也称意图识别组件。
6.结构化输出组件
  将预测结果整理成结构化数据并输出。这一部分功能不是以组件的形式提供的,而是流水线内建的功能,开发者不可见。

二.语言模型组件
  主要是加载预训练的词向量模型或预训练模型,如下所示:
1.SpacyNLP
  该组件所需的模型需要提前下载到本地,否则会出错。
2.MitieNLP
  需要有预先训练好的模型。
3.预训练Tokenizer

model_tokenizer_dict: Dict[Text, Type[PreTrainedTokenizer]] = {"bert": BertTokenizer,"gpt": OpenAIGPTTokenizer,"gpt2": GPT2Tokenizer,"xlnet": XLNetTokenizer,# "xlm": XLMTokenizer,"distilbert": DistilBertTokenizer,"roberta": RobertaTokenizer,"camembert": CamembertTokenizer,
}

三.分词组件
1.jieba_tokenizer.py
  这个分词器是Jieba的一个包装器(https://github.com/fxsjy/jieba)。
2.mitie_tokenizer.py
  使用MitieNLP库对消息进行Tokenizer。
3.spacy_tokenizer.py
  使用SpaCy库对消息进行Tokenizer。
4.whitespace_tokenizer.py
  为实体提取创建特征。

四.特征提取组件
1.稀疏特征
  SparseFeaturizer所有稀疏特征featurizers的基类。稀疏特征如下所示:
(1)count_vectors_featurizer.py
  基于sklearn的CountVectorizer创建一系列token计数特征。所有仅由数字组成的token(例如123和99但不是ab12d)将由单个特征表示。将analyzer设置为char_wb使用了Subword Semantic Hashing的思想(https://arxiv.org/abs/1810.07150)。
(2)lexical_syntactic_featurizer.py
  提取和编码词汇句法特征。给定一系列tokens,该特征提取器会生成一系列特征,其中第t个特征编码第t个token及其周围token的词汇和句法信息。
(3)regex_featurizer.py
  基于正则表达式的消息特征。

2.稠密特征
  DenseFeaturizer所有稠密特征featurizers的基类。稠密特征如下所示:
(1)convert_featurizer.py
  使用ConveRT模型的Featurizer。从TFHub加载ConveRT(https://github.com/PolyAI-LDN/polyai-models#convert)模型,并为每个消息对象的密集可特征属性计算句子和序列级特征表示。
(2)lm_featurizer.py
  基于transformer的语言模型的featurizer。这个组件从transformers库中加载预训练的语言模型,包括BERT、GPT、GPT-2、xlnet、distilbert和roberta。它还对每个消息的可特征化的密集属性进行tokenizes和featurizes。
(3)spacy_featurizer.py
  使用SpaCy对消息进行特征化。
(4)mitie_featurizer.py
  使用Mitie对消息进行特征化。

五.NER组件
1.crf_entity_extractor.py
  实现条件随机场(CRF)来进行命名实体识别。
2.duckling_entity_extractor.py
  使用duckling服务器搜索结构化实体,例如日期。
3.mitie_entity_extractor.py
  一个Mitie实体提取器(它是Dlib-ml的薄包装器)。
4.regex_entity_extractor.py
  通过在训练数据中定义的查找表和正则表达式提取实体。
5.spacy_entity_extractor.py
  使用SpaCy进行实体提取器。

六.意图分类组件
1.diet_classifier.py
  用于意图分类和实体提取的多任务模型。DIET是双意图和实体Transformer。该架构基于Transformer,该Transformer用于两个任务。通过在与输入token序列对应的transformer输出序列上方的条件随机场(CRF)标记层预测实体标签序列。用于__CLS__ token和意图标签的transformer输出被嵌入到单个语义向量空间中。使用点积损失来最大化与目标标签的相似性,并最小化与负样本的相似性。
2.fallback_classifier.py
  处理NLU置信度低的传入消息。
3.keyword_intent_classifier.py
  使用简单的关键字匹配的意图分类器。分类器将关键字列表和关联的意图作为输入。输入句子将检查关键字并返回意图。
4.logistic_regression_classifier.py
  使用逻辑回归的意图分类器。
5.mitie_intent_classifier.py
  意图分类器使用mitie库。
6.sklearn_intent_classifier.py
  使用sklearn框架的意图分类器。

  除此之外,Rasa提供DIETClassifier组件,基于Rasa自行研发的DIET(Dual Intent Entity Transformer)技术,实现用户实体和意图的联合建模;对于FQA等简单的QA问题,只需要使用NLU部分就可以轻松完成,因此Rasa提供了回复选择器(ResponseSelector)组件。

  个人认为LLM基本上解决了NLU和NLG的绝大部分问题,但是DM部分的表现还很邋遢。后续尝试将Rasa+LangChain+LLM+NebulaGraph技术进行融合来构建任务型多轮对话系统。对话管理(Dialog Management,DM)是指根据对话历史状态决定当前的动作或对用户的反应。DM模块是人机对话流程的控制中心,在多轮对话的任务型对话系统中有着重要的应用。DM模块的首要任务是负责管理整个对话的流程。通过对上下文的维护和解析,DM模块要决定用户提供的意图是否明确,以及实体槽的信息是否足够,以进行数据库查询或开始执行相应的任务。
  当DM模块认为用户提供的信息不全或模棱两可时,就要维护一个多轮对话的语境,不断引导式地询问用户以得到更多的信息,或者提供不同的可能选项让用户选择。DM模块要存储和维护当前对话的状态、用户的历史行为、系统的历史行为、知识库中的可能结果等。当DM模块认为已经清楚得到了全部需要的信息后,就会将用户的查询变成相应的数据库查询语句去知识库(如知识图谱)中查询相应资料,或者实现和完成相应的任务(如购物下单,或者类似Siri拨打朋友的电话,或者类似智能家居去拉起窗帘等)。
  因此,在新的研究中,将DM模块的状态建模成一个序列标注的监督学习问题,甚至用强化学习(reinforcement learning)加入一个用户模拟器来将DM模块训练成一个深度学习的模型。

参考文献:
[1]《Rasa实战》

相关文章:

Rasa NLU中的组件

Rasa NLU部分主要是解决NER(序列建模)和意图识别(分类建模)这2个任务。Rasa NLP是一个基于DAG的通用框架,图中的顶点即组件。组件特征包括有顺序关系、可相互替换、可互斥和可同时使用。有向无环图(DAG&…...

redis笔记 三 redis持久化

文章目录 Redis持久化RDB持久化执行时机RDB原理小结 AOF持久化AOF原理AOF配置AOF文件重写 RDB与AOF对比 Redis持久化 redis持久化是为了解决redis宕机时丢失数据的问题,Redis有两种持久化方案: RDB持久化AOF持久化 RDB持久化 RDB全称Redis Database …...

k8s-----数据存储

目录 一、数据存储的概念 二、基本存储 1、EmptyDir存储卷 2、hostPath存储卷 3、nfs共享存储卷 三、高级存储 1、PV(持久化卷) 2、PVC(持久化卷声明) 3、静态PV实验 4、动态PV实验 4.1 在stor01节点上安装nfs&#xf…...

macOS电池续航工具:Endurance中文

Endurance for Mac是一款强大而实用的电池管理和优化软件,专为MacBook设计。通过智能调整系统设置和管理后台应用,它能有效延长电池续航时间,提升工作和娱乐效率,成为你在各种场合下的得力助手。 Endurance for Mac软件的功能特色…...

栈(定义,基本操作,顺序存储,链式存储)

目录 1.栈的定义1.重要术语2.特点 2.栈的基本操作3.栈的顺序存储1.顺序栈的定义2.基本操作1.初始化2.进栈3.出栈4.读栈顶 3.共享栈 4.栈的链式存储 1.栈的定义 栈( Stack)是只允许在一端进行插入或删除操作的线性表。 一种受限的线性表,只能在栈顶进行插…...

在HTML单页面中,使用Bootstrap框架的多选框如何提交数据

1.引入Bootstrap CSS和JavaScript文件&#xff1a;确保在HTML页面的标签内引入Bootstrap的CSS和JavaScript文件。可以使用CDN链接或者下载本地文件。 <link rel"stylesheet" href"https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css&q…...

当爱好变成职业,会不会就失去了兴趣?

当爱好变成职业&#xff0c;会不会就失去了兴趣&#xff1f; 当兴趣变成职业 1、学习能力变强了&#xff0c;积极主动性增加了。 2、学习努力变现了&#xff0c;赚到的更钱多了。 3、赚钱能力变强了&#xff0c;反过来再次促使兴趣发展&#xff08;兴趣更大了....干劲更足了&…...

3-知识补充-MVC框架

3-知识补充-MVC框架 文章目录 3-知识补充-MVC框架MVC概述M、V、C各自负责功能及常用包MVC框架图非前后端分离框架图前后端分离框架图 MVC概述 MVC&#xff08;Model、View、Controller&#xff09;是软件工程中的一种**软件架构模式&#xff0c;它把软件系统分为模型、视图和控…...

leetcode:141. 环形链表

一、题目 函数原型&#xff1a; bool hasCycle(struct ListNode *head) 二、算法 判断不是环形链表&#xff0c;只需遍历链表找到空结点即可。 判断是环形链表&#xff0c;由于链表是环形的&#xff0c;遍历不会永远不会结束。所以要设置快慢指针&#xff0c;慢指针一次走一步&…...

了解企业邮箱的外观和功能特点

企业邮箱是什么样子的&#xff1f;企业邮箱不是单一产品&#xff0c;而是由一系列电子邮件服务组成的生态系统。这些服务包括但不限于邮件服务器、客户端、安全解决方案等。这些服务共同构成了企业邮箱的基础设施。 在外观上&#xff0c;企业邮箱和个人邮箱没有太大区别。用户通…...

配置阿里云镜像加速器 -docker

1.百度aliyun 2.找到镜像服务ACR 3.搞一个个人版&#xff0c;身份验证一下就行了很简单 4.找到镜像加速器Centos 5.执行下面4条命令&#xff1a;4条命令直接从上面操作文档中粘贴&#xff0c;不容易出错 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<…...

11 抽象向量空间

抽象向量空间 向量是什么函数什么是线性推论向量空间 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 向量是什么 可以是一个箭头&#xff0c;可以是一组实数&#xff0c;即一个坐标对。 箭头在高维&#xff08;4维&#xff0c;甚至更高&#xff09;空间&…...

干洗店洗鞋店管理系统app小程序;

干洗店洗鞋店管理系统是一款专业的洗衣店管理软件&#xff0c;集成了前台收费收银系统、会员卡管理系统和财务报表系统等强大功能。界面简洁优美&#xff0c;操作直观简单。这款系统为干洗店和洗衣店提供了成本分析、利润分析、洗衣流程管理等诸多实用功能&#xff0c;用全新的…...

NOIP2023模拟13联测34 总结

NOIP2023模拟13联测34 总结 文章目录 NOIP2023模拟13联测34 总结比赛过程题目A. origen题目大意思路 B.competition题目大意思路 C. tour题目大意 D.abstract题目大意 比赛过程 看了一下题&#xff0c;感觉就 T 2 T2 T2 有一点思路。 T 1 T1 T1 先打一个 30 30 30 分暴力&am…...

Python武器库开发-常用模块之subprocess模块(十九)

常用模块之subprocess模块(十九) subprocess模块介绍 subprocess 模块允许我们启动一个新进程&#xff0c;并连接到它们的输入/输出/错误管道&#xff0c;从而获取返回值。subprocess 它可以用来调用第三方工具&#xff08;例如&#xff1a;exe、另一个python文件、命令行工具…...

java验证 Map 的 key、value 是否可以为空

1、验证示例代码 Map<String, Object> maps new HashMap<>();maps.put("a", "1");maps.put(null, null);maps.put("c", null);System.out.println("maps " maps);Object o maps.get(null);System.out.println("o…...

编写MBR主引导记录

BIOS 检测&#xff0c;初始化硬件。挑一些重要的&#xff0c;能保证计算机能运行那些硬件的基本IO操作。 唤醒BIOS 唤醒BIOS需要知道其入口地址&#xff0c;在最后将跳转到0x7c00处 接电的一瞬间&#xff0c;cs:ip寄存器被初始化为0xF000:0xFFF0&#xff0c;所以等效地址是0…...

从零开始搭建React+TypeScript+webpack开发环境-自定义配置化的模拟服务器

技术栈 我们将使用Node.js和Express.js作为我们的后端框架&#xff0c;以及Node.js的文件系统(fs)模块来操作文件和文件夹。此外&#xff0c;我们将使用Node.js的require和delete require.cache来加载和更新模拟数据。 项目结构 首先&#xff0c;让我们定义一个简单的项目结…...

python 之字典的相关知识

文章目录 字典的基本特点&#xff1a;1. 定义2. 键唯一性3. 可变性4. 键的类型 基本操作&#xff1a;字典的创建1. 花括号 {}2. dict() 构造函数3. 键值对的 dict() 构造函数使用 zip() 函数创建字典&#xff1a;注意事项访问字典中的值修改和添加键值对删除键值对 字典方法&am…...

上下游系统对接的沟通与协作

在工作中&#xff0c;有时会有对接其他部门系统的需求&#xff0c;这种需求虽然不复杂&#xff0c;但是跨部门协作&#xff0c;往往会出现各种难以沟通、协调的情况。 踩的坑多了&#xff0c;就记录下来。 注意&#xff1a;在本文中&#xff0c;A系统调用B系统&#xff0c;A依…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...