diff --git a/PaddleNLP/README.md b/PaddleNLP/README.md index cf5ecd2f3be88135af1864e04379d0acffc5f30f..dcf0457f16c9794fcffc23f2d3c16087cba90a14 100644 --- a/PaddleNLP/README.md +++ b/PaddleNLP/README.md @@ -5,7 +5,7 @@

-PaddleNLP旨在帮助开发者提高文本建模的效率,通过丰富的模型库、简洁易用的API,提供飞桨2.0的最佳实践并加速NLP领域应用产业落地效率。 +PaddleNLP旨在帮助开发者提高文本建模的效率,通过丰富的模型库、简洁易用的API,提供飞桨2.0的最佳实践并加速NLP领域产业应用落地效率。 ![License](https://img.shields.io/badge/license-Apache%202-red.svg) ![python version](https://img.shields.io/badge/python-3.6+-orange.svg) @@ -24,8 +24,7 @@ PaddleNLP旨在帮助开发者提高文本建模的效率,通过丰富的模 - **高性能分布式训练** - - 通过高度优化的Transformer网络实现,结合混合精度与Fleet分布式训练API,可充分利用GPU集群资源,高效完成预训练模型的分布式训练。 - + - 通过高度优化的Transformer网络实现,结合混合精度与Fleet分布式训练API,可充分利用GPU集群资源,高效完成大规模预训练模型的分布式训练。 # 安装 @@ -33,10 +32,11 @@ PaddleNLP旨在帮助开发者提高文本建模的效率,通过丰富的模 ## 环境依赖 - python >= 3.6 -- paddlepaddle >= 2.0.0-rc1 +- paddlepaddle >= 2.0.0 + ``` -pip install paddlenlp==2.0.0b +pip install paddlenlp==2.0.0rc ``` @@ -66,19 +66,6 @@ wordemb.cosine_sim("艺术", "火车") 内置50+中文词向量,更多使用方法请参考 [Embedding文档](./examples/word_embedding/README.md)。 -## 一键加载经典模型 - -```python -from paddlenlp.models import Ernie, Senta, SimNet - -ernie = Ernie("ernie-1.0", num_classes=2, task="seq-cls") - -senta = Senta(network="bow", vocab_size=1024, num_classes=2) - -simnet = SimNet(network="gru", vocab_size=1024, num_classes=2) -``` - -更多使用方法请参考[Models API](./docs/models.md)。 ## 一键加载高质量中文预训练模型 @@ -110,13 +97,10 @@ electra = ElectraModel.from_pretrained('chinese-electra-small') - [Metrics API](./docs/metrics.md) -- [Models API](./docs/models.md) - - # 可交互式Notebook教程 -- [使用seq2vec模块进行句子情感分类](https://aistudio.baidu.com/aistudio/projectdetail/1283423) +- [使用Seq2Vec模块进行句子情感分类](https://aistudio.baidu.com/aistudio/projectdetail/1283423) - [如何通过预训练模型Fine-tune下游任务](https://aistudio.baidu.com/aistudio/projectdetail/1294333) - [使用BiGRU-CRF模型完成快递单信息抽取](https://aistudio.baidu.com/aistudio/projectdetail/1317771) - [使用预训练模型ERNIE优化快递单信息抽取](https://aistudio.baidu.com/aistudio/projectdetail/1329361) diff --git a/PaddleNLP/README_en.md b/PaddleNLP/README_en.md index 15a9d3343d10763390a38716a111c5125bb537fc..10a28dab8ce3f2f20c03a1a163ab7161a57054cf 100644 --- a/PaddleNLP/README_en.md +++ b/PaddleNLP/README_en.md @@ -30,10 +30,10 @@ PaddleNLP aims to accelerate NLP applications through powerful model zoo, easy-t ### Prerequisites * python >= 3.6 -* paddlepaddle >= 2.0.0-rc1 +* paddlepaddle >= 2.0.0 ``` -pip install paddlenlp>=2.0.0a +pip install paddlenlp>=2.0.0rc ``` ## Quick Start @@ -59,15 +59,6 @@ wordemb.cosine_sim("艺术", "火车") >>> 0.14792643 ``` -### One-Line Classical Model Building - -```python -from paddlenlp.models import Ernie - -ernie = Ernie(Ernie.Task.SeqCls) -ernie.forward(input_ids, segment_ids) -``` - ### Rich Chinsese Pre-trained Models ```python @@ -92,11 +83,6 @@ For more pretrained model selection, please refer to [PretrainedModels](./paddle - [Metrics API](./docs/metrics.md) -- [Models API](./docs/models.md) - - - - ## Tutorials diff --git a/PaddleNLP/examples/README.md b/PaddleNLP/examples/README.md index c892681fe62013e716d1a01d6f45e2366a9e9a0e..001526f4cb20e502002eae9e13de34934e79205a 100644 --- a/PaddleNLP/examples/README.md +++ b/PaddleNLP/examples/README.md @@ -3,7 +3,7 @@ [**PaddleNLP**](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP) 是基于 PaddlePaddle 深度学习框架开发的自然语言处理 (NLP) 工具,算法,模型和数据的开源项目。百度在 NLP 领域十几年的深厚积淀为 PaddleNLP 提供了强大的核心动力。PaddleNLP 提供较为丰富的模型库,基本涵盖了主流的NLP任务,因为模型库中使用了PaddleNLP提供的基础NLP工具,例如数据集处理,高阶API,使得模型库的算法简洁易懂。下面是 PaddleNLP 支持任务的具体信息,具体主要是包括了 **NLP基础技术**, **NLP核心技术**, **NLP核心应用**。 -### 基础技术模型 +### 基础技术 | 任务类型 | 目录 | 简介 | | ----------------------------------| ------------------------------------------------------------ | ------------------------------------------------------------ | @@ -11,14 +11,14 @@ | 预训练词向量 | [Word Embedding](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/examples/word_embedding) | 提供了丰富的中文预训练词向量,通过简单配置即可使用词向量来进行热启训练,能支持较多的中文场景下的训练任务的热启训练,加快训练收敛速度。| -### 核心技术模型 +### 核心技术 | 任务类型 | 目录 | 简介 | | -------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | ERNIE-GEN文本生成 | [ERNIE-GEN(An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation)](./text_generation/ernie-gen) |ERNIE-GEN是百度发布的生成式预训练模型,是一种Multi-Flow结构的预训练和微调框架。ERNIE-GEN利用更少的参数量和数据,在摘要生成、问题生成、对话和生成式问答4个任务共5个数据集上取得了SOTA效果 | | BERT 预训练&GLUE下游任务 | [BERT(Bidirectional Encoder Representation from Transformers)](./language_model/bert) | BERT模型作为目前最为火热语义表示预训练模型,PaddleNLP提供了简洁功效的实现方式,同时易用性方面通过简单参数切换即可实现不同的BERT模型。 | | Electra 预训练&GLUE下游任务 | [Electra(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)](./language_model/electra) |ELECTRA 创新性地引入GAN的思想对BERT预训练过程进行了改进,在和BERT具有相同的模型参数、预训练计算量一样的情况下,ELECTRA GLUE得分明显好。同时相比GPT、ELMo,在GLUE得分略好时,ELECTRA预训练模型只需要很少的参数和计算量。| -### 核心应用模型 +### 核心应用 #### 机器翻译 (Machine Translation) 机器翻译是计算语言学的一个分支,是人工智能的终极目标之一,具有重要的科学研究价值。在机器翻译的任务上,提供了两大类模型,一类是传统的 Sequence to Sequence任务,简称Seq2Seq,通过RNN类模型进行编码,解码;另外一类是Transformer类模型,通过Self-Attention机制来提升Encoder和Decoder的效果,Transformer模型的具体信息可以参考论文, [Attention Is All You Need](https://arxiv.org/abs/1706.03762)。下面是具体的模型信息。 @@ -33,7 +33,6 @@ 命名实体识别(Named Entity Recognition,NER)是NLP中一项非常基础的任务。NER是信息提取、问答系统、句法分析、机器翻译等众多NLP任务的重要基础工具。命名实体识别的准确度,决定了下游任务的效果,是NLP中非常重要的一个基础问题。 在NER任务提供了两种解决方案,一类LSTM/GRU + CRF(Conditional Random Field),RNN类的模型来抽取底层文本的信息,而CRF(条件随机场)模型来学习底层Token之间的联系;另外一类是通过预训练模型,例如ERNIE,BERT模型,直接来预测Token的标签信息。 因为该类模型较为抽象,提供了一份快递单信息抽取的训练脚本给大家使用,具体的任务是通过两类的模型来抽取快递单的核心信息,例如地址,姓名,手机号码,具体的[快递单任务链接](./named_entity_recognition/express_ner)。 -下面是具体的模型信息。 | 模型 | 简介 | | ------------------------------------------------------------ | ------------------------------------------------------------ | @@ -51,17 +50,16 @@ #### 文本生成 (Text Generation) -文本生成是自然语言处理中一个重要的研究领域,具有广阔的应用前景。国内外已经有诸如Automated Insights、Narrative Science等文本生成系统投入使用,这些系统根据格式化数据或自然语言文本生成新闻、财报或者其他解释性文本。目前比较常见的文本生成任务两大类,文本写作和文本摘要。在这里主要提供百度自研的文本生成模型ERNIE-GEN, ERNIE-GEN是一种Multi-Flow结构的预训练和微调框架。ERNIE-GEN利用更少的参数量和数据,在摘要生成、问题生成、对话和生成式问答4个任务共5个数据集上取得了SOTA效果。我们基于ERNIE-GEN模型提供了一个自动关写诗的示例,来展示ERNIE-GEN的生成效果。下面是具体模型信息。 +文本生成是自然语言处理中一个重要的研究领域,具有广阔的应用前景。国内外已经有诸如Automated Insights、Narrative Science等文本生成系统投入使用,这些系统根据格式化数据或自然语言文本生成新闻、财报或者其他解释性文本。目前比较常见的文本生成任务两大类,文本写作和文本摘要。在这里主要提供百度自研的文本生成模型ERNIE-GEN, ERNIE-GEN是一种Multi-Flow结构的预训练和微调框架。ERNIE-GEN利用更少的参数量和数据,在摘要生成、问题生成、对话和生成式问答4个任务共5个数据集上取得了SOTA效果。我们基于ERNIE-GEN模型提供了一个自动关写诗的示例,来展示ERNIE-GEN的生成效果。 | 模型 | 简介 | | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [ERNIE-GEN(An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation)](./text_generation/ernie-gen) |ERNIE-GEN是百度发布的生成式预训练模型,通过Global-Attention的方式解决训练和预测曝光偏差的问题,同时使用Multi-Flow Attention机制来分别进行Global和Context信息的交互,同时通过片段生成的方式来增加语义相关性。| +| [ERNIE-GEN(An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation)](./text_generation/ernie-gen) | ERNIE-GEN是百度发布的生成式预训练模型,通过Global-Attention的方式解决训练和预测曝光偏差的问题,同时使用Multi-Flow Attention机制来分别进行Global和Context信息的交互,同时通过片段生成的方式来增加语义相关性。| #### 文本匹配 (Text Matching) -文本匹配一直是自然语言处理(NLP)领域一个基础且重要的方向,一般研究两段文本之间的关系。文本相似度计算、自然语言推理、问答系统、信息检索等,都可以看作针对不同数据和场景的文本匹配应用。在文本匹配的任务上提供了传统的SimNet(Similarity Net)和SentenceBERT模型。SimNet是一个计算短文本相似度的框架,主要包括 BOW、CNN、RNN、MMDNN 等核心网络结构形式。SimNet 框架在百度各产品上广泛应用,提供语义相似度计算训练和预测框架,适用于信息检索、新闻推荐、智能客服等多个应用场景,帮助企业解决语义匹配问题。SentenceBERT模型是通过强大语义信息的预训练模型来表征句子的语义信息,通过比较两个句子的语义信息来判断两个句子是否匹配。 -下面是具体的模型信息。 +文本匹配一直是自然语言处理(NLP)领域一个基础且重要的方向,一般研究两段文本之间的关系。文本相似度计算、自然语言推理、问答系统、信息检索等,都可以看作针对不同数据和场景的文本匹配应用。在文本匹配的任务上提供了百度自研的SimNet语义匹配框架,以及基于Transformer结构的SentenceBERT模型。SimNet是一个计算短文本相似度的框架,主要包括 BOW、CNN、RNN、MMDNN 等核心网络结构形式,在百度各产品上广泛应用,提供语义相似度计算训练和预测框架,适用于信息检索、新闻推荐、智能客服等多个应用场景,帮助企业解决语义匹配问题。SentenceBERT模型是通过强大语义信息的预训练模型来表征句子的语义信息,通过比较两个句子的语义信息来判断两个句子是否匹配。 | 模型 | 简介 | | ------------------------------------------------------------ | ------------------------------------------------------------ | @@ -70,7 +68,7 @@ #### 语言模型 (Language Model) -在自然语言处理(NLP)领域中,语言模型预训练方法在多项NLP任务上都获得了不错的提升,广泛受到了各界的关注。在这里主要是提供了目前两种语言模型,一种是RNNLM模型,通过RNN网络来进行序列任务的预测;另外一种是ELMo模型,以双向 LSTM 为网路基本组件,以 Language Model 为训练目标,通过预训练得到通用的语义表示;下面是具体的模型信息。 +在自然语言处理(NLP)领域中,语言模型预训练方法在多项NLP任务上都获得了不错的提升,广泛受到了各界的关注。在这里主要是提供了目前两种语言模型,一种是RNNLM模型,通过RNN网络来进行序列任务的预测;另外一种是ELMo模型,以双向 LSTM 为网路基本组件,以 Language Model 为训练目标,通过预训练得到通用的语义表示。 | 模型 | 简介 | | ------------------------------------------------------------ | ------------------------------------------------------------ | @@ -79,7 +77,6 @@ #### 文本图学习 (Text Graph) 在很多工业应用中,往往出现一种特殊的图:Text Graph。顾名思义,图的节点属性由文本构成,而边的构建提供了结构信息。如搜索场景下的Text Graph,节点可由搜索词、网页标题、网页正文来表达,用户反馈和超链信息则可构成边关系。百度图学习PGL((Paddle Graph Learning)团队提出ERNIESage(ERNIE SAmple aggreGatE)模型同时建模文本语义与图结构信息,有效提升Text Graph的应用效果。图学习是深度学习领域目前的研究热点,如果想对图学习有更多的了解,可以访问[PGL Github链接](https://github.com/PaddlePaddle/PGL/)。 -ERNIESage模型的具体信息如下。 | 模型 | 简介 | | ------------------------------------------------------------ | ------------------------------------------------------------ | @@ -98,7 +95,7 @@ ERNIESage模型的具体信息如下。 | 模型 | 简介 | | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [DGU](./dialogue/dgu) |通过ERNIE/BERT等预训练模型的强大的语义表示能力,抽取对话中的文本语义信息,通过对文本分类等操作就可以完成对话中的诸多任务,例如意图识别,行文识别,状态跟踪等。| +| [Dialogue General Understanding](./dialogue/dgu) | 提供基于BERT通用对话理解模型,通过对文本分类、序列标注等操作就可以完成对话中的意图识别,行文识别,状态跟踪等理解任务。| | [PLATO-2](./dialogue/plato-2) | 百度自研领先的开放域对话预训练模型。[PLATO-2: Towards Building an Open-Domain Chatbot via Curriculum Learning](https://arxiv.org/abs/2006.16779) | #### 时间序列预测(Time Series) diff --git a/PaddleNLP/examples/dialogue/dgu/README.md b/PaddleNLP/examples/dialogue/dgu/README.md index 6f52035e327dda42db426e993501510bb46fd6e7..e23a909821fabf4a093ba1d0bf786c1cad3e6f33 100644 --- a/PaddleNLP/examples/dialogue/dgu/README.md +++ b/PaddleNLP/examples/dialogue/dgu/README.md @@ -37,31 +37,23 @@ DGU模型中的6个任务,分别采用不同的评估指标在test集上进行 ### 安装说明 -* PaddlePaddle 安装 +* PaddlePaddle安装 - 本项目依赖于 PaddlePaddle 2.0rc1 及以上版本,请参考 [安装指南](http://www.paddlepaddle.org/#quick-start) 进行安装 +本项目依赖于PaddlePaddle 2.0.0及以上版本,请参考 [安装指南](http://www.paddlepaddle.org/#quick-start) 进行安装 -* PaddleNLP 安装 +* PaddleNLP安装 - ```shell - pip install paddlenlp>=2.0.0b - ``` +```shell +pip install paddlenlp>=2.0.0rc +``` * 环境依赖 + - python>=3.6 + - sentencepiece + - termcolor - Python的版本要求 3.6+ - -### 代码结构说明 - -以下是本项目主要代码结构及说明: - -```text -. -├── args.py # 运行参数配置 -├── data.py # 数据读取 -├── main.py # 训练模型主程序入口,包括训练、评估 -├── metric.py # 模型评估指标 -└── README.md # 说明文档 +```shell +pip install sentencepiece termcolor ``` ### 数据准备 @@ -147,12 +139,12 @@ python -u main.py --task_name=udc --data_dir=./DGU_datasets/udc --output_dir=./c 以上参数表示: -* task_name:任务名称,可以为udc、dstc2、atis_slot、atis_intent、mrda或swda。 -* data_dir:训练数据路径。 -* output_dir:训练保存模型的文件路径。 -* n_gpu:训练所使用的GPU卡的数量,默认为1。 -* do_train:是否进行训练,默认为`True`。 -* init_from_ckpt:恢复模型参数的路径。 +* `task_name`:任务名称,可以为udc、dstc2、atis_slot、atis_intent、mrda或swda。 +* `data_dir`:训练数据路径。 +* `output_dir`:训练保存模型的文件路径。 +* `n_gpu`:训练所使用的GPU卡的数量,默认为1。 +* `do_train:是否进行训练,默认为`True`。 +* `init_from_ckpt`:恢复模型参数的路径。 其他可选参数和参数的默认值请参考`args.py`。 diff --git a/PaddleNLP/examples/dialogue/plato-2/README.md b/PaddleNLP/examples/dialogue/plato-2/README.md index 132f00e609ed7d37cfb87ef1bbd2e03b6f772c8b..d49c7684e0d1f95b1e68719c25ea76d866f1147b 100644 --- a/PaddleNLP/examples/dialogue/plato-2/README.md +++ b/PaddleNLP/examples/dialogue/plato-2/README.md @@ -23,7 +23,7 @@ PLATO-2的训练过程及其他细节详见 [Knover](https://github.com/PaddlePa * PaddleNLP 安装 ```shell - pip install paddlenlp>=2.0.0b + pip install paddlenlp>=2.0.0rc ``` * 环境依赖 @@ -36,26 +36,6 @@ PLATO-2的训练过程及其他细节详见 [Knover](https://github.com/PaddlePa pip install sentencepiece termcolor ``` -### 代码结构说明 - -以下是本项目主要代码结构及说明: - -```text -. -├── interaction.py # 交互主程序入口 -├── model.py # 模型组网 -├── readers -│   ├── dialog_reader.py # 模型输入数据生成 -│   ├── nsp_reader.py # 模型输入数据生成 -│   └── plato_reader.py # 模型输入数据生成 -├── utils -│   ├── __init__.py # 基础函数 -│   ├── args.py # 运行参数配置 -│   ├── masking.py # mask相关函数 -│   └── tokenization.py # 分词相关函数 -└── README.md # 说明文档 -``` - ### 数据准备 您可以从以下位置下载预训练模型文件: diff --git a/PaddleNLP/examples/text_classification/README.md b/PaddleNLP/examples/text_classification/README.md index f52a6a2bec4454fbb5aa2f159359ffbbe8ba5d94..9d76fff9842ba4e7abd08193f85cb97d6ab6e867 100644 --- a/PaddleNLP/examples/text_classification/README.md +++ b/PaddleNLP/examples/text_classification/README.md @@ -9,21 +9,3 @@ ## Pretrained Model (PTMs) [Pretrained Models](./pretrained_models) 展示了如何使用以ERNIE为代表的模型Fine-tune完成文本分类任务。 - -## 线上体验教程 - -- [使用seq2vec模块进行句子情感分类](https://aistudio.baidu.com/aistudio/projectdetail/1283423) - -- [如何将预训练模型Fine-tune下游任务](https://aistudio.baidu.com/aistudio/projectdetail/1294333) - -- [使用Bi-GRU+CRF完成快递单信息抽取](https://aistudio.baidu.com/aistudio/projectdetail/1317771) - -- [使用预训练模型ERNIE优化快递单信息抽取](https://aistudio.baidu.com/aistudio/projectdetail/1329361) - -- [使用Seq2Seq模型完成自动对联模型](https://aistudio.baidu.com/aistudio/projectdetail/1321118) - -- [使用预训练模型ERNIE-GEN实现智能写诗](https://aistudio.baidu.com/aistudio/projectdetail/1339888) - -- [使用TCN网络完成新冠疫情病例数预测](https://aistudio.baidu.com/aistudio/projectdetail/1290873) - -更多教程参见[PaddleNLP on AI Studio](https://aistudio.baidu.com/aistudio/personalcenter/thirdview/574995)。 diff --git a/PaddleNLP/examples/text_matching/README.md b/PaddleNLP/examples/text_matching/README.md index f51e74afdf43ddcebc0831daff08f89876369786..5677aff0d925f08fcf1541f0a906e80735c3a75e 100644 --- a/PaddleNLP/examples/text_matching/README.md +++ b/PaddleNLP/examples/text_matching/README.md @@ -1,6 +1,6 @@ # 文本匹配 -**文本匹配一直是自然语言处理(NLP)领域一个基础且重要的方向,一般研究两段文本之间的关系。文本相似度计算、自然语言推理、问答系统、信息检索等,都可以看作针对不同数据和场景的文本匹配应用。这些自然语言处理任务在很大程度上都可以抽象成文本匹配问题,比如信息检索可以归结为搜索词和文档资源的匹配,问答系统可以归结为问题和候选答案的匹配,复述问题可以归结为两个同义句的匹配,对话系统可以归结为前一句对话和回复的匹配,机器翻译则可以归结为两种语言的匹配。** +**文本匹配一直是自然语言处理(NLP)领域一个基础且重要的方向,一般研究两段文本之间的关系。文本相似度计算、自然语言推理、问答系统、信息检索等,都可以看作针对不同数据和场景的文本匹配应用。这些自然语言处理任务在很大程度上都可以抽象成文本匹配问题,比如信息检索可以归结为搜索词和文档资源的匹配,问答系统可以归结为问题和候选答案的匹配,复述问题可以归结为两个同义句的匹配。**