Skip to content

OliverLPH/PaddleNLP

 
 

Repository files navigation

简体中文 | English


PyPI - PaddleNLP Version PyPI - Python Version PyPI Status python version support os GitHub

简介

PaddleNLP 2.0是飞桨生态的文本领域核心库,具备易用的文本领域API多场景的应用示例、和高性能分布式训练三大特点,旨在提升飞桨开发者文本领域建模效率,并提供基于飞桨框架2.0的NLP领域最佳实践。

特性

安装

环境依赖

  • python >= 3.6
  • paddlepaddle >= 2.0.1

pip安装

pip install --upgrade paddlenlp -i https://pypi.org/simple

更多关于PaddlePaddle的安装和PaddleNLP安装详细教程请查看Installation

快速开始

数据集快速加载

from paddlenlp.datasets import load_dataset

train_ds, dev_ds, test_ds = load_dataset("chnsenticorp", splits=["train", "dev", "test"])

可参考Dataset文档 查看更多数据集。

一键加载预训练中文词向量

from paddlenlp.embeddings import TokenEmbedding

wordemb = TokenEmbedding("w2v.baidu_encyclopedia.target.word-word.dim300")
print(wordemb.cosine_sim("国王", "王后"))
>>> 0.63395125
wordemb.cosine_sim("艺术", "火车")
>>> 0.14792643

内置50+中文词向量,更多使用方法请参考Embedding文档

一键加载预训练模型

from paddlenlp.transformers import ErnieModel, BertModel, RobertaModel, ElectraModel, GPTForPretraining

ernie = ErnieModel.from_pretrained('ernie-1.0')
bert = BertModel.from_pretrained('bert-wwm-chinese')
roberta = RobertaModel.from_pretrained('roberta-wwm-ext')
electra = ElectraModel.from_pretrained('chinese-electra-small')
gpt = GPTForPretraining.from_pretrained('gpt-cpm-large-cn')

请参考Transformer API文档查看目前支持的预训练模型。

便捷获取文本特征

import paddle
from paddlenlp.transformers import ErnieTokenizer, ErnieModel

tokenizer = ErnieTokenizer.from_pretrained('ernie-1.0')
model = ErnieModel.from_pretrained('ernie-1.0')

text = tokenizer('自然语言处理')
pooled_output, sequence_output = model(input_ids=paddle.to_tensor([text['input_ids']]))

丰富的应用示例

PaddleNLP基于PaddlePaddle 2.0全新API体系,提供了丰富的应用场景示例,帮助开发者按图索骥找到所需,更快上手飞桨2.0框架。 更多模型应用场景介绍请参考PaddleNLP Examples

NLP 基础技术

任务 简介
词法分析 (Lexical Analysis) 基于BiGRU-CRF模型实现了分词、词性标注和命名实体识的联合训练任务。输入是一个字符串,而输出是句子中的词边界和词性、实体类别。
词向量 (Word Embedding) 提供60+预训练词向量,通过paddlenlp.TokenEmbedding API实现快速加载,并提供基于VisualDL的降维可视化示例。
语言模型 (Language Model) 给定一个输入词序列计算其生成概率。 语言模型的评价指标 PPL(困惑度),用于表示模型生成句子的流利程度。
语义解析 (Text-to-SQL) 语义解析是自然语言处理技术的核心任务之一,Text-to-SQL是语义解析的一个子方向,让机器自动将用户输入的自然语言问题转成数据库可操作的SQL查询语句,实现基于数据库的自动问答能力。

NLP 核心技术

NLP 系统应用

情感分析 (Sentiment Analysis)

模型 简介
SKEP 百度研究团队提出的基于情感知识增强的情感预训练算法,此算法采用无监督方法自动挖掘情感知识,然后利用情感知识构建预训练目标,从而让机器学会理解情感语义。SKEP为各类情感分析任务提供统一且强大的情感语义表示。

阅读理解 (Machine Reading Comprehension)

