自然语言处理(NLP)—— rasa的测试

1. 测试 Rasa NLU 模型

        运行 `rasa test nlu` 命令会测试你的 Rasa NLU 模型。这个命令主要做以下几件事情:

1.1 意图识别测试

        检查模型在识别用户意图方面的性能。这包括每个意图的准确率、召回率和 F1 得分。

1.2 实体提取测试

        检查模型在识别和提取预定义实体方面的性能。同样会计算准确率、召回率和 F1 得分。

1.3 交叉验证测试

        如果没有提供专门的测试数据集,命令将执行交叉验证。交叉验证是一种统计方法,用于评估并比较学习算法的性能,通过将数据集分成训练和测试数据的多个组合来进行。

1.4 结果报告

        在执行测试后,你会得到一个报告,通常是在一个新创建的 `results` 文件夹中。这个报告详细说明了模型的性能,并包括意图和实体的混淆矩阵、分类报告和错误预测的例子。

1.5 模型对比

        如果你有多个模型或多个配置,并且你想比较它们的性能,这个命令可以帮助你通过在相同数据集上运行它们来评估它们的性能差异。

        确保 `data/nlu.yml` 包含了你的 NLU 训练数据,并且 `config.yml` 包含了 NLU 模型的配置信息。这个测试对于理解你的 NLU 模型在实际使用中可能的性能表现至关重要,同时也是迭代改进模型的一个重要部分。

2. 如何使用 spaCy

        使用 spaCy 作为 Rasa 的一部分涉及以下几个步骤:

2.1 安装 spaCy

        首先,你需要安装 spaCy 以及相应语言模型。可以通过以下命令安装:

pip install spacy
python -m spacy download en_core_web_md

        确保选择一个适合你的语言和需求的模型。`en_core_web_md` 是针对英语的中等大小模型,提供了词性标注、句法分析以及实体识别的能力。

2.2 配置 Rasa 使用 spaCy

        在你的 Rasa 配置文件(通常是 `config.yml`)中,需要加入以下几行来使用 spaCy:

pipeline:
- name: SpacyNLPmodel: "en_core_web_md"
- name: SpacyTokenizer
- name: SpacyFeaturizer
- name: SpacyEntityExtractor
- name: EntitySynonymMapper
- name: SklearnIntentClassifier

2.3 训练 Rasa 模型

        配置好了 spaCy 后,你就可以像往常一样训练 Rasa 模型了。使用以下命令来进行训练:

rasa train

2.4 使用 spaCy 进行实体提取

        在你的 NLU 训练数据中,你可以通过指定实体类型来标注实体,spaCy 实体提取器将能识别这些实体。比如:

nlu:
- intent: search_flightexamples: |- I want to fly from [Berlin](location) to [San Francisco](location)- Show me flights to [Paris](location)

2.5 注意事项

        在你的 Rasa 项目中使用 spaCy 之前,确保你的 Rasa 版本和 spaCy 版本兼容。使用 spaCy 会影响你的 NLU 模型的性能,因为 spaCy 的模型通常比 Rasa 默认使用的 TensorFlow Embedding 更为复杂。如果使用的是其他语言,需要下载对应语言的 spaCy 模型并在配置文件中相应地更新。

3. 知识驱动技术

        在 Rasa 中,你可以集成多种技术来增强聊天机器人的能力。以下是你提到的每种技术类型的一些 Rasa 组件或相关的实现方式:

