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%,需警惕情绪噪声;若公告占比过低,则事件覆盖不足。该统计可直接作为后续采样权重的输入。
四、误区与复盘:合规采集的常见坑
- 误区一:把“公开可见”等同于“可任意采集”。公开披露信息仍受版权与平台协议约束,需控制频率、保留来源、避免二次传播侵权。
- 误区二:忽视时间戳对齐。新闻发布时间与公告发布时间可能相差数小时,情绪因子若未对齐,会引入前视偏差。
- 误区三:社交媒体不做脱敏。用户昵称、ID、定位属于个人信息,入库前应哈希化或删除。
- 误区四:只存清洗后文本。原始快照必须保留,否则无法复现解析错误与合规审计。
复盘清单:① 每个来源是否有明确许可标识?② 是否设置了请求频率与重试上限?③ 是否保留原始快照与manifest?④ 是否对个人信息脱敏?⑤ 是否记录采集时间与版本?以上五项缺一不可。
完成本节的数据源梳理与合规采集后,你将得到一份带来源标签、时间戳和许可信息的原始语料库。它是后续FinBERT微调、情绪因子构建与回测的基石,也是整个项目中最容易被低估、却最影响最终结论可靠性的环节。