2. 金融文本处理基础

在把 BERT 用于金融新闻分类与事件识别之前,真正决定模型上限的往往不是网络结构,而是进入模型之前的文本质量。金融新闻是一种高度专业、噪声密集、格式多变的语料:它既有严谨的公告语言,也有口语化的快讯、研报摘要和社交媒体转述。本节围绕“金融新闻特点—中文分词—去噪—标准化—数据清洗—工具链”这条主线,建立可复用的预处理认知。

一、金融新闻的文本特点

金融文本与通用新闻最大的差异在于实体密集、数字密集、时间敏感、语义依赖上下文。同一家公司可能有简称、全称、股票代码、英文名等多种指代;同一事件在不同来源中可能被表述为“拟收购”“筹划重大资产重组”“签署股权转让协议”。此外,金融新闻常包含表格、括号注释、免责声明、来源标记和 HTML 残留,这些都会干扰分词与向量化。

  • 实体歧义强:“苹果”可能是水果,也可能是公司;“中行”需结合上下文判断。
  • 数字与单位关键:“同比增长 12.3%”“募资不超过 5 亿元”中的数值是事件识别的核心特征。
  • 时间表达多样:“昨日”“2024 年 Q3”“本报告期”“截至公告日”需要归一化。
  • 噪声来源多:网页标签、广告、免责声明、重复转载、乱码、全半角混排。
  • 领域术语多:如“可转债”“商誉减值”“定向增发”“质押式回购”,通用分词器容易切碎。

二、中文分词:从通用切分到金融领域适配

中文没有天然空格,分词是后续词向量、关键词抽取和规则匹配的基础。通用工具如 jieba、pkuseg、HanLP 在新闻语料上表现良好,但金融领域需要自定义词典与停用词表。例如“贵州茅台”“宁德时代”“北向资金”“LPR”应作为整体保留,否则会被切成无意义片段。

import jieba

jieba.load_userdict("finance_dict.txt")  # 每行:词语 词频 词性
text = "宁德时代拟定向增发募资不超过50亿元"
tokens = jieba.lcut(text)
print(tokens)
# ['宁德时代', '拟', '定向增发', '募资', '不超过', '50', '亿元']

分词策略上,建议采用“通用分词 + 领域词典 + 规则保护”三层结构:先用通用分词获得基础切分,再用金融词典合并术语,最后用正则保护股票代码、百分比、金额、日期等不可切分单元。对于 BERT 类模型,分词结果主要用于数据分析和规则特征,最终输入仍以字或子词为主,但高质量分词能显著提升关键词、实体和事件触发词的召回。

三、去噪、标准化与数据清洗流程

去噪的目标是删除与任务无关的字符和片段,标准化则是把不同写法统一为同一表示。二者常交替进行。典型流程如下:

  1. 编码统一:统一为 UTF-8,处理乱码与转义字符。
  2. HTML 清洗:去除标签、脚本、样式、注释,保留正文。
  3. 全半角与大小写归一:全角转半角,英文统一小写或保留原形。
  4. 空白与标点规整:合并连续空白,统一引号、破折号、省略号。
  5. 模板与免责声明剔除:如“本文不构成投资建议”“转载请注明出处”。
  6. 数字与时间标准化:将“5亿”“5 亿元”统一为“500000000 元”或保留带单位规范形式。
  7. 去重:基于标题、正文指纹或 SimHash 去除重复转载。
建议把清洗规则写成可配置的管道,每一步输出中间结果并记录命中数量,便于回溯“为什么这条新闻被删了”。
不要过度清洗:删除所有数字、括号或否定词会破坏事件语义。例如“未出现亏损”与“出现亏损”仅差一个否定词,误删会导致标签翻转。

四、常见工具与选型对比

环节常用工具适用场景注意事项
中文分词jieba、pkuseg、HanLP、LAC关键词、实体、规则特征需加载金融词典
HTML 清洗BeautifulSoup、lxml、readability网页新闻正文抽取注意保留表格与数字
正则与标准化re、unicodedata、ftfy全半角、乱码、模板剔除规则需版本管理
去重SimHash、MinHash、difflib转载与近似重复检测阈值需按语料调优
流水线编排Pandas、Spark、Airflow批量与增量处理关注可复现性

五、案例:一条快讯的清洗前后对比

原始文本常带有来源、时间和 HTML 残留:

<p>【财联社9月12日讯】<b>宁德时代</b>(300750)公告,拟向特定对象发行股票募集资金不超过<em>50亿元</em>,用于电池研发。本文不构成投资建议。</p>

清洗与标准化后:

宁德时代 300750 公告 拟 向特定对象 发行股票 募集资金 不超过 50亿元 用于 电池 研发

可以看到,来源标记、HTML 标签和免责声明被移除,实体、代码、金额和动作词被保留,为后续事件识别提供了干净输入。

六、误区与复盘

  • 误区一:分词越细越好。金融术语被切碎会丢失事件触发词,应优先保证领域词完整。
  • 误区二:清洗规则一次写死。不同来源模板变化频繁,规则应模块化、可配置、可回归测试。
  • 误区三:忽略标签泄漏。若去重不彻底,训练集与验证集出现近似样本,指标会虚高。
  • 误区四:标准化丢失数值精度。金额、比例、日期是事件识别的关键,归一化后应保留可还原信息。
复盘建议:为预处理建立“样本级日志”,记录每条文本经过各步骤后的变化与命中规则。当模型效果波动时,先查数据管道,再查模型结构。
金融新闻文本预处理管道 原始新闻 HTML/模板/乱码 去噪 标签/免责声明 标准化 全半角/时间/金额 分词与词典 金融术语保护 去重 SimHash 关键检查点 实体与代码是否保留完整 金额、比例、日期是否可还原 否定词与情感词是否误删 重复样本是否跨集合泄漏

掌握本节内容后,你应能独立搭建一条可配置、可回溯的金融文本预处理管道,并理解每一步对 BERT 分类与事件识别任务的真实影响。数据质量决定模型上限,预处理不是“跑通即可”,而是需要持续迭代的工程能力。