机器人构建详解:售前售后服务客服机器人与广告生成机器人的微调数据处理方法
引言
大模型(如BERT、GPT等)在自然语言处理任务中展现了强大的能力,但为了使其更贴合特定应用场景,通常需要进行微调。本文将详细讲解如何为售前售后服务的客服机器人和广告生成机器人准备高质量的微调数据,并通过具体的代码示例帮助读者更好地理解和应用这些技术。
一、微调数据来源与处理
构建高效的机器人,关键在于使用高质量的微调数据。这些数据主要来自三个渠道,并经过一系列专业的处理步骤以确保数据质量。我们将结合售前售后服务客服机器人和广告生成机器人的具体场景来说明。
-
历史问答记录与广告文案
- 数据来源:
- 客服机器人:公司积累的历史问答记录,由真人客服与客户通过淘宝旺旺、抖音等平台沟通产生。
- 广告生成机器人:公司积累的历史广告文案。
- 处理步骤:
- 建立不文明用语词库:创建包含不文明用语的词库,用于后续筛选(仅适用于客服机器人)。
- 关键词匹配剔除:使用程序进行关键词匹配,自动剔除包含不文明用语的内容(仅适用于客服机器人)。
- 数据清洗:对剩余数据进行初步清洗,去除冗余信息和格式化问题。
- 人工审核:对清洗后的数据进行人工审核,剔除回答效果不佳或不符合业务逻辑的内容。
- 最终筛选:保留高质量的问答对作为微调数据。
- 生成更多问题:针对每个广告文案,人工编写相关的问题,并送入大模型生成更多含义相同但表达不同的问题,增加样本多样性(仅适用于广告生成机器人)。
- 数据来源:
-
文档及手册与产品SKU信息
- 数据来源:
- 客服机器人:与问答相关的文档、说明书、手册等信息。
- 广告生成机器人:产品的SKU信息。
- 处理步骤:
- 文本分块:对文档进行初步整理并分块,确保每个文本块主题明确且长度适中。
- 生成问题:利用大模型根据每个文本块生成相关问题,确保问题的多样性和覆盖面。
- 知识库构建:将生成的问题送入LangChain提问,获取答案,形成知识库(仅适用于客服机器人)。
- 生成广告文案:将产品SKU信息送入开源大模型(如ChatGPT),通过提示词生成相关广告文案(仅适用于广告生成机器人)。
- 人工筛选:人工筛选后保留高质量问答对作为微调数据。
- 数据增强:通过同义词替换、句子重组等方式增加数据多样性,提升模型泛化能力。
- 数据来源:
-
网上爬取的数据
- 数据来源:
- 客服机器人:从互联网上爬取礼貌沟通的闲聊问答对,剔除涉及产品的数据。
- 广告生成机器人:从互联网上获取的广告文案。
- 处理步骤:
- 数据采集:使用网络爬虫工具从多个可信来源收集数据,确保数据的多样性和代表性。
- 数据清洗:去除无关信息,保留高质量的问答对或广告文案。
- 去重处理:通过哈希算法或相似度计算,去除重复或高度相似的问答对或广告文案。
- 人工审核:对筛选后的数据进行人工审核,确保数据质量和适用性。
- 数据来源:
所有上述数据最终通过程序拼接,整理成JSON格式的问答对,其中context
键对应问题,summary
键对应答案。此外,还可以引入半监督学习方法,结合少量标注数据和大量未标注数据,进一步提高模型性能。
二、代码示例
为了更好地理解上述流程,下面提供一些代码示例,展示如何处理和整理微调数据。
1. 数据清洗与关键词匹配
import re
from sklearn.feature_extraction.text import CountVectorizer# 示例不文明用语词库
uncivil_words = ['脏话1', '脏话2']def clean_text(text):# 去除标点符号和特殊字符text = re.sub(r'[^\w\s]', '', text)return text.lower()def remove_uncivil(text, uncivil_words):words = text.split()cleaned_words = [word for word in words if word not in uncivil_words]return ' '.join(cleaned_words)# 示例数据清洗
texts = ["这是个测试句子,包含脏话1", "另一个干净的句子"]
cleaned_texts = [remove_uncivil(clean_text(text), uncivil_words) for text in texts]
print(cleaned_texts)
2. 自动生成问题
from transformers import pipeline# 初始化大模型
qa_pipeline = pipeline("question-generation")# 示例文本
text = "这是一段关于某个产品的描述,它具有很多独特的功能。"# 自动生成问题
questions = qa_pipeline(text)
for q in questions:print(q['question'])
3. 整理成JSON格式
import json# 示例问答对
qa_pairs = [{"context": "这是一个问题", "summary": "这是一个答案"},{"context": "这是另一个问题", "summary": "这是另一个答案"}
]# 写入JSON文件
with open('qa_data.json', 'w', encoding='utf-8') as f:json.dump(qa_pairs, f, ensure_ascii=False, indent=4)# 读取JSON文件
with open('qa_data.json', 'r', encoding='utf-8') as f:data = json.load(f)print(data)
4. 知识库构建与查询
from langchain import LangChain# 初始化LangChain
langchain = LangChain()# 示例知识库构建
knowledge_base = {"问题1": "答案1","问题2": "答案2"
}# 查询知识库
query = "问题1"
answer = langchain.query(knowledge_base, query)
print(answer)
5. 广告文案生成
from transformers import pipeline# 初始化大模型
generation_pipeline = pipeline("text-generation")# 示例产品SKU信息
sku_info = "产品名称: T恤, 颜色: 白色, 尺码: M"# 提示词
prompt = f"根据以下产品信息生成一则简洁的广告文案:{sku_info}"# 生成广告文案
ad_copy = generation_pipeline(prompt, max_length=50, num_return_sequences=1)[0]['generated_text']
print(ad_copy)
最佳实践建议
为了确保微调数据的质量和有效性,以下是一些建议:
- 多样化数据来源:尽可能从多个渠道获取数据,确保数据的多样性和代表性。
- 严格的人工审核:尽管自动化工具可以帮助处理大量数据,但最终的数据质量仍需依赖人工审核。
- 持续迭代改进:定期更新和扩充数据集,确保模型能够适应不断变化的业务需求。
- 引入高级技术:考虑引入半监督学习、对抗训练等先进技术,进一步提升模型性能。
总结
机器人的构建,微调数据的质量直接影响到最终模型的效果。通过精心选择和处理数据源,可以显著提高模型的性能和实用性。希望本文能为你提供有价值的参考和启发。
参考资料
- LangChain Documentation
- OpenAI API Documentation
- 对抗生成网络 (GAN) 概述
相关文章:
机器人构建详解:售前售后服务客服机器人与广告生成机器人的微调数据处理方法
引言 大模型(如BERT、GPT等)在自然语言处理任务中展现了强大的能力,但为了使其更贴合特定应用场景,通常需要进行微调。本文将详细讲解如何为售前售后服务的客服机器人和广告生成机器人准备高质量的微调数据,并通过具体…...
mysql的执行计划分析和索引下推以及索引长度计算
1 执行计划介绍 执行计划(Execution Plan)是数据库查询优化的重要工具,用于展示数据库如何执行 SQL 查询的详细过程。它包含了查询操作的步骤、各个步骤的执行顺序、使用的索引、访问的表、连接方式、预计的成本等信息 可以显示SQL语句最终…...
C#中的string操作详解-截取、分割、连接、替换等
在C#中,string 类提供了许多用于操作字符串的方法,包括截取、分隔和连接等。以下是一些常用字符串操作的介绍和实例: 1. 截取字符串 Substring 方法 用于从字符串中截取子字符串。 语法: //从startIndex开始截取,…...
Redis Cluster 分片机制
Redis 集群是 Redis 提供的一种分布式实现,用于水平扩展数据存储能力。通过 Redis 集群,可以将数据分片存储在多个 Redis 节点上,同时提供高可用性和故障转移功能。 分片(Sharding): Redis 集群将数据划分…...
论文结论:GPTs and Hallucination Why do large language models hallucinate
GPTs and Hallucination 当一个主题有普遍共识,并且有大量语言可用于训练模型时,大模型的输出可以反映出该共识观点在没有足够关于主题的语言示例【晦涩/数据有限】,或者主题有争议,或是对主题没有明确共识的情况下,就…...
CSS在线格式化 - 加菲工具
CSS在线格式化 打开网站 加菲工具 选择“CSS在线格式化” 或者直接访问 https://www.orcc.online/tools/css 输入CSS代码,点击左上角的“格式化”按钮 得到格式化后的结果...
组件通信(父传子,子传父,跨组件通信)
组件(component)是vue.js最核心的功能,是可扩展的HTML元素。每个页面都是一个HTML。以.vue结尾的文件,都可以叫组件。 场景:将一个完整的项目,拆分成不同的功能模块。 注意:组件首字母要大写。 …...
JWT 令牌:原理、应用与安全考量
深入理解 JWT 令牌:原理、应用与安全考量 文章目录 深入理解 JWT 令牌:原理、应用与安全考量一、引言二、JWT 令牌与传统方式的区别(一)传统身份验证方式的特点与局限(二)JWT 令牌的优势 三、JWT 令牌的字段…...
YOLOv5+pyqt5+摄像头在特定条件下进行目标检测并采集原始数据
项目介绍 项目地址 GitHub - biabu0/Yolov5_D435i: 通过YOLOV5与pyqt5实现一个使用D435i深度摄像头采集特定需求与场景下的深度数据的小程序 通过YOLOV5对指定的区域进行检测,当检测到目标进入特定区域时,开始保存数据,摄像头采用D435i深度…...
12.6深度学习_模型优化和迁移_整体流程梳理
七、整体流程梳理 1. 引入使用的包 用到什么包,临时引入就可以,不用太担心。 import time import osimport numpy as np import pandas as pd import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvisio…...
TCP 和 UDP 可以使用同一个端口吗
TCP 和 UDP 可以使用同一个端口吗 简单来说 可以使用同一个端口,关键在于它们属于不同的传输层协议,在内核中是两个完全独立的软件模块,各自维护独立的端口空间,虽然端口号相同,但通过协议类型可以确定是哪种协议。 …...
信而泰网络测试仪校准解决方案
一、影响仪表精度的因素 网络测试仪是用于对数据网络及其相关设备性能参数进行测试的仪表,可以模拟网络终端产生流量,进行网络性能测试,对网络状态进行实时监测,分析和统计。数字计量对于精准数据的网络测试仪来说是一剂强心针&a…...
Java 实现给pdf文件指定位置盖章功能
Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章…...
机器学习支持向量机(SVM)算法
一、引言 在当今数据驱动的时代,机器学习算法在各个领域发挥着至关重要的作用。支持向量机(Support Vector Machine,SVM)作为一种强大的监督学习算法,以其在分类和回归任务中的卓越性能而备受瞩目。SVM 具有良好的泛化…...
解决 MySQL 启动失败与大小写问题,重置数据库
技术文档:解决 MySQL 启动失败与大小写问题,重置数据库 1. 问题背景 在使用 MySQL 时,可能遇到以下问题: MySQL 启动失败,日志显示 “permission denied” 或 “Can’t create directory” 错误。MySQL 在修改配置文…...
计算生成报价单小程序系统开发方案
计算生成报价单小程序报价系统,是根据商品品牌、类型、型号、规格、芯数、特性、颜色、分类进行选择不同的参数进行生成报价单,要求报价单支持生成图片、pdf、excel表格。 计算生成报价单小程序系统的主要功能模块有: 1、在线生成报价单&…...
若依集成Uflo2工作流引擎
文章目录 1. 创建子模块并添加依赖1.1 新建子模块 ruoyi-uflo1.2 引入 Uflo2 相关依赖 2. 配置相关 config2.1 配置 ServletConfig2.2 配置 UfloConfig2.3 配置 TestEnvironmentProvider 3. 引入Uflo配置文件4. 启动并访问 Uflo2 是由 BSTEK 自主研发的一款基于 Java 的轻量级工…...
STM32模拟I2C通讯的驱动程序
目录 STM32模拟I2C通讯的驱动程序 开发环境 引脚连接 驱动程序 STM32模拟I2C通讯的驱动程序 开发环境 立创天空星开发板、主控芯片为STM32F407VxT6 引脚连接 使用stm32的PB9引脚模拟I2C时钟线SCL、PB8引脚模拟I2C数据线SDA 驱动程序 i2c.h文件如下:#ifndef…...
Unity简单操作及使用教程
Unity 是一款强大的跨平台游戏引擎,它不仅支持 2D 和 3D 游戏的开发,还可以用于虚拟现实 (VR)、增强现实 (AR)、动画、建筑可视化等多个领域。Unity 提供了完整的开发环境,具有丰富的功能、工具和资源,可以帮助开发者快速实现创意…...
网络安全法-监测预警与应急处置
第五章 监测预警与应急处置 第五十一条 国家建立网络安全监测预警和信息通报制度。国家网信部门应当统筹协调有关部门加强网络安全信息收集、分析和通报工作,按照规定统一发布网络安全监测预警信息。 第五十二条 负责关键信息基础设施安全保护工作的部门…...
qt 设置系统缩放为150%,导致的文字和界面的问题
1 当我们设置好布局后,在100%的设置里面都是正常的,但是当我们修改缩放为150%后,字体图标,界面大小就出现问题了,这就需要我们设置一些参数。 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QCoreAppl…...
Scala的正则表达式二
验证用户名是否合法 规则 1.长度在6-12之间 2.不能数字开头 3.只能包含数字,大小写字母,下划线def main(args: Array[String]): Unit {val name1 "1admin"//不合法,是数字开头val name2 "admin123"//合法val name3 &quo…...
软考系分:今日成绩已出
前言 今年报考了11月份的软考高级:系统分析师。 考试时间:11月9日。 总体感觉偏简单,但是知识点记得不牢,估计机会不大。 今日 12.11 ,成绩已出,每科总分 75分,全部45分以上为通过。 成绩总…...
DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(一)
DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...
Docker 安装 sentinel
Docker 安装系列 1、拉取 [rootTseng ~]# docker pull bladex/sentinel-dashboard Using default tag: latest latest: Pulling from bladex/sentinel-dashboard 4abcf2066143: Pull complete 1ec1e81da383: Pull complete 56bccb36a894: Pull complete 7cc80011dc6f: Pull…...
PyCharm 2024.1 解锁版 (Python集成开发IDE)详细安装步骤
分享文件:PyCharm 2024.1 解锁版 (Python集成开发IDE) 链接:https://pan.xunlei.com/s/VOAa_CiVVvZnyQgLfpmCIOABA1 提取码:cx4h 安装步骤 1、下载解压后点击如下进行安装 2、选择安装路径 3、默认勾选将PyCharm创建桌面快捷方式 4、默认…...
SQL中的函数介绍
大多数SQL实现支持以下类型 文本函数:用于处理文本字符串(如删除或填充值,转换值为大写或小写)。数值函数:用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)。日期和时间函…...
【工业机器视觉】基于深度学习的水表盘读数识别(2-数据采集与增强)
【工业机器视觉】基于深度学习的仪表盘识读(1)-CSDN博客 数据采集与增强 为了训练出适应多种表型和环境条件的模型,确保数据集的质量与多样性对于模型的成功至关重要。高质量的数据不仅需要准确无误、具有代表性,还需要涵盖尽可能…...
爬虫基础知识点
最近看了看爬虫相关知识点,做了记录,具体代码放到了仓库,本文仅学习使用,如有违规请联系博主删除。 这个流程图是我使用在线AI工具infography生成的,这个网站可以根据url或者文本等数据自动生成流程图,挺…...
高效利用资源:分布式有状态服务的高可靠性设计
在分布式系统设计中,实现有状态服务的高可靠性通常采用主备切换的方式。当主服务停止工作时,备服务接管任务,例如通过Keepalive实现VIP的切换以保证可用性。然而,这种方式存在资源浪费的问题,因为备服务始终处于空转状…...
那个公司做网站好/专注于品牌营销服务
namedtuple的需求: t (“kiosk”, ‘pts/0’, ‘localhost’) info {‘kiosk’ : { ‘name’: “kiosk”, ‘node’: ‘localhost’ }} 为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义ÿ…...
英德市住房城乡建设局网站/营销型网站建设总结
我想通过多边形区域裁剪图像,但无法找到任何可以制作它的库.OpenCV对于这个小东西来说太大了. JJIL [enter link description here]裁剪矩形区域.也许你有任何想法我怎么能实现它?感谢帮助!为Nidhi:尝试这样的东西,如果不起作用 – 为路径创建…...
中国建设银行官网网站首页/做网站的流程与步骤
推荐阅读: 这套Github上40Kstar学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL 成神之路PDF,终于开源了 Java 5 新特性 1. 泛型…...
企业做网站电话约见客户的对话/seo排名计费系统
ES除了实现前几课的基本查询,也可以实现类似关系型数据库的聚合查询,如平均值sum、最小值min、最大值max等等我们就用上一课的数据作为参考来举例聚合查询sum聚合sum是一个求累加值的聚合,其作用与关系型数据库中相同。GET /lib4/items/_sear…...
网站开发使用哪种工具好/友情链接交易平台源码
最近正好使用到了Guava的TypeToken来获取泛型的类型信息 比如,泛型父类需要获取其子类定义的泛型类型时: public abstract class GenericClazz<V> {private Class<V> classType;public void doSth() {final TypeToken<V> typeToken n…...
网站开发答辩会问哪些问题/全网营销渠道
1 IV的用途 IV的全称是Information Value,中文意思是信息价值,或者信息量。 我们在用逻辑回归、决策树等模型方法构建分类模型时,经常需要对自变量进行筛选。比如我们有200个候选自变量,通常情况下,不会直接把200个变量…...