LLM应用实战: 产业治理多标签分类

news/2024/9/21 14:49:45/文章来源:https://www.cnblogs.com/mengrennwpu/p/18369900

1. 背景

许久未见,甚是想念~

近期本qiang~换了工作,处于新业务适应期,因此文章有一段时间未更新,理解万岁!

现在正在着手的工作是产业治理方面,主要负责其中一个功能模块,即按照产业治理标准体系,针对企业介绍及其专利数据进行多标签分类。

本期的干货就是分享关于如何基于LLM实现数量多、层级多的多标签分类的实战经验,各位读者可以参考借鉴。

2. 数据介绍

2.1 标签体系

产业治理方面的标签体系共计200+个,每个标签共有4个层级,且第34层级有标签含义的概括信息。

2.2 原始数据

  1. 企业官网介绍数据,包括基本介绍、主要产品等
  2. 企业专利数据,包括专利名称和专利摘要信息,且专利的数据量大。

2.3 LLM选型

经调研,采用Qwen2-72B-Instruct-GPTQ-Int4量化版本,占用显存更少,且效果与非量化相当,具体可见Qwen2官网说明

3. 技术难点

  1. 团队无标注人员,因此无法使用Bert类小模型完成多标签分类任务
  2. 涉及垂直领域,即使有标注人员,也需要很强的背景知识,方能开展标注
  3. 标签数量多,层次深,且项目对准确率有要求

4. 方案设计

由于缺少标注人员,且对标注员的背景要求高,因此只能选择LLM进行任务开展

标签体系中每个标签的含义不够具象,属于总结性的,针对特定场景,LLM可能无法准确分类。因此,可以考虑抽取特定领域的关键词,作为基础知识,以实现RAG

企业官网及专利数据量巨大,调用LLM存在耗时超长的问题,好在有28卡的机器,可以做分布式推理,提高响应性能

总体的方案设计如下:

 

图虽然简单明了,但其中的细节还是值得玩味的。

4.1 词级匹配模块

(1) 针对垂直领域,基于标签的含义及经验知识,人工整理标签可能涉及的关键词,如智能汽车,可能存在智能驾驶、自动泊车、变道辅助等,但人工整理的关键词有限;

(2) 针对企业及专利数据,采用LAC+Jieba分词(注意,人工整理的词表不进行拆分),然后使用KeyBert+编辑距离进行关键词匹配(keybert底层模型采用目前效果最优的xiaobu-embedding-v2),筛选出关键词可能匹配的映射标签

4.2 分类RAG模块

(1) 每类标签的第3层级下的第4级标签的个数有限,因此首先针对标签的前3层级进行分类。取巧的地方在于先粗后精,即前3层级对应的标签个数较多,因此拆分为N组,每组通过prompt调用LLM输出一个结果,然后再针对输出的结果进行聚合,再调用一次LLM生成细粒度的标签

(2) 3层级标签确定之后,再基于第4层级标签进行末级标签确定

5. 功能特点

  1. 为什么使用关键词进行RAG

答:关键词虽然无法直接映射对应的标签(客官可以想想为什么?),但关键词有较强的背景提示,因此prompt中关键词有值的标签筛选出来的概率更大一些

  1. 关键词语义匹配为什么还需要增加编辑距离?

答:因为语义相似度模型一般针对较短文本的比较,针对词的比较效果较差,因此引入编辑距离,提高词级匹配度

  1. 同一个关键词对应多个标签的场景如何解决?

答:通过底层的LLM进行分辨具体应该属于哪一个

  1. 分类RAG是如何考虑的

答:由于标签数量较多,层级较深,而且LLM的输入长度有限,因此采用化繁为简(或先分后合)的方式,将整个标签体系先进行分组,然后调用LLM输出每个分组输出结果,再对结果进行整合,再次调用LLM进行细粒度分类确认

  1. 分类RAG先粗后细有什么好处?

答:粗粒度分类,LLM只能观察到给定的一组标签,而看不到整体标签,粗粒度划分好之后,细粒度再次确认,有助于提高分类的准确性。

qiang~的实验结果表明,准确率可以从70%-80%,上升到85%-90%,当然该实验只是针对该特定场景,但缺点是增加了LLM的响应时间。

  1. 标签划分N组后调用LLM,如何提高响应性能?

答:由于部署的是Qwen2量化版,且有28张卡可以使用,因此起了8vllm进程,用haproxy做请求转发,从而提高LLM的响应性能。实验表明,7W+数据,只需要耗时1天左右即可跑完结果,单节点非量化版本,可能需要几个礼拜才能跑完。

  1. 具体效果层面如何?

答:基于这一套方案,针对每个标签进行随机采样抽检,准确率能保持在85%-95%之间

  1. 为什么不增加fewshot呢?

答:此处的关键词就类似于fewshot示例,若直接以公司或专利作为fewshot,首先所属标签示例范围较广,不好整理,其次严重影响LLM的响应时间,因为输入长度变长。

  1. 人工未整理的关键词场景,如何确保分类准确?

