预训练大型语言模型(LLM)市民服务热线系统的改进


纯金属外壳
男,78年生,现居上海。
14 人赞同了该回答

  1. 背景
    某市市民服务热线系统每月需要处理约9万余条各类咨询、投诉事件。这些事件由坐席人员统一登记、分拨及跟进。坐席需要及时根据登记的内容,将事件分派到对应的组织部门进行后续处置。

  2. 挑战
    事件共有16种一级分类,100多种二级分类和接近600种三级分类。对事件准确分类十分不易,非常依赖坐席人员的经验和技能。即使经过严格培训的坐席人员也难以保证第一时间准确的将事件准确识别并分拨。过去首次分类准确性不足70%。错分事件需要退回重分,进而导致事件处置延迟,影响市民满意度。手工分拨的方式在事件高峰时也会造成积压。采用先进技术,提升事件的分拨处理准确性及效率,降低对人工的依赖对于提升运营效率有极大的价值。

  3. 方案
    该市也曾经尝试采用传统NLP技术对事件进行分类,但效果不佳。预训练大型语言模型(LLM)的出现为问题的解决提供了新的路径。理论上利用LLM自身强大的NLP能力,再根据历史数据进行微调,能够根据登记的文本描述对事件进行准确分类。同时,可以利用大型语言模型实现精确的语义检索,为坐席提供更精确的知识库访问;大型语言模型还能够提升态势感知的能力,为领导对当前社会运行总体状况提供更精确的判识支持。

本项目利用热线系统的历史数据,采用LoRA技术对清华大学开源的ChatGLM-6B模型进行微调,使其能够适应热线系统的分类任务。在技术验证中将首次分类准确性提高了20%以上,同时事件分拨速度从过去数十分钟提高了一分钟以内,极大提高了事件处置的效率。

  1. 数据探索
    从热线系统中提取了一定数量的原始历史数据。数据格式如下:

据此任务被定义为根据"标题"和"内容"字段的文本,分类输出"类型"和"归口"。

  1. 数据准备
    在数据准备阶段,需要对数据进行如下预处理,保证安全合规以及训练的质量;

数据脱敏,将数据中与个人信息(电话、身份证等)相关的信息进行脱敏,防止个人信息泄露;
数据清洗,去除一些不合格的数据,去除数据中不相关的字符;
数据分布调整,数据分类项分布并不均匀,需要对数量较少的的分类进行数据增强,例如改写、调整顺序、两次翻译等方式;
增加噪声,为了系统扩展性和训练的稳定性,增加一些不相关的文本,归类为"未分类",这样即使将来有新的分类出现,也可以将其归类到"未分类"中。
格式化,将数据转换为可以用于LLM训练的格式:

  1. 微调训练
    训练环境为单卡模式,使用LoRA微调,主要参数为 Lora_rank:16,learning_rate:1e-4,fp16精度。每个迭代训练时长约为 8-12小时。

  2. 测试
    将微调后的LoRA权重与基础模型(Checkpoint)一并加载,并在对话界面上利用测试数据集对事件进行测试,可以看到事件能够得到准确分类。

实际部署中通过API的方式进行调用进行测试分析。

  1. 成果
    微调后的模型对事件首次分拨准确率相比之前手工方式大幅提高,极大降低了对坐席人工依赖,提高了运营效率。验证了预训练大模型只需使用低资源进行微调,即可良好适应下游任务。后续将对项目继续进行优化,使其能够适应精确语义检索,势态感知等任务。

  2. 启示
    由于LLM具有开箱即用的NLP能力,经过微调可以广泛应用于各种NLP任务中,例如客户评价分析,情感识别,数据标签,格式化文本生成等。

发布于 2023-06-02 13:39・IP 属地上海
​赞同 14​
​收起评论
​分享
​收藏
​喜欢
收起​
写下你的评论...

8 条评论
默认
最新
熊贰二
熊贰二
请问这个在用的时候是如何体现instruction呢?

6 小时前 · IP 属地广东
​回复
​2
纯金属外壳
纯金属外壳
作者
Instruction写在了prompt模版里。
40 分钟前 · IP 属地上海
​回复
​赞
铜臭
铜臭
那个数据格式化的过程都是人肉手工做的吗
3 小时前 · IP 属地上海
​回复
​1
纯金属外壳
纯金属外壳
作者
不是的,用python写script实现的
39 分钟前 · IP 属地上海
​回复
​赞
cr777
cr777
有代码吗?
4 小时前 · IP 属地北京
​回复
​赞
HouEE
HouEE
一个epoch 8-12小时,只用了一个月的历史数据吗

6 小时前 · IP 属地北京
​回复
​赞
纯金属外壳
纯金属外壳
作者
就知道肯定有行家[大笑]
38 分钟前 · IP 属地上海
​回复
​赞
buzhihu
buzhihu
显卡用的什么型号,A100?