ProsusAI/finBERT

Financial Sentiment Analysis with BERT

FinBERT – 基于 BERT 的金融情感分析

简介 – FinBERT 是一个预训练的自然语言处理模型,用于对金融文本(如新闻标题、财报电话会议或分析师报告)的情感(正面、中性、负面)进行分类。它基于通用的 BERT 模型,并在金融特定语料库和 Financial PhraseBank 数据集上进行了进一步训练。

重要性 – 通用情感模型往往会误解金融术语(例如“bearish”、“bullish”)。FinBERT 捕捉到了这些细微差别,使其适用于:

  • 量化交易信号
  • 风险监控
  • 市场研究仪表板

主要组件

  • 模型权重 – 托管在 Hugging Face 的 ProsusAI/finbert 仓库中。代码通过 AutoModelForSequenceClassification.from_pretrained('ProsusAI/finbert') 加载它们。
  • 训练代码 – 一个 Jupyter 笔记本 (finbert_training.ipynb),用于在 Financial PhraseBank 上微调 bert-base-uncased(或其他检查点)。它包含 discriminate 和 gradual_unfreeze 选项,以减轻灾难性遗忘。
  • 数据准备 – scripts/datasets.py 将 Financial PhraseBank 中的 Sentences_50Agree.txt 文件转换为 data/sentiment_data/ 下的 train.csv、validation.csv 和 test.csv。
  • 预测脚本 – scripts/predict.py 读取纯文本文件,运行模型,并写入一个包含每句 softmax 概率、预测标签和情感得分 (prob(pos) - prob(neg)) 的 CSV 文件。

入门指南

# 1. 创建 environment.yml 中定义的 Conda 环境
conda env create -f environment.yml
conda activate finbert

# 2. (可选) 从 Hugging Face 下载预训练权重
#    运行脚本时代码会自动获取它们。

# 3. 运行快速预测
python scripts/predict.py --text_path test.txt --output_dir output/

如果您想训练自己的版本,请将三个 CSV 文件放入 data/sentiment_data/ 并启动 finbert_training.ipynb 笔记本。根据需要调整 Config 参数(epoch、学习率、批次大小等)。

许可协议 – 本仓库的代码在 Apache-2.0 下发布(由 MIH AI B.V. 授权)。该许可不涵盖预训练模型权重(托管在 Hugging Face 上)或 Financial PhraseBank 数据集;用户必须遵守这些资产的独立条款。

联系方式 – 如有疑问,请联系 Dogu Araci (dogu.araci@prosus.com) 或 Zulkuf Genc (zulkuf.genc@prosus.com)。


FinBERT 是 Prosus AI 团队的实习生研究项目,并非 Prosus 的官方产品。

相关

  • 项目
  • 项目
  • 项目
  • 项目