3. 文本分类入门
在金融公告处理场景中,我们面对的往往不是“一段文字属于什么主题”这么简单的问题,而是“这条公告是否涉及重大资产重组”“是否触发退市风险警示”“是否属于关联交易”等具有明确业务含义的判断。文本分类正是把这类判断从人工阅读转化为可计算任务的基础方法。本节从定义出发,串联完整流程、评估指标、常用算法,并落到金融公告的真实应用。
一、核心原理:文本分类到底在做什么
文本分类的本质是学习一个映射函数 f: X → Y,其中 X 是文本的向量化表示,Y 是预定义的类别集合。模型通过训练数据学习文本特征与类别标签之间的统计关联,再对未见文本给出类别预测。与多标签识别不同,单标签分类假设每个样本只属于一个类别;而金融公告中“一份公告同时涉及担保、关联交易、诉讼”是常态,因此多标签识别是本章后续的重点延伸。
理解文本分类需要抓住三个关键点:第一,文本必须被转化为数值特征,常见方式包括词袋、TF-IDF、词嵌入和预训练语言模型编码;第二,分类器负责在特征空间中划分决策边界,如朴素贝叶斯、逻辑回归、SVM、树模型和神经网络;第三,评估必须与业务目标对齐,准确率高不代表对“高风险公告”的召回率高。
二、方法流程:从公告到标签的六步闭环
一个可落地的金融公告分类项目通常遵循以下流程,每一步都会影响最终效果:
- 业务定义与标签体系设计:明确要识别的类别,例如“重大资产重组”“业绩预告”“股权激励”“诉讼仲裁”“退市风险”等,并给出每类的判定标准。
- 数据采集与清洗:从交易所公告、PDF、HTML 中抽取正文,去除页眉页脚、表格噪声和乱码。
- 标注与质检:由金融背景人员标注,采用双人交叉复核,计算标注一致性(如 Kappa 系数)。
- 文本表示:根据数据规模选择 TF-IDF、Word2Vec 或预训练模型微调。
- 模型训练与调参:划分训练集、验证集、测试集,处理类别不平衡,调整阈值。
- 评估、部署与监控:上线后持续监控指标漂移,定期用新公告回流再训练。
三、常用算法与评估指标对照
不同算法适用于不同数据规模和业务要求。下表给出常见方法的对比,便于在项目中快速选型:
| 算法 | 适用场景 | 优点 | 局限 |
|---|---|---|---|
| 朴素贝叶斯 | 小样本、基线快速验证 | 训练快、可解释 | 特征独立假设强,效果有限 |
| 逻辑回归 + TF-IDF | 中等规模、需可解释 | 稳定、易调参 | 对长文本语义捕捉弱 |
| SVM | 高维稀疏特征 | 边界清晰、泛化好 | 大规模数据训练慢 |
| BERT 微调 | 语义复杂、标注充足 | 效果强、上下文理解好 | 算力要求高、推理成本大 |
评估时,混淆矩阵是最直观的工具。以下代码片段展示如何用 Python 输出分类报告:
from sklearn.metrics import classification_report, confusion_matrix
y_true = [0, 1, 1, 0, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1]
print(confusion_matrix(y_true, y_pred))
print(classification_report(y_true, y_pred, target_names=["正常", "风险"]))
输出中的 precision、recall、f1-score 分别对应精确率、召回率和 F1 值。金融风控中,若“风险”类的召回率偏低,说明有风险公告被漏判,需要优先优化。
四、金融领域应用与误区复盘
在真实业务中,文本分类可以支撑多个高价值场景:交易所公告自动打标、舆情风险预警、研报主题归类、客服工单路由、合规审查辅助等。以“退市风险警示”识别为例,模型需要从公告标题和正文中捕捉“终止上市”“财务类退市”“交易类退市”等关键信号,并结合公司历史公告序列做综合判断。
复盘时建议回答三个问题:第一,当前模型在哪些类别上召回不足?第二,错误样本是否集中在特定公告类型或特定年份?第三,阈值调整后业务收益是否提升?只有把模型指标与业务成本挂钩,文本分类才能真正从“实验”走向“生产”。