2. 金融文本数据基础
结构化信息抽取的效果,往往在模型训练之前就已经被数据质量决定了大半。金融领域尤其如此:同一份公告里可能同时存在表格、脚注、法律免责声明和嵌套的财务科目;同一则研报里既有分析师的主观判断,也有可核验的营收预测。若不能先厘清“我们面对的是什么文本、它从哪里来、以什么格式存在、需要经过哪些清洗、如何判断它是否可用”,后续的抽取模型就只是在噪声上做拟合。本节围绕这五个问题建立一套可复用的数据基础认知。
一、金融文本的四种基本类型
从抽取任务的角度,金融文本可按“结构化程度”和“语义确定性”划分为四类,它们的处理策略差异显著。
- 强结构文本:财务报表、行情数据、监管报送表。字段位置固定,抽取目标明确,通常用规则或模板即可高精度解析。
- 半结构文本:上市公司公告、招股说明书、债券募集说明书。有固定章节标题和表格,但正文表述自由,需要结合版式与语义。
- 弱结构文本:券商研报、财经新闻、投资者互动问答。以自然语言为主,实体、关系、事件混杂,是LLM抽取的主战场。
- 非结构文本:电话会议录音转写、路演纪要、监管问询函回复。口语化、指代多、信息密度不均,需要先做指代消解与说话人分离。
二、数据来源与常见格式
金融文本的来源决定了它的格式、更新频率和合规边界。常见来源包括交易所公告系统、巨潮资讯等披露平台、Wind/同花顺等金融终端、央行与监管机构官网、上市公司投资者关系页面,以及新闻与社交媒体。格式上,PDF(含扫描件)、HTML、XLSX、CSV、JSON、XML、DOCX 并存,其中PDF占比最高,也最难处理。
| 来源 | 典型格式 | 抽取难点 | 建议策略 |
|---|---|---|---|
| 交易所公告 | PDF / HTML | 多栏排版、跨页表格 | 版式解析+表格重建 |
| 金融终端 | XLSX / CSV / API | 字段命名不统一 | 字段映射字典 |
| 监管官网 | HTML / PDF | 附件嵌套、链接失效 | 增量爬取+快照留存 |
| 研报与新闻 | PDF / HTML / 文本 | 主观表述、指代密集 | LLM抽取+人工抽检 |
| 会议纪要 | 音频转写文本 | 口语、重复、错别字 | ASR纠错+说话人分离 |
三、预处理方法:从原始文件到可抽取文本
预处理的目标不是“把文本变干净”这么笼统,而是让每个抽取字段都有稳定、可定位的输入。推荐按以下流程推进:
- 格式归一:将PDF、HTML、DOCX统一转为带版式信息的中间表示,保留页码、坐标、字体大小,便于后续定位。
- 版面分析:识别标题、正文、表格、页眉页脚、脚注区域,剔除页眉页脚和免责声明等噪声。
- 表格重建:处理合并单元格、跨页表格和无框线表格,输出结构化行列。
- 文本清洗:全半角统一、繁简转换、去除多余空白与控制字符、修复断行连字符。
- 分块与标注:按章节或语义段落切分,附加来源、页码、时间等元数据。
# 示例:PDF转文本并保留页码元数据(伪代码)
for page in pdf.pages:
layout = analyze_layout(page) # 版面分析
tables = extract_tables(layout) # 表格重建
text = clean_text(layout.text) # 文本清洗
chunks = split_by_section(text) # 按章节分块
for c in chunks:
c.meta = {"source": pdf.name, "page": page.no, "type": layout.type}
四、质量评估:让数据可用性可量化
质量评估应贯穿采集、预处理和抽取三个阶段。建议至少监控以下指标:完整性(字段缺失率)、准确性(抽样人工核对一致率)、一致性(同一实体在不同文档中的表述是否统一)、时效性(数据更新延迟)、合规性(是否含敏感或未授权内容)。
一个实用的做法是建立“数据质量看板”,对每批数据打分并记录版本。例如:
批次: 2024-06-公告
完整性: 0.982 准确性: 0.961
一致性: 0.934 时效性: 0.998
合规性: 通过
结论: 可用于训练;一致性偏低,需补充实体对齐
下面这张图概括了从多源金融文本到可抽取数据的整体链路,以及各环节的关键控制点。
回到实战视角,数据基础工作的价值在于“把不确定性前移”。当抽取结果出现偏差时,能够快速判断是来源缺失、格式解析错误、清洗过度还是质量评估漏检,而不是笼统归因于模型能力。建议在项目初期就固定一套数据字典与质量阈值,并在每批数据入库时留下版本记录,这样后续的模型迭代才有可比较的基线。