FinEX:金融知识抽取智能体
FinEX 是一个面向金融文本的结构化知识抽取模型,基于大型语言模型(LLM)采用监督微调,能够从新闻、公告、研报等金融文本中自动识别事件、实体与关系,并生成可直接用于知识图谱、量化模型和智能投研系统的结构化信息。
⭐️后续将出8bit量化版,以便快速部署推理 ⭐️更多信息详见 https://github.com/CUEB-QF-ZQS/YiJinJing
1. 模型概述
FinEX 旨在解决金融文本信息分散、结构化成本高的问题,为投研、风控与智能投资提供高质量的结构化金融知识。主要能力包括:
- 金融事件抽取(并购、投融资、监管处罚、产业链关系等)
- 实体与关系识别(公司、行业、产品、人物等)
- JSON / 三元组 / 事件槽位输出
- 支持时序多模态知识图谱构建
模型基于 Qwen 系列进行语义对齐与 LoRA 微调,具备较强的金融语义理解能力和格式稳定性。
2. 模型介绍
FinEX 的模型架构由三部分组成:
(1) Base LLM(Qwen-14B 系列)
负责解析金融文本中复杂的句法结构与专业金融语义。
(2) FinEX-LoRA Adapter
增强模型对金融专业表达、术语体系、事件模板的适应能力,提高金融场景下的结构化效果。负责事件抽取、槽位填充、三元组生成、实体识别等结构化任务。
3. 模型训练
3.1 数据来源
训练数据主要包括:
- 专家标注的金融事件数据
- 大规模新闻 / 公告清洗语料
- AIGC 生成的金融文本扩增数据
- 统一规范的 JSON 模板与三元组结构
3.2 训练流程
- SFT(有监督微调)
- LoRA Adapter 精调
- 格式鲁棒性训练(保证 JSON 格式稳定)
- 多轮指令优化提升事件覆盖面
3.3 训练资源
- GPU:A100 80GB*2
3.4 训练脚本
示例训练命令:
deepspeed --num_gpus=2 src/train_bash.py --deepspeed script/ds_configs/ds_config_st3.json \
--stage sft \
--do_train \
--model_name_or_path /home/QFRC/ZQS/Projects/LLM_models/Tongyi-Finance-14B \
--dataset feature_mix_80 \
--cutoff_len 18000 \
--template default \
--finetuning_type lora \
--lora_target c_attn \
--output_dir /home/QFRC/ZQS/Projects/LLaMA-Factory-main/script/TF-14B/Exports/export_event80_175_18000_save \
--overwrite_cache \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 16 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 50 \
--learning_rate 5e-5 \
--num_train_epochs 475 \
--plot_loss \
--fp16
4. 模型推理
文本输入示例
假如你是一名资深的金融分析师,提取该文本中你认为对股市及上市公司股价影响较大的金融事件,并以方便构建金融知识图谱的三元组(实体一动作一实体)或二元组(实体一动作)的形式列出
结构化输出示例
{\"events\": {\"event1\": {\"total\": \"赛力斯AITO问界M912月26日上市\", \"entity1\": \"赛力斯\", \"relationship\": \"12月26日上市\", \"entity2\": \"AITO问界M9\"}, \"event2\": {\"total\": \"AITO问界M9盲订数量超过3.3万\", \"entity1\": \"AITO问界M9\", \"relationship\": \"被盲订超过3.3万辆\"}, \"event3\": {\"total\": \"博俊科技/恒勃股份/雅创电子为AITO问界M9提供零部件\", \"entity1\": \"博俊科技/恒勃股份/雅创电子\", \"relationship\": \"供应\", \"entity2\": \"AITO问界M9\"}, \"event4\": {\"total\": \"赛力斯与华为深度合作\", \"entity1\": \"赛力斯\", \"relationship\": \"深度合作\", \"entity2\": \"华为\"}}, \"sentiment\": \"积极\"}
Python 推理示例
import sys
sys.path.append('/home/QFRC/ZQS/Projects/LLaMA-Factory-main/src')
import llmtuner
from llmtuner.data.template import get_template_and_fix_tokenizer
from llmtuner.extras.misc import get_logits_processor
template1=get_template_and_fix_tokenizer("default",tokenizer)
instruction='xxx'
input ='xxx'
inputs=instruction+input
prompt,_=template1.encode_oneturn(tokenizer,inputs,"")
prompt_length = len(prompt)
#print(prompt)
input_ids = torch.tensor([prompt], device=model.device)
#print(input_ids)
gen_kwargs = dict(
inputs=input_ids,
generation_config=GenerationConfig(**config_dict),
logits_processor=get_logits_processor()
)
generate_output = model.generate(**gen_kwargs)
response_ids = generate_output[:, prompt_length:]
response = tokenizer.batch_decode(
response_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)
results = []
print(response)
5. 模型效果
在多个金融结构化任务中表现稳定(示意):
- 金融事件抽取 F1:约 90%+
- 实体 / 关系识别 F1:约 88%+
- JSON 输出格式稳定率:约 99%+
主要优势:
- 金融语义理解能力强
- 结构化输出格式稳定,可直接对接下游系统
- 对知识图谱与量化模型友好
6. 应用场景
FinEX 可用于:
- 金融知识库自动构建
- 金融事件监测与分析
- 智能投研系统信息增强
- 新闻与公告信息抽取
- 时序多模态知识图谱(如 MEHGT)的数据底座
- 企业动态监测与风险分析
7. 项目结构(示例)
FinEX/
│── finex_lora/ # LoRA 权重
│── src/ # 训练与推理代码
│── quant/ # 量化模型
│── web_demo/ # 演示界面
│── README.md # 本说明文档
8. 未来规划
- 扩展更多金融事件类型与模板
- 融合表格、财报、图像等多模态数据
- 支持实时流式事件抽取
- 与 MEHGT 深度集成,强化智能投研全链路
- 支持企业级部署与 API 服务化