答:依赖于底层LLM能力,这就是为什么选择Qwen2-72B的原因,当前Qwen2-72B的效果属于业界翘首。

6. 未来优化点

如果想要进一步提升准确率,当前方案已经预留口子,即标签的详细说明及垂直领域关键词的人工整理。标签说明越详细,关键词整理的越完备,分类的准确性就会越高。

但引出的问题是,关键词的人工整理耗时耗力,如何进一步减少人工整理,成为下一步的优化方向。

7. 总结

一句话足矣~

本文主要是采用LLM实现产业治理领域的多标签分类任务,包括具体的方案,LLM工程层面优化,实现效果以及未来的优化方向。

读者可以参考这套方案,尝试解决LLM实现多标签分类的任务,尤其是标签种类繁多,且层级较深的情况。

如有问题或者想要合作的客官,可私信沟通。

8. 参考

(1) Qwen2: https://qwen.readthedocs.io/zh-cn/latest/

 

 

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

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

相关文章

使用cilium开发ebpf程序

使用go开发ebpf程序最常见的一个框架就是cilium。开发前需要了解ebpf,了解go语言的基础知识。 在本地安装go之后下载bpf2go go get github.com/cilium/ebpf/cmd/bpf2go 从最简单的开发框架开始 下载示例源码 git clone https://github.com/cilium/ebpf.git 在ebpf/examples下是…

element ui 中日期选择器disabledDate的几种用法

现实开发中,遇到截止日期,跟着接口返回来确定的。需要用函数来实现disabledDate 这块知识,在手册文档写的也不详细。 这块实现基于element-ui 2.15.14https://blog.csdn.net/hellowang02/article/details/131575982相信坚持的力量,日复一日的习惯.

Paper Reading: SAFE: Scalable Automatic Feature Engineering Framework for Industrial Tasks

本文提出了一种可扩展自动特征工程方法 SAFE,它包括特征生成阶段和特征选择阶段,具备较高的计算效率、可扩展性,能满足实际业务问题的要求。不同于使用算子枚举所有的生成特征,本文的特征生成阶段专注于挖掘原始特征对,以更高的概率生成更有效的新特征。在特征选择阶段,本…

织梦模板引擎的代码样式有如下几种形式

1、织梦模板引擎的代码样式有如下几种形式:{dede:标记名称 属性=值/} {dede:标记名称 属性=值}{/dede:标记名称}{dede:标记名称 属性=值}自定义样式模板(InnerText){/dede:标记名称} 提示: 如果使用带底层模板的标记,必须严格用{dede:标记名称 属性=值}{/dede:标记名称} 这种…

Flannel VxLAN DR 模式

Flannel VxLAN DR 模式Flannel VxLAN DR 模式 一、环境信息主机 IPubuntu 172.16.94.141软件 版本docker 26.1.4helm v3.15.0-rc.2kind 0.18.0clab 0.54.2kubernetes 1.23.4ubuntu os Ubuntu 20.04.6 LTSkernel 5.11.5 内核升级文档二、安装服务 kind 配置文件信息 $ cat insta…

从零开始学习C++(0)

这是什么? 要先学习 C++,我们要先了解 C++ 是什么这是 Wiki Pedia 的解释,我们来提炼一下:C++ 是一种高级语言。 C++ 是 C 语言的扩展升级版。 C++ 是面向对象语言。下载环境 简单了解一下后,我们来下载 C++ 编译器环境。 目前有很多种编译器,例如:Dev-C++ CodeBlocks V…

vm linux 共享文件夹

虚拟机设置共享目录挂载mkdir /mnt/hgfs mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other cd /mnt/hgfs/ ls 留待后查,同时方便他人 联系我:renhanlinbsl@163.com

win10mysql服务丢失

虚拟机中安装的mysql突然连接不上了,点击计算机-管理,发现mysql服务都不见了。 使用命令行重新安装:mysqld.exe --install 又提示:Install/Remove of the Service Denied!,这个是权限问题,用管理员运行就好 到计算机-管理中找到msyql服务,点击启动,正常了纯属记录程序…

vue3.0启动报错

vue突然重启报错:Two output files share the same path but have different contents,按照网络方法各种依赖重新清除,再安装,不太行,仔细一看,透,vue大小写写错了

SpringBoot 快速入门

SpringBoot 快速入门创建空工程在空工程下创建一个 maven工程将该maven工程变成springboot 工程,只需要在pom文件中指定parent为 springboot的基础包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/P…

达梦数据库获取SQL真实的执行计划

一、set autotrace trace disql下执行set autotrace trace开启AUTOTRACE功能,执行SQL语句,并打印实际的执行计划。 SQL> set autotrace traceSQL> select a.employee_name, b.department_name from dmtest.t_emp a join dmtest.t_dept b on a.department_id = b.depart…

windows大全

1、快捷键 2、win+r msinfo32 系统信息 services.msc 服务 regedit 注册表编辑器 mstsc 远程桌面连接 gpedit.msc 本地组策略编辑器 msconfig 系统配置