通用信息抽取大模型PP-UIE开源发布,强化零样本学习与长文本抽取能力,全面适配多场景任务

发布于:2025-03-06 ⋅ 阅读:(21) ⋅ 点赞:(0)

背景与简介

信息抽取(information extraction)是指,从非结构化或半结构化数据(如自然语言文本)中自动识别、提取并组织出结构化信息。通常包含多个子任务,例如:命名实体识别(NER)、关系抽取(RE)、事件抽取(EE)。由于任务目标的多样性(如实体、关系、事件和情感等)、文本结构的异构性(如片段、三元组、记录等)以及特定应用需求的多变性,传统的信息抽取方法往往针对特定任务或领域进行优化,难以在跨任务或跨领域的情境中迁移和泛化。

随着大语言模型的发展,通用信息抽取大模型逐渐成为主流。此类模型将不同任务和领域统一为端到端的框架,并能够在未见过的数据或领域上展现出较好的性能。然而,当前主流的通用信息抽取大模型通常规模较大,这些模型在本地部署时,面临推理速度较慢、计算资源受限等问题,难以满足实际应用的需求。为应对上述挑战,飞桨团队基于开源模型和高质量数据集,开发了通用信息抽取大模型PP-UIE。PP-UIE借鉴了百度UIE的建模思想,旨在支持中英文信息抽取任务。模型涵盖命名实体识别(NER)、关系抽取(RE)和事件抽取(EE)等任务,提供0.5B、1.5B、7B和14B四个版本,以适应不同场景中的需求。同时模型在零样本预测能力上,在多个数据集(包含 Boson、CLUENER、CCIR2021等常见数据集)相比传统UIE-Base模型的抽取效果大幅度得到提升,具备更好的实用价值。

产品亮点

1. 效果更佳的零样本信息抽取能力PP-UIE具备强零样本学习能力,能快速适应新任务和数据,相比UIE-Base模型在 通用领域、新闻领域等多个数据上效果抽取效果平均提升66% ;相比开源信息抽取大模型YaYi-UIE在F1指标上提高18.3个百分点,相比DeepSeek-R1-Distill-Qwen-14B 在F1指标上提高25.8个百分点。同时PP-UIE具备更好小样本能力,只需要1-10条样本就可以快速提升模型在特定业务上的效果,相比传统的信息抽取模型,大幅降低数据标注成本。

2. 强大的长文档信息抽取能力PP-UIE具备处理长文本能力,能跨越多个段落或句子识别关键信息,形成完整理解。该能力对于大型文档等复杂文本尤为重要,传统的UIE-Base模型只能支持 256 个Token长度的文本抽取,而PP-UIE可以支持8192个Token长度文档的信息抽取,支持的文本长度提升3 2倍

3. 完备的大模型信息抽取定制能力本模型基于PaddleNLP 3.0,提供模块化、可定制化的训练和推理流程,支持灵活调整以满足不同需求。训练效率较LLama-Factory提升1.8倍 同时,在推理阶段,PaddleNLP 3.0还为用户提供了便捷的调用方式,助力用户快速完成模型的部署与实际应用。

欢迎开发者前往开源项目主页直接体验:

https://github.com/PaddlePaddle/PaddleNLP

在这里插入图片描述

亮点一: 效果更佳的零样本信息抽取能力

信息抽取任务中,要获取高质量的标注数据不仅成本高昂,而且耗时长。为了应对这一挑战,PaddleNLP开发的通用信息抽取大模型特别强化了零样本(Zero-shot)学习的能力,旨在通过少量甚至没有标注数据的支持,实现快速冷启动和高效迁移学习。

下表为模型在各数据集的零样本(zero-shot)和小样本(few-shot)能力。

在这里插入图片描述

从表格中可以看出,随着模型规模的增大,无论是零样本(zero-shot)能力还是小样本(few-shot)能力都有显著提升。具体来说:

  • 在零样本(zero-shot)任务中,模型的表现随着规模的增加逐步提高。例如,PP-UIE-0.5B模型在CMeEE数据集中F1分数为0.479,而PP-UIE-14B模型的F1分数则达到了0.556,显示出明显的提升。

抽取内容:"嫌疑人,案发城市,资损金额"

输出:"贺某,孙某,杞县阳堌镇北村,杞县,3700多元,1300元"
  • 在小样本(few-shot)任务中,随着模型参数的增大,F1值也呈现出相应的增长。PP-UIE-14B在CMeEE数据集中少样本条件下的F1达到了0.588,优于其他规模较小的模型。PP-UIE通过在输入数据前增加对应输出格式和输出内容样例,提升模型的输出准确性和格式规范性。

