【年报文本分析】第五辑:Python+Pytorch训练大语言模型,使用自训练模型完成文本分类任务——金星晔等(2024)《经济研究》大语言模型方法的复现

目录

  • 0 背景介绍
  • 1 环境及依赖库
  • 2 使用示例数据集,跑通大语言模型代码
  • 2.1 源代码下载
  • 2.2 代码的运行步骤
  • 3 更换预训练模型,寻找最优模型
  • 4 确定词典,筛选年报
  • 5 开始人工标注工作
  • 6 批量文本预测

0 背景介绍

金星晔老师等在《经济研究》2024年第3期发表了一篇题为《企业数字化转型的测度难题:基于大语言模型的新方法与新发现》,使用替代了传统的以词频为依据的企业数字化转型、数字技术能力等一系列变量的测量方法。

金星晔,左从江,方明月,李涛,聂辉华.企业数字化转型的测度难题:基于大语言模型的新方法与新发现[J].经济研究,2024,59(3):34-53.

根据此篇论文第五作者,人大教授聂辉华老师的预测,以及这篇论文发表的期刊和作者团队的影响力,大概率会对这一领域造成“创造性破坏”的力量。

在这里插入图片描述

从一个计算机本科毕业,经管类硕士在读学生的视角来看,这篇论文在方法上的创新的确解决了词频方法的种种弊端,不过这篇论文的方法的技术实现难度不大,就是用成熟的大语言模型训练模型,再用自训练模型完成文本分类任务,其实里边人工标注的时间成本才是最大的。

论文中使用的ERNIE模型也不一定在所有情境下都是最优的,百度飞桨其实也做的不成熟,目前来看其实是不如BERT模型,使用Pytorch来的成熟。

因此,本篇面向零基础、弱基础的经管学生,提供一套易上手方法,使用Pytorch框架和BERT模型对该论文进行复现,同时也提供基于ERNIE模型的复现思路。

1 环境及依赖库

我使用的是windows10,显卡是cpu版本,在Anaconda3中的spyder5中运行,python版本是3.9.12,以上硬件配置和软件环境对代码运行的影响较小,自行下载最新版本安装运行即可。

最主要的依赖库有两个,一个是Pytorch(1.8.0)版本,提供基本的模型训练,另一个是transformers(4.3.0),提供基本的文本转换。
下载方式:打开Anaconda3目录下的Anaconda Powershell Prompt,输入下方面临即可完成安装。

pip install torch==1.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers==4.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述
如果已经提前安装过了这两个库,可以先用uninstall卸载掉这两个库
其他依赖库,例如pandas、numpy、os等,一般使用Anaconda3自带的版本即可。

2 使用示例数据集,跑通大语言模型代码

做这个工作之前,我试过了网上很多方法,由于环境很难配置、莫名其妙的报错无法解决、整个流程的不完整等原因,付出了大概一个星期的沉默成本,最后机缘巧合搜到了这篇博客,用一下午就完成了所有工作。(确实是相见恨晚)

博客链接:【文本分类】利用bert-base-chinese训练自己的模型完成中文文本分类任务(pytorch实现)

2.1 源代码下载

为不侵犯该博主的知识产权成果,请进入上述博客,从该博客里的链接中下载所有代码、示例数据集以及预训练的中文Bert模型。

具体下载方式为:
1.点击下载仓库,访问该博主的github主页,如果访问不了使用csdn的github加速功能,进入后下载打包好后的zip压缩包,解压。
2.在解压后的文件夹里新建一个空文件夹,命名为bert-base-chinese,点击bert-base-chinese镜像下载,下载该页面所有文件(包含4个大文件,耐心等待)至该文件夹。
3.在解压后的文件夹里新建一个空文件夹,命名为bert_checkpoint。

示例数据还是比较大的,体量有20w,如果机子的显卡不是gpu版本,运行速度会特别慢,没必要在示例数据上边浪费过多时间,因此可以进入THUCNews文件夹,打开里边的train.txt(训练集),test.txt(测试集),dev.txt(验证集),删除掉里边大部分的数据。
我的显卡是cpu,训练集保留了1500条左右,测试集和验证集保留了200条左右,epoch为5时训练时间在20分钟左右,准确率在0.84左右。不过要注意的是,测试集的文本是把一类全放在一起,并不是乱序的,所以我的做法是每个类保留25个句子,这样不会让准确率太低。

