机器人构建详解:售前售后服务客服机器人与广告生成机器人的微调数据处理方法

引言

        大模型(如BERT、GPT等)在自然语言处理任务中展现了强大的能力,但为了使其更贴合特定应用场景,通常需要进行微调。本文将详细讲解如何为售前售后服务的客服机器人和广告生成机器人准备高质量的微调数据,并通过具体的代码示例帮助读者更好地理解和应用这些技术。


一、微调数据来源与处理

        构建高效的机器人,关键在于使用高质量的微调数据。这些数据主要来自三个渠道,并经过一系列专业的处理步骤以确保数据质量。我们将结合售前售后服务客服机器人和广告生成机器人的具体场景来说明。

  1. 历史问答记录与广告文案

    • 数据来源
      • 客服机器人:公司积累的历史问答记录,由真人客服与客户通过淘宝旺旺、抖音等平台沟通产生。
      • 广告生成机器人:公司积累的历史广告文案。
    • 处理步骤
      1. 建立不文明用语词库:创建包含不文明用语的词库,用于后续筛选(仅适用于客服机器人)。
      2. 关键词匹配剔除:使用程序进行关键词匹配,自动剔除包含不文明用语的内容(仅适用于客服机器人)。
      3. 数据清洗:对剩余数据进行初步清洗,去除冗余信息和格式化问题。
      4. 人工审核:对清洗后的数据进行人工审核,剔除回答效果不佳或不符合业务逻辑的内容。
      5. 最终筛选:保留高质量的问答对作为微调数据。
      6. 生成更多问题:针对每个广告文案,人工编写相关的问题,并送入大模型生成更多含义相同但表达不同的问题,增加样本多样性(仅适用于广告生成机器人)。
  2. 文档及手册与产品SKU信息

    • 数据来源
      • 客服机器人:与问答相关的文档、说明书、手册等信息。
      • 广告生成机器人:产品的SKU信息。
    • 处理步骤
      1. 文本分块:对文档进行初步整理并分块,确保每个文本块主题明确且长度适中。
      2. 生成问题:利用大模型根据每个文本块生成相关问题,确保问题的多样性和覆盖面。
      3. 知识库构建:将生成的问题送入LangChain提问,获取答案,形成知识库(仅适用于客服机器人)。
      4. 生成广告文案:将产品SKU信息送入开源大模型(如ChatGPT),通过提示词生成相关广告文案(仅适用于广告生成机器人)。
      5. 人工筛选:人工筛选后保留高质量问答对作为微调数据。
      6. 数据增强:通过同义词替换、句子重组等方式增加数据多样性,提升模型泛化能力。
  3. 网上爬取的数据

    • 数据来源
      • 客服机器人:从互联网上爬取礼貌沟通的闲聊问答对,剔除涉及产品的数据。
      • 广告生成机器人:从互联网上获取的广告文案。
    • 处理步骤
      1. 数据采集:使用网络爬虫工具从多个可信来源收集数据,确保数据的多样性和代表性。
      2. 数据清洗:去除无关信息,保留高质量的问答对或广告文案。
      3. 去重处理:通过哈希算法或相似度计算,去除重复或高度相似的问答对或广告文案。
      4. 人工审核:对筛选后的数据进行人工审核,确保数据质量和适用性。

所有上述数据最终通过程序拼接,整理成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) 概述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

R学习——因子

目录 1 定义因子(factor函数) 2因子的作用 一个数据集中的 只需要考虑可以用哪个数据来进行分类就可以了,可以用来分类就可以作为因子。 Cy1这个因子对应的水平level是4 6 8: 1 定义因子(factor函数) 要…

计算机毕设-基于springboot的口腔诊所系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

【ComfyUI+视频生成】LTX-Video 快速生成视频 + 图生视频 (生成4秒 3090需要20秒)

代码:https://github.com/Lightricks/LTX-Video comfyui官方工作流:https://comfyanonymous.github.io/ComfyUI_examples/ltxv/ 官方模型:https://huggingface.co/Lightricks/LTX-Video 工作流下载:https://pan.baidu.com/s/1g9Y…

axios的引入和基本使用

