前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]

百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]

作者头像
汀丶人工智能
发布2022-12-21 16:30:24
1.3K0
发布2022-12-21 16:30:24
举报
文章被收录于专栏:NLP/KGNLP/KG

?相关文章:

基础知识介绍:

【一】ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀、的博客-CSDN博客_ernie模型

百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]_汀、的博客-CSDN博客_paddlenlp 安装

?项目实战:

PaddleHub--飞桨预训练模型应用工具{风格迁移模型、词法分析情感分析、Fine-tune API微调}【一】_汀、的博客-CSDN博客

PaddleHub--{超参优化AutoDL Finetuner}【二】_汀、的博客-CSDN博客

PaddleHub实战篇{词法分析模型LAC、情感分类ERNIE Tiny}训练、部署【三】_汀、的博客-CSDN博客

PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】_汀、的博客-CSDN博客

https://github.com/PaddlePaddle/PaddleNLP

https://github.com/PaddlePaddle/PaddleNLP

1.安装paddle

参考官网:开始使用_飞桨-源于产业实践的开源深度学习平台

首先在anaconda下创建虚拟环境:

代码语言:javascript
复制
conda create -n test  python=3.8 #test为创建的虚拟环境名称

在安装paddle

代码语言:javascript
复制
python -m pip install paddlepaddle==2.3.0 -i https://mirror.baidu.com/pypi/simple

验证安装

安装完成后您可以使用?python?进入python解释器,输入import?paddle?,再输入?paddle.utils.run_check() 如果出现PaddlePaddle?is?installed?successfully!,说明您已成功安装。

  • 环境主要安装Python和Paddle对应版本要求的环境,中间建议使用pip安装方式进行安装。
  • Python3版本要求:python3.7及以上版本,参考Welcome to Python.org
  • PaddlePaddle版本要求:paddlepaddle2.0+版本,参考MacOS下的PIP安装-使用文档-PaddlePaddle深度学习平台
  • Paddle环境的安装,需要确认Python和pip是64bit,并且处理器架构是x86_64(或称作x64、Intel 64、AMD64)架构,目前PaddlePaddle不支持arm64架构(mac M1除外,paddle 已支持Mac M1 芯片)。下面的第一行输出的是”64bit”,第二行输出的是”x86_64”、”x64”或”AMD64”即可:
代码语言:javascript
复制
python -c "import platform;print(platform.architecture()[0]);print(platform.machine())"

2.通用信息抽取 UIE

paddlenlp安装

环境依赖

  • python >= 3.6
  • paddlepaddle >= 2.2
代码语言:javascript
复制
pip install --upgrade paddlenlp
代码语言:javascript
复制
show paddlenlp

2.1?PaddleNLP一键预测功能:Taskflow API

环境依赖

  • python >= 3.6
  • paddlepaddle >= 2.2.0
  • paddlenlp >= 2.2.5

任务名称

调用方式

一键预测

单条输入

多条输入

文档级输入

定制化训练

其它特性

中文分词

Taskflow("word_segmentation")

?

?

?

?

?

多种分词模式,满足快速切分和实体粒度精准切分

词性标注

Taskflow("pos_tagging")

?

?

?

?

?

基于百度前沿词法分析工具LAC

命名实体识别

Taskflow("ner")

?

?

?

?

?

覆盖最全中文实体标签

依存句法分析

Taskflow("dependency_parsing")

?

?

?

?

基于最大规模中文依存句法树库研发的DDParser

信息抽取

Taskflow("information_extraction")

?

?

?

?

?

适配多场景的开放域通用信息抽取工具

『解语』-知识标注

Taskflow("knowledge_mining")

?

?

?

?

?

覆盖所有中文词汇的知识标注工具

文本纠错

Taskflow("text_correction")

?

?

?

?

?

融合拼音特征的端到端文本纠错模型ERNIE-CSC

文本相似度

Taskflow("text_similarity")

?

?

?

基于百度知道2200万对相似句组训练

情感倾向分析

Taskflow("sentiment_analysis")

?

?

?

?

基于情感知识增强预训练模型SKEP达到业界SOTA

生成式问答

Taskflow("question_answering")

?

?

?

使用最大中文开源CPM模型完成问答

智能写诗

Taskflow("poetry_generation")

?

?

?

使用最大中文开源CPM模型完成写诗

开放域对话

Taskflow("dialogue")

?

?

?

十亿级语料训练最强中文闲聊模型PLATO-Mini,支持多轮对话

?PaddleNLP提供一键预测功能,无需训练,直接输入数据即可开放域抽取结果:【信息提取】

代码语言:javascript
复制
from pprint import pprint

from paddlenlp import Taskflow

schema = ['时间', '选手', '赛事名称'] # Define the schema for entity extraction

ie = Taskflow('information_extraction', schema=schema) #花费时间会安装文件

pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!"))
代码语言:javascript
复制
[{'时间': [{'end': 6,
          'probability': 0.9857379716035553,
          'start': 0,
          'text': '2月8日上午'}],
  '赛事名称': [{'end': 23,
            'probability': 0.8503087823987343,
            'start': 6,
            'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
  '选手': [{'end': 31,
          'probability': 0.8981548639781138,
          'start': 28,
          'text': '谷爱凌'}]}]

?当然定义实体提取的模式有一定灵活性:

代码语言:javascript
复制
ie = Taskflow('information_extraction', schema=schema)
代码语言:javascript
复制
[{'分数': [{'end': 39,
          'probability': 0.9873907344274926,
          'start': 32,
          'text': '188.25分'}],
  '时间': [{'end': 6,
          'probability': 0.9857379716035553,
          'start': 0,
          'text': '2月8日上午'}],
  '赛事名称': [{'end': 23,
            'probability': 0.8503087823987343,
            'start': 6,
            'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
  '选手': [{'end': 31,
          'probability': 0.8981548639781138,
          'start': 28,
          'text': '谷爱凌'}]}]

?这里如果增加“”“奖牌、名次”等实体则无法实现

代码语言:javascript
复制
schema = ['时间', '选手', '赛事名称',"城市","分数"] # Define the schema for entity extraction
代码语言:javascript
复制
[{'分数': [{'end': 39,
          'probability': 0.9873907344274926,
          'start': 32,
          'text': '188.25分'}],
  '城市': [{'end': 8,
          'probability': 0.8775704061407907,
          'start': 6,
          'text': '北京'}],
  '时间': [{'end': 6,
          'probability': 0.9857379716035553,
          'start': 0,
          'text': '2月8日上午'}],
  '赛事名称': [{'end': 23,
            'probability': 0.8503087823987343,
            'start': 6,
            'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
  '选手': [{'end': 31,
          'probability': 0.8981548639781138,
          'start': 28,
          'text': '谷爱凌'}]}]

2.2 小样本调参----轻定制功能

如果对一键预测效果不满意,也可以使用少量数据进行模型精调,进一步提升特定场景的效果,详见UIE小样本定制训练

PaddleNLP/model_zoo/uie at develop · PaddlePaddle/PaddleNLP · GitHubEasy-to-use and powerful NLP library with Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications, including Neural Search, Question Answering, Information Extraction and Sentiment Analysis end-to-end system. - PaddleNLP/model_zoo/uie at develop · PaddlePaddle/PaddleNLP

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie我们推荐使用数据标注平台doccano?进行数据标注

对于简单的抽取目标可以直接使用paddlenlp.Taskflow实现零样本(zero-shot)抽取,对于细分场景我们推荐使用轻定制功能(标注少量数据进行模型微调)以进一步提升效果。下面通过报销工单信息抽取的例子展示如何通过5条训练数据进行UIE模型微调。

代码结构: ├── utils.py ? ? ? ? ?# 数据处理工具 ├── model.py ? ? ? ? ?# 模型组网脚本 ├── doccano.py ? ? ? ?# 数据标注脚本 ├── doccano.md ? ? ? ?# 数据标注文档 ├── finetune.py ? ? ? # 模型微调脚本 ├── evaluate.py ? ? ? # 模型评估脚本 └── README.md

标注安装和标注指南:

https://github.com/PaddlePaddle/PaddleNLP/blob/develop/model_zoo/uie/doccano.md

最终效果展示:

Few-Shot实验

我们在互联网、医疗、金融三大垂类自建测试集上进行了实验:

金融

医疗

互联网

0-shot

5-shot

0-shot

5-shot

0-shot

5-shot

uie-tiny

41.11

64.53

65.40

75.72

78.32

79.68

uie-base

46.43

70.92

71.83

85.72

78.33

81.86

0-shot表示无训练数据直接通过paddlenlp.Taskflow进行预测,5-shot表示基于5条标注数据进行模型微调。实验表明UIE在垂类场景可以通过少量数据(few-shot)进一步提升效果。

3.PaddleNLP Transformer预训练模型

PaddleNLP Transformer预训练模型 — PaddleNLP 文档

PaddleNLP的Transformer预训练模型包含从?huggingface.co?直接转换的模型权重和百度自研模型权重,方便社区用户直接迁移使用。 目前共包含了40多个主流预训练模型,500多个模型权重。

Transformer预训练模型适用任务汇总

Model

Sequence Classification

Token Classification

Question Answering

Text Generation

Multiple Choice

ALBERT

?

?

?

?

?

BART

?

?

?

?

?

BERT

?

?

?

?

?

BigBird

?

?

?

?

?

Blenderbot

?

?

?

?

?

Blenderbot-Small

?

?

?

?

?

ChineseBert

?

?

?

?

?

ConvBert

?

?

?

?

?

CTRL

?

?

?

?

?

DistilBert

?

?

?

?

?

ELECTRA

?

?

?

?

?

ERNIE

?

?

?

?

?

ERNIE-CTM

?

?

?

?

?

ERNIE-DOC

?

?

?

?

?

ERNIE-GEN

?

?

?

?

?

ERNIE-GRAM

?

?

?

?

?

ERNIE-M

?

?

?

?

?

FNet

?

?

?

?

?

Funnel

?

?

?

?

?

GPT

?

?

?

?

?

LayoutLM

?

?

?

?

?

LayoutLMV2

?

?

?

?

?

LayoutXLM

?

?

?

?

?

Luke

?

?

?

?

?

MBart

?

?

?

?

?

MegatronBert

?

?

?

?

?

MobileBert

?

?

?

?

?

MPNet

?

?

?

?

?

NeZha

?

?

?

?

?

PPMiniLM

?

?

?

?

?

ProphetNet

?

?

?

?

?

Reformer

?

?

?

?

?

RemBert

?

?

?

?

?

RoBERTa

?

?

?

?

?

RoFormer

?

?

?

?

?

SKEP

?

?

?

?

?

SqueezeBert

?

?

?

?

?

T5

?

?

?

?

?

TinyBert

?

?

?

?

?

UnifiedTransformer

?

?

?

?

?

XLNet

?

?

?

?

?

使用预训练模型Fine-tune完成中文文本分类任务

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/text_classification/pretrained_models/

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.安装paddle
  • 2.通用信息抽取 UIE
    • 2.1?PaddleNLP一键预测功能:Taskflow API
      • 2.2 小样本调参----轻定制功能
      • 3.PaddleNLP Transformer预训练模型
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com