抽取内容:"身体部位"

zero-shot输出:"肾上腺皮质,肾上腺皮质,肾上腺皮质"

few-shot输出:"肾上腺皮质"

综上所述,模型的规模与其在零样本和小样本任务中的表现成正比,增大模型规模能够显著提高其性能。

在这里插入图片描述

PP-UIE系列 zero-shot和Few-Shot样例

同时我们和开源的信息抽取大模型YaYi-13B、DeepSeek-R1-Distill-Qwen-14B进行了效果对比测试,下表为不同数据集领域中zero-shot的效果对比
在这里插入图片描述

综合来看,PP-UIE-0.5B在零样本任务中的整体表现明显超过YaYi-UIE-13B 和DeepSeek-R1-Distill-Qwen-14B,说明PP-UIE-0.5B具有更强的零样本学习能力,且PP-UIE-0.5B可以大幅降低推理部署成本。

亮点二: 长跨度的信息抽取能力

当前,用户面临着前所未有的海量文本数据,其中不乏长篇文章、报告和文档。因此,用户对于长文信息抽取的必要性愈发凸显。在此背景下,PP-UIE系列模型凭借其长文能力,为用户提供长文信息抽取的高效工具。PP-UIE能跨越多个段落或句子识别关键信息,形成对文本内容的完整理解。传统的UIE-Base模型在处理文本时存在局限性,只能支持256个Token长度的文本抽取,这大大限制了其在处理长文本时的应用。而 PP-UIE 则突破了这一限制,可以支持8192个Token长度的文档级别的信息抽取,使得长文档信息抽取能力得到大幅提升。这一改进使得 PP-UIE 在处理复杂文本时更加高效、准确,具有广泛的应用前景。


抽取内容:"嫌疑人,案发城市,资损金额"

输出:"贺某,孙某,杞县阳堌镇北村,杞县,3700多元,1300元"

抽取内容:"时间,公司,财务数据,业务"

输出:"2023年10月18日,摩根士丹利,2023年第三季度,72亿美元,18%,165亿美元,145亿美元,14%,88亿美元,12%,全球财富管理市场,高净值客户市场,北美和欧洲市场,高净值客户,并购和IPO业务,美国联邦储备系统(美联储),债券交易业务,债券交易收入,同比下降了8%,人工智能(AI),数字化金融,科技创新基金,绿色债券,环境、社会和治理(ESG)投资,绿色金融产品,清洁能源项目,可再生能源,碳排放减排技术,高盛集团,瑞士信贷,花旗银行,全球信用卡和零售银行业务,亚洲市场,中国,印度,新兴市场,全球高净值客户,大数据,人工智能"

亮点三: 完备的大模型信息抽取定制能力

对于基础的信息抽取任务,PP-UIE系列模型可以直接上手,高效完成信息抽取。然而,面对更为复杂或特定领域的任务场景,我们强烈推荐利用轻定制功能(即仅需标注少量数据即可对模型进行微调)以进一步提高模型效果。PaddleNLP 为通用信息抽取大模型提供了完整的、可定制化的训练和推理全流程,使用户能够根据具体应用需求灵活调整模型,实现更高效、更精准的信息抽取任务。相较于LLama-Factory,PaddleNLP在训练效率上实现了1.8倍的提升(特别针对7B模型),进一步展示了其在大模型精调上的卓越性能。
在这里插入图片描述

1. 定制自己的训练数据集

步骤1:准备语料并标注

首先,需要准备相应的预标注文本,预标注文本中一行代表一条数据,并保存为txt以下格式

2022年语言与智能技术竞赛由中国中文信息学会和中国计算机学会联合主办,百度公司、中国中文信息学会评测工作委员会和中国计算机学会自然语言处理专委会承办,已连续举办4届,成为全球最热门的中文NLP赛事之一。

我们推荐使用数据标注平台doccano进行数据标注,标注方法的详细介绍请参考doccano数据标注指南。标注完成后,在doccano平台上导出文件。

· doccano数据标注指南:

https://github.com/PaddlePaddle/PaddleNLP/blob/develop/llm/application/doccano.md

步骤2:数据集格式转换

在doccano平台上导出的json格式的文件,通常不能直接用来模型微调。PaddleNLP也打通了从标注到训练的通道,即doccano导出数据后可通过doccano.py脚本轻松将数据转换为输入模型时需要的形式,实现无缝衔接。


    --doccano_file your/data/path \

    --save_dir ./data \

    --splits 0.8 0.2 0 \

    --schema_lang ch

执行以上脚本进行数据转换,执行后会在./data目录下生成训练/验证/测试集文件。

2. 模型微调

