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

BERT vs Rasa 如何选择 Hugging Face 与 Rasa 的区别 模型和智能体的区别

我在之前的一篇文章中提到我的短期目标的问题,即想通过Hugging Face的BERT或Rasa搭建一个简单的意图识别模型,针对发票业务场景来展示其效果 [如:开发票、查询发票]。

开篇,有必要记录几个英文缩写或术语 (如果喜欢,Transformer可以翻译成变形金刚)

BERT(Bidirectional Encoder Representations from Transformers)来自转换器的双向编码表示

DIET(Dual Intent and Entity Transformer)双向意图和实体转换器

NLU (Natural Language Understanding) 自然语言理解

NLP(Natural Language Processing) 自然语言处理

在短期目标的选型上我提到了 BERT vs Rasa 如何选择的问题。最终我选择了Rasa。

今天重点记录一下 BERT 和 Rasa 的本质及它们的一些对比。

BERT(Hugging Face中的BERT)

  • BERT的本质:BERT(Bidirectional Encoder Representations from Transformers)是由Google开发的一种预训练语言模型,基于Transformer架构。它通过大规模文本数据预训练,能够理解自然语言的语义和上下文。Hugging Face提供了BERT的实现和易用的API,但BERT本身并不是一个完整的“智能体”,而是一个语言理解模型,主要用于特征提取或特定NLP任务(如意图识别、文本分类、命名实体识别等)。

  • 是否是“智能体”?严格来说,BERT只是一个模型(或模型权重),它本身不具备智能体的特性(如自主决策、交互逻辑)。它需要被集成到更大的系统中(比如通过Hugging Face的Transformers库),并结合任务特定的代码(如分类器)来完成意图识别等任务。Hugging Face的生态为BERT提供了工具支持,但BERT的核心是静态的语言表示能力。

  • 在发票场景中的角色:如果你用BERT做意图识别,比如识别用户输入“查询发票状态”或“生成新发票”,BERT会将输入文本编码为语义向量,然后通过附加的分类层输出意图标签。它擅长理解复杂的语言输入,但需要额外的代码来处理业务逻辑。

Rasa

  • Rasa的本质:Rasa是一个开源的对话系统框架,专门为构建交互式对话机器人设计。它包含了自然语言理解(NLU)、对话管理(DM)和上下文追踪等模块。Rasa的NLU模块可以用来做意图识别和实体提取,而对话管理模块则负责决定如何根据用户输入和上下文生成回复。

  • 是否内置了“智能体”?可以这么说,Rasa的架构更接近于一个完整的对话智能体。它的NLU模块(类似于BERT的功能)可以处理意图识别和实体提取,而对话管理模块(Dialogue Management)则通过策略(policy)决定下一步动作,类似于一个智能体的决策逻辑。Rasa内置的DIET(Dual Intent and Entity Transformer)模型是一个轻量级的Transformer模型,专门为意图识别和实体提取优化,但它不像BERT那样是通用的预训练语言模型。

  • 在发票场景中的角色:Rasa可以直接构建一个端到端的对话系统。比如,用户说“我想查发票状态”,Rasa的NLU模块会识别出意图(“查询发票”)和实体(“发票状态”),然后对话管理模块会根据预定义的规则或训练数据触发相应的动作(如调用数据库查询API并返回结果)。

对比与澄清

  • BERT vs. Rasa的“智能体”:

    • BERT(通过Hugging Face)是一个强大的语言理解工具,但它本身只是一个模型,专注于将文本转化为语义表示。它需要额外的代码或框架来实现交互逻辑,因此不算是完整的智能体。

    • Rasa更像是一个完整的对话智能体框架,因为它不仅能理解用户输入(NLU),还能管理对话流程(DM),并通过动作(actions)实现业务逻辑。

  • Hugging Face和Rasa的关系:

    • Hugging Face提供了BERT等模型的预训练权重和工具,专注于NLP模型的开发和部署。你可以用Hugging Face的BERT替换Rasa的NLU模块,以提升意图识别的准确性。

    • Rasa内置的NLU模型(如DIET)是轻量级的,适合快速部署和对话场景,但语义理解能力通常不如BERT强大。

  • 在发票场景中的选择:

    • 如果你只需要一个高精度的意图识别模型(比如区分“查询发票”“生成发票”“取消发票”),用Hugging Face的BERT训练一个分类模型会更简单,效果可能更好。

    • 如果你需要一个完整的对话系统(比如能持续与用户交互、处理多轮对话、调用API),Rasa是更好的选择,因为它提供了对话管理的开箱即用功能。

 

