From 58ccb80af9c38fde314015ce148d25d35f32a8c9 Mon Sep 17 00:00:00 2001 From: wangxiao1021 Date: Wed, 5 Feb 2020 15:53:31 +0800 Subject: [PATCH] update README.md --- README.md | 17 +++--- examples/multi-task/README.md | 111 ++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 9 deletions(-) create mode 100644 examples/multi-task/README.md diff --git a/README.md b/README.md index bdfa60b..cb6552d 100644 --- a/README.md +++ b/README.md @@ -186,17 +186,17 @@ Available pretrain items: For more implementation details, see following demos: -- [Sentiment Classification]() -- [Quora Question Pairs matching]() -- [Tagging]() -- [SQuAD machine Reading Comprehension](). +- [Sentiment Classification](https://github.com/PaddlePaddle/PALM/tree/master/examples/classification) +- [Quora Question Pairs matching](https://github.com/PaddlePaddle/PALM/tree/master/examples/matching) +- [Tagging](https://github.com/PaddlePaddle/PALM/tree/master/examples/tagging) +- [SQuAD machine Reading Comprehension](https://github.com/PaddlePaddle/PALM/tree/master/examples/mrc). ### set saver -To save models/checkpoints and logs during training, just call `trainer.set_saver` method. More implementation details see [this](). +To save models/checkpoints and logs during training, just call `trainer.set_saver` method. More implementation details see [this](https://github.com/PaddlePaddle/PALM/tree/master/examples). ### do prediction -To do predict/evaluation after a training stage, just create another three reader, backbone and head instance with `phase='predict'` (repeat step 1~4 above). Then do predicting with `predict` method in trainer (no need to create another trainer). More implementation details see [this](). +To do predict/evaluation after a training stage, just create another three reader, backbone and head instance with `phase='predict'` (repeat step 1~4 above). Then do predicting with `predict` method in trainer (no need to create another trainer). More implementation details see [this](https://github.com/PaddlePaddle/PALM/tree/master/examples/predict). ### multi-task learning To run with multi-task learning mode: @@ -212,7 +212,7 @@ The save/load and predict operations of a multi_head_trainer is the same as a tr For more implementation details with `multi_head_trainer`, see -- [ATIS: joint training of dialogue intent recognition and slot filling]() +- [ATIS: joint training of dialogue intent recognition and slot filling](https://github.com/PaddlePaddle/PALM/tree/master/examples/multi-task) - [MRQA: learning reading comprehension auxilarized with mask language model]() (初次发版先不用加) @@ -222,5 +222,4 @@ This tutorial is contributed by [PaddlePaddle](https://github.com/PaddlePaddle/P ## 许可证书 -此向导由[PaddlePaddle](https://github.com/PaddlePaddle/Paddle)贡献,受[Apache-2.0 license](https://github.com/PaddlePaddle/models/blob/develop/LICENSE)许可认证。 - +此向导由[PaddlePaddle](https://github.com/PaddlePaddle/Paddle)贡献,受[Apache-2.0 license](https://github.com/PaddlePaddle/models/blob/develop/LICENSE)许可认证。 \ No newline at end of file diff --git a/examples/multi-task/README.md b/examples/multi-task/README.md new file mode 100644 index 0000000..4f96c7b --- /dev/null +++ b/examples/multi-task/README.md @@ -0,0 +1,111 @@ +## Examples 6: Multi-Task Slot Filling +This task is a slot filling task. During training, the task uses intent determination task to assist in training slot filling model. The following sections detail model preparation, dataset preparation, and how to run the task. + +### Step 1: Prepare Pre-trained Models & Datasets + +#### Pre-trianed Model + +The pre-training model of this mission is: [ernie-en-base](https://github.com/PaddlePaddle/PALM/tree/r0.3-api). + +Make sure you have downloaded the required pre-training model in the current folder. + + +#### Dataset + +This task uses the `Airline Travel Information System` dataset. + +Download dataset: +```shell +python download.py +``` + +After the dataset is downloaded, you should convert the data format for training: +```shell +python process.py +``` + +If everything goes well, there will be a folder named `data/atis/` created with all the datas in it. + +Here is some example datas: + +`data/atis/atis_slot/train.tsv` : +``` +text_a label +iwanttoflyfrombostonat838amandarriveindenverat1110inthemorning OOOOOB-fromloc.city_nameOB-depart_time.timeI-depart_time.timeOOOB-toloc.city_nameOB-arrive_time.timeOOB-arrive_time.period_of_day +whatflightsareavailablefrompittsburghtobaltimoreonthursdaymorning OOOOOB-fromloc.city_nameOB-toloc.city_nameOB-depart_date.day_nameB-depart_time.period_of_day +whatisthearrivaltimeinsanfranciscoforthe755amflightleavingwashington OOOB-flight_timeI-flight_timeOB-fromloc.city_nameI-fromloc.city_nameOOB-depart_time.timeI-depart_time.timeOOB-fromloc.city_name +cheapestairfarefromtacomatoorlando B-cost_relativeOOB-fromloc.city_nameOB-toloc.city_name +``` + +`data/atis/atis_intent/train.tsv` : +``` +label text_a +0 i want to fly from boston at 838 am and arrive in denver at 1110 in the morning +0 what flights are available from pittsburgh to baltimore on thursday morning +1 what is the arrival time in san francisco for the 755 am flight leaving washington +2 cheapest airfare from tacoma to orlando +``` + +### Step 2: Train & Predict + +The code used to perform this task is in `run.py`. If you have prepared the pre-training model and the data set required for the task, run: + +```shell +python run.py +``` + +If you want to specify a specific gpu or use multiple gpus for training, please use **`CUDA_VISIBLE_DEVICES`**, for example: + +```shell +CUDA_VISIBLE_DEVICES=0,1,2 python run.py +``` + +Some logs will be shown below: + +``` +global step: 5, slot: step 3/309 (epoch 0), loss: 68.965, speed: 0.58 steps/s +global step: 10, intent: step 3/311 (epoch 0), loss: 3.407, speed: 8.76 steps/s +global step: 15, slot: step 12/309 (epoch 0), loss: 54.611, speed: 1.21 steps/s +global step: 20, intent: step 7/311 (epoch 0), loss: 3.487, speed: 10.28 steps/s +``` + + +After the run, you can view the saved models in the `outputs/` folder. + + +If you want to use the trained model to predict the `atis_slot` data, run: + +```shell +python predict.py +``` + +If you want to specify a specific gpu or use multiple gpus for predict, please use **`CUDA_VISIBLE_DEVICES`**, for example: + +```shell +CUDA_VISIBLE_DEVICES=0,1,2 python predict.py +``` + + +After the run, you can view the predictions in the `outputs/predict` folder. Here are some examples of predictions: + +``` + +[129, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 5, 19, 1, 1, 1, 1, 1, 21, 21, 68, 129] +[129, 1, 39, 37, 1, 1, 1, 1, 1, 2, 1, 5, 19, 1, 23, 3, 4, 129, 129, 129, 129, 129] +[129, 1, 39, 37, 1, 1, 1, 1, 1, 1, 2, 1, 5, 19, 129, 129, 129, 129, 129, 129, 129, 129] +[129, 1, 1, 1, 1, 1, 1, 14, 15, 1, 2, 1, 5, 19, 1, 39, 37, 129, 129, 129, 129, 129] +``` + +### Step 3: Evaluate + +Once you have the prediction, you can run the evaluation script to evaluate the model: + +```shell +python evaluate.py +``` + +The evaluation results are as follows: + +``` +precision: 0.894518453811, recall: 0.894323144105, f1: 0.894420788296 +``` -- GitLab