基于大模型零代码1小时完成国标数据分级分类近义词库构建及思考

  1. 任务背景及困难分析      

        因项目要求,需要对国家标准国民经济行业分类-GB/T 4754-2017【1】进行近义词库的构建,时间非常紧,只给了很短时间进行处理,目标是构建一份中等粒度的行业近义词库。

       搁在以前,可能需要点时间写代码处理,但在大模型普及的时代,这类工作可以显著被提效。本文主要是记录如何通过零代码实现对目标文件的近义词库构建,给非专业数据处理工作者提供一些启发。

        因为项目系统本身的一些限制,这里暂不探讨引入embedding模型实现基于向量的匹配方案。且本文的初衷是,针对各类群体,只需要会中文,就能利用大模型快速解决数据处理的问题。

        首先看一下国民经济行业一级分类长啥样:

代码分类
A农、林、牧、渔业
B采矿业
C制造业
D电力、热力、燃气及水生产和供应业
E建筑业
F批发和零售业
G交通运输、仓储和邮政业
H住宿和餐饮业
I信息传输、软件和信息技术服务业
J金融业
K房地产业
L租赁和商务服务业
M科学研究和技术服务业
N水利、环境和公共设施管理业
O居民服务、修理和其他服务业
P教育
Q卫生和社会工作
R文化、体育和娱乐业
S公共管理、社会保障和社会组织
T国际组织

表1. 国民经济行业一级分类

        一开始看到这个分类,感觉无从下手,一级分类果然是大类,不清楚每一个大类具体会包含哪些子类。

        由于我们的目标是构建中等粒度的行业近义词库。可能一开始会想,能不能直接找一下github上的一些近义词库,然后分门别类匹配到各个类目中,但搜索了很多资料,发现几乎都不可用。原因主要有三点:(1)近义词库太细粒度,比如农业的数据,细到“南蛇藤”、“绿尾大蚕蛾”、“佛肚苣苔”等;(2)数据太乱,猜测是用了word2vec类似模型在大规模数据上直接跑的结果,聚出来的词库没有做进一步的清洗,一股脑提供出来。我们的场景由于性质特殊,对于词库的准确性要求很高;(3)和行业类别很难搭上边,几乎不会在客户搜索数据中出现,和实际业务不契合。

2. 解决思路及实践

2.1 解决思路

        既然短平快利用现有的近义词库,出现了粒度、质量、业务等问题,因此只能自己动手构建。远水解不了近渴,为了梳理国民经济行业近义词库,且贴近业务需要,我们继续对国标文件进行分析,发现国标文件中,提供了非常好的数据,如图1所示。        

        图1. 国标文件结构及类目细则        

        可以看到类目结构中包含了大类、中类、小类,类别名称结构对应该结构,如图1的右下角所示。很容易构建“林业-林木-造林-森林”,“育种-育苗”,“经营-管护-改培”、“木材-竹材”这类同义词对。因此完全可以基于该数据构建一份短期内满足业务需求的近义词库了。

2.2 实践

处理步骤如下:

第一步:提取pdf中的数据

采用PDFminer【2】,将pdf文件转换为文本文件

图2.  PDFminer工具

使用起来非常简单,两行代码

pip install pdfminerpdf2txt.py ~/pdfminer/samples/gb_category.pdf -o ~/category.txt

运行之后就获得了纯文本的内容,但格式比较杂乱,不能直接用,接下来就需要用大模型来帮我们清洗文件。

        图2.  PDF解析之后得到的txt文件(格式比较乱)

第二步:清洗txt文件

给出提示语:

你现在角色为专业的数据工程师,请帮我,对categoty.txt文件去除空格、特殊字符、空行,不用给出脚本代码,只需要输出处理后的可下载的文本,需要保持原始的换行格式