2.2 代码的运行步骤

  • 1.使用Spyder打开bert_train.py,运行。
    该文件里的训练超参数部分可以更改数值,建议只对epoch值进行修改。该过程可能要持续一段时间,控制台会输出训练过程。训练好的模型保存在bert_checkpoint文件夹中。其中best.pt是准确率最高的模型文件,last.pt是最后一轮 epoch得到的模型文件,如果最后一轮准确率最高,二者就完全相同。
  • 2.打开bert_test.py,运行。
    调用best.pt,运用验证集验证该模型的效果,输出该模型的准确率。
  • 3.打开bert_tuili.py,运行。
    调用best.pt,使用单个句子进行预测,验证该模型是否可以对其他句子进行分类,检验模型效果。如果出现了关于input函数的报错,可以直接将while True后的代码改为下方代码,在text里输入待预测句子即可。
text = '此处输入待预测的句子'
bert_input = tokenizer(text, padding='max_length', max_length = 35, truncation=True,return_tensors="pt")
input_ids = bert_input['input_ids'].to(device)
masks = bert_input['attention_mask'].unsqueeze(1).to(device)
output = model(input_ids, masks)
pred = output.argmax(dim=1)
print(real_labels[pred])

3 更换预训练模型,寻找最优模型

金老师的论文里是对比ERNIE和BERT模型,以及传统的机器学习方法的准确率,从而确定使用ERNIE模型,所以在此提供基于ERNIE模型的复现思路。

其实使用不同模型,本质上只是预训练模型的不同,所以只需要更换预训练模型文件即可。

在下方链接的描述中,有作者提供的ERNIE的预训练模型文件的网盘地址,可以自行下载。

https://gitcode.com/649453932/Bert-Chinese-Text-Classification-Pytorch?utm_source=csdn_github_accelerator&isLogin=1
该地址其实是我第一次尝试的代码,跑通了但是缺少了最后预测的这一步

下载后,在代码的同级目录下,新建一个文件夹,命名为ERNIE,将下载好的预训练模型文件(pytorch_model.bin)放到该文件夹,,并从bert-base-chinese文件夹中复制一份其他文件至该文件夹即可。并新建一个文件夹,命名为ERNIE_checkpoint

随后将bert_get_data.py、bert_tuili.py中的bert_name改为’./ERNIE’,bert_train.py、bert_test.py、bert_tuili.py中的save_path全改为’./ERNIE_checkpoint’,重复2.2中的步骤即可。


以下部分目前我还没进行到,只做简单介绍,后续进行到了后再更新详细思路及代码。

4 确定词典,筛选年报

使用python批量析出年报中的“管理层讨论与分析”部分,并转换为文本数据。
根据句号和分号分隔文本,并根据文献,确定自己的词典,筛选待标记词库。
在这里插入图片描述
在这里插入图片描述

5 开始人工标注工作

这里只需要按照示例数据的格式,统一标记标准,安排研究人员标记即可。

在这里插入图片描述
在这里插入图片描述

6 批量文本预测

此处只需要改写bert_tuili.py文件,将其由单个预测变成批量预测,并将结果录入excel表格即可。
在这里插入图片描述

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

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

相关文章

十一、Redis持久化-RDB、AOF

Redis提供了两种持久化数据的方式。一种是RDB快照,另一种是AOF日志。RDB快照是一次全量备份,AOF日志是连续的增量备份。RDB快照是以二进制的方式存放Redis中的数据,在存储上比较紧凑;AOF日志记录的是对内存数据修改的指令文本记录…

AMEYA360代理品牌 | 海康存储产品介绍

海康存储成立于2017年,依托海康威视在视音频、成像采集与数据管理领域长达20年的技术沉淀和积累,聚焦工业控制、数据中心、视频监控、终端消费等应用场景,为企业客户及终端用户提供值得信赖的存储产品和解决方案。 目前,海康存储已…

我看看谁还不会AI模特试装!AI绘画电商系列保姆级教程(文末有福利)

不得不说,AI绘画在电商行业展现出了巨大的商业价值,就连专注电商的AI绘画工具都层出不穷。茉莉也试了不少AI商拍工具,主打「0门槛」「一键式」操作,但效果和自定义灵活性,根本比不上MidjourneyStable DIffusion这一王炸…

Comau柯马机器人维修故障分类

在柯马机器人的使用过程中,常见的是Comau机械手减速器故障。那么,我们一起来探讨一下柯马机械臂维修减速机故障的问题。Comau工业机械手减速器故障分类 1. 异响 机器人在工作过程中发出异常声响,可能是柯马机械臂减速器内部磨损或零件松动引起…

二分图及图匹配(图论学习总结部分内容)

