2. 金融NLP基础
在进入模型蒸馏与在线推理之前,必须先建立对金融NLP“输入—任务—评价—约束”四要素的整体认知。金融文本与通用语料差异极大:它高度专业化、时效敏感、噪声密集,且往往直接关联资金决策。若忽略这些特性,后续的蒸馏策略和推理优化都会失去业务锚点。
一、金融文本类型:先分清“原料”
金融文本可按来源与结构分为四类,每类对模型能力的要求不同:
- 公告与披露类:年报、季报、招股书、重大事项公告。结构规范、篇幅长,但关键信息分散,适合摘要与事件抽取。
- 新闻与研报类:财经新闻、券商研报、宏观评论。语言相对自由,含大量观点与预测,情感分析需区分“事实”与“立场”。
- 交互与舆情类:投资者互动问答、股吧帖子、社交媒体。口语化、噪声大、反讽多,是情感分析的难点区。
- 结构化衍生文本:行情快讯、财报数据表转述、指标播报。模板化强,适合规则+模型混合处理。
判断文本类型时,优先看“谁写的、给谁看、是否承担法律责任”。监管披露文本的抽取错误代价远高于舆情文本。
二、四类常见任务及其金融特性
情感分析:金融情感不是简单的正负二分。需区分“公司情感”“行业情感”“市场情感”,并处理“利好出尽”“利空落地”等反直觉表达。例如“业绩超预期但股价下跌”在文本中可能同时出现正向事实与负向预期。
事件抽取:金融事件具有强 schema,如“并购、增持、减持、违约、监管处罚、业绩预告”。抽取目标通常包括事件类型、触发词、参与主体、金额、时间。金融文本中同一事件常跨句、跨段出现,需指代消解与文档级建模。
问答:金融问答分为事实型(“某公司2023年营收多少”)、计算型(“同比增长率”)和解释型(“为何毛利率下降”)。前两者可检索增强,后者依赖推理与领域知识。
摘要:金融摘要要求“不遗漏风险、不引入未提及的预测”。年报摘要需保留数字、主体、时间、条件;研报摘要需区分分析师观点与客观数据。
三、评价指标:别只看准确率
金融NLP的评价必须与业务代价对齐。以下清单给出常用指标及其适用场景:
| 任务 | 核心指标 | 金融场景注意点 |
|---|---|---|
| 情感分析 | F1(按类别)、AUC | 类别不平衡严重,负面样本少但代价高 |
| 事件抽取 | Trigger F1、Argument F1 | 漏抽比误抽更危险,需单独看召回 |
| 问答 | EM、F1、Hit@k | 数字类答案需精确匹配,解释类需人工评估 |
| 摘要 | ROUGE、事实一致性 | ROUGE高但数字错误不可接受 |
金融场景中,错误代价高度不对称。漏掉一条“违约”事件的损失,可能远大于误报十条。因此评价时应对关键类别单独设定召回下限,而非只看宏平均F1。
四、业务约束:决定模型能否上线的硬条件
金融NLP系统通常面临以下约束,它们直接决定蒸馏与推理方案的设计:
- 延迟约束:行情相关任务要求毫秒级响应,大模型必须蒸馏为小模型或采用缓存+路由。
- 合规与可解释:监管要求决策可追溯,模型输出需保留证据句或触发词。
- 成本约束:高频调用场景下,单次推理成本需压到可接受范围。
- 数据时效与漂移:金融语言随市场变化,模型需定期增量更新,蒸馏学生模型要保留再学习能力。
- 隐私与隔离:部分数据不可出域,推理需在本地或专有环境完成。
五、案例与复盘:一个情感分析上线失败案例
某团队用通用情感模型直接分析股吧帖子,离线F1达0.86,上线后业务方反馈“负面预警几乎没用”。复盘发现:
- 通用模型把“跌停了,抄底”判为中性,而业务需要识别为高风险负面。
- 金融反讽与黑话未覆盖,如“利好兑现”实际表达看空。
- 评价指标只看整体F1,未单独评估负面类召回,导致关键漏报被平均掉。
修正方案:重新定义标签体系(事实情感/预期情感分离),引入领域词典与规则做数据增强,评价改为负面类召回优先,并将大模型蒸馏为轻量学生模型以控制延迟。这一过程说明:金融NLP的起点不是模型,而是文本类型、任务定义、评价口径与业务约束的联合对齐。
# 金融情感评价示例:负面类召回优先
from sklearn.metrics import recall_score, f1_score
neg_recall = recall_score(y_true, y_pred, pos_label="negative")
macro_f1 = f1_score(y_true, y_pred, average="macro")
# 业务门槛:负面召回不低于0.90,否则不予上线
assert neg_recall >= 0.90, "负面召回不达标,需重新蒸馏或调整阈值"