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

引言

        大模型(如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) 概述

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

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

相关文章

8.解决跨域问题的三种方案

开启域名,单点登录后,就使用最上面的接口了

全解:Redis RDB持久化和AOF持久化

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

使用 ASP.NET Core HttpLoggingMiddleware 记录 http 请求/响应

我们发布了一个应用程序,该应用程序运行在一个相当隐蔽的 WAF 后面。他们向我们保证,他们的产品不会以任何方式干扰我们的应用程序。这是错误的。他们删除了我们几乎所有的“自定义”标头。为了“证明”这一点,我构建了一个中间件&#xff0c…

回调机制详解

一、什么是回调: 回调是一种双向的调用模式,程序模块之间通过这样的接口调用完成通信联系,回调的核心就是回调方将本身即this传递给调用方,这样调用方就可以在调用完毕之后再告诉回调方它想要知道的信息。 回调函数用于层间协作&…

CUDA 计时功能,记录GPU程序/函数耗时,cudaEventCreate,cudaEventRecord,cudaEventElapsedTime

为了测试GPU函数的耗时,可以使用 CUDA 提供的计时功能:cudaEventCreate, cudaEventRecord, 和 cudaEventElapsedTime。这些函数可以帮助你测量某个 CUDA 操作(如设置设备)所花费的时间。 一、记录耗时案例 以下是一个示例程序&a…

异步操作,promise、axios

一、异步操作(异步编程)、同步操作 异步操作是指在编程中,某个任务的执行不会立即完成,同时不会阻塞后续代码的执行。在异步操作中,程序可以继续运行,并在异步任务完成时得到通知并处理结果。这与同步操作…

Ansible的yum和saltstack的哪个功能相似

Ansible的yum和saltstack的哪个功能相似 在 Ansible 和 SaltStack 中,Ansible 的 yum 模块 和 SaltStack 的 pkg 模块 功能相似。它们都用于管理软件包,支持安装、升级、删除和查询等操作。 Ansible 的 yum 模块 用途: 专门用于基于 Red Hat …

JVM 面试题相关总结

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

基于BiLSTM-CRF的中文电子病历命名实体识别

声明:博客未经允许禁止抄袭转载。 前言 最近有粉丝在后台私信我能不能更一篇关于命名实体识别(NER,Named Entity Recognition)的经典模型BiLSTM-CRF的实战文章,前段时间有点忙所有一直没有更新,趁着最近有点空,满足一…

k8s 优雅监控jvm及dump heap的方案探讨

背景 k8s cluster 的健康检测失败会主动重启pod,而大部份情况下健康检测失败都是由full gc引起的。往往发生重启时已经没有条件dump heap排查full gc的原因。 如何监控 为了避免因健康检测失败而导致的pod重启,我们需要实施有效的监控策略,这…

TPM 2.0:安全固件的新标准

得益于可信计算组 ( TCG ) 推出的全新 TPM 2.0规范,联网设备可以更好地抵御网络攻击,并且不太可能受到错误的攻击。 制造商将可信平台模块 (TPM) 附加到设备上,以帮助用户和管理员验证其身份、生成和存储加密密钥以及确保平台完整性。 在 T…

ensp实验-vrrp多网关配置

一、交换机与路由的配置区别 1. 角色定义交换机: Master 或 Backup: 交换机通常作为 Master 或 Backup 设备参与 VRRP,负责在主设备故障时接替其工作。路由器: Master 或 Backup: 路由器同样可以作为 Master 或 Backup 设备…

黑盒测试方法

‌黑盒测试是一种软件测试方法,它通过向系统提供输入并检查输出结果来验证系统的功能是否符合需求。‌黑盒测试主要关注软件的功能性,而不是其内部结构或工作原理。以下是几种常见的黑盒测试顺序方法: 场景设计法‌: 通过模拟实际…

游戏引擎学习第38天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾上次的内容。 我们之前讨论了将精灵放在屏幕上,但颜色错误的问题。问题最终查明是因为使用了一个调整工具,导致文件的字节顺序发生了变化。重新运行“image magic”工具对一些大图像进行重新处理后&am…

aws(学习笔记第十六课) 使用负载均衡器(ELB)解耦webserver以及输出ELB的日志到S3

aws(学习笔记第十六课) 使用负载均衡器(ELB)以及输出ELB的日志到S3 学习内容: 使用负载均衡器(ELB)解耦web server输出ELB的日志到S3 1. 使用负载均衡器(ELB) 全体架构 使用ELB(Elastic Load Balancer)能够解耦外部internet访问和web server之间的耦合&#xff0c…

深入理解C#的TCPIP通信机制

本文还有配套的精品资源,点击获取 简介:在分布式系统和实时数据交换应用中,C#作为一种现代面向对象编程语言,利用其***命名空间下的Socket类,提供强大的TCP/IP通信功能。本文将探讨C#中TCP/IP通信的基本概念、使用方…

高项 - 项目管理原则与项目绩效域

个人总结,仅供参考,欢迎加好友一起讨论 博文更新参考时间点:2024-12 高项 - 章节与知识点汇总:点击跳转 文章目录 高项 - 项目管理原则与项目绩效域项目管理12条原则原则1:成为勤勉、尊重和关心他人的管家 (p202)原则…

仿真技术助力高尔夫球打破传统设计局限,实现球杆强大的功能

Altair近日宣布与业内领先的高尔夫装备制造商 Cleveland Golf 开展合作,以设计新款 HiBore XL 球杆。借助 Altair 先进的仿真与设计技术,Cleveland Golf 不断刷新高尔夫装备的行业标准,并在球杆产品设计方面实现突破。 Cleveland Golf 借助 A…

python字符串处理基础操作总结

1.去掉空格或者特殊符号 input_str.strip() #去掉所有空格 input_str.lstrip() #去掉左边空格 input_str.rstrip() #去掉右边空格 def print_hi():input_str 今天天气不错,风和日丽 out input_str.strip()print(input_str)print(out)if __name__ __main__:print…

Trimble X9三维激光扫描仪高效应对化工厂复杂管道扫描测绘挑战【沪敖3D】

化工安全关系到国计民生,近年来随着化工厂数字化改革不断推进,数字工厂逐步成为工厂安全管理的重要手段。而化工管道作为工厂设施的重要组成部分,由于其数量多、种类繁杂,一直是企业管理的重点和难点。 传统的化工管廊往往缺乏详…