一、axios的引入 使用 pnpm add axios 二、使用axios 三、axios的使用方法补充 axios除了直接使用它实例上的方法,还可以通过配置的方式进行使用axios({}),传入一个对象,这个对象可以有如下属性: url(字符串&#…

【蓝桥杯最新板】蓝桥杯嵌入式液晶上实现电子时钟

这几年蓝桥杯比赛比较适合学生技能学习,考虑板子功能,提出完成的任务。 要求在液晶完成如下图效果: 主要是实现液晶显示时钟和数字时钟,具体样式可以依据实际情况微调。 实现过程: 1.需要画圆(外圆、内圆…

JavaScript 写css的内联样式

一、使用style属性-直接设置单个 CSS 属性 // 获取元素 var element document.getElementById("myElement");// 设置样式 element.style.color "red"; element.style.backgroundColor "blue"; element.style.fontSize "20px"; 二…

Linux系统操作03|chmod、vim

上文: Linux系统操作02|基本命令-CSDN博客 目录 六、chmod:给文件设置权限 1、字母法 2、数字法(用的最多) 七、vim:代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…

AndroidStudio配置aar包的依赖方式

创建本地仓库文件夹和aar文件夹 创建本地仓库文件夹LocalRepo,文件夹名称可以自定义。在LocalRepo文件夹下为每一个aar单独创建文件夹,如下所示。aar包就放在各自的文件夹下。请注意一个aar文件夹下只能放置一个aar。 配置build.gradle文件 在aar文件…

数据分析python小工具录入产品信息到Excel

在没有后台管理系统的时候,有时候为了方便起见,想提供一个输入框让运营人员直接输入,然后数据就会以数据库的形式存进数据库 效果图: 输入用户名 输入数据 输入信息后点击添加到表格,检查后方便批量保存到excel …

数据结构 (35)分配类排序

前言 分配类排序是数据结构中的一种重要排序方法,其核心思想是利用分配和收集过程对元素进行排序,而无需比较元素之间的关键字。这种方法突破了基于关键字比较的排序算法的时间下界,可以达到线性时间复杂度O(n)。 一、分配类排序的基本概念 分…

sftp+sshpass

实现场景,要求客户端定时将本地的日志文件传输到服务器。 工作环境ubuntu,注意不通操作系统的版本不通,依赖的工具的版本也有所不同 实现目标需要客户端满足安装工具: 1、下载安装sshpass ---安装命令:sudo apt-ge…

Java 环境配置 + IntelliJ IDEA 使用指南

文章目录 一、Java 程序的运行必须经过3 个步骤:编写、编译、运行(1)Java 和 JavaScript 的区别(2)JDK、JRE、JVM 的关系(3)是否需要 Maven? 二、软件下载2.1、JDK下载与安装 —— 是…

013路由协议-OSPF

OSPF具有更适用于规模较大的网络环境,收敛更快速、依据带宽来计算路径成本等。 计算方式: 100M/当前端口的带宽 如果小于1就按照1来计算 例如: 当前端口的带宽是1.54M 路径成本 100/1.54 65 当前端口的带宽是 1000M 路径成本 100/100 0.…

刷题日志【4】

目录 1、猜数字大小 1、猜数字大小 题意有点抽象,我大概讲一下,就是在1——n里面会有一个目标数,我们通过猜数字的方式逼近这个数字,直到解出这个数,之前我们是用二分法求最快达到求解的问题,这道题多了每…

关于TDSQL(MySQL)的简单知识分享

0. 前言 最近在系统改造过程中,接触到了国产分布式数据库TDSQL,记录一下关于TDSQL的部分知识点。 1. TDSQL简介 TDSQL是腾讯推出的一款兼容MySQL的自主可控、高一致性分布式数据库产品。 1.1 TDSQL优点: 数据强一致性高性能低成本线性水…

学习记录:js算法(一百二十三):不同路径 II

文章目录 不同路径 II思路一 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。 网格中的障碍物…

优秀的3d建模是数据可视化的视觉核心2

空间与深度感知的增强:3D建模提供了数据的三维表示,使得用户能够直观地理解数据在空间中的分布和关系。这种深度感知是二维数据可视化无法比拟的,它有助于揭示数据之间的隐藏联系和模式。 复杂数据的直观化:对于高维或复杂的数据集…

在Docker中运行MySQL的思考:挑战与解决方案

引言 在云计算和容器化技术日益普及的今天,Docker作为一种轻量级的容器化平台,已经成为开发和部署应用的首选工具之一。其提供的便携性、可扩展性和环境一致性对于无状态微服务来说无疑是巨大的福音。然而,并非所有应用都适合在Docker容器中…

Jenkins流水线初体验(六)

DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六) 一、Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目,每个步骤…

cdh agent 龙蜥系统安装

1、环境配置(都在cdh_install.gz.tar和cdh.gz.tar中) #安装JDK rpm -ivh jdk-8u191-linux-x64.rpm#安装时间同步 yum install ntp vi /etc/ntp.conf #将server 0.centos.pool.ntp.org iburst注释 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst …