提交 105ffa87 编写于 作者: Z Zeyu Chen

upgrade README

上级 f2813415
......@@ -17,15 +17,12 @@ PaddleNLP 2.0拥有丰富的模型库、简洁易用的API与高性能的分布
## 特性
- **丰富的模型库**
- 涵盖了NLP主流应用相关的前沿模型,包括中文词向量、预训练模型、词法分析、文本分类、文本匹配、文本生成、机器翻译、通用对话、问答系统等,更多详细介绍请查看[PaddleNLP模型库](./exmaples/README.md)
- **简洁易用的API**
- 深度兼容飞桨2.0的高层API体系,提供可复用的文本建模模块,可大幅度减少数据处理、组网、训练环节的代码开发量,提升文本建模开发效率。
- **高性能分布式训练**
- 通过深度优化的混合精度训练策略与Fleet分布式训练API,可充分利用GPU集群资源,高效完成大规模预训练模型的分布式训练。
......@@ -40,7 +37,6 @@ PaddleNLP 2.0拥有丰富的模型库、简洁易用的API与高性能的分布
pip install paddlenlp==2.0.0rc
```
## 快速开始
### 数据集快速加载
......@@ -48,7 +44,7 @@ pip install paddlenlp==2.0.0rc
```python
from paddlenlp.datasets import ChnSentiCorp
train_dataset, dev_dataset, test_dataset= ChnSentiCorp.get_datasets(['train', 'dev', 'test'])
train_ds, dev_ds, test_ds = ChnSentiCorp.get_datasets(['train', 'dev', 'test'])
```
可参考[Dataset文档](./docs/datasets.md)查看更多数据集。
......@@ -74,11 +70,8 @@ wordemb.cosine_sim("艺术", "火车")
from paddlenlp.transformers import ErnieModel, BertModel, RobertaModel, ElectraModel
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')
```
......@@ -102,7 +95,7 @@ electra = ElectraModel.from_pretrained('chinese-electra-small')
## API 使用文档
- [Transformer API](./docs/transformers.md)
* 基于Transformer结构相关的预训练模型API,包含ERNIE, BERT, RoBERTa, Electra等主流经典结构和下游任务。
* 基于Transformer结构相关的预训练模型API,包含ERNIE, BERT, RoBERTa, Electra等主流经典结构和下游任务。
- [Data API](./docs/data.md)
* 文本数据Pipeline相关的API说明。
- [Dataset API](./docs/datasets.md)
......
# PaddleNLP docs
存放readthedocs材料
\ No newline at end of file
# paddlenlp.data
# PaddleNLP Data API
该模块提供了在NLP任务中构建有效的数据pipeline的一些常用API。
该模块提供了在NLP任务中构建有效的数据Pipeline的常用API。
## API汇总
......
# PaddleNLP Datasets
# PaddleNLP Datasets API
## 阅读理解
| 数据集名称 | 简介 | 调用方法 |
| ---- | ----- | ------ |
| [SQaAD](https://rajpurkar.github.io/SQuAD-explorer/) | 斯坦福问答数据集,包括SQaAD1.1和SQaAD2.0|`paddlenlp.datasets.SQuAD` |
| [SQuAD](https://rajpurkar.github.io/SQuAD-explorer/) | 斯坦福问答数据集,包括SQaAD1.1和SQaAD2.0|`paddlenlp.datasets.SQuAD` |
| [DuReader-yesno](https://aistudio.baidu.com/aistudio/competition/detail/49) | 千言数据集:阅读理解,判断答案极性|`paddlenlp.datasets.DuReaderYesNo` |
| [DuReader-robust](https://aistudio.baidu.com/aistudio/competition/detail/49) | 千言数据集:阅读理解,答案原文抽取|`paddlenlp.datasets.DuReaderRobust` |
......@@ -52,6 +52,6 @@
| 数据集名称 | 简介 | 调用方法 |
| ---- | --------- | ------ |
| [yahoo](https://webscope.sandbox.yahoo.com/catalog.php?datatype=l&guccounter=1) | 雅虎英文语料库| [VAE](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/examples/text_generation/vae-seq2seq)|
| [yahoo](https://webscope.sandbox.yahoo.com/catalog.php?datatype=l&guccounter=1) | 雅虎英文语料库 | [VAE](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/examples/text_generation/vae-seq2seq)|
| [PTB](http://www.fit.vutbr.cz/~imikolov/rnnlm/) | Penn Treebank Dataset | `paddlenlp.datasets.PTB`|
| [1 Billon words](https://opensource.google/projects/lm-benchmark) | 1 Billion Word Language Model Benchmark R13 Output 基准语料库| [ELMo](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/examples/language_model/elmo)|
# PaddleNLP Embedding API
- [Embedding 模型汇总](#embedding-模型汇总)
- [中文词向量](#中文词向量)
- [英文词向量](#英文词向量)
......@@ -145,7 +147,9 @@ token_embedding = TokenEmbedding(embedding_name="fasttext.wiki-news.target.word-
| fasttext.crawl.target.word-word.dim300.en | 1.19 GB | 2000002 |
## 致谢
- 感谢 [Chinese-Word-Vectors](https://github.com/Embedding/Chinese-Word-Vectors)提供Word2Vec中文Embedding预训练模型,[GloVe Project](https://nlp.stanford.edu/projects/glove)提供的GloVe英文Embedding预训练模型,[FastText Project](https://fasttext.cc/docs/en/english-vectors.html)提供的fasttext英文预训练模型。
- 感谢 [Chinese-Word-Vectors](https://github.com/Embedding/Chinese-Word-Vectors)提供Word2Vec中文Embedding预训练模型。
- 感谢 [GloVe Project](https://nlp.stanford.edu/projects/glove)提供的GloVe英文Embedding预训练模型。
- 感谢 [FastText Project](https://fasttext.cc/docs/en/english-vectors.html)提供的fasttext英文预训练模型。
## 参考论文
- Li, Shen, et al. "Analogical reasoning on chinese morphological and semantic relations." arXiv preprint arXiv:1805.06504 (2018).
......
# paddlenlp.metrics API汇总
# PaddleNLP Metrics API
目前paddlenlp提供以下评价指标:
目前PaddleNLP提供以下模型评价指标:
| Metric | 简介 | API |
| -------------------------------------------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ |
| Perplexity | 困惑度,常用来衡量语言模型优劣,也可用于机器翻译、文本生成等任务。 | `paddlenlp.metrics.Perplexity` |
| BLEU(bilingual evaluation understudy) | 机器翻译常用评价指标 | `paddlenlp.metrics.BLEU` |
| Rouge(Recall-Oriented Understudy for Gisting Evaluation) | 评估自动文摘以及机器翻译的指标 | `paddlenlp.metrics.RougeL`, `paddlenlp.metrics.RougeN` |
| Metric | 简介 | API |
| ------ | --- | --- |
| [Perplexity](https://en.wikipedia.org/wiki/Perplexity) | 困惑度,常用来衡量语言模型优劣,也可用于机器翻译、文本生成等任务。 | `paddlenlp.metrics.Perplexity` |
| [BLEU(BiLingual Evaluation Understudy)](https://en.wikipedia.org/wiki/BLEU) | 机器翻译常用评价指标 | `paddlenlp.metrics.BLEU` |
| [Rouge(Recall-Oriented Understudy for Gisting Evaluation)](https://en.wikipedia.org/wiki/ROUGE_(metric)) | 评估自动文摘以及机器翻译的指标 | `paddlenlp.metrics.RougeL`, `paddlenlp.metrics.RougeN` |
| AccuracyAndF1 | 准确率及F1-score,可用于GLUE中的MRPC 和QQP任务 | `paddlenlp.metrics.AccuracyAndF1` |
| PearsonAndSpearman | 皮尔森相关性系数和斯皮尔曼相关系数。可用于GLUE中的STS-B任务 | `paddlenlp.metrics.PearsonAndSpearman` |
| Mcc(Matthews correlation coefficient) | 马修斯相关系数,用以测量二分类的分类性能的指标。可用于GLUE中的CoLA任务 | `paddlenlp.metrics.Mcc` |
| ChunkEvaluator | 计算了块检测的精确率、召回率和F1-score。常用于序列标记任务,如命名实体识别(NER) | `paddlenlp.metrics.ChunkEvaluator` |
| Squad | 用于SQuAD和DuReader-robust的评价指标 | `paddlenlp.metrics.compute_predictions`, `paddlenlp.metrics.squad_evaluate` |
| Squad Evalutaion | 用于SQuAD和DuReader-robust的评价指标 | `paddlenlp.metrics.compute_predictions`, `paddlenlp.metrics.squad_evaluate` |
# paddlenlp.models
# PaddleNLP Models API
该模块提供了百度自研的模型的高阶API,如文本分类模型Senta,文本匹配模型SimNet,通用预训练模型ERNIE等。
......
......@@ -7,7 +7,7 @@
下表汇总了目前PaddleNLP支持的各类预训练模型。用户可以使用PaddleNLP提供的模型,完成问答、序列分类、token分类等任务。同时我们提供了22种预训练的参数权重供用户使用,其中包含了11种中文语言模型的预训练权重。
| Model | Tokenizer| Supported Task| Pretrained Weight|
| Model | Tokenizer | Supported Task| Pretrained Weight|
|---|---|---|---|
| [BERT](https://arxiv.org/abs/1810.04805) | BertTokenizer|BertModel<br> BertForQuestionAnswering<br> BertForSequenceClassification<br>BertForTokenClassification| `bert-base-uncased`<br> `bert-large-uncased` <br>`bert-base-multilingual-uncased` <br>`bert-base-cased`<br> `bert-base-chinese`<br> `bert-base-multilingual-cased`<br> `bert-large-cased`<br> `bert-wwm-chinese`<br> `bert-wwm-ext-chinese` |
|[ERNIE](https://arxiv.org/abs/1904.09223)|ErnieTokenizer<br>ErnieTinyTokenizer|ErnieModel<br> ErnieForQuestionAnswering<br> ErnieForSequenceClassification<br> ErnieForTokenClassification<br> ErnieForGeneration| `ernie-1.0`<br> `ernie-tiny`<br> `ernie-2.0-en`<br> `ernie-2.0-large-en`<br>`ernie-gen-base-en`<br>`ernie-gen-large-en`<br>`ernie-gen-large-en-430g`|
......@@ -15,33 +15,30 @@
|[ELECTRA](https://arxiv.org/abs/2003.10555) | ElectraTokenizer| ElectraModel<br>ElectraForSequenceClassification<br>ElectraForTokenClassification<br>|`electra-small`<br> `electra-base`<br> `electra-large`<br> `chinese-electra-small`<br> `chinese-electra-base`<br>|
|[Transformer](https://arxiv.org/abs/1706.03762) |- | TransformerModel | - |
:其中中文的预训练模型有 `bert-base-chinese, bert-wwm-chinese, bert-wwm-ext-chinese, ernie-1.0, ernie-tiny, roberta-wwm-ext, roberta-wwm-ext-large, rbt3, rbtl3, chinese-electra-base, chinese-electra-small`。生成模型`ernie-gen-base-en, ernie-gen-large-en, ernie-gen-large-en-430g`仅支持`ErnieForGeneration`任务。
**NOTE**:其中中文的预训练模型有 `bert-base-chinese, bert-wwm-chinese, bert-wwm-ext-chinese, ernie-1.0, ernie-tiny, roberta-wwm-ext, roberta-wwm-ext-large, rbt3, rbtl3, chinese-electra-base, chinese-electra-small`。生成模型`ernie-gen-base-en, ernie-gen-large-en, ernie-gen-large-en-430g`仅支持`ErnieForGeneration`任务。
## 预训练模型使用方法
PaddleNLP在提丰富预训练模型的同时,也降低了用户的使用难度。只需轻松十几行代码,用户即可完成加载模型,fine-tune下游任务
PaddleNLP Transformer API在提丰富预训练模型的同时,也降低了用户的使用门槛。只需十几行代码,用户即可完成模型加载和下游任务Fine-tuning
```python
import paddle
from paddlenlp.datasets import ChnSentiCorp
from paddlenlp.transformers import BertForSequenceClassification, BertTokenizer
train_dataset, dev_dataset, test_dataset = ChnSentiCorp.get_datasets(
['train', 'dev', 'test'])
train_ds, dev_ds, test_ds = ChnSentiCorp.get_datasets(['train', 'dev', 'test'])
model = BertForSequenceClassification.from_pretrained(
"bert-wwm-chinese", num_classes=len(train_dataset.get_labels()))
model = BertForSequenceClassification.from_pretrained("bert-wwm-chinese", num_classes=len(train_ds.get_labels()))
tokenizer = BertTokenizer.from_pretrained("bert-wwm-chinese")
# please define your dataloader from dataset and tokenizer
# Define the dataloader from dataset and tokenizer here
optimizer = paddle.optimizer.AdamW(learning_rate=0.001, parameters=model.parameters())
optimizer = paddle.optimizer.AdamW(learning_rate=0.001,
parameters=model.parameters())
criterion = paddle.nn.loss.CrossEntropyLoss()
for batch in train_data_loader:
input_ids, segment_ids, labels = batch
for input_ids, segment_ids, labels in train_dataloader:
logits = model(input_ids, segment_ids)
loss = criterion(logits, labels)
probs = paddle.nn.functional.softmax(logits, axis=1)
......@@ -50,15 +47,13 @@ for batch in train_data_loader:
optimizer.clear_grad()
```
上面的代码给出使用预训练模型的简要示例,更完整详细的示例代码,可以参考[使用预训练模型Fine-tune完成中文文本分类任务](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/examples/text_classification/pretrained_models)
上面的代码给出使用预训练模型的简要示例,更完整详细的示例代码,可以参考[使用预训练模型Fine-tune完成中文文本分类任务](../examples/text_classification/pretrained_models)
1. 加载数据集:PaddleNLP内置了多种数据集,用户可以一键导入所需的数据集。
2. 加载预训练模型:PaddleNLP的预训练模型可以很容易地通过`from_pretrained`方法加载。第一个参数是汇总表中对应的 `Pretrained Weight`,可加载对应的预训练权重。`BertForSequenceClassification`初始化`__init__`所需的其他参数,如`num_classes`等,也是通过`from_pretrained`传入。`Tokenizer`使用同样的`from_pretrained`方法加载。
2. 加载预训练模型:PaddleNLP的预训练模型可以很容易地通过`from_pretrained()`方法加载。第一个参数是汇总表中对应的 `Pretrained Weight`,可加载对应的预训练权重。`BertForSequenceClassification`初始化`__init__`所需的其他参数,如`num_classes`等,也是通过`from_pretrained()`传入。`Tokenizer`使用同样的`from_pretrained`方法加载。
3. 使用tokenier将dataset处理成模型的输入。此部分可以参考前述的详细示例代码。
4. 定义训练所需的优化器,loss函数等,就可以开始进行模型fine-tune任务。
更多详细使用方法,请参考[examples](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/examples)
## 参考资料:
- 部分中文预训练模型来自:https://github.com/ymcui/Chinese-BERT-wwm
- Sun, Yu, et al. "Ernie: Enhanced representation through knowledge integration." arXiv preprint arXiv:1904.09223 (2019).
......
此差异已折叠。
# Language Model
## Transformer-XL
# Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
以下是本例的简要目录结构及说明:
......
# 时间序列预测
# 使用TCN序列模型解决时间序列预测
## 1. 简介
## 简介
时间序列是指按照时间先后顺序排列而成的序列,例如每日发电量、每小时营业额等组成的序列。通过分析时间序列中的发展过程、方向和趋势,我们可以预测下一段时间可能出现的情况。在本例中,我们使用时间卷积网络TCN进行建模,将学习到的特征接入全连接层完成预测。TCN的网络如下所示:<br />
......@@ -8,25 +8,25 @@
图中是一个filters number=3, dilated rate=1的时间卷积网络,它能够学习前T个时序的数据特征。关于TCN更详细的资料请参考论文:[An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling](https://arxiv.org/abs/1803.01271)
## 2. 快速开始
## 快速开始
2019年末,新冠疫情席卷而来,影响了我们工作、生活中的方方面面。如今,疫情在国内逐渐得到控制,但在国际上依然呈现急剧扩增的趋势,预测今后的疫情形势对我们的规划实施具有重大的指导意义。在本例中,我们关注时下还在发展进行的新冠疫情,将病例数作为时序预测对象。
### 2.1 环境配置
### 环境配置
- Python >= 3.6
- python >= 3.6
- PaddlePaddle >= 2.0.0,安装方式请参考 [快速安装](https://www.paddlepaddle.org.cn/install/quick)
- paddlenlp >= 2.0.0rc
- PaddlePaddle >= 2.0.0,安装方式请参考 [快速安装](https://www.paddlepaddle.org.cn/install/quick)
### 数据准备
### 2.2 数据准备
数据集由约翰·霍普金斯大学系统科学与工程中心提供,每日最新数据可以从https://github.com/CSSEGISandData/COVID-19 仓库中获取,我们在本例中提供了2020年11月24日下载的病例数据。如您需要使用最新数据,请运行:
数据集由约翰·霍普金斯大学系统科学与工程中心提供,每日最新数据可以从 [COVID-19](https://github.com/CSSEGISandData/COVID-19) 仓库中获取,我们在本例中提供了2020年11月24日下载的病例数据。如您需要使用最新数据,请运行:
```
wget https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv
```
### 2.3 模型训练
### 模型训练
模型训练支持 CPU 和 GPU,使用 GPU 之前应指定使用的显卡卡号:
......@@ -43,7 +43,7 @@ python train.py --data_path time_series_covid19_confirmed_global.csv \
--use_gpu
```
### 2.5 模型预测
### 模型预测
预测启动方式如下:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册