rasa框架nlu文件自动生成—基于doccano

文本标注平台 doccano 安装教程 doccano 是一个开源的文本注释工具。它为文本分类、序列标记和序列到序列任务提供注释功能。因此,可以为情感分析、命名实体识别、文本摘要等创建标记数据。只需创建一个项目,上传数据并开始注释。 阅读详情

在这里插入图片描述

Doccano是一款开源的数据标注工具,在本地或服务器上安装运行之后,可直接在web上访问,导入数据进行标注。我们选用其作为图谱问答数据nlu.yml的标注工作。但是从数据标注,再到完整的nlu.yml文件,需要经过一系列的转换过程,因此本文在这项工作上进行总结探索。
基于Doccano实现从数据标注到nlu.yml自动化生成分为如下几步:

  1. 将需要标注的数据按照意图区分,在doccano构建不同的数据集进行标注;
  2. 标注完成后,将数据导出,文件格式为jsonl,文件命令为entity_intent.jsonl、relation_intent.jsonl、attr_intent.jsonl,放于raw_data目录下;
  3. 将上述文件放入与脚本相同的目录下,运行脚本,得到追加新数据的nlu.yml文件

数据标注

使用doccano进行数据标注,与传统的数据标注平台的标注方式类似,需要完成导入数据,规定标签,标注数据,导出数据等基本操作。

脚本处理

  1. 读入nlu.yml文件数据,使用convert_training_data将其转换为json;
  2. 读入jsonl格式的标注数据,进行格式处理,追加至nlu.json中;
  3. 将nlu.json转换回nlu.yml,完成数据标注
# doccano脚本
import os
import jsonlines
import json
from rasa.nlu.convert import convert_training_data

# 实体对应多槽位的标签
has_role = ["object_label", "object_label2", "object_device", "object_device2"]


def nlu_json(input_file, output_file, final_format):
    convert_training_data(data_file=input_file, out_file=output_file, output_format=final_format, language="zh")


def save_json(para_mapper_dict, path):
    # 以utf-8格式将字典写为json文件
    with open(path, 'w', encoding='utf-8') as json_file:
        json.dump(para_mapper_dict, json_file, ensure_ascii=False)


def add_data(read_paths):
    # 原始的nlu文件路径
    input_file = '../data/nlu.yml'
    # 中转数据以json格式存储
    output_file = 'nlu.json'
    # nlu转为json,便于读入
    nlu_json(input_file, output_file, "json")

    with open(output_file, 'r', encoding='utf-8') as f:
        tot_data = json.load(f)
        # 显示初始的标注数据条数
        print(len(tot_data["rasa_nlu_data"]["common_examples"]))
        # 读入不同意图下的标注数据
        for read_path in read_paths:
            with jsonlines.open(read_path, "r") as rfd:
                # 从文件名中获取意图名称
                intent_name = os.path.basename(read_path).replace(".jsonl", "")
                # 处理意图下的数据,将其转换为标准格式追加至原有数据上
                for data in rfd:
                    # 处理每条数据
                    text = data["text"]
                    tmp_dict = {"text": text, "intent": intent_name}
                    tmp_dict["entities"] = []
                    for la in data["label"]:
                        l, r, role = la
                        value = ""
                        # 根据左右索引取得待标注的实体
                        for i in range(l, r):
                            value += text[i]
                        entity = role
                        # entity与role并不等价
                        if entity[len(entity) - 1].isdecimal():
                            entity = entity.replace(entity[len(entity) - 1], "")
                        
                        tmp_entity = {
                            "start": l,
                            "end": r,
                            "value": value,
                            "entity": entity,
                        }
                        if entity in has_role:
                            tmp_entity["role"] = role
                        tmp_dict["entities"].append(tmp_entity) 
                    # 追加
                    tot_data["rasa_nlu_data"]["common_examples"].append(tmp_dict)
                    
        print(len(tot_data["rasa_nlu_data"]["common_examples"]))
        save_json(tot_data, output_file)
        nlu_json(output_file, "test_nlu.yml", "nlu")


