FinBERT的ESG分类怎么用?快速识别企业年报中环境、社会与治理内容的完整教程
【免费下载链接】FinBERTA Pretrained BERT Model for Financial Communications. https://arxiv.org/abs/2006.08097项目地址: https://gitcode.com/gh_mirrors/finbe/FinBERT
FinBERT是一个在金融通信文本上预训练的 BERT 语言模型,其官方模型FinBERT-ESG可直接用于 ESG 分类任务——只需输入一句年报文本,即可自动判断它属于环境(Environmental)、社会(Social)、治理(Governance)还是无关内容。本文面向新手,手把手带你完成 FinBERT ESG 分类从安装、调用到微调的完整流程。
什么是 FinBERT?为什么选它做 ESG 分类
FinBERT 由香港科技大学团队发布(相关论文:arXiv 2006.08097),专为金融文本理解而生。它的预训练语料规模达49 亿 token(4.9B tokens),覆盖三大金融文本来源:
| 语料类型 | 规模 | 说明 |
|---|---|---|
| 公司年报 10-K & 10-Q | 25 亿 token | 年报与季报,ESG 内容的主要来源 |
| 财报电话会实录 | 13 亿 token | 管理层与分析师的问答记录 |
| 分析师研报 | 11 亿 token | 券商研究与投资建议文本 |
正因为 FinBERT 在企业年报上"泡过",它对年报语境中的 ESG 表述理解更准确,在 ESG 分类等金融 NLP 任务上的表现优于传统机器学习与通用 BERT 微调模型。项目目前提供 4 个官方模型:
- FinBERT-Pretrained:金融文本预训练模型(用于二次微调)
- FinBERT-Sentiment:金融情感分析
- FinBERT-ESG:ESG 分类(本文主角)
- FinBERT-FLS:前瞻性陈述(FLS)识别
FinBERT-ESG 能识别哪些内容?
FinBERT-ESG 是在2,000 条人工标注句子(来自企业年报与 ESG 报告)上微调得到的分类模型:
- 输入:一段金融文本(建议以句子为单位)
- 输出:
Environmental/Social/Governance/None四类标签之一,并附带置信度分数
也就是说,它可以帮你批量扫描年报,自动把"我们致力于降低运营对环境的负面影响"归入环境类,把"公司年报由独立会计师事务所审计"归入治理类,而"截至 2012 年 12 月 31 日,某贷款余额为 4.925 亿美元"这类纯财务数字则会被判为无关(None)。
三步快速上手:FinBERT-ESG 分类环境、社会与治理文本
第 1 步:获取项目并安装依赖
先克隆项目仓库,然后安装requirements.txt中列出的 4 个核心依赖(transformers、torch、numpy、scikit-learn):
git clone https://gitcode.com/gh_mirrors/finbe/FinBERT pip install -r requirements.txt依赖版本以 requirements.txt 为准,其中transformers==4.18.0与演示代码经过实测验证。
第 2 步:加载 FinBERT-ESG 模型
模型权重托管在 Hugging Face 上,模型名为yiyanghkust/finbert-esg,通过 transformers 一行加载即可(注意标签数为 4):
from transformers import BertTokenizer, BertForSequenceClassification, pipeline finbert = BertForSequenceClassification.from_pretrained('yiyanghkust/finbert-esg', num_labels=4) tokenizer = BertTokenizer.from_pretrained('yiyanghkust/finbert-esg') nlp = pipeline("text-classification", model=finbert, tokenizer=tokenizer)第 3 步:对年报文本运行 ESG 分类
把句子列表直接交给 pipeline,即可得到每条文本的标签与置信度:
results = nlp([ 'Managing and working to mitigate the impact our operations have on the environment is a core element of our business.', 'Rhonda has been volunteering for several years for a variety of charitable community programs.', "Cabot's annual statements are audited annually by an independent registered public accounting firm.", 'As of December 31, 2012, the 2011 Term Loan had a principal balance of $492.5 million.' ])实战效果:4 条年报语句的 ESG 分类结果
上面这段演示代码来自项目自带的 FinBERT-demo.ipynb 中的「ESG-Classification」章节,实际输出如下:
| 年报语句(节选) | 分类结果 | 置信度 |
|---|---|---|
| 降低运营对环境的影响是业务的核心要素… | Environmental | 0.98 |
| 多年来持续参与慈善社区志愿服务… | Social | 0.99 |
| 公司年报每年由独立注册公共会计师事务所审计… | Governance | 0.67 |
| 某贷款本金余额为 4.925 亿美元… | None | 1.00 |
可以看到:环境、社会两类识别非常稳定,治理类得分略低但方向正确,纯财务语句被准确排除。这正是构建年报 ESG 内容抽取流水线的理想起点。
如何用自有数据微调 FinBERT-ESG?
如果你有自己的标注数据(例如中文 ESG 报告),可以基于 FinBERT-Pretrained 权重继续微调。项目已提供完整的微调演示:
- finetune.ipynb:展示从数据准备到微调训练的全过程,是最直接的参考模板
- archive/train_bert.py、archive/datasets.py、archive/bertModel.py:旧版训练代码,可从中了解训练参数与数据加载细节
使用 FinBERT-ESG 的注意事项与常见问题
- 建议以句子为单位输入:模型针对句子级文本训练,过长的段落建议先分句再批量分类
- 大规模推理请用 GPU:官方 demo 中明确提示,处理大规模数据集时请使用 GPU 加速
- 模型名别记错:
finbert-esg(ESG 分类)、finbert-tone(情感分析)、finbert-fls(前瞻性陈述)、finbert-pretrain(预训练底座),四者任务不同 - 置信度可作过滤阈值:低分结果(如 0.6 左右)建议保留人工复核,高分结果可直接入库
项目文件导航:从 Demo 到微调脚本
| 文件 | 用途 |
|---|---|
README.md | 项目说明:背景、模型清单与更新日志 |
FinBERT-demo.ipynb | 核心教程:Sentiment / ESG / FLS 三个任务的即用演示 |
finetune.ipynb | 微调指南:用自有数据训练 FinBERT |
requirements.txt | 依赖清单(transformers、torch、numpy、scikit-learn) |
archive/ | 早期训练代码存档(train_bert.py 等) |
小结
FinBERT 的 ESG 分类能力让"从年报中识别环境、社会与治理内容"这件事变得非常简单:加载yiyanghkust/finbert-esg模型 → 传入文本 → 得到四类标签与置信度,三步即可完成。配合项目中的 demo 与微调脚本,无论是快速验证效果,还是基于自有语料进一步微调,都有现成路径可循。现在就可以打开FinBERT-demo.ipynb,跑通你的第一条 ESG 分类。
【免费下载链接】FinBERTA Pretrained BERT Model for Financial Communications. https://arxiv.org/abs/2006.08097项目地址: https://gitcode.com/gh_mirrors/finbe/FinBERT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考