简体中文 | English
- [2021-06-04] 新增多粒度语言知识预训练模型ERNIE-Gram,多项中文NLP任务取得SOTA成绩,获取2.0.2版本快速体验吧!
- [2021-05-20] PaddleNLP 2.0正式版已发布!:tada:更多详细升级信息请查看Release Note.
PaddleNLP 2.0是飞桨生态的文本领域核心库,具备易用的文本领域API,多场景的应用示例、和高性能分布式训练三大特点,旨在提升飞桨开发者文本领域建模效率,并提供基于飞桨框架2.0的NLP任务最佳实践。
-
易用的文本领域API
- 提供从数据加载、文本预处理、模型组网评估、到推理加速的领域API:一键加载丰富中文数据集的Dataset API,可灵活高效地完成数据预处理的Data API,预置60+预训练词向量的Embedding API; 提供60+预训练模型的Transformer API等,可大幅提升NLP任务建模和迭代的效率。更多API详细说明请查看PaddleNLP官方文档。
-
多场景的应用示例
- 提供多粒度多场景的应用示例,涵盖从NLP基础技术、NLP核心技术、NLP系统应用以及相关拓展应用。全面基于飞桨核心框架2.0全新API体系开发,为开发提供飞桨2.0框架在文本领域的最佳实践。更多详细应用介绍请查看PaddleNLP应用示例。
-
高性能分布式训练
- 基于飞桨核心框架领先的自动混合精度优化策略,结合分布式Fleet API,支持4D混合并行策略,可高效地完成超大规模参数的模型训练。
- python >= 3.6
- paddlepaddle >= 2.1.0
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 *
ernie = ErnieModel.from_pretrained('ernie-1.0')
bert = BertModel.from_pretrained('bert-wwm-chinese')
albert = AlbertModel.from_pretrained('albert-chinese-tiny')
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']]))
- Transformer API
- 基于Transformer结构相关的预训练模型API,包含60+预训练模型,涵盖主流BERT/ERNIE/ALBERT/RoBERTa/Electra等10+经典结构。
- Data API
- 文本数据处理Pipeline的相关API说明。
- Dataset API
- 数据集相关API,包含自定义数据集,数据集贡献与数据集快速加载等功能说明。
- Embedding API
- 词向量相关API,支持一键快速加载包预训练的中文词向量,VisulDL高维可视化等功能说明。
- Metrics API
- 针对NLP场景的评估指标说明,与飞桨2.0框架高层API兼容。
更多的API示例及其使用说明请查阅PaddleNLP官方文档
PaddleNLP的所有模型均采用PaddlePaddle 2.0全新API体系实现,通过丰富的NLP应用示例,让开发者可以更快使用飞桨2.0核心框架解决NLP问题。
任务 | 简介 |
---|---|
词向量 | 提供60+预训练词向量,通过paddlenlp.TokenEmbedding API实现快速加载,可用于模型热启动或计算词之间的语义距离,支持通过VisualDL实现降维可视化。 |
词法分析 | 基于BiGRU-CRF模型实现了分词、词性标注和命名实体识的联合训练任务。输入是中文句子,而输出是句子中的词边界、词性与实体类别。 |
语言模型 | 提供了基于RNNLM和Transformer-XL两种结构的语言模型,支持输入词序列计算其生成概率,并得到Perplexity(困惑度),用于表示模型生成句子的流利程度。 |
语义解析⭐ | 语义解析Text-to-SQL是自然语言处理技术的核心任务之一,Text-to-SQL是语义解析的一个子方向,让机器自动将用户输入的自然语言问题转成数据库可操作的SQL查询语句,是实现基于数据库自动问答的核心模块。 |
模型 | 简介 |
---|---|
RNN/CNN/GRU/LSTM | 实现了经典的RNN, CNN, GRU, LSTM等经典文本分类结构。 |
BiLSTM-Attention | 基于BiLSTM网络结构引入注意力机制提升文本分类效果。 |
BERT/ERNIE | 基于预训练模型的文本分类的模型,结合ChnSentiCorp数据提供了使用不同的预训练模型进行文本分类的Fine-tuning的示例。 |
模型 | 简介 |
---|---|
SimNet | 百度提出的语义匹配框架,主要使用BOW、CNN、GRNN等核心网络作为表示层,适用于信息检索、新闻推荐、智能客服等多种语义匹配应用场景。 |
ERNIE | 基于ERNIE使用LCQMC数据完成中文句对匹配任务,提供了Pointwise和Pairwise两种类型学习方式。 |
Sentence-BERT | 提供基于Siamese双塔结构的文本匹配模型Sentence-BERT实现,可用于获取文本的向量化表示。 |
模型 | 简介 |
---|---|
Seq2Seq | 实现了经典的Seq2Seq with Attention的网络结构,并提供在自动对联的文本生成应用示例。 |
VAE-Seq2Seq | 在传统的Seq2Seq框架基础上,加入VAE结构以实现更加多样化的文本生成。 |
ERNIE-GEN | ERNIE-GEN是百度NLP提出的基于多流(multi-flow)机制生成完整语义片段的预训练模型,基于该模型实现了提供了智能写诗的应用示例。 |
提供一套完整的语义索引开发流程,并提供了In-Batch Negative和Hardest Negatives两种策略,开发者可基于该示例实现一个轻量级的语义索引系统,更多信息请查看语义索引应用示例。
任务 | 简介 |
---|---|
DuEE | 基于DuEE数据集,使用预训练模型的方式提供句子级和篇章级的事件抽取示例。 |
DuIE | 基于DuIE数据集,使用预训练模型的方式提供关系抽取示例。 |
快递单信息抽取 | 提供BiLSTM+CRF和预训练模型两种方式完成真实的快递单信息抽取案例。 |
模型 | 简介 |
---|---|
SKEP🌟 | 百度研究团队提出的基于情感知识增强的情感预训练算法,此算法采用无监督方法自动挖掘情感知识,然后利用情感知识构建预训练目标,从而让机器学会理解情感语义。SKEP为各类情感分析任务提供统一且强大的情感语义表示。 |
任务 | 简介 |
---|---|
SQuAD | 提供通过预训练模型在SQuAD 2.0数据集上微调的应用示例。 |
DuReader-yesno | 提供通过预训练模型在千言数据集DuReader-yesno上微调的应用示例。 |
DuReader-robust | 提供通过预训练模型在千言数据集DuReader-robust上微调的应用示例。 |
模型 | 简介 |
---|---|
Seq2Seq-Attn | 使用编码器-解码器(Encoder-Decoder)结构, 同时使用了Attention机制来加强Decoder和Encoder之间的信息交互,Seq2Seq 广泛应用于机器翻译,自动对话机器人,文档摘要自动生成,图片描述自动生成等任务中。 |
Transformer | 基于PaddlePaddle框架的Transformer结构搭建的机器翻译模型,Transformer 计算并行度高,能解决学习长程依赖问题。并且模型框架集成了训练,验证,预测任务,功能完备,效果突出。 |
模型 | 简介 |
---|---|
STACL ⭐ | STACL是基于Prefix-to-Prefix框架的同传翻译模型,具备一定的隐式预测能力;结合Wait-k策略在保持较高的翻译质量的同时实现任意字级别的翻译延迟,并提供了可视化的Demo。 |
模型 | 简介 |
---|---|
PLATO-2 | PLATO-2是百度自研领先的基于课程学习两阶段方式训练的开放域对话预训练模型。 |
PLATO-mini🌟 | 基于6层UnifiedTransformer预训练结构,结合海量中文对话语料数据预训练的轻量级中文闲聊对话模型。 |
🌟解语是由百度知识图谱部开发的文本知识关联框架,覆盖中文全词类的知识库和知识标注工具,能够帮助开发者面对更加多元的应用场景,方便地融合自有知识体系,显著提升中文文本解析和挖掘效果,还可以便捷地利用知识增强机器学习模型效果。
模型 | 简介 |
---|---|
ERNIESage | 基于飞桨PGL图学习框架结合PaddleNLP Transformer API实现的文本图学习模型。 |
模型 | 简介 |
---|---|
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%参数量,达到模型小型化的提速的效果。 |
模型 | 简介 |
---|---|
TCN(Temporal Convolutional Network) | TCN模型基于卷积的时间序列模型,通过因果卷积(Causal Convolution)和空洞卷积(Dilated Convolution) 特定的组合方式解决卷积不适合时间序列任务的问题,TCN具备并行度高,内存低等诸多优点,在某些时间序列任务上效果已经超过传统的RNN模型。 |
- 使用Seq2Vec模块进行句子情感分类
- 如何通过预训练模型Fine-tune下游任务
- 使用BiGRU-CRF模型完成快递单信息抽取
- 使用预训练模型ERNIE优化快递单信息抽取
- 使用Seq2Seq模型完成自动对联
- 使用预训练模型ERNIE-GEN实现智能写诗
- 使用TCN网络完成新冠疫情病例数预测
更多教程参见PaddleNLP on AI Studio。
更多版本更新说明请查看ChangeLog
- 欢迎您加入PaddleNLP的SIG社区,贡献优秀的模型实现、公开数据集、教程与案例等。
- 现在就加入PaddleNLP的QQ技术交流群,一起交流NLP技术吧!⬇️
PaddleNLP遵循Apache-2.0开源协议。