第四章:数据标注与预处理——给金融大模型“喂”对数据

说实话,做金融大模型问答机器人,最让我头疼的往往不是模型本身,而是数据。模型选错了可以换,参数调不好可以试,但数据要是脏了、偏了、标注错了,那后面所有工作都是白费力气。我见过太多团队花三个月调模型,最后发现是训练数据里有一半的实体标错了——那种感觉,就像你跑完马拉松发现跑错了路线。

这一章,我们就来聊聊数据标注和预处理。说白了,就是怎么把原始金融文本,变成模型能理解的、高质量的“教材”。

4.1 文本标注工具:Label Studio 实战

工欲善其事,必先利其器。我个人习惯用 Label Studio,开源、灵活、支持多用户协作。你想想看,金融数据动辄几十万条,靠Excel手动标?那得标到猴年马月去。

安装很简单,一行命令搞定:

pip install label-studio
label-studio start

启动后浏览器打开 http://localhost:8080,注册一个账号就能用了。我建议你第一次用的时候,先创建一个“命名实体识别”项目,把标注模板配好。

小技巧: 金融文本里经常有“中国工商银行”、“上证指数”这种长实体。Label Studio 支持“预标注”功能,你可以先用正则或字典匹配打上标签,人工再微调。我试过,能省至少40%的时间。

4.2 命名实体识别(NER)标注——金融领域的“找茬”游戏

NER 标注,说白了就是让标注员把文本里的关键信息圈出来。金融领域常见的实体类型包括:

  • 机构名:比如“中国人民银行”、“高盛集团”
  • 人名:比如“易纲”、“巴菲特”
  • 金融术语:比如“LPR”、“CPI”、“市盈率”
  • 时间/日期:比如“2024年一季度”、“截至昨日”
  • 数值/比率:比如“3.85%”、“5000亿”

我在项目中遇到过最坑的情况是:标注员把“中国银行”标成了“机构名”,但上下文里它其实是“中国银行间市场”的一部分。嗯,这里要注意——实体边界一定要清晰。我建议用 BIO 标注法(B-begin, I-inside, O-outside),比如:

中  B-ORG
国  I-ORG
银  I-ORG
行  I-ORG
间  O
市  O
场  O

这样模型才能学会“中国银行”是一个完整实体,而不是拆成“中国”和“银行”。

避坑指南: 我曾经让实习生标了5000条数据,结果发现他把“上证50”里的“50”标成了数值实体。金融里“上证50”是一个指数名称,不是数字。这种错误一旦批量出现,模型就会学歪。所以,标注规范一定要提前写好,并且做一轮试标

4.3 情感分析标注——判断市场情绪

金融文本的情感分析,跟普通影评不一样。你说“股市暴跌”是负面,但“暴跌后抄底机会”可能偏正面。所以,我一般把情感分为三类:

情感类别 示例 说明
正面 “业绩超预期,股价大涨” 利好、乐观、增长
负面 “违约风险上升,评级下调” 利空、悲观、下跌
中性 “央行维持利率不变” 无明确情绪倾向

标注的时候,我建议用 细粒度情感。比如“正面”还可以拆成“强烈正面”和“温和正面”。为什么?因为金融新闻里“小幅上涨”和“暴涨”虽然都是正面,但市场反应完全不同。模型如果分不清,回答就会很模糊。

举个例子,用户问“今天茅台怎么样?”,模型如果只识别出“正面”,可能会回答“茅台表现不错”。但如果你标注了“强烈正面”,模型就能说“茅台大涨5%,创历史新高”。你看,信息量完全不一样。

4.4 数据增强技术——让有限的数据“变”出更多花样

金融数据标注成本高,一条带实体和情感的标注数据,可能花掉几块钱。那数据不够怎么办?我常用的方法有几种:

  • 同义词替换:把“上涨”换成“攀升”、“走高”。注意别把金融术语换错了,“降准”不能换成“降低准备金率”吗?可以,但“降息”不能换成“降低利息”,因为语境不同。
  • 回译:把中文翻译成英文,再翻译回中文。比如“股市回暖” -> “Stock market recovery” -> “股市复苏”。句子结构变了,但意思保留。
  • 随机插入/删除:在句子中间随机插入一个无关词(比如“嗯”、“那个”),或者删除一个不重要的词。这能模拟真实用户提问时的口语化表达。
我的经验: 数据增强不是越多越好。我曾经把一条数据增强到100倍,结果模型学会了“嗯”这个词的规律,反而忽略了真正的金融实体。所以,增强比例控制在3-5倍,而且增强后的数据要人工抽检。

4.5 数据集划分——训练/验证/测试

数据准备好了,怎么分?我见过有人随机切分,结果训练集里全是“牛市”相关的句子,测试集里全是“熊市”。模型在训练集上学得挺好,一测试就崩。为什么会这样?因为金融数据有时间序列特性

我建议按时间划分:

  • 训练集:2020年1月 - 2023年6月的数据
  • 验证集:2023年7月 - 2023年9月的数据
  • 测试集:2023年10月 - 2023年12月的数据

这样模型学的是历史规律,测试的是对未来数据的泛化能力。如果你非要随机切分,那至少保证每个类别在三个集合里的比例一致。比如“正面”样本占60%,那训练、验证、测试里都要接近60%。

比例上,我一般用 8:1:1 或者 7:2:1。数据量大的话(比如10万条以上),验证集和测试集各留5%就够了。

一个小细节: 划分完数据集后,记得检查一下验证集和测试集里有没有“脏数据”。我习惯跑一个简单的统计脚本,看看每个集合的实体分布、情感分布是否一致。如果偏差超过5%,就得重新划分。

知识体系总览

下面这张图,是我自己总结的本章知识结构。你可以把它当作一个“地图”,随时回来对照。

数据标注与预处理 标注工具 Label Studio 安装配置 预标注技巧 NER标注 实体类型定义 BIO标注法 边界规范 情感分析标注 正面/负面/中性 细粒度情感 金融语境判断 数据增强 同义词替换 回译 随机插入/删除 数据集划分 训练集 (80%) 2020.01 - 2023.06 验证集 (10%) 2023.07 - 2023.09 测试集 (10%) 2023.10 - 2023.12 按时间划分,避免数据泄露 检查各集合的实体/情感分布一致性

好了,这一章的内容就到这里。数据标注和预处理,听起来枯燥,但它是整个金融大模型问答机器人的地基。地基没打好,上面盖多高的楼都白搭。希望你能从我的经验里少走一些弯路,把数据这块硬骨头啃下来。


专注资料整理