FinEX

24 downloads 1 likes on ModelScope updated

Model card

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 服务化