LLM应用实战: 产业治理多标签分类
1. 背景
许久未见,甚是想念~
近期本qiang~换了工作,处于新业务适应期,因此文章有一段时间未更新,理解万岁!
现在正在着手的工作是产业治理方面,主要负责其中一个功能模块,即按照产业治理标准体系,针对企业介绍及其专利数据进行多标签分类。
本期的干货就是分享关于如何基于LLM实现数量多、层级多的多标签分类的实战经验,各位读者可以参考借鉴。
2. 数据介绍
2.1 标签体系
产业治理方面的标签体系共计200+个,每个标签共有4个层级,且第3、4层级有标签含义的概括信息。
2.2 原始数据
- 企业官网介绍数据,包括基本介绍、主要产品等
- 企业专利数据,包括专利名称和专利摘要信息,且专利的数据量大。
2.3 LLM选型
经调研,采用Qwen2-72B-Instruct-GPTQ-Int4量化版本,占用显存更少,且效果与非量化相当,具体可见Qwen2官网说明。
3. 技术难点
- 团队无标注人员,因此无法使用Bert类小模型完成多标签分类任务
- 涉及垂直领域,即使有标注人员,也需要很强的背景知识,方能开展标注
- 标签数量多,层次深,且项目对准确率有要求
4. 方案设计
由于缺少标注人员,且对标注员的背景要求高,因此只能选择LLM进行任务开展。
标签体系中每个标签的含义不够具象,属于总结性的,针对特定场景,LLM可能无法准确分类。因此,可以考虑抽取特定领域的关键词,作为基础知识,以实现RAG。
企业官网及专利数据量巨大,调用LLM存在耗时超长的问题,好在有2台8卡的机器,可以做分布式推理,提高响应性能。
总体的方案设计如下:

图虽然简单明了,但其中的细节还是值得玩味的。
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. 功能特点
- 为什么使用关键词进行RAG?
答:关键词虽然无法直接映射对应的标签(客官可以想想为什么?),但关键词有较强的背景提示,因此prompt中关键词有值的标签筛选出来的概率更大一些
- 关键词语义匹配为什么还需要增加编辑距离?
答:因为语义相似度模型一般针对较短文本的比较,针对词的比较效果较差,因此引入编辑距离,提高词级匹配度
- 同一个关键词对应多个标签的场景如何解决?
答:通过底层的LLM进行分辨具体应该属于哪一个
- 分类RAG是如何考虑的
答:由于标签数量较多,层级较深,而且LLM的输入长度有限,因此采用化繁为简(或先分后合)的方式,将整个标签体系先进行分组,然后调用LLM输出每个分组输出结果,再对结果进行整合,再次调用LLM进行细粒度分类确认
- 分类RAG先粗后细有什么好处?
答:粗粒度分类,LLM只能观察到给定的一组标签,而看不到整体标签,粗粒度划分好之后,细粒度再次确认,有助于提高分类的准确性。
本qiang~的实验结果表明,准确率可以从70%-80%,上升到85%-90%,当然该实验只是针对该特定场景,但缺点是增加了LLM的响应时间。
- 标签划分N组后调用LLM,如何提高响应性能?
答:由于部署的是Qwen2量化版,且有2台8张卡可以使用,因此起了8个vllm进程,用haproxy做请求转发,从而提高LLM的响应性能。实验表明,7W+数据,只需要耗时1天左右即可跑完结果,单节点非量化版本,可能需要几个礼拜才能跑完。
- 具体效果层面如何?
答:基于这一套方案,针对每个标签进行随机采样抽检,准确率能保持在85%-95%之间
- 为什么不增加fewshot呢?
答:此处的关键词就类似于fewshot示例,若直接以公司或专利作为fewshot,首先所属标签示例范围较广,不好整理,其次严重影响LLM的响应时间,因为输入长度变长。
- 人工未整理的关键词场景,如何确保分类准确?
答:依赖于底层LLM能力,这就是为什么选择Qwen2-72B的原因,当前Qwen2-72B的效果属于业界翘首。
6. 未来优化点
如果想要进一步提升准确率,当前方案已经预留口子,即标签的详细说明及垂直领域关键词的人工整理。标签说明越详细,关键词整理的越完备,分类的准确性就会越高。
但引出的问题是,关键词的人工整理耗时耗力,如何进一步减少人工整理,成为下一步的优化方向。
7. 总结
一句话足矣~
本文主要是采用LLM实现产业治理领域的多标签分类任务,包括具体的方案,LLM工程层面优化,实现效果以及未来的优化方向。
读者可以参考这套方案,尝试解决LLM实现多标签分类的任务,尤其是标签种类繁多,且层级较深的情况。
如有问题或者想要合作的客官,可私信沟通。
8. 参考
(1) Qwen2: https://qwen.readthedocs.io/zh-cn/latest/