处理后的文件格式:

    图3.  初步清洗后结果

        但还包含了很多无关的内容,比如国标格式、前言、类目描述信息,观察一下数据内容的特点,只需要保留数字开头后的一行信息,并且根据数字本身的特点,另外可以看到021, 022等内部的内容,是可以单独作为一个数据块来考虑,数据块内的关键词具备同义词的特性。当然你也可以先手动快速删除一些可以删除的内容,再进行大模型处理,可能更快更准确。

        有了以上的分析,就可以开始提示语的编写了。

请对文件进行分析,将每一对三位数字之间的内容作为一个单独的内容块进行保存,块与块之间以空格隔开。内容块中的内容为四位数字后面的一行。其他的可以丢弃。不需要保留数字本身。为了便于理解,这里给出示例,之后请按照该示例所体现的抽取规则对全文进行处理。

原始数据:

02
林业
021
林木育种和育苗
0211
林木育种
指应用遗传学原理选育繁殖林木良种和繁
殖林木新品种核心的栽植材料的林木遗传改良
活动
0212
林木育苗
指通过人为活动将种子穗条或植物其他组
织培育成苗木的活动
022
0220
造林和更新
指在宜林荒山荒地荒沙采伐迹地火烧迹
地疏林地灌木林地等一切可造林的土地上
通过人工造林人工更新封山育林飞播造
林等方式培育和恢复森林的活动
023
森林经营管护和改培
0231
森林经营和管护
指为促进林木生长发育在林木生长的不同
时期进行的促进林木生长发育的活动
0232

处理后数据:

林木育种和育苗
林木育种
林木育苗
 

造林和更新
 

森林经营管护和改培

森林经营和管护

要求:直接生成可以下载的处理后的文件。

处理后的文件格式如图4所示,可以看到进一步清洗后的数据,已经接近我们想要的结果了。

    图4.  进一步清洗后结果

第三步:对每一个数据块进行分词并拼接成行进行展示

        前述的大模型使用的是gpt4, 后续的操作是基于豆包进行处理,豆包国内使用起来比较方便,且完全免费。        

图5.  分词处理后的初步同义词列表结果

        经过前三步处理后,我们其实已经拿到一份比较靠谱的行业同义词列表了,接下来做一下人工后处理,或者再输入到大模型中,做提示词引导精洗。

        这里贴一下最后处理的国标行业同义词库结果,每个词都会作为key一次,value为同义词列表。

图6.  最终行业近义词库

3. 关于大模型的一些思考