简化的总结

  • BERT(Hugging Face)不是一个完整的智能体,而是一个强大的语言理解模型,适合需要深度语义分析的场景。

  • Rasa更像一个内置了对话智能体的框架,包含意图识别和对话管理,适合快速构建交互式应用。

DIET(Dual Intent and Entity Transformer)是Rasa框架中的一个组件,专门用于自然语言理解(NLU),主要处理意图识别和实体提取任务。要判断它是一个“小模型”还是一个“小智能体”,需要从其功能和架构来分析。

DIET的本质

  • DIET是什么:DIET是Rasa开发的一种轻量级Transformer架构模型,结合了意图分类和实体识别的功能。它通过一个共享的Transformer编码器同时处理输入文本的意图和实体,优化了性能和效率。DIET是Rasa NLU模块的核心组件,旨在从用户输入中提取语义信息(比如识别“查询发票状态”的意图为“查询发票”并提取实体“发票状态”)。

  • 模型 vs. 智能体:

    • 模型:DIET的核心是一个机器学习模型,基于Transformer架构,专注于将输入文本转化为意图标签和实体标注。它本身不具备自主决策或对话管理能力,只是将文本映射为结构化输出(意图和实体)。

    • 智能体:一个智能体通常需要感知环境、处理输入、做出决策并执行动作。DIET仅负责感知和理解(NLU),不包括对话管理或动作执行,因此它不具备完整的智能体特性。Rasa整体(包括NLU和对话管理模块)更接近于一个对话智能体,而DIET只是其中的一部分。

    • 总结

    • DIET是一个小模型,而不是一个小智能体。它是Rasa框架中用于意图识别和实体提取的轻量级Transformer模型,专注于自然语言理解任务。

    • 要构成一个完整的“小智能体”,需要结合Rasa的对话管理模块和其他组件,形成一个能处理多轮对话和业务逻辑的系统。

 

  • DIET 是个小模型:完全正确!DIET 是一个轻量级的 Transformer 模型,专注于意图识别和实体提取,是 Rasa NLU 模块的核心。

  • Rasa 是个小智能体:部分正确。Rasa 更准确地是一个对话智能体框架,具备智能体的完整功能(感知、决策、行动),但它不是单一的“模型”或“小”智能体,而是支持构建复杂对话系统的平台。

  • 调整后的理解:

    • DIET:小模型,负责语言理解(NLU)。

    • Rasa:对话智能体框架,集成 NLU 和对话管理,构建端到端的对话系统。

 

Rasa 是个小智能体?

基本正确,但需要稍作调整:Rasa 是一个对话智能体框架,而非单一的“小智能体”。

  • Rasa 的本质:Rasa 是一个开源的对话系统框架,包含:

    • NLU 模块:使用 DIET 或其他模型理解用户输入。

    • 对话管理(Dialogue Management)模块:根据意图、实体和上下文决定下一步动作(如调用 API、生成回复)。

    • 动作(Actions):执行具体的业务逻辑,比如查询数据库或发送通知。

  • 为什么可以看作智能体:

    • 一个智能体通常具有感知(理解输入)、决策(选择动作)和行动(执行任务)的能力。Rasa 通过 NLU(感知)、对话管理(决策)和动作(行动)实现了完整的对话智能体功能。

    • 在发票场景中,Rasa 可以理解用户输入(通过 DIET)、决定如何响应(通过对话策略)、执行动作(如查询发票状态),符合智能体的定义。

  • 为什么不是“小”智能体:

    • Rasa 本身是一个框架,功能强大且灵活,可以支持复杂的多轮对话和业务逻辑,称其为“小智能体”可能低估了其能力。

    • 更准确的描述是:Rasa 是一个对话智能体框架,可以用来构建智能体,规模和复杂性取决于你的配置和业务需求。

  • 在发票场景中的作用:Rasa 作为一个整体系统,可以处理用户关于发票的交互。例如:

    • 用户说:“查发票123的状态。”

    • DIET(NLU)识别意图和实体。

    • Rasa 的对话管理模块决定调用数据库查询动作,并生成回复:“发票123状态为已支付。”

 