if __name__ == '__main__':
    # 将从doccano得到的标注完成的jsonl文件,以意图作为分类后传入
    intent_annodata_path = ["./raw_data/entity_intent.jsonl",
                            "./raw_data/relation_intent.jsonl",
                            "./raw_data/attr_intent.jsonl"]
    add_data(intent_annodata_path)
NLP工具集:【doccano】——标注平台doccano使用手册 标注平台doccano使用手册 阅读详情

相关推荐

从零构建智能对话系统:基于BERT与GPT的实战指南

自然语言处理(NLP)是人工智能的核心领域之一,旨在让计算机理解、解释和生成人类语言。其基本原理是通过深度学习模型,如Transformer架构,学习语言的统计规律和语义表示。这项技术的核心价值在于将非结构化的文本数据转化为机器可处理的信息,从而实现人机自然交互。在实际工程中,NLP技术广泛应用于智能客服、虚拟助手、信息检索等场景。本文聚焦于如何构建一个完整的智能对话系统,深入探讨了**意图识别**与**实体抽取**这两个关键模块的实现。通过结合BERT等预训练模型进行微调,并集成知识图谱与生成式模型,可以

weixin_30333885的博客 431

rasa NLU.yml生成批量验证stories

rasa 人工智能 测试验证

yt2293的专栏 468

RASA NLU官方文档中文翻译

RASA NLU官方文档中文翻译,指导你快速创建一个属于自己的聊天机器人

Rasa自定义NLU组件

继承Component类,实现方法——训练`train()`、解析`process()`、持久化`persist()`、加载`load()`

XerCis的博客 2796

天气预报机器人数据集, nlu.yml city.yml response.yml

天气预报机器人数据集, nlu.yml city.yml response.yml

动态欧拉角与静态欧拉角:从理论到实践的深度解析

本文深度解析了动态欧拉角与静态欧拉角的核心区别与应用场景。静态欧拉角基于固定世界坐标系,适用于全局导航与三维场景编辑;而动态欧拉角基于物体自身坐标系,更符合飞行模拟、机器人控制等直觉操作,但需警惕其固有的万向节死锁问题。文章通过理论结合实战,帮助开发者在机器人、无人机及图形学项目中正确选用与处理旋转表示。

java5的博客 1073

【RASA】NLU模块组件分析

首先介绍一下rasa中nlu模块自带的组件,然后给出一些常用的pipeline配置方式,最后介绍如何添加自定义组件以及如何配置它们。

u011590738的博客 1747

Xilinx GTY Transceiver时钟方案与功耗优化实践

本文详细解析了Xilinx GTY Transceiver的时钟方案设计与功耗优化实践,涵盖从基础配置到高速24.33024Gbps和中速10.1376Gbps的实战案例。通过Transceivers Wizard的IP设计技巧和动态功耗优化方法,帮助工程师有效降低FPGA系统功耗,提升高速串行通信的稳定性与效率。

weixin_28736355的博客 228

rasa学习笔记(nlu管道部分)