3.1 Software2.0(软件2.0)的提出

        以上的实践例子,是在一个小时内零代码完成,得到的结果也初步可以接受。写这个例子,其实也是想表达一些对于大模型在后续学习、工作中的一些思考,前两天看到关于Software2.0【3,4,5】(软件2.0)的文章,是指应用范式的改变。放在以前很难想象,通过零代码快速实现对指定数据的满足处理要求的文本结果,可以说本次实践是一次完全面向大模型的提示词适配的任务处理。

        Software2.0(软件2.0)对于自己思维模式有很大的冲击,所谓Software2.0是完全基于神经网络的软件,最早是OpenAI 创始人Karpathy在2017年提及的概念【4】,他说:人们通常认为神经网络只是机器学习中的一个工具,不幸的是这种理解是只见树木不见森林。神经网络代表了软件开发方式的一次根本性的转变,它们是软件2.0。在软件1.0,源代码是由程序员编写,这些源代码经过编译,最终转换成一个二进制文件,这个文件能够执行有用的工作。在软件2.0中,源代码就是数据集和神经网络,而数据集定义了神经网络的参数,也定义了期望的行为。

        号称全球第一个Software2.0架构的应用(https://genweb.rahul.gs/)诞生,做的事情很简单,就是提供一份网页的生成提示语,直接生成html的代码。给一个示例如下:

app提示语:

Create a When2Meet clone for scheduling group meetings.

Features:
     1. add two input fields for the start and end time
     2. add another input field for date
     3. add an input field for the user's name
     4. when user submits, add that information in the body of the app and reset the form

图7. genweb自动生成功能网页

   genweb的特点:

  • 全自然语言编程。

  • 没有后端逻辑,全部交给大模型处理。

  • 也没有前端渲染,全部实时生成。

          

        图8. 数据定义AI - > AI创造应用(图来自【3】)

3.2 软件 2.0 的益处

        为何更倾向于将复杂程序移植到软件 2.0 中?软件 2.0 具有以下特点:

        计算同质性。一个典型的神经网络,在一阶近似下,仅由两种操作组成:矩阵乘法和零阈值(ReLU)。与经典软件的指令集相比,其更加异质和复杂。因为您只需为少量核心计算原语(例如矩阵乘法)提供软件 1.0 实现,所以更容易做出各种正确性/性能保证。

        易于嵌入硅片。作为一个推论,由于神经网络的指令集相对较小,用定制的专用集成电路(ASIC)、神经形态芯片等将这些网络实现得更接近硅片要容易得多。当低功耗智能在我们周围普及时,世界将会改变。例如,小型、廉价的芯片可以带有预先训练的卷积网络、语音识别器和 WaveNet 语音合成网络,都集成在一个您可以连接到各种设备的小“原型大脑”中。

        恒定运行时间。典型的神经网络前向传播的每次迭代所需的浮点运算次数完全相同。与代码可能通过一些庞大的 C++代码库采取的不同执行路径相比,没有任何可变性。当然,可以有动态计算图,但执行流程通常仍然受到显著限制。这样,几乎可以保证永远不会陷入意外的无限循环。恒定内存使用。与上述相关,任何地方都没有动态分配的内存,因此几乎不可能出现交换到磁盘或内存泄漏的情况,无需在代码中查找这些问题。        

        高度可移植。与经典的二进制文件或脚本相比,一系列矩阵乘法在任意计算配置上运行要容易得多。

        非常灵活。如果有一个 C++代码,并且有人希望使其速度提高一倍(如果需要,可以以性能为代价),为新规范调整系统将非常困难。然而,在软件 2.0 中,我们可以获取我们的网络,删除一半的通道,重新训练,然后——它的运行速度正好提高一倍,效果稍差。相反,如果碰巧获得更多的数据/计算资源,可以立即通过添加更多通道并重新训练来使程序运行得更好。

        模块可以融合成最优整体。我们的软件通常被分解为通过公共函数、API 或端点进行通信的模块。然而,如果两个原本分别训练的软件 2.0 模块相互作用,我们可以轻松地通过整个过程进行反向传播。想想如果网络浏览器可以自动重新设计低级别系统指令 10 层以提高网页加载效率,或者导入的计算机视觉库(例如 OpenCV)可以根据特定数据进行自动调整,那会多么神奇。在 2.0 中,这是默认行为。

        最后,也是最重要的是,在很大一部分有价值的垂直领域中,神经网络是比人类能想出的任何代码都更好的一段代码,目前至少涉及与图像/视频和声音/语音有关的任何内容。

3.3 软件 2.0 的局限性

        2.0 堆栈也有其自身的一些缺点。在优化结束时,留下了运行良好的大型网络,但很难说清楚其工作原理。在许多应用领域,将面临选择使用我们理解的 90%准确率的模型,还是我们不理解的 99%准确率的模型。

        2.0 堆栈可能以难以理解和令人尴尬的方式失败,或者更糟的是,它们可能“默默失败”,例如,在训练数据中默默地采用偏差,而在大多数情况下,当它们的规模轻易达到数百万时,很难对其进行适当的分析和检查。

        最后,我们仍在发现这个堆栈的一些特殊属性。例如,对抗性示例和攻击的存在突出了这个堆栈的难以理解的性质。

3.4. 期待

        虽然新的事物诞生,总会伴随着曲折和非议、质疑,但你不能装成乌龟,要积极去拥抱。李飞飞提到未来5年的两个重大突破方向,其中之一是AI app。而且随着大模型技术的飞快演变进化,开源技术的迅速发展,很多之前只有大公司能做的东西,现在个人也可以在短时间内创作出来,我觉得未来会诞生越来越多的三人公司,甚至一人公司。一场新的变革已经在发生,而且是以极快的速度。这将会深刻改变我们的思维模式和做事方式,非常激动。

4.参考材料

【1】国家标准国民经济行业分类-GB/T 4754-2017

【2】PDFminer

【3】应用开发范式或将改变! 从全球首个Software2.0架构应用说起

【4】Software 2.0

【5】All You Need To Know About Software 2.0

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

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

相关文章

Linux 安装mysql-client-core-8.0

在Linux上安装mysql-client-core-8.0 安装流程 下面是安装mysql-client-core-8.0的步骤和相应的命令: 步骤1:更新系统软件源 我们首先需要更新系统的软件源,以确保我们能够获取到最新的软件包列表。使用以下命令更新软件源: …

Ansible——inventory 主机清单

1、inventory 含义 Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 如果是名称类似的主机,可以使用列表的方式标识各个主机。 vim /etc/ansible/hosts [webservers] 192.168.20.11:222…

平凯星辰亮相 2024 中国国际金融展,发布银行交易明细查询白皮书

7 月 19 日至 21 日,备受瞩目的 2024 中国国际金融展(以下简称金融展)在北京国家会议中心隆重举办。作为中国乃至亚洲最大的金融科技展会,本届金融展以“数字金融引领未来,守正创新共筑金融新生态”为主题,…

C++_单例模式

目录 1、饿汉方式实现单例 2、懒汉方式实现单例 3、单例模式的总结 结语 前言: 在C中有许多设计模式,单例模式就是其中的一种,该模式主要针对类而设计,确保在一个进程下该类只能实例化出一个对象,因此名为单例。而…

temu数据分析怎么做,temu选品数据分析怎么做

在竞争激烈的电商市场中,数据分析已成为商家提升销售业绩、优化经营策略的重要工具。特别是对于Temu平台的卖家而言,掌握数据分析技巧,特别是选品数据分析,更是至关重要。本文将为您详细解析如何在Temu平台上进行数据分析&#xf…

Docker 安全及日志管理(包含SSL证书)

目录 一、Docker 存在的安全问题 二、Docker 架构缺陷与安全机制 三、Docker 安全基线标准 四、容器相关的常用安全配置方法 五、限制流量流向 六、镜像安全 七、DockerClient 端与 DockerDaemon 的通信安全 https的单向认证流程 https的双向认证流程 八、DockerClie…

Ubuntu 22.04.4 LTS (linux) GoAccess 分析 Nginx 日志

1 安装goaccess sudo apt-get update sudo apt-get install goaccess 2 控制台运行 goaccess -a -d -f /usr/local/openresty/nginx/logs/access.log -p /etc/goaccess/goaccess.conf #sudo vim /etc/goaccess/goaccess.conf time-format %H:%M:%S date-format %d/%b…

iOS ------ Block的相关问题

Block的定义 Block可以截获局部变量的匿名函数&#xff0c; 是将函数及其执行上下文封装起来的对象。 Block的实现 通过Clang将以下的OC代码转化为C代码 // Clang xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m//main.m #import <Foundation/Foundation.…

3.2、数据结构-数组、矩阵和广义表

数组结构 数组是定长线性表在维度上的扩展,即线性表中的元素又是一个线性表。N维数组是一种“同构”的数据结构,其每个数据元素类型相同、结构一致。 一个m行n列的数组表示如下: 其可以表示为行向量形式&#xff08;一行一行的数据&#xff09;或者列向量形式&#xff08;一…

Nginx 怎样处理请求的故障转移?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 怎样处理请求的故障转移&#xff1f;一、理解故障转移的重要性二、Nginx 中的故障检测机制三、Nginx 中的请求分配策略四、Nginx 中的故障转移实现方式五、…

Shell脚本编程(一)

目录 一、Shell命令行的书写规则 二、编写/修改权限及执行shell程序的步骤 1、编写简单Shell程序 2、建立可执行程序 3、执行Shell程序 4、实例 三、Shell程序中使用参数 1、位置参数 2、内部参数 3、实例一 4、实例二 一、Shell命令行的书写规则 在执行Shell命令时…

搭建本地私有知识问答系统:MaxKB + Ollama + Llama3 (wsl网络代理配置、MaxKB-API访问配置)

目录 搭建本地私有知识问答系统:MaxKB、Ollama 和 Llama3 实现指南引言MaxKB+Ollama+Llama 3 Start buildingMaxKB 简介:1.1、docker部署 MaxKB(方法一)1.1.1、启用wls或是开启Hyper使用 WSL 2 的优势1.1.2、安装docker1.1.3、docker部署 MaxKB (Max Knowledge Base)MaxKB …

便携式气象仪:科技赋能,让气象观测更智能

随着科技的快速发展&#xff0c;越来越多的领域受益于技术的进步。其中&#xff0c;气象观测领域也不例外。传统的气象观测设备虽然精确可靠&#xff0c;但往往体积庞大、携带不便&#xff0c;且需要专业人员进行操作和维护。而便携式气象仪的出现&#xff0c;则打破了这一局限…

在WPF中使用WebView2详解

Microsoft Edge WebView2 Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎&#xff0c;以在本机应用中显示 web 内容。 使用 WebView2 可以在本机应用的不同部分嵌入 Web 代码&…

Golang | Leetcode Golang题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; type PeekingIterator struct {iter *Iterator_hasNext bool_next int }func Constructor(iter *Iterator) *PeekingIterator {return &PeekingIterator{iter, iter.hasNext(), iter.next()} }func (it *PeekingIterator) hasNe…

学习记录day19——数据结构 查找算法

概念 在给定数据元素的某个值&#xff0c;在查找表中确定一个其关键字等于给定值的数据元素的操作&#xff0c;叫做查找 查找的分类 顺序查找:将待查找数据&#xff0c;进行全部遍历一遍&#xff0c;直到找到要查找的元素 折半查找:每次都去除一半的查找范围的查找方式&#x…

vue3响应式用法(高阶性能优化)

文章目录 前言&#xff1a;一、 shallowRef()二、 triggerRef()三、 customRef()四、 shallowReactive()五、 toRaw()六、 markRaw()七、 shallowReadonly()小结&#xff1a; 前言&#xff1a; 翻别人代码时&#xff0c;总结发现极大部分使用vue3的人只会用ref和reactive处理响…

mysql-bin 恢复数据库

能看到这里的同学估计肯定摊上大事了吧&#xff01;不要慌&#xff0c;一定要冷静&#xff0c;记录一下作者的大事件吧&#xff0c;黑客通过SQL注入的方式执行了一段SQL &#xff1a; DROP DATABASE ****** 后果就是导致整个数据库被删了&#xff0c;当时心是拔凉拔凉的&#x…

在jmeter中使用javascript脚本

工作上遇到一个压力测试的需求&#xff0c;需要测试几个考试相关的接口。其中有一个获取试题详情的接口&#xff0c;和一个提交答题信息的接口。后一个接口以上一接口的返回内容为参数&#xff0c;添加上用户的答案即可。jmeter提供了非常多的方式可以实现该需求&#xff0c;这…

【深度学习】大模型GLM-4-9B Chat ,微调与部署(3) TensorRT-LLM、TensorRT量化加速、Triton部署

文章目录 获取TensorRT-LLM代码&#xff1a;构建docker镜像并安装TensorRT-LLM&#xff1a;运行docker镜像&#xff1a;安装依赖魔改下部分package代码&#xff1a;量化&#xff1a;构建图&#xff1a;全局参数插件配置常用配置参数 测试推理是否可以代码推理CLI推理 性能测试小…