相关文章:

BERT vs Rasa 如何选择 Hugging Face 与 Rasa 的区别 模型和智能体的区别

我在之前的一篇文章中提到我的短期目标的问题,即想通过Hugging Face的BERT或Rasa搭建一个简单的意图识别模型,针对发票业务场景来展示其效果 [如:开发票、查询发票]。 开篇,有必要记录几个英文缩写或术语 (如果喜欢&a…...

Excel 重复项标记,删除重复项时出现未响应的情况

目录 一、重复值标记: 二、删除重复值: 三、未响应问题 一、重复值标记: 方法1:开始 》条件格式 》突出显示单元格规则 》重复值 》设置颜色 》确定 PS:样式可自定义(边框、字体、背景填充...&#xff0…...

CppCon 2015 学习:Beyond Sanitizers

Sanitizers,一类基于编译时插桩(instrumentation)的动态测试工具,用来检测程序运行时的各种错误。 Sanitizers 简介 基于编译时插桩:编译器在编译代码时自动插入检测代码。动态运行时检测:程序运行时实时…...

Mysql选择合适的字段创建索引

1. 考虑字段的选择性 选择性:字段的选择性是指字段中不重复值的比例。选择性越高(即不重复值越多),索引的效率越高。 示例: 如果一个字段有100万行数据,但只有2个不重复值(如性别字段&#xff…...

Python:操作 Excel 格式化

🔧Python 操作 Excel 格式化完整指南(openpyxl 与 xlsxwriter 双方案) 在数据处理和报表自动化中,Python 是一把利器,尤其是配合 Excel 文件的读写与格式化处理。本篇将详细介绍两大主流库: openpyxl:适合读取与修改现有 Excel 文件xlsxwriter:适合创建新文件并进行复…...

ant-design-vue select 下拉框不好用解决

将optionFilterProp设置为label和a-select-option的:label"item.name"自定义属性 <a-selectshowSearchallowClearoptionFilterProp"label"placeholder"请选择选项"style"width: 120px; margin-right: 16px"><a-select-optio…...

[Java 基础]创建人类这个类小练习

请根据如下的描述完成一个小练习&#xff1a; 定义一个名为 Human 的 Java 类在该类中定义至少三个描述人类特征的实例变量&#xff08;例如&#xff1a;姓名、年龄、身高&#xff09;为 Human 类定义一个构造方法&#xff0c;该构造方法能够接收所有实例变量作为参数&#xf…...

Day43 Python打卡训练营

作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 选取Kaggle上的CIFAR-10数据集进行CNN训练&#xff0c;并使用Grad-CAM进行可视化&#xff0c;代码将拆分为多个文件以保持模块化。CIFAR-10是…...

雷卯针对易百纳 SS524多媒体处理演示评估板防雷防静电方案

一、 应用场景 1. 远程视频会议 2. 安防监控 3. 人/车检测 4. 人脸检测、比对 5. 屏幕拼接墙 二、 功能概述 1 四核 ARM Cortex-A7 1.2GHz 2 AI算力 1.0Tops 3 4K30fps 4*1080P30编解码 三、 扩展接口 l RAM&#xff1a;板载 2*DDR4&#xff0c;共 2GB&#xff1b; …...

【BUG解决】关于BigDecimal与0的比较问题

这是一个很细小的知识点&#xff0c;但是很容易被忽略掉&#xff0c;导致系统问题&#xff0c;因此记录下来 问题背景 明明逻辑上看a和b都不为0才会调用除法&#xff0c;但是系统会报错&#xff1a;java.lang.ArithmeticException异常&#xff1a; if (!a.equals(BigDecimal…...

Spring Bean 为何“难产”?攻克构造器注入的依赖与歧义

本文已收录在Github&#xff0c;关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; &#x1f680; 魔都架构师 | 全网30W技术追随者&#x1f527; 大厂分布式系统/数据中台实战专家&#x1f3c6; 主导交易系统百万级流量调优 & 车联网平台架构&a…...

LeetCodeHot100(图论篇)

目录 图论岛屿数量题目代码 腐烂的橘子题目代码 课程表题目代码 实现 Trie (前缀树)题目代码 后续内容持续更新~~~ 图论 岛屿数量 题目 给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数…...

【Lecture01】动手开发科研智能体(WIN11系统)

1. 配置win11系统中的环境&#xff0c;安装管理器Choco&#xff1a; # Download and install Chocolatey: powershell -c "irm https://community.chocolatey.org/install.ps1|iex" # Download and install Node.js: choco install nodejs-lts --version"22&qu…...

“packageManager“: “pnpm@9.6.0“ 配置如何正确启动项目?

今天在学习开源项目的时候&#xff0c;在安装依赖时遇到了一个报错 yarn add pnpm9.6.0 error This projects package.json defines "packageManager": "yarnpnpm9.6.0". However the current global version of Yarn is 1.22.22.Presence of the "…...

Git Github Gitee GitLab

Git的工作流程 工作区(Workspace)&#xff1a;电脑本地目录&#xff0c;即平时存放项目代码的地方 暂存区(Index/Stage)&#xff1a;临时存放改动信息的地方 本地仓库(Repository)&#xff1a;存放所有提交的版本数据 远程仓库(Remote)&#xff1a;托管代码的服务器&#x…...

华为设备OSPF配置与实战指南

一、基础配置架构 sysname HUAWEI-ABR ospf 100 router-id 1.1.1.1area 0.0.0.0network 10.1.1.0 0.0.0.255 # 将接口加入区域0 interface GigabitEthernet0/0/1ospf enable 100 area 0.0.0.0 # 华为支持点分十进制区域号bandwidth-reference 10000 # 设置10Gbps参考带宽…...

Paraformer分角色语音识别-中文-通用 FunASR

https://github.com/modelscope/FunASR/blob/main/README_zh.md https://github.com/modelscope/FunASR/blob/main/model_zoo/readme_zh.md PyTorch / 2.3.0 / 3.12(ubuntu22.04) / 12.1 Paraformer分角色语音识别-中文-通用 https://www.modelscope.cn/models/iic/speech_p…...

Spitfire:Codigger 生态中的高性能、安全、分布式浏览器

Spitfire 是 Codigger 生态系统中的一款现代化浏览器&#xff0c;专为追求高效、隐私和分布式技术的用户设计。它结合了 Codigger 的分布式架构优势&#xff0c;在速度、安全性和开发者支持方面提供了独特的解决方案&#xff0c;同时确保用户对数据的完全控制。 1. 高性能浏览…...

vimadbgit命令

vim 全部选中 全选&#xff08;高亮显示&#xff09;&#xff1a;按esc后&#xff0c;然后ggvG或者ggVG 全部复制&#xff1a;按esc后&#xff0c;然后ggyG 全部删除&#xff1a;按esc后&#xff0c;然后dG -----------------------------------------------------------------…...

运行shell脚本时报错/bin/bash^M: 解释器错误: 没有那个文件或目录

Windows的换行符为\r\n&#xff0c;而linux换行符为\n。先查看一下文件是什么格式的 :set ff --查询一下格式是什么 由于使用nodepad新建的脚本&#xff0c;首选项中格式设置成了windows&#xff0c;上传到linux中报错。 解决方法 1、nodepad中【设置》首选项】修改为unix&am…...

2506,wtl的通知事件

通知事件 最后一步,通知(连接)控件CMainDlg想要接受的浏览器控件触发的消息.连接在OnInitDialog(),断开在OnDestroy(). VC6中连接 VC6中,ATL的全局函数,AtlAdviseSinkMap()通知(连接)对话框中所有控件开始或终止发送事件到C对象. 该该函数的第一个参数是一个指向拥有事件映射…...

Shiro安全权限框架

①、添加依赖 ②、创建ini文件 获取权限相关信息可以通过数据库获取&#xff0c;也可以通过ini配置文件获取 ③、认证代码 public class ShiroRun{public static void main(){//初始化获取SecurityManagerIniSerucityManagerFactory factory new IniSecurityManagerFac…...

虚拟现实教育终端技术方案——基于EFISH-SCB-RK3588的全场景国产化替代

一、VR教育终端技术挑战与替代价值 ‌实时交互性能瓶颈‌ 赛扬N100/N150仅支持3DOF渲染&#xff08;延迟&#xff1e;25ms&#xff09;&#xff0c;动态手势识别帧率≤15FPS&#xff0c;难以满足6DOF教学场景需求RK3588 Mali-G610 GPU支持6DOF空间渲染&#xff08;延迟≤12ms&…...

深入理解CSS浮动:从基础原理到实际应用

深入理解CSS浮动&#xff1a;从基础原理到实际应用 引言 在网页设计中&#xff0c;CSS浮动&#xff08;float&#xff09;是一个历史悠久却又至关重要的概念。虽然现代布局技术如Flexbox和Grid逐渐流行&#xff0c;但浮动仍然在许多场景中发挥着重要作用。本文将带你深入理解…...

代码训练LeetCode(22)研究者H指数

代码训练(22)LeetCode之研究者H指数 Author: Once Day Date: 2025年6月4日 漫漫长路&#xff0c;才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 274. H 指数 - 力扣&#xff08;LeetCode&#xff09;力扣 (LeetCode) 全球极客挚爱的…...

网络安全A模块专项练习任务五解析

任务五:Linux 操作系统安全配置-1 任务环境说明: ✓ 服务器场景:LinuxServer:(开放链接) ✓ 用户名:root&#xff0c;密码:123456 ✓ 数据库用户名:root&#xff0c;密码:123456 请对服务器 LinuxServer 按要求进行相应的设置&#xff0c;提高服务器的安全性。 1.设置最小…...

git cli 基于远程master分支创建本地分支并切换

1、获取远程最新状态 git fetch origin2、从远程master创建本地分支并切换 git checkout -b new-branch-name origin/master或者&#xff0c;新版本写法 git switch -c new-branch-name origin/master3、如果要推送到远程&#xff0c;并建立跟踪&#xff0c;执行下面的命令 …...

Redis初入门

Nosql&#xff1a;Not-Only SQL&#xff08;泛指非关系型数据库&#xff09;&#xff0c;作为关系型数据库的补充 作用&#xff1a;应对基于海量用户和海量数据前提下的数据处理问题 redis&#xff1a;C语言开发的一个开源的高性能键值对数据库 特征&#xff1a; 1、数据之…...

(10)Fiddler抓包-Fiddler如何设置捕获Firefox浏览器的Https会话

1.简介 经过上一篇对Fiddler的配置后&#xff0c;绝大多数的Https的会话&#xff0c;我们可以成功捕获抓取到&#xff0c;但是有些版本的Firefox浏览器仍然是捕获不到其的Https会话&#xff0c;需要我们更进一步的配置才能捕获到会话进行抓包。 2.环境 1.环境是Windows 10版…...

使用pandas实现合并具有共同列的两个EXCEL表

表1&#xff1a; 表2&#xff1a; 表1和表2&#xff0c;有共同的列“名称”&#xff0c;而且&#xff0c;表1的内容&#xff08;行数&#xff09;<表2的行数。 目的&#xff0c;根据“名称”列的对应内容&#xff0c;将表2列中的“所处行业”填写到表1相应的位置。 实现代…...