简体中文 | English
News
简介
PaddleNLP是飞桨自然语言处理开发库,具备易用的文本领域API,多场景的应用示例、和高性能分布式训练三大特点,旨在提升开发者在文本领域的开发效率,并提供丰富的NLP应用示例。
-
易用的文本领域API
-
多场景的应用示例
- 覆盖从学术到产业级的NLP应用示例,涵盖NLP基础技术、NLP系统应用以及相关拓展应用。全面基于飞桨核心框架2.0全新API体系开发,为开发者提供飞桨文本领域的最佳实践。
-
高性能分布式训练
- 基于飞桨核心框架领先的自动混合精度优化策略,结合分布式Fleet API,支持4D混合并行策略,可高效地完成大规模预训练模型训练。
安装
环境依赖
- python >= 3.6
- paddlepaddle >= 2.1
pip安装
pip install --upgrade paddlenlp
更多关于PaddlePaddle和PaddleNLP安装的详细教程请查看Installation。
易用的文本领域API
Taskflow:开箱即用的产业级NLP能力
Taskflow旨在提供开箱即用的NLP预置任务能力,覆盖自然语言理解与生成两大场景,提供产业级的效果与极致的预测性能。
from paddlenlp import Taskflow
# 中文分词
seg = Taskflow("word_segmentation")
seg("第十四届全运会在西安举办")
>>> ['第十四届', '全运会', '在', '西安', '举办']
# 词性标注
tag = Taskflow("pos_tagging")
tag("第十四届全运会在西安举办")
>>> [('第十四届', 'm'), ('全运会', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('举办', 'v')]
# 命名实体识别
ner = Taskflow("ner")
ner("《孤女》是2010年九州出版社出版的小说,作者是余兼羽")
>>> [('《', 'w'), ('孤女', '作品类_实体'), ('》', 'w'), ('是', '肯定词'), ('2010年', '时间类'), ('九州出版社', '组织机构类'), ('出版', '场景事件'), ('的', '助词'), ('小说', '作品类_概念'), (',', 'w'), ('作者', '人物类_概念'), ('是', '肯定词'), ('余兼羽', '人物类_实体')]
# 句法分析
ddp = Taskflow("dependency_parsing")
ddp("9月9日上午纳达尔在亚瑟·阿什球场击败俄罗斯球员梅德韦杰夫")
>>> [{'word': ['9月9日', '上午', '纳达尔', '在', '亚瑟·阿什球场', '击败', '俄罗斯', '球员', '梅德韦杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}]
# 情感分析
senta = Taskflow("sentiment_analysis")
senta("这个产品用起来真的很流畅,我非常喜欢")
>>> [{'text': '这个产品用起来真的很流畅,我非常喜欢', 'label': 'positive', 'score': 0.9938690066337585}]
更多使用方法请参考Taskflow文档。
Transformer API: 强大的预训练模型生态底座
覆盖30个网络结构和100余个预训练模型参数,既包括百度自研的预训练模型如ERNIE系列, PLATO, SKEP等,也涵盖业界主流的中文预训练模型如BERT,GPT,XLNet,BART等。使用AutoModel可以下载不同网络结构的预训练模型。欢迎开发者加入贡献更多预训练模型!🤗
from paddlenlp.transformers import *
ernie = AutoModel.from_pretrained('ernie-1.0')
ernie_gram = AutoModel.from_pretrained('ernie-gram-zh')
bert = AutoModel.from_pretrained('bert-wwm-chinese')
albert = AutoModel.from_pretrained('albert-chinese-tiny')
roberta = AutoModel.from_pretrained('roberta-wwm-ext')
electra = AutoModel.from_pretrained('chinese-electra-small')
gpt = AutoModelForPretraining.from_pretrained('gpt-cpm-large-cn')
对预训练模型应用范式如语义表示、文本分类、句对匹配、序列标注、问答等,提供统一的API体验。
import paddle
from paddlenlp.transformers import *
tokenizer = AutoTokenizer.from_pretrained('ernie-1.0')
text = tokenizer('自然语言处理')
# 语义表示
model = AutoModel.from_pretrained('ernie-1.0')
sequence_output, pooled_output = model(input_ids=paddle.to_tensor([text['input_ids']]))
# 文本分类 & 句对匹配
model = AutoModelForSequenceClassification.from_pretrained('ernie-1.0')
# 序列标注
model = AutoModelForTokenClassification.from_pretrained('ernie-1.0')
# 问答
model = AutoModelForQuestionAnswering.from_pretrained('ernie-1.0')
请参考Transformer API文档查看目前支持的预训练模型结构、参数和详细用法。
Dataset API: 丰富的中文数据集
Dataset API提供便捷、高效的数据集加载功能;内置千言数据集,提供丰富的面向自然语言理解与生成场景的中文数据集,为NLP研究人员提供一站式的科研体验。
from paddlenlp.datasets import load_dataset
train_ds, dev_ds, test_ds = load_dataset("chnsenticorp", splits=["train", "dev", "test"])
train_ds, dev_ds = load_dataset("lcqmc", splits=["train", "dev"])
可参考Dataset文档 查看更多数据集。
Embedding API: 一键加载预训练词向量
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文档。
更多API使用文档
更多的API示例与使用说明请查阅PaddleNLP官方文档
多场景的应用示例
PaddleNLP提供了多粒度、多场景的NLP应用示例,面向动态图模式和全新的API体系开发,更加简单易懂。
涵盖了NLP基础技术、NLP系统应用以及文本相关的NLP拓展应用、与知识库结合的文本知识关联、与图结合的文本图学习等。
NLP 基础技术
任务 |
简介 |
词向量 |
利用TokenEmbedding API 展示如何快速计算词之间语义距离和词的特征提取。 |
词法分析 |
基于BiGRU-CRF模型实现了分词、词性标注和命名实体识的联合训练任务。 |
语言模型 |
覆盖了经典的LSTM类语言模型,和Transformer类的预训练语言模型,如BERT, ERNIE, GPT, XLNet, BART,ELECTRA,BigBird等。 |
语义解析⭐ |
语义解析Text-to-SQL任务是让机器自动让自然语言问题转换数据库可操作的SQL查询语句,是实现基于数据库自动问答的核心模块。 |
句法依存分析 (Dependency Parsing)
文本分类 (Text Classification)
文本匹配 (Text Matching)
文本生成 (Text Generation)
模型 |
简介 |
Seq2Seq |
实现了经典的Seq2Seq with Attention的网络结构,并提供在自动对联的文本生成应用示例。 |
VAE-Seq2Seq |
在Seq2Seq框架基础上,加入VAE结构以实现更加多样化的文本生成。 |
ERNIE-GEN |
ERNIE-GEN是百度NLP提出的基于多流(multi-flow)机制生成完整语义片段的预训练模型,基于该模型实现了提供了智能写诗的应用示例。 |
文本纠错 (Text Correction)
语义索引 (Semantic Indexing)
提供一套完整的语义索引开发流程,并提供了In-Batch Negative和Hardest Negatives两种策略,开发者可基于该示例实现一个轻量级的语义索引系统,更多信息请查看语义索引应用示例。
任务 |
简介 |
DuEE |
基于DuEE数据集,使用预训练模型的方式提供句子级和篇章级的事件抽取示例。 |
DuIE |
基于DuIE数据集,使用预训练模型的方式提供关系抽取示例。 |
快递单信息抽取 |
提供BiLSTM+CRF和预训练模型两种方式完成真实的快递单信息抽取案例。 |
NLP 系统应用
情感分析 (Sentiment Analysis)
模型 |
简介 |
SKEP🌟 |
SKEP是百度提出的基于情感知识增强的预训练算法,利用无监督挖掘的海量情感知识构建预训练目标,让模型更好理解情感语义,可为各类情感分析任务提供统一且强大的情感语义表示。 |
阅读理解 (Machine Reading Comprehension)
文本翻译 (Text Translation)
同传翻译 (Simultaneous Translation)
模型 |
简介 |
STACL ⭐ |
STACL是百度自研的基于Prefix-to-Prefix框架的同传翻译模型,结合Wait-k策略可以在保持较高的翻译质量的同时实现任意字级别的翻译延迟,并提供了轻量级同声传译系统搭建教程。 |
对话系统 (Dialogue System)
模型 |
简介 |
PLATO-2 |
PLATO-2是百度自研领先的基于课程学习两阶段方式训练的开放域对话预训练模型。 |
PLATO-mini🌟 |
基于6层UnifiedTransformer预训练结构,结合海量中文对话语料数据预训练的轻量级中文闲聊对话模型。 |
拓展应用
文本知识关联 (Text to Knowledge)
🌟解语是由百度知识图谱部开发的文本知识关联框架,覆盖中文全词类的知识库和知识标注工具,能够帮助开发者面对更加多元的应用场景,方便地融合自有知识体系,显著提升中文文本解析和挖掘效果,还可以便捷地利用知识增强机器学习模型效果。
文本图学习 (Text Graph Learning)
模型 |
简介 |
ERNIESage |
基于飞桨PGL图学习框架结合PaddleNLP Transformer API实现的文本与图结构融合的模型。 |
模型压缩 (Model Compression)
小样本学习 (Few-Shot Learning)
交互式Notebook教程
更多教程参见PaddleNLP on AI Studio。
社区贡献与技术交流
特殊兴趣小组
- 欢迎您加入PaddleNLP的SIG社区,贡献优秀的模型实现、公开数据集、教程与案例等。
QQ
- 现在就加入PaddleNLP的QQ技术交流群,一起交流NLP技术吧!⬇️
版本更新
更多版本更新说明请查看ChangeLog
Acknowledge
我们借鉴了Hugging Face的Transformers🤗关于预训练模型使用的优秀设计,在此对Hugging Face作者及其开源社区表示感谢。
License
PaddleNLP遵循Apache-2.0开源协议。