这一部分不是以组件的形式提供的,而是流水线内建的功能,开发者不可见。列表中每个元素都是一个字典,依靠字典中的键来区分功能。、特征提取组件:提取词语序列的文本特征,可以同时使用多个特征提取组件;,允许开发者使用各种算法来完成功能,这些算法的具体实现被称为组件(、意图分类组件:按照语义对文本进行意图的分类,也成意图识别组件;要提取出改句子的意图是查询天气,以及对应的实体值和类型名:明天。、语言模型组件:加载模型文件,为后续组件提供框架支持,如初始化。为了让组件灵活配置和维持正确的前后组件的依赖关系,

weixin_48166466的博客 294

超声信号处理——硬件电路中的混频应用

本文介绍了超声多普勒系统的信号处理原理。系统通过波形振荡器产生高频信号,经换能器转换为超声波发射,接收反射信号后与原始信号混频,利用三角函数的积化和差特性产生包含多普勒频移的低频差频信号和高频和频信号。通过低通滤波器滤除高频成分后,即可获得纯净的多普勒信号。这种处理方法将MHz级高频信号转换为可听低频信号,降低了系统复杂度与成本。数学推导表明,差频信号频率正好

fcxgfdjy的博客 1122

TMS320C6678开发笔记1-6---C6678单核烧写程序

第6节 单核烧写加载程序 6.1节 TI参考文档 参考文档:《KeystoneI Bootloader Resources and FAQ》讲的非常好,建议一定要看 https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29 里面有三个工程: C6678 EVM SPI boot example C6657 EVM ..

kunkliu的博客 5691

章节四: RASA 训练数据介绍

因此机器人需要特别多的数据,也就是模拟人的问法,让机器人理解这些意图特征,理解人的问法,以及人是如何回复别人的问题,这部分内容在Rasa里面称为训练数据。如果开发者未在训练数据文件中指定版本key,Rasa 将假定开发者使用的是已安装的 Rasa 版本支持的最新训练数据格式。如果在不同的故事中经常重复一系列步骤,那么使用它们是有意义的,但是没有检查点的故事更容易阅读和编写。相反,开发者可以利用 NLU pipline的输出,它使用意图和实体的组合来引用用户可以发送的具有相同含义的所有可能消息。

具身机器人和通用AI 736

ANSYS 2026 R1 Windows系统安装避坑指南:环境配置、模块部署与许可证实战

ANSYS作为主流CAE仿真平台,其安装部署已远超传统软件范畴,演变为涉及操作系统底层、GPU驱动兼容性、许可证微服务架构和统一缓存机制的系统工程。理解ANSYS安装原理,需从Windows 11 UEFI安全启动要求、DirectX 12 Ultimate图形栈依赖、gRPC架构的License Manager端口动态分配等核心机制切入;技术价值在于保障HFSS GPU加速、Fluent MPI并行稳定性及Workbench多模块协同可靠性;典型应用场景涵盖高校仿真实验室升级、工业设计院所平台重建及高性能

weixin_29251337的博客 1388

NLP标注工具:【免费:doccano、标注精灵、brat、YEDDA、DeepDive、rasa-nlu-trainer】【收费:Prodigy】

NLP标注工具:【免费:doccano、标注精灵、BRAT、YEDDA、DeepDive、rasa-nlu-trainer】【收费:Prodigy】 参考资料: NLP标注神器:可同时对文本与实体进行标注 超强大NLP标注工具——Prodigy(收费)

u013250861的博客 7927

DL-FWI基础入门培训视频学习1、2

DL-FWI基础知识

shengMio的博客 708

软考软件评测师备考避坑指南:过来人告诉你这5个章节最容易丢分(附2024最新考纲解析)

本文为软考软件评测师考生提供备考避坑指南,深度解析5个高频失分章节,包括标准化与信息化基础、中间件技术、软件测试模型、白盒测试覆盖准则和性能测试指标。文章结合2024最新考纲,分享实战技巧和记忆口诀,帮助考生精准打击失分重灾区,提升备考效率。

weixin_29223603的博客 467

如何用awesome-nlp构建智能对话系统:聊天机器人开发与对话管理终极指南

awesome-nlp是一个专注于自然语言处理(NLP)的精选资源列表,汇集了从基础工具到前沿技术的完整生态。本文将带你探索如何利用awesome-nlp中的资源快速构建专业级对话系统,涵盖聊天机器人开发全流程与对话管理核心技术。 [![awesome-nlp项目logo](https://raw.gitcode.com/gh_mirrors/aw/awesome-nlp/raw/55a2061

gitblog_00456的博客 419

网络工程师如何利用Python自动Telnet到N个路由器并执行配置?

telnetlib是Python标准库中的一个模块,专门用于实现Telnet协议。通过telnetlib,我们可以方便地与支持Telnet协议的远程设备进行通信。telnetlib提供了基本的Telnet功能,如连接远程主机、发送命令、读取响应等,使得编写Telnet自动化脚本变得非常简单。文档:可以选择中文:虽然telnetlib的功能相对基础,但对于大多数Telnet操作来说已经足够。通过telnetlib,可以轻松地实现与网络设备的交互,完成自动化配置任务。

网络技术联盟站 297

Rasa中nlu.yml文件信息详细解释

data/nlu.yml`文件是用来定义用户意图和实体训练数据的,Rasa 通过这个文件学习如何识别用户在对话中的意图(intent)以及提取相关的实体(entity)。

YiHanXii的博客 517

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Rasa系列教程(二) -- Rasa NLU基础

Rasa NLU基础

m0_37565948的博客 4161

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NLP标注神器:可同时对文本类型与实体类型进行标注(动图演示)

每天给你送来NLP技术干货!来自:AI有温度大家好,我是泰哥。我之前做实体标注项目使用过标注精灵、BRAT、YEDDA、DeepDive等标注工具,这些工具虽然可以满足实体标注需求,但安装...

zenRRan的博客 2091

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Transformer课程 业务对话机器人Rasa 3.x 生成自然语言理解NLU数据

NLU(自然语言理解)是Rasa开源的一部分,它执行意图分类、实体提取和响应检索。

大模型与Agent智能体 1651

NLP标注神器:可同时对文本与实体进行标注

原文链接:NLP标注神器-可同时对文本与实体进行标注 我之前做实体标注项目使用过标注精灵、BRAT、YEDDA、DeepDive等标注工具,这些工具虽然可以满足实体标注需求,但安装过程复杂、英文界面、有时会有卡顿,对标注人员都很不友好。 而我目前要做的任务需要能同时对数据进行实体标注和文本分类标注,以上提到的工具都很难满足,分开标注效率又太低。于是我找到了rasa-nlu-trainer标注工具,免费、无需安装、无需注册、操作快捷且能同时标注,真是神器!今天就分享给大家。 1 进入标注工具 地址:https

Antai_ZHU的博客 1万+

doccano数据标注平台使用

Step 1. 本地安装doccano(请勿在AI Studio内部运行,本地测试环境python=3.8)Step 2. 初始化数据库和账户(用户名和密码可替换为自定义值)Step 3. 启动doccanoStep 4. 运行doccano来标注实体和关系打开浏览器(推荐Chrome),在地址栏中输入后回车即得以下界面。 登陆账户。点击右上角的,输入Step 2中设置的用户名和密码登陆。创建项目。点击左上角的,跳转至以下界面。设置标签。在Labels一栏点击,手动设置或者从文件导入。导入数据。在Data

yaohaishen的专栏 2976

RASA3使用正则表达式获取NLU(意图)中的字段并从Action中获取

配置完yml后可以开始编写Action的代码了,Action是可以对流程进行操作的,就可以做很多操作,这里我展示一下从数据库中收集数据并返回。其中regex的意思是正则表达式 user_input_name对应slot的名,包括你在上面也要进行引用。还需要配置一下规则,规则简单来说就是给意图和响应绑定起来。

System_xia的博客 938

Rasa原文-生成NLU数据

目录 Generating NLU Data Conversation-Driven Development for NLU# Gather Real Data# Share with Test Users Early# Avoiding Intent Confusion# Splitting on Entities vs Intents# Improving Entity Recognition# Pre-trained Entity Extractors# Regexes# Look

洪源的博客 1119
上一篇: 【AI/NLP】InstructGPT数据标注问题
下一篇: 末流211无科研保研经验分享
CodeSlogan
博客等级 码龄6年 4227粉丝 130原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeSlogan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值