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

 相关文章:

基础知识介绍:

【一】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/PaddleNLPhttps://github.com/PaddlePaddle/PaddleNLP

1.安装paddle

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

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

conda create -n test  python=3.8 #test为创建的虚拟环境名称

在安装paddle

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”即可:
  • python -c "import platform;print(platform.architecture()[0]);print(platform.machine())"

    2.通用信息抽取 UIE

    paddlenlp安装

    环境依赖

  • python >= 3.6
  • paddlepaddle >= 2.2
  • pip install --upgrade paddlenlp
    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提供一键预测功能,无需训练,直接输入数据即可开放域抽取结果:【信息提取】

    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分获得金牌!"))
    [{'时间': [{'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': '谷爱凌'}]}]

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

    ie = Taskflow('information_extraction', schema=schema)
    [{'分数': [{'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': '谷爱凌'}]}]

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

    schema = ['时间', '选手', '赛事名称',"城市","分数"] # Define the schema for entity extraction
    [{'分数': [{'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/PaddleNLPhttps://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/

    来源:汀、

    物联沃分享整理
    物联沃-IOTWORD物联网 » 百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]

    发表评论