3.1 本体论 (Ontology)

        在 Rasa 中并没有内置直接支持本体论的组件。但是,你可以利用自定义 actions 来集成外部的本体论管理系统,比如使用 [OWL](https://www.w3.org/OWL/) (Web Ontology Language) 或其他本体论框架。

3.2 逻辑推理

        同上,逻辑推理通常需要通过外部服务或自定义代码在 actions 中实现。

3.3 词网 (WordNet)

        不是 Rasa 的直接组件。但是,你可以使用如 [NLTK](https://www.nltk.org/) 这样的自然语言处理库来访问词网,并在自定义 actions 中使用它。

3.4 同义词

        在 NLU 管道中,可以通过查找表(lookup tables)或同义词(synonyms)功能来实现同义词识别。

4. 学习驱动技术

4.1 频率方法

        Rasa 的意图分类器(如 `RegexIntentClassifier`)可以基于正则表达式匹配使用频率方法。

4.2 统计机器学习

        `DIETClassifier` 是一个基于 Transformer 的模型,能同时进行意图识别和实体识别。`CRFEntityExtractor` 是基于条件随机场(CRF)的实体提取器。

4.3 深度学习

        `ResponseSelector` 用于检索式响应选择。`TEDPolicy` 使用 Transformer 模型来预测对话中的下一步行为。

5. 语法驱动技术

5.1 句法分析

        Rasa 没有内置句法分析工具,但你可以集成如 [spaCy](https://spacy.io/) 的 NLP 库来执行句法分析。

5.2 正则表达式

        `RegexFeaturizer` 可以基于用户提供的正则表达式生成消息特征。`RegexEntityExtractor` 可以使用正则表达式来识别和提取消息中的实体。

5.3 词形归并

        `SpacyNLP` 与 spaCy 集成,提供词形归并功能。

5.4 形态分析

        同上,`SpacyNLP` 组件可以进行形态分析。

6. 经典的 Rasa NLU Pipeline 配置示例

        以下是一些 Rasa NLU pipeline 的经典配置示例:

6.1 基于 spaCy 的 Pipeline

        适用于需要利用 spaCy 的强大语言处理能力,特别是在句法分析方面。

language: "en"pipeline:
- name: SpacyNLP
- name: SpacyTokenizer
- name: SpacyFeaturizer
- name: SpacyEntityExtractor
- name: DIETClassifierepochs: 100
- name: EntitySynonymMapper
- name: ResponseSelectorepochs: 100

6.2 基于 TensorFlow 的 Pipeline

        适用于需要深度学习和自定义实体提取的场景。

language: "en"pipeline:
- name: WhitespaceTokenizer
- name: RegexFeaturizer
- name: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
- name: CountVectorsFeaturizeranalyzer: "char_wb"min_ngram: 1max_ngram: 4
- name: DIETClassifierepochs: 100constrain_similarities: true
- name: EntitySynonymMapper
- name: ResponseSelectorepochs: 100
- name: FallbackClassifierthreshold: 0.3ambiguity_threshold: 0.1

6.3 基于 BERT 的 Pipeline (使用 Rasa 2.0 及以上)

        适用于想要使用 BERT 或类似预训练转换器模型进行意图识别和实体提取的场景。

language: "en"pipeline:
- name: HFTransformersNLPmodel_name: "bert"model_weights: "rasa/LaBSE"
- name: LanguageModelTokenizer
- name: LanguageModelFeaturizer
- name: DIETClassifierepochs: 200constrain_similarities: true
- name: EntitySynonymMapper
- name: ResponseSelectorepochs: 200

6.4 基于规则的 Pipeline

        适用于那些想要以规则为基础进行实体提取和意图分类的简单场景。

language: "en"pipeline:
- name: WhitespaceTokenizer
- name: RegexFeaturizer
- name: RegexEntityExtractor
- name: CRFEntityExtractor
- name: EntitySynonymMapper
- name: SklearnIntentClassifier

7. 默认 Pipeline

pipeline:# No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
# If you'd like to customize it, uncomment and adjust the pipeline.
# See https://rasa.com/docs/rasa/tuning-your-model for more information.# 1. 符号化器
- name: WhitespaceTokenizer# 2. 特征提取器
- name: RegexFeaturizer
- name: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
- name: CountVectorsFeaturizeranalyzer: char_wbmin_ngram: 1max_ngram: 4# 3. 意图分类器
- name: DIETClassifierepochs: 100constrain_similarities: true# 4. 实体提取器
- name: EntitySynonymMapper# 5. 响应选择器
- name: ResponseSelectorepochs: 100constrain_similarities: true# 6. 回退分类器
- name: FallbackClassifierthreshold: 0.3ambiguity_threshold: 0.1

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

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

相关文章

为什么先遍历背包再遍历物品,求的是排列数;先遍历物品再遍历背包,求的是组合数?

完全背包问题简介 在完全背包问题中,每个物品可以被选择任意次。我们通常使用动态规划来求解这个问题,定义 dp[j] 为填满容量为 j 的背包的方法数。 先遍历背包再遍历物品(排列数) 先遍历背包再遍历物品的逻辑是:对…

Progressive Feature Fusion Framework Based on Graph Convolutional Network

以Resnet50作为主干网络,然后使用GCN逐层聚合多级特征,逐级聚合这种模型架构早已不新鲜,这篇文章使用GCN的方式对特征进行聚合,没有代码。这篇文章没有过多的介绍如何构造的节点特征和邻接矩阵,我觉得对于图卷积来说&a…

自动化Reddit图片收集:Python爬虫技巧

引言 Reddit,作为一个全球性的社交平台,拥有海量的用户生成内容,其中包括大量的图片资源。对于数据科学家、市场研究人员或任何需要大量图片资源的人来说,自动化地从Reddit收集图片是一个极具价值的技能。本文将详细介绍如何使用…

SCSS中的结构化伪类选择器详解与示例

SCSS,作为Sass的一种语法版本,是一种强大的CSS预处理器,它引入了许多便利的功能来增强CSS的编写能力。其中,:nth-child, :only-child, :first-child, :last-child, 和 :nth-last-child 是CSS选择器中的结构化伪类,它们…

Sass 使用指南:让 CSS 编程更高效、更强大

Sass(Syntactically Awesome Style Sheets)是一种 CSS 预处理器,通过它,开发者可以使用变量、嵌套、混合和函数等更高级的功能来编写更简洁、更易于维护的样式代码。Sass 可以被编译成纯 CSS,使得你的项目能够在所有浏…

多个p标签一行展示,溢出隐藏

一开始,我是让div包裹多个p标签,并让div“flex”布局,且单行溢出隐藏,可是发现当父元素或当前元素有flex时,text-overflow: ellipsis;是不生效的 大多数解决办法都是,不要flex,或者给div下的每个…

【启程Golang之旅】网络编程与反射

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…

Java进阶_多态特性

生活中的多态 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: 现实中,比如我们按下 F1 键这个动作,同一个事件发生在不同的对象上会产生不同的结果。…

达梦8 探寻达梦排序机制之一:传统排序机制(SORT_FLAG=0)

测试版本:--03134283938-20221019-172201-20018 达梦的排序机制由四个dm.ini参数控制: SORT_BUF_SIZE 100 #maximum sort buffer size in MegabytesSORT_BLK_SIZE 1 #ma…

力扣23. 合并 K 个升序链表

给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下&#…

自动化立体库集成技术--含(思维导图)

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 随着科技的不断进步和物流行业的快速发展,自动化立体库集成技术已成为现代物流仓储的重要支撑。 它利用先进的自动化设备和智能化管理…

[leetcode hot 150]第一百三十七题,只出现一次的数字Ⅱ

题目: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 由于需要常数级空间和线性时间复杂度…

http协议,tomcat的作用

HTTP 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点: 1.基于TCP协议:面向连接,安全 2. 基于请求-响应模型的:一次请求对应一次响应 3HTTP协议是无状态的协议:对于事务处理没有记忆能…

tsconfig.json和tsconfig.app.json文件解析(vue3+ts+vite)

tsconfig.json {"files": [],"references": [{"path": "./tsconfig.node.json"},{"path": "./tsconfig.app.json"}] }https://www.typescriptlang.org/tsconfig/#files files: 在这个例子中,files 数…

git-生成SSH密钥

git-生成SSH密钥 1 打开命令窗口2 操作 1 打开命令窗口 选择"Git Bash Here",打开Git命令窗口 2 操作 查看当前用户名称 git config user.name配置你的邮箱,“6xxxqq.com” 填写自己的邮箱 git config --global user.email "6xxxqq…

认识Java中的String类

前言 大家好呀,本期将要带大家认识一下Java中的String类,本期注意带大家认识一些String类常用方法,和区分StringBuffer和StringBuilder感谢大家收看 一,String对象构造方法与原理 String类为我们提供了非常多的重载的构造方法让…

计算机网络基础-VRRP原理与配置

目录 一、了解VRRP 1、VRRP的基本概述 2、VRRP的作用 二、VRRP的基本原理 1、VRRP的基本结构图 2、设备类型(Master,Backup) 3、VRRP抢占功能 3.1:抢占模式 3.2、非抢占模式 4、VRRP设备的优先级 5、VRRP工作原理 三…

React基础教程:react脚手架

1、create-react-app 全局安装create-react-app npm install -g create-react-app安装成功之后,通过命令create-react-app -V检查是否安装成功 创建一个项目 create-react-app my-app如果不想全局安装,可以直接使用npx,也可以实现相同的效…

小主机折腾记25

10.买了惠普光驱,想给880g5twr安装上,结果发现卡扣不对 880g5twr的卡扣更长一些,比光驱本身长一些,各位如果想买的注意擦亮眼睛,看看卡扣跟你的主机一致与否 后续在闲鱼上买了个卡扣,加邮费12块钱…… 1…

转让闲置商标别中了残标,与驰名商标近似被驳回!

前几天有个人说要购买一个闲置的已注册商标,普推商标知产老杨帮忙去联系了一下,发现这个商标是残标用不成,他是要买回来的做化妆品的,但是在3类化妆品里面化妆品的小类并没有通过初审下证。 大家转让闲置商标就要注意了&#xff0…