任务 简介
SQuAD 提供通过预训练模型在SQuAD 2.0数据集上微调的应用示例。
DuReader-yesno 提供通过预训练模型在千言数据集DuReader-yesno上微调的应用示例。
DuReader-robust 提供通过预训练模型在千言数据集DuReader-robust上微调的应用示例。

机器翻译 (Machine Translation)

模型 简介
Seq2Seq-Attn 使用编码器-解码器(Encoder-Decoder)结构, 同时使用了Attention机制来加强Decoder和Encoder之间的信息交互,Seq2Seq 广泛应用于机器翻译,自动对话机器人,文档摘要自动生成,图片描述自动生成等任务中。
Transformer 基于PaddlePaddle框架的Transformer结构搭建的机器翻译模型,Transformer 计算并行度高,能解决学习长程依赖问题。并且模型框架集成了训练,验证,预测任务,功能完备,效果突出。

同声传译(Simultaneous Translation)

模型 简介
STACL STACL是基于Prefix-to-Prefix框架设计的同传翻译模型,具备一定的隐式预测能力;结合Wait-k策略可以在保持较高的翻译质量的同时实现任意字级别的翻译延迟。

对话系统 (Dialogue System)

模型 简介
PLATO-2 百度自研领先的开放域对话预训练模型。PLATO-2: Towards Building an Open-Domain Chatbot via Curriculum Learning

拓展应用

文本知识关联 (Text to Knowledge)

[解语]((./examples/text_to_knowledge/)是由百度知识图谱部开发的文本知识关联框架,覆盖中文全词类的知识库和知识标注工具能够帮助开发者面对更加多元的应用场景,方便地融合自有知识体系,显著提升中文文本解析和挖掘效果,还可以便捷地利用知识增强机器学习模型效果。

文本图学习 (Text Graph)

模型 简介
ERNIESage 通过Graph(图)来构建自身节点和邻居节点的连接关系,将自身节点和邻居节点的关系构建成一个关联样本输入到ERNIE中,ERNIE作为聚合函数(Aggregators)来表征自身节点和邻居节点的语义关系,最终强化图中节点的语义表示。

进阶应用

模型压缩 (Model Compression)

模型 简介
Distill-LSTM 基于Distilling Task-Specific Knowledge from BERT into Simple Neural Networks论文策略的实现,将BERT中英文分类的下游模型知识通过蒸馏的方式迁移至LSTM的小模型结构中,取得比LSTM单独训练更好的效果。
OFA-BERT 基于PaddleSlim Once-For-ALL(OFA)策略对BERT在GLUE任务的下游模型进行压缩,在精度无损的情况下可减少33%参数量,达到模型小型化的提速的效果。

API 使用文档

  • Transformer API
    • 基于Transformer结构相关的预训练模型API,包含ERNIE, BERT, RoBERTa, Electra等主流经典结构和下游任务。
  • Data API
    • 文本数据处理Pipeline的相关API说明。
  • Dataset API
    • 数据集相关API,包含自定义数据集,数据集贡献与数据集快速加载等功能说明。
  • Embedding API
    • 词向量相关API,支持一键快速加载包预训练的中文词向量,VisulDL高维可视化等功能说明。
  • Metrics API
    • 针对NLP场景的评估指标说明,与飞桨2.0框架高层API兼容。

交互式Notebook教程

更多教程参见PaddleNLP on AI Studio

社区贡献与技术交流

特殊兴趣小组

  • 欢迎您加入PaddleNLP的SIG社区,贡献优秀的模型实现、公开数据集、教程与案例、外围小工具。

QQ

  • 现在就加入PaddleNLP的QQ技术交流群,一起交流NLP技术吧!⬇️

Slack

License

PaddleNLP遵循Apache-2.0开源协议

About

NLP Core Library and Model Zoo based on PaddlePaddle 2.0

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 91.9%
  • C++ 2.5%
  • Cuda 2.5%
  • Shell 2.3%
  • CMake 0.8%