3. 金融文本数据来源与采集

在FinBERT金融文本情绪分析项目中,模型效果的上限往往在数据采集阶段就已经被决定。金融文本不同于通用语料,它同时具有高噪声、强时效、强合规、多源异构四个特征。本节围绕“从哪里采、怎么采、采完如何合规落地”三个问题展开,帮助大家建立可复用的数据源地图与采集流程。

一、核心原理:五类数据源的信息价值差异

金融文本的情绪信号强度、发布频率、结构化程度和合规风险并不一致。理解这些差异,才能决定采集优先级与解析策略。

数据源 典型内容 情绪信号特征 采集难点 合规要点
财报 年报、季报、MD&A、风险提示 低频、强信号、措辞谨慎 PDF表格与正文混排 交易所公开披露,注意转载授权
新闻 财经媒体、快讯、深度报道 高频、时效强、情绪外显 重复转载、标题党 尊重版权,优先API或授权源
公告 临时公告、停复牌、诉讼、担保 事件驱动、短文本、强冲击 编号与分类体系复杂 交易所公开信息,控制抓取频率
社交媒体 股吧、微博、雪球、论坛 噪声大、情绪极端、易操纵 水军、反讽、黑话 用户协议、隐私与反爬限制
研报 券商行业与个股深度报告 专业、结构化、预期引导 PDF图表多、权限受限 机构授权,禁止未授权传播

关键判断:财报与公告适合做“事件级”情绪标签,新闻适合做“日频”情绪因子,社交媒体适合做“情绪热度与异常”监测,研报适合做“预期修正”信号。不要用同一套清洗规则处理所有来源。

二、方法流程:从源清单到可训练语料的六步链路

一个可复现的采集流程应当包含源登记、采集、解析、清洗、去重、合规归档六个环节。下面给出一个可落地的目录结构与配置示例。

data/
├── raw/                # 原始快照,按来源+日期分区
│   ├── cninfo/2025-03-18/
│   ├── news_api/2025-03-18/
│   └── social/2025-03-18/
├── parsed/             # 解析后的纯文本与元数据
├── clean/              # 去重、去噪、分句后语料
└── manifest.jsonl      # 每条记录的来源、URL、时间、许可

采集配置建议显式记录来源、频率、字段与合规标识,便于后续审计与复现:

{
  "source": "cninfo_announcement",
  "type": "announcement",
  "schedule": "0 8,12,18 * * *",
  "fields": ["stock_code", "title", "publish_time", "pdf_url", "category"],
  "rate_limit": "1 req / 2s",
  "license": "public_disclosure",
  "retention_days": 365
}

解析阶段要针对不同格式分别处理:PDF财报优先抽取“管理层讨论与分析”章节;新闻正文需去除导航与推荐位;社交媒体需保留发布时间与用户标识的脱敏哈希。清洗阶段重点做去重、去广告、去免责声明、分句与长度过滤。

实操建议:为每条文本保留source、publish_time、stock_code、url_hash四个字段。FinBERT微调时,来源与时间可作为分层抽样依据,避免某一来源主导训练集。

三、案例/场景:一次“财报+公告+新闻”的联合采集

假设我们要为某只A股构建2025年3月的情绪语料。可先通过交易所公开接口获取公告列表,再按股票代码匹配同期新闻,最后抽取年报中的风险提示段落。

# 伪代码:按股票与时间窗口联合采集
for code in stock_list:
    announcements = fetch_announcements(code, "2025-03-01", "2025-03-31")
    news = fetch_news(code, "2025-03-01", "2025-03-31", limit=200)
    report = fetch_annual_report(code, year=2024)
    save_raw(announcements, news, report)
    log_manifest(code, source_count=3)

采集完成后,建议先做一次来源分布统计:若社交媒体占比超过60%,需警惕情绪噪声;若公告占比过低,则事件覆盖不足。该统计可直接作为后续采样权重的输入。

金融文本数据源采集与合规处理链路 财报 年报/季报/MD&A 公告 临时/停复牌/诉讼 新闻 快讯/深度报道 社交媒体 股吧/微博/雪球 研报 行业/个股深度 采集器 API/爬虫/授权 解析与清洗 PDF抽取 · 去导航 去重 · 分句 · 过滤 元数据对齐 来源/时间/代码 许可标识 合规归档 raw快照 manifest.jsonl 保留期限 访问审计 脱敏哈希 采集频率、字段、许可与保留策略需在配置中显式声明

四、误区与复盘:合规采集的常见坑

  • 误区一:把“公开可见”等同于“可任意采集”。公开披露信息仍受版权与平台协议约束,需控制频率、保留来源、避免二次传播侵权。
  • 误区二:忽视时间戳对齐。新闻发布时间与公告发布时间可能相差数小时,情绪因子若未对齐,会引入前视偏差。
  • 误区三:社交媒体不做脱敏。用户昵称、ID、定位属于个人信息,入库前应哈希化或删除。
  • 误区四:只存清洗后文本。原始快照必须保留,否则无法复现解析错误与合规审计。

复盘清单:① 每个来源是否有明确许可标识?② 是否设置了请求频率与重试上限?③ 是否保留原始快照与manifest?④ 是否对个人信息脱敏?⑤ 是否记录采集时间与版本?以上五项缺一不可。

完成本节的数据源梳理与合规采集后,你将得到一份带来源标签、时间戳和许可信息的原始语料库。它是后续FinBERT微调、情绪因子构建与回测的基石,也是整个项目中最容易被低估、却最影响最终结论可靠性的环节。