我在之前的一篇文章中提到我的短期目标的问题,即想通过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状态为已支付。”
-