文章目录 前言四、二分图及图匹配二分图常见模型二分图例题 e g 1 : eg1: eg1: [ Z J O I 2009 ZJOI2009 ZJOI2009​\][假期的宿舍](https://ac.nowcoder.com/acm/contest/34649/B)(二分图最大匹配板题) e g 2 : eg2: eg2:​​ [C-Going Home](https://ac.nowcoder.com/acm/con…

Compose容器编排示例

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录如下: 一、从源代码开始构建、部署和管理应用程序 1.1、创建项目目录并准备应用程序的代码及其依赖 1.2、创建Dockerfile 1.3、在…

电动汽车与 PLM:下一代转型的结合

汽车电气化是汽车行业持续变革的驱动力,因此电动汽车 (EV) 行业成为当今最令人兴奋、最相关和最必要的创新领域之一。快速且有利可图地设计电动汽车及其零部件,同时使其受到消费者的青睐,是一项艰巨的挑战。因此,电动汽车行业企业…

体验GM CHM Reader Pro,享受高效阅读

还在为CHM文档的阅读而烦恼吗?试试GM CHM Reader Pro for Mac吧!它拥有强大的功能和出色的性能,能够让你轻松打开和阅读CHM文件,享受高效、舒适的阅读体验。无论是学习、工作还是娱乐,GM CHM Reader Pro都能成为你的得…

python数据分析——数据分类汇总与统计

数据分类汇总与统计 前言一、Groupby分类统计语法按列分组示例一示例二示例三 遍历各分组示例 使用字典和Series分组示例 使用函数分组示例 二、数据聚合groupby的聚合函数示例一示例二 逐列及多函数应用示例一示例二 返回不含行索引的聚合数据示例 三、一般性的“拆分-应用-合…

数字展厅设计需要注意哪些细节

1、用户体验 数字展厅是为了让用户感受到更多的信息和更好的体验,所以设计数字展厅必须以用户体验为中心,从用户的角度考虑,设计出符合用户需求和品牌形象的数字展示空间。 2、展示内容 数字展厅的展示内容是吸引用户的关键,要注重…

(五)STM32F407 cubemx IIC驱动OLED(2)硬件篇

这篇文章主要是个人的学习经验,想分享出来供大家提供思路,如果其中有不足之处请批评指正哈。   废话不多说直接开始主题,本人是基于STM32F407VET6芯片,但是意在你看懂这篇文章后,不管是F1,F4,H7等一系列系统硬件IIC配…

Docker 基础认识

文章目录 概念铺垫(1)概念铺垫(2)概念铺垫 (3)概念铺垫(4)Docker 定义Docker 特点Docker 架构 概念铺垫(1) 虚拟化相关概念 物理机:实际的服务器…

WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化

今天明月给大家分享一下 WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化,无论你的站点采用是 WordPress 还是 Typecho,都要用到 MySQL/MariaDB 数据库,我们以 MySQL 为主(MariaDB 其实跟 MySQL 基本没啥大的区别&#xff0…

JUC下的Java java.util.concurrent.Locks详解

java.util.concurrent.locks 包介绍 java.util.concurrent.locks 包是Java并发编程中非常重要的一个部分,它提供了比内置synchronized关键字更为灵活的锁机制,用于多线程环境下的同步控制。这个包中最核心的是Lock接口,以及一系列实现类&…

如何通过香港站群服务器高效实现网站内容的快速更新?

如何通过香港站群服务器高效实现网站内容的快速更新? 在当今激烈的数字市场竞争中,网站内容的快速更新对于吸引用户和保持竞争优势至关重要。而利用香港站群服务器实现这一目标,则具备诸多优势。下面将详细探讨如何通过香港站群服务器高效实现网站内容…

thinkphp6使用layui分页组件做分页效果

博主用的是layui2.9.8的版本,但这个版本的分页组件是动态效果的,但我需要的是静态分页,所以我自己封装了一个生成layui的分页代码生成代码。代码如下: 1、先创建文件,路径是extent/layui/LayuiPage.php,加…

基于MetaGPT的LLM Agent学习实战(一)

前言 我最近一直在做基于AI Agent 的个人项目, 因为工作加班较多,设计思考时间不足,这里借着Datawhale的开源学习课程《MetaGPT智能体理论与实战》课程,来完善自己的思路,抛砖引玉,和各位开发者一起学习&am…

Run ‘conda init‘ before ‘conda activate‘

使用conda activate 虚拟环境名称的时候提示:Run conda init before conda activate 解决办法: 首先需要确保是管理员身份运行这个cmd窗口。 然后,现在执行一下:conda init 命令,最后再执行:conda activate…

纯血鸿蒙APP实战开发——首页下拉进入二楼效果案例

介绍 本示例主要介绍了利用position和onTouch来实现首页下拉进入二楼、二楼上划进入首页的效果场景,利用translate和opacity实现动效的移动和缩放,并将界面沉浸式(全屏)显示。 效果图预览 使用说明 向下滑动首页页面超过触发距…

冯喜运:5.13黄金原油震荡整理是涨还是跌?今日走势分析

【黄金消息面分析】;自5月初以来,黄金和白银一直在享受需求的回归,买家在过去几天加大了力度,一度推动金价重返2370美元上方,白银重返28.5美元上方。不过,经过几天的盘整后,黄金白银价格双双下跌。然而&…