LLM应用实战: 产业治理多标签分类的更多相关文章
- 实战caffe多标签分类——汽车品牌与车辆外观(C++接口)[详细实现+数据集]
前言 很多地方我们都需要用到多标签分类,比如一张图片,上面有只蓝猫,另一张图片上面有一只黄狗,那么我们要识别的时候,就可以采用多标签分类这一思想了.任务一是识别出这个到底是猫还是狗?(类型)任务二是识 ...
- scikit-learn一般实例之八:多标签分类
本例模拟一个多标签文档分类问题.数据集基于下面的处理随机生成: 选取标签的数目:泊松(n~Poisson,n_labels) n次,选取类别C:多项式(c~Multinomial,theta) 选取文 ...
- CSS.02 -- 样式表 及标签分类(块、行、行内块元素)、CSS三大特性、背景属性
样式表书写位置 内嵌式写法 <head> <style type="text/css"> 样式表写法 </style> </head&g ...
- html(常用标签,标签分类),页面模板, CSS(css的三种引入方式),三种引入方式优先级
HTML 标记语言为非编程语言负责完成页面的结构 组成: 标签:被<>包裹的由字母开头,可以结合合法字符( -|数字 ),能被浏览器解析的特殊符号,标签有头有尾 指令:被<>包 ...
- Python-HTML 最强标签分类
编程: 使用(展示)数据 存储数据 处理数据 前端 1. 前端是做什么的? 2. 我们为什么要学前端? 3. 前端都有哪些内容? 1. HTML 2. CSS 3. JavaScript 4.jQue ...
- 前端 HTML 标签分类
三种: 1.块级标签: 独占一行,可设置宽度,高度.如果设置了宽度和高度,则就是当前的宽高.如果宽度和高度没有设置,宽度是父盒子的宽度,高度根据内容填充. 2.行内标签:在一行内显示,不能设置宽度,高 ...
- htm基础知识,css的链入以及标签分类。
<!DocTYPE> DOC--Document 文档 TYPE 类型 文档类型 告诉浏览器这是什么文件 单标签: meta 设置 charset 设置编码 双标签: 开始 ...
- 如何用softmax和sigmoid来做多分类和多标签分类
首先,说下多类分类和多标签分类的区别 多标签分类:一个样本可以属于多个类别(或标签),不同类之间是有关联的,比如一个文本被被划分成“人物”和“体育人物”两个标签.很显然这两个标签不是互斥的,而是有关联 ...
- 前端入门html(常用标签及标签分类)
day47 参考:https://www.cnblogs.com/liwenzhou/p/7988087.html 任何标签都有有三个属性:ID,class.style <!DOCTYPE ht ...
- 使用 scikit-learn 实现多类别及多标签分类算法
多标签分类格式 对于多标签分类问题而言,一个样本可能同时属于多个类别.如一个新闻属于多个话题.这种情况下,因变量yy需要使用一个矩阵表达出来. 而多类别分类指的是y的可能取值大于2,但是y所属类别是唯 ...
随机推荐
- Windows查看电源使用情况
这里使用Windows自带的东西查看电源使用情况. 1.按Win键+R,输入cmd,回车. 2.输入Powercfg /batteryreport回车. 3.根据提示找到电池报告文件,双击打开即可.
- C++判断当前程序是否运行在Windows展台(Kiosk)模式下
Windows有一个展台(Kiosk)模式.展台模式可以使Windows作为数字标牌进行使用.具体请参考Windows 展台 配置完展台模式,重启设备后,Windows会以全屏的方式运行展台应用,无法 ...
- 嵌入式编程中使用qemu能够做什么?
嵌入式编程中使用qemu能够做什么? 背景 学习QEMU以后,为了拓展视野,才发现QEMU可以做这么多的事情. 原文链接(有删改):https://www.eet-china.com/mp/a5634 ...
- 抓取豆瓣电影TOP250标题-年份-评分-评分人数
import csv import re import requests headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; ...
- Excel插件之连接数据数据库秒数处理,办公轻松化
接上文,对excel连接数据库需求的进一步优化: Excel 更改数据同步更新到Mysql数据库 1.通过mysql for excel 插件的思路,了解到一个新的插件 sqlcel,通过这个插件ex ...
- html2canvas 页面截屏
$(document).ready(function () { $(".example1").on("click", function (event) { va ...
- yb课堂 前端项目通用底部选项卡 CommonsFooter 《三十六》
学会看cube-UI文档,并掌握cube-tab-bar开发 前端需求分析 底部导航 首页Banner 首页视频列表 视频详情模块 注册模块 登陆模块 个人信息模块 下单模块 订单列表模块 文档地址: ...
- 编程好帮手:通义灵码(TONGYI Lingma),是阿里云出品的一款基于通义大模型的智能编码辅助工具
通义灵码(TONGYI Lingma),是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写.自然语言生成代码.单元测试生成.代码注释生成.代码解释.研发智能问答.异常报错排查 ...
- 全网最适合入门的面向对象编程教程:18 类和对象的 Python 实现-多重继承与 PyQtGraph 串口数据绘制曲线图
全网最适合入门的面向对象编程教程:18 类和对象的 Python 实现-多重继承与 PyQtGraph 串口数据绘制曲线图 摘要: 本文主要介绍了 Python 中创建自定义类时如何使用多重继承.菱形 ...
- Element-plus的徽章组件el-badge
Element-plus的徽章组件el-badge Element Plus 是一个基于 Vue.js 的 UI 组件库,它提供了一系列的常用 UI 组件供开发者使用.其中,徽章组件(el-badge ...