推荐使用大模型精调对模型进行微调。只需输入模型、数据集等就可以高效快速地进行微调和模型压缩等任务,可以一键启动多卡训练、混合精度训练、梯度累积、断点重启、日志显示等功能,并且针对训练过程的通用训练配置做了封装,比如:优化器、学习率调度等。

使用下面的命令,使用paddlenlp/PP-UIE-1.5B作为预训练模型进行模型微调,将微调后的模型保存至指定路径中。

如果在GPU环境中使用,可以指定gpus参数进行多卡训练:


# 返回llm目录

python -u  -m paddle.distributed.launch --gpus "0,1" run_finetune.py ./config/qwen/sft_argument.json

sft_argument.json的参考配置如下:


    "model_name_or_path": "paddlenlp/PP-UIE-1.5B",

    "dataset_name_or_path": "./application/information_extraction/data",

    "output_dir": "./checkpoints/ie_ckpts",

    "per_device_train_batch_size": 1,

    "gradient_accumulation_steps": 1,

    "per_device_eval_batch_size": 1,

    "eval_accumulation_steps":8,

    "num_train_epochs": 3,

    "learning_rate": 3e-05,

    "warmup_steps": 30,

    "logging_steps": 1,

    "evaluation_strategy": "epoch",

    "save_strategy": "epoch",

    "src_length": 1024,

    "max_length": 2048,

    "fp16": true,

    "fp16_opt_level": "O2",

    "do_train": true,

    "do_eval": true,

    "disable_tqdm": true,

    "load_best_model_at_end": true,

    "eval_with_do_generation": false,

    "metric_for_best_model": "accuracy",

    "recompute": false,

    "save_total_limit": 1,

    "tensor_parallel_degree": 1,

    "pipeline_parallel_degree": 1,

    "sharding": "stage2",

    "zero_padding": false,

    "unified_checkpoint": true,

    "use_flash_attention": false

  }

3. 定制模型一键推理

PaddleNLP提供了两种可选的方式对模型进行推理:
(1)使用 PaddleNLP的高性能 predictor进行快速推理
  • 内置全环节融合算子策略
  • 支持 Weight Only INT8及 INT4推理,支持权重、激活、Cache KV 进行 INT8、FP8量化的推理
  • 支持动态图推理和静态图推理两种方式

python predict/predictor.py \

    --model_name_or_path paddlenlp/PP-UIE-1.5B \

    --dtype float16 \

    --data_file ./application/information_extraction/data/test.json \

    --output_file ./output.json \

    --src_length  512 \

    --max_length  20 \

    --batch_size  4 \

更多关于predictor.py的配置参数说明,请参考大模型推理教程

https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/inference.html**

(2)使用taskflow进行快速推理

paddlenlp.Taskflow支持装载定制模型,通过task_path指定模型权重文件的路径,路径下需要包含训练好的模型权重文件


>>> from paddlenlp import Taskflow

>>> schema = {"竞赛名称": ["主办方", "承办方", "已举办次数"]}

# 设定抽取目标和定制化模型权重路径

>>> my_ie = Taskflow("information_extraction", schema=schema, model='paddlenlp/PP-UIE-1.5B',precision = "bfloat16", task_path='./checkpoints/ie_ckpts')

>>> pprint(my_ie("2022年语言与智能技术竞赛由中国中文信息学会和中国计算机学会联合主办,百度公司、中国中文信息学会评测工作委员会和中国计算机学会自然语言处理专委会承办,已连续举办4届,成为全球最热门的中文NLP赛事之一。"))

[{'竞赛名称': [{'relations': {'主办方': [{'text': '中国中文信息学会,中国计算机学会'}],

                          '已举办次数': [{'text': '4'}],

                          '承办方': [{'text': '百度公司,中国中文信息学会评测工作委员会,中国计算机学会自然语言处理专委会'}]},

            'text': '2022年语言与智能技术竞赛'}]}]

· 飞桨星河社区教程链接

https://aistudio.baidu.com/projectdetail/8796056

· PaddleNLP 链接

https://github.com/PaddlePaddle/PaddleNLP

为了帮助您迅速且深入地了解PP-UIE,并熟练掌握实际操作技巧,百度高级研发工程师为您详细解读从通用信息抽取大模型 PP-UIE在多场景任务下的信息抽取能力,课程视频点击链接入群即可观看;另外,我们还为您开展《PP-UIE信息抽取》实战营,助力实操PP-UIE进行信息抽取,报名即可免费获得项目消耗算力(限时一周),名额有限,先到先得:https://www.wjx.top/vm/mBKC6pb.aspx?udsid=611062

在这里插入图片描述