Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
ZeyuChen committed Jun 4, 2021
1 parent ed9be04 commit cba1e7f
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 235 deletions.
64 changes: 33 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,26 @@
![support os](https://img.shields.io/badge/os-linux%2C%20win%2C%20mac-yellow.svg)
![GitHub](https://img.shields.io/github/license/paddlepaddle/paddlenlp)

## News <img src="./docs/imgs/news_icon.png" width="50"/>
## News <img src="./docs/imgs/news_icon.png" width="40"/>

* [2021-06-04] 新增多粒度语言知识预训练模型[ERNIE-Gram](https://arxiv.org/abs/2010.12148),多项中文NLP任务取得SOTA成绩,获取2.0.2版本快速体验吧!
* [2021-05-20] PaddleNLP 2.0正式版已发布!:tada:更多详细升级信息请查看[Release Note](https://github.com/PaddlePaddle/PaddleNLP/releases/tag/v2.0.0).
* [2021-06-04] 新增效果领先的[ERNIE-Gram](https://arxiv.org/abs/2010.12148)中文预训练模型,获取2.0.2版本快速体验吧!


## 简介

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

- **易用的文本领域API**
- 提供从数据集加载、文本预处理、模型组网、模型评估、和推理加速的领域API:一键加载丰富中文数据集的[Dataset API](https://paddlenlp.readthedocs.io/zh/latest/data_prepare/dataset_list.html),可灵活高效地完成数据预处理的[Data API](https://paddlenlp.readthedocs.io/zh/latest/source/paddlenlp.data.html),预置60+预训练词向量的[Embedding API](./docs/embeddings.md); 提供50+预训练模型的生态基础能力的[Transformer API](./docs/model_zoo/transformers.rst)等,可大幅提升NLP任务建模和迭代的效率。更多API详细说明请查看[PaddleNLP官方文档](https://paddlenlp.readthedocs.io/)
- 提供从数据加载、文本预处理、模型组网评估、到推理加速的领域API:一键加载丰富中文数据集的[Dataset API](https://paddlenlp.readthedocs.io/zh/latest/data_prepare/dataset_list.html),可灵活高效地完成数据预处理的[Data API](https://paddlenlp.readthedocs.io/zh/latest/source/paddlenlp.data.html),预置60+预训练词向量的[Embedding API](./docs/embeddings.md); 提供60+预训练模型的[Transformer API](./docs/model_zoo/transformers.rst)等,可大幅提升NLP任务建模和迭代的效率。更多API详细说明请查看[PaddleNLP官方文档](https://paddlenlp.readthedocs.io/)


- **多场景的应用示例**
- PaddleNLP 2.0提供多粒度多场景的应用示例,涵盖从NLP基础技术、NLP核心技术、NLP系统应用以及文本相关的拓展应用等。全面基于飞桨2.0全新API体系开发,为开发提供飞桨2.0框架在文本领域的最佳实践。更多详细应用介绍请查看[PaddleNLP应用示例](./examples/)
- 提供多粒度多场景的应用示例,涵盖从NLP基础技术、NLP核心技术、NLP系统应用以及相关拓展应用。全面基于飞桨核心框架2.0全新API体系开发,为开发提供飞桨2.0框架在文本领域的最佳实践。更多详细应用介绍请查看[PaddleNLP应用示例](./examples/)


- **高性能分布式训练**
- 基于飞桨核心框架『**动静统一**』的特性与领先的自动混合精度优化策略,通过分布式Fleet API,支持超大规模参数的4D混合并行策略,并且可根据硬件情况灵活可配,高效地完成超大规模参数的模型训练
- 基于飞桨核心框架领先的自动混合精度优化策略,结合分布式Fleet API,支持4D混合并行策略,可高效地完成超大规模参数的模型训练


## 安装
Expand All @@ -48,7 +49,7 @@ pip install --upgrade paddlenlp -i https://pypi.org/simple

更多关于PaddlePaddle和PaddleNLP安装的详细教程请查看[Installation](./docs/get_started/installation.rst)

## 快速开始
## 文本领域API

### 数据集快速加载

Expand Down Expand Up @@ -87,7 +88,7 @@ electra = ElectraModel.from_pretrained('chinese-electra-small')
gpt = GPTForPretraining.from_pretrained('gpt-cpm-large-cn')
```

请参考[Transformer API文档](./docs/model_zoo/transformers.rst)查看目前支持的预训练模型
请参考[Transformer API文档](./docs/model_zoo/transformers.rst)查看目前支持的预训练模型结构与参数

### 便捷获取文本特征

Expand All @@ -101,10 +102,11 @@ model = ErnieModel.from_pretrained('ernie-1.0')
text = tokenizer('自然语言处理')
pooled_output, sequence_output = model(input_ids=paddle.to_tensor([text['input_ids']]))
```

### 更多API使用文档

- [Transformer API](./docs/model_zoo/transformers.rst)
* 基于Transformer结构相关的预训练模型API,包含50+预训练模型,涵盖主流BERT/ERNIE/ALBERT/RoBERTa/Electra等经典结构和下游任务
* 基于Transformer结构相关的预训练模型API,包含60+预训练模型,涵盖主流BERT/ERNIE/ALBERT/RoBERTa/Electra等10+经典结构
- [Data API](./docs/data.md)
* 文本数据处理Pipeline的相关API说明。
- [Dataset API](./docs/datasets.md)
Expand All @@ -118,16 +120,15 @@ pooled_output, sequence_output = model(input_ids=paddle.to_tensor([text['input_i

## 丰富的应用示例

PaddleNLP基于PaddlePaddle 2.0全新API体系,提供了丰富的应用场景示例,帮助开发者按图索骥找到所需,更快上手飞桨2.0框架。
更多模型应用场景介绍请参考[PaddleNLP Examples](./examples/)
PaddleNLP的所有模型均采用PaddlePaddle 2.0全新API体系实现,通过丰富的NLP应用示例,让开发者可以更快使用飞桨2.0核心框架解决NLP问题。

### NLP 基础技术

| 任务 | 简介 |
| :------------ | ---- |
| [词向量](./examples/word_embedding/) | 提供60+预训练词向量,通过`paddlenlp.TokenEmbedding` API实现快速加载,可用于模型热启动或计算词之间的语义距离,支持通过VisualDL实现降维可视化。 |
| [词法分析](./examples/lexical_analysis/) | 基于BiGRU-CRF模型实现了分词、词性标注和命名实体识的联合训练任务。输入是中文句子,而输出是句子中的词边界、词性与实体类别。 |
| [词向量](./examples/word_embedding/) | 提供60+预训练词向量,通过`paddlenlp.TokenEmbedding` API实现快速加载,可用于模型热启动或计算词之间的空间距离,支持通过VisualDL实现降维可视化。 |
| [语言模型](./examples/language_model/) | 提供了基于RNN和Transformer-XL两种结构的语言模型,支持输入词序列计算其生成概率,并得到Perplexity(困惑度),用于表示模型生成句子的流利程度。 |
| [语言模型](./examples/language_model/) | 提供了基于[RNNLM](./exampels/language_model/rnnlm)[Transformer-XL]((./exampels/language_model/transformer-xl))两种结构的语言模型,支持输入词序列计算其生成概率,并得到Perplexity(困惑度),用于表示模型生成句子的流利程度。 |
| [语义解析](./examples/text_to_sql):star: | 语义解析Text-to-SQL是自然语言处理技术的核心任务之一,Text-to-SQL是语义解析的一个子方向,让机器自动将用户输入的自然语言问题转成数据库可操作的SQL查询语句,是实现基于数据库自动问答的核心模块。|

### NLP 核心技术
Expand All @@ -136,32 +137,32 @@ PaddleNLP基于PaddlePaddle 2.0全新API体系,提供了丰富的应用场景
| 模型 | 简介 |
| :----- | ------ |
| [RNN/CNN/GRU/LSTM](./examples/text_classification/rnn) | 实现了经典的RNN, CNN, GRU, LSTM等经典文本分类结构。|
| [BiLSTM-Attention](./examples/text_classification/rnn) | 基于BiLSTM的网络结构通过引入注意力机制用于提升文本分类效果|
| [BiLSTM-Attention](./examples/text_classification/rnn) | 基于BiLSTM网络结构引入注意力机制提升文本分类效果|
| [BERT/ERNIE](./examples/text_classification/pretrained_models) | 基于预训练模型的文本分类的模型,结合ChnSentiCorp数据提供了使用不同的预训练模型进行文本分类的Fine-tuning的示例。 |

#### 文本匹配 (Text Matching)
| 模型 | 简介 |
| :--------------- | ---------- |
| [SimNet](./examples/text_matching/simnet/) | 百度提出的语义匹配框架,主要使用BOW、CNN、GRNN等核心网络作为表示层,适用于信息检索、新闻推荐、智能客服等多种语义匹配应用场景。|
| [ERNIE](./examples/text_matching/ernie_matching/) | 基于ERNIE使用LCQMC数据完成中文句对匹配任务,提供了Pointwise和Pairwise两种类型学习方式。 |
| [Sentence-BERT](./examples/text_matching/sentence_transformers/) | 提供基于Siamese双塔结构的文本匹配模型[Sentence-BERT](https://arxiv.org/abs/1908.1008)实现,可用于获取文本的向量化表示。

#### 文本生成 (Text Generation)
| 模型 | 简介 |
| :------------ | ---------- |
| [Seq2Seq](./examples/text_generation/couplet) | 实现了经典的Seq2Seq with Attention的网络结构,在中文对联数据集上完成文本生成的示例|
| [Seq2Seq](./examples/text_generation/couplet) |实现了经典的Seq2Seq with Attention的网络结构,并提供在自动对联的文本生成应用示例|
| [VAE-Seq2Seq](./examples/text_generation/vae-seq2seq) | 在传统的Seq2Seq框架基础上,加入VAE结构以实现更加多样化的文本生成。|
| [ERNIE-GEN](./examples/text_generation/ernie-gen) | [ERNIE-GEN](https://arxiv.org/abs/2001.11314)是百度自研的生成式预训练模型,通过Global-Attention的方式解决训练和预测曝光偏差的问题,同时使用Multi-Flow Attention机制来分别进行Global和Context信息的交互,同时通过片段生成的方式来增加语义相关性。提供了使用中文|

#### 文本匹配 (Text Maching)
| 模型 | 简介 |
| :--------------- | ---------- |
| [SimNet](./examples/text_matching/simnet/) | 百度提出的的语义匹配框架,主要使用BOW、CNN、GRNN等核心网络作为表示层,适用于信息检索、新闻推荐、智能客服等多种语义匹配应用场景。|
| [ERNIE](./examples/text_matching/ernie_matching/) | 基于ERNIE使用LCQMC数据完成中文句对匹配任务,提供了Pointwise和Pairwise两种类型学习方式。 |
| [Sentence-BERT](./examples/text_matching/sentence_transformers/) | 基于Siamese双塔结构的[Sentence-BERT](https://arxiv.org/abs/1908.1008)文本匹配模型,可用于获取基于Transformer预训练模型的句子向量化表示。
| [ERNIE-GEN](./examples/text_generation/ernie-gen) | [ERNIE-GEN](https://arxiv.org/abs/2001.11314)是百度NLP提出的基于多流(multi-flow)机制生成完整语义片段的预训练模型,基于该模型实现了提供了智能写诗的应用示例。|

#### 语义索引 (Semantic Indexing)

开放了完整的语义索引建设流程,并提供了In-Batch Negative和Hardest Negatives两种策略,开发者可基于该示例实现一个轻量级的语义索引系统,更多信息请查看[语义索引应用示例](./examples/semantic_indexing/)
提供一套完整的语义索引开发流程,并提供了In-Batch Negative和Hardest Negatives两种策略,开发者可基于该示例实现一个轻量级的语义索引系统,更多信息请查看[语义索引应用示例](./examples/semantic_indexing/)

#### 信息抽取 (Information Extraction)
| 任务 | 简介 |
| :--------------- | ---- |
| [DuEE](./examples/information_extraction/DuEE/) | 基于**DuEE**数据集,使用预训练模型的方式提供句子级和篇章级的事件抽取示例。 |
| [DuIE](./examples/information_extraction/DuIE/) | 基于**DuIE**数据集,使用预训练模型的方式提供关系抽取示例。 |
| [DuEE](./examples/information_extraction/DuEE/) | 基于[DuEE](https://link.springer.com/chapter/10.1007/978-3-030-60457-8_44)数据集,使用预训练模型的方式提供句子级和篇章级的事件抽取示例。 |
| [DuIE](./examples/information_extraction/DuIE/) | 基于[DuIE](http://tcci.ccf.org.cn/conference/2019/papers/EV10.pdf)数据集,使用预训练模型的方式提供关系抽取示例。 |
| [快递单信息抽取](./examples/information_extraction/waybill_ie/) | 提供BiLSTM+CRF和预训练模型两种方式完成真实的快递单信息抽取案例。 |

### NLP 系统应用
Expand Down Expand Up @@ -198,13 +199,13 @@ PaddleNLP基于PaddlePaddle 2.0全新API体系,提供了丰富的应用场景
| 模型 | 简介 |
| :---------------- | ------|
| [PLATO-2](./examples/dialogue/plato-2) | [PLATO-2](https://arxiv.org/abs/2006.16779)是百度自研领先的基于课程学习两阶段方式训练的开放域对话预训练模型。|
| [PLATO-mini](./examples/dialogue/unified_transformer):star2: | 基于海量中文对话语料数据预训练的轻量级**中文**闲聊对话模型。|
| [PLATO-mini](./examples/dialogue/unified_transformer):star2: | 基于6层UnifiedTransformer预训练结构,结合海量中文对话语料数据预训练的轻量级**中文**闲聊对话模型。|

### 拓展应用

#### 文本知识关联 (Text to Knowledge)

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

- [TermTree: 中文全词类的知识库](./examples/text_to_knowledge/termtree):star2:
- [WordTag: 中文词类知识标注工具](./examples/text_to_knowledge/wordtag):star2:
Expand All @@ -222,6 +223,10 @@ PaddleNLP基于PaddlePaddle 2.0全新API体系,提供了丰富的应用场景
| [Distill-LSTM](./examples/model_compression/distill_lstm/) | 基于[Distilling Task-Specific Knowledge from BERT into Simple Neural Networks](https://arxiv.org/abs/1903.12136)论文策略的实现,将BERT中英文分类的下游模型知识通过蒸馏的方式迁移至LSTM的小模型结构中,取得比LSTM单独训练更好的效果。|
| [OFA-BERT](./examples/model_compression/ofa/) :star2:| 基于PaddleSlim Once-For-ALL(OFA)策略对BERT在GLUE任务的下游模型进行压缩,在精度无损的情况下可减少33%参数量,达到模型小型化的提速的效果。 |

#### 时间序列预测 (Time Series Prediction)
| 模型 | 简介 |
| -------- | ------- |
| [TCN(Temporal Convolutional Network)](./time_series/tcn)|TCN模型基于卷积的时间序列模型,通过因果卷积(Causal Convolution)和空洞卷积(Dilated Convolution) 特定的组合方式解决卷积不适合时间序列任务的问题,TCN具备并行度高,内存低等诸多优点,在某些时间序列任务上效果已经超过传统的RNN模型。|

## 交互式Notebook教程

Expand All @@ -238,7 +243,7 @@ PaddleNLP基于PaddlePaddle 2.0全新API体系,提供了丰富的应用场景

## 版本更新

更多版本更新的详细说明请查看[ChangeLog](./docs/change_log.md)
更多版本更新说明请查看[ChangeLog](./docs/change_log.md)

## 社区贡献与技术交流

Expand All @@ -254,9 +259,6 @@ PaddleNLP基于PaddlePaddle 2.0全新API体系,提供了丰富的应用场景
<img src="./docs/imgs/qq.png" width="200" height="200" />
</div>

### Slack
- 欢迎加入[PaddleNLP Slack channel](https://paddlenlp.slack.com/)与我们的开发者进行技术交流。

## License

PaddleNLP遵循[Apache-2.0开源协议](./LICENSE)
13 changes: 12 additions & 1 deletion docs/change_log.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
### v2.0.1 (2021.06.04)

#### 丰富预训练模型
* 新增效果领先的[ERNIE-Gram](https://arxiv.org/abs/2010.12148)中文预训练模型。
* 新增NeZha中文预训练模型,感谢 @jm12138 的高质量模型贡献!
* 新增109M参数的CPM-Distill小型化模型,感谢 @jm12138 的高质量模型贡献!

#### Bug Fix
* 修复了`softmax_with_crossentropy` API产生的deprecated warning.
* 更新了`ChnSentiCorp`, `LCQMC`等数据集的官方下载链接。

### v2.0.1 (2021.05.21)

- 修复Windows CPU环境下的import产生的CUDA_HOME检测问题。
Expand All @@ -6,7 +17,7 @@

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

### 特性
#### 特性

- **易用的文本领域API**
- 提供从数据集加载、文本预处理、组网建模、评估、到推的领域API:如一键加载丰富中文数据集的Dataset API, 可灵活高效的进行数据与处理的Data API,预置60+预训练词向量的Embedding API, 内置50+预训练模型,提供预训练模型生态基础设施的Transformer API等,可大幅提升NLP任务建模和迭代的效率。更多API详细说明请查看[PaddleNLP官方文档](https://paddlenlp.readthedocs.io/)
Expand Down
4 changes: 2 additions & 2 deletions docs/index.rst
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
欢迎使用PaddleNLP
==================

`PaddleNLP 2.0 <https://github.com/PaddlePaddle/PaddleNLP>`_ 是基于飞桨的文本领域核心库,具备**易用的文本领域API**,**多场景的应用示例**、和**高性能分布式训练**三大特点,旨在提升飞桨开发者文本领域建模效率,并提供基于飞桨框架2.0的NLP任务最佳实践。
`PaddleNLP 2.0 <https://github.com/PaddlePaddle/PaddleNLP>`_ 是基于飞桨的文本领域核心库,具备 **易用的文本领域API**,**多场景的应用示例**、和 **高性能分布式训练** 三大特点,旨在提升飞桨开发者文本领域建模效率,并提供基于飞桨核心框架2.0的NLP任务最佳实践。


- **易用的文本领域API**

- 提供从数据集加载、文本预处理、模型组网、模型评估、和推理加速的领域API:一键加载丰富中文数据集的Dataset API,可灵活高效地完成数据预处理的Data API,预置60+预训练词向量的**Embedding API**; 提供50+预训练模型的生态基础能力的**Transformer API**,可大幅提升NLP任务建模和迭代的效率。
- 提供从数据集加载、文本预处理、模型组网、模型评估、到推理加速的领域API:如一键加载中文数据集的 **Dataset API**,可灵活高效地完成数据预处理的Data API,预置60+预训练词向量的**Embedding API**; 提供50+预训练模型的生态基础能力的**Transformer API**,可大幅提升NLP任务建模和迭代的效率。

- **多场景的应用示例**

Expand Down
Loading

0 comments on commit cba1e7f

Please sign in to comment.