diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md index 3e977d297e0392201d60afbb8c0e1f53db290abf..10847c89f5fe7e7d218e20a3b211a77c49838f84 100644 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/README.md @@ -79,15 +79,24 @@ label_data(第二阶段finetuning数据集) 4、seq2seq_naive:传统seq2seq model产出的标注对话数据; ``` -    数据集、相关模型下载: +    数据集、相关模型下载 +    linux环境下: ``` python ade/prepare_data_and_model.py ``` +    数据路径:data/input/data -    数据路径:data/input/data/ +    模型路径:data/saved_models/trained_models + +    windows环境下: +``` +python ade\prepare_data_and_model.py +``` +    数据路径:data\input\data + +    模型路径:data\saved_models\trained_models -    模型路径:data/saved_models/trained_models/     下载经过预处理的数据,运行该脚本之后,data目录下会存在unlabel_data(train.ids/val.ids/test.ids),lable_data: human、keywords、seq2seq_att、seq2seq_naive(四个任务数据train.ids/val.ids/test.ids),以及word2ids. @@ -130,6 +139,7 @@ encable_ce: 是否开启ce ### 单机训练 #### 1、第一阶段matching模型的训练: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本训练 @@ -206,7 +216,14 @@ python -u main.py \ 注意: 用户进行模型训练、预测、评估等, 可通过修改data/config/ade.yaml配置文件或者从命令行传入来进行参数配置, 优先推荐命令行参数传入; +#### windows环境下: +训练: +``` +python -u main.py --do_train=true --use_cuda=false --loss_type=CLS --max_seq_len=50 --save_model_path=data\saved_models\matching_pretrained --save_param=params --training_file=data\input\data\unlabel_data\train.ids --epoch=20 --print_step=1 --save_step=400 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 --learning_rate=0.001 --sample_pro=0.1 +``` + #### 2、第二阶段finetuning模型的训练: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本训练 ``` @@ -271,9 +288,14 @@ python -u main.py \ --sample_pro=0.1 ``` +#### windows环境下: +``` +python -u main.py --do_train=true --use_cuda=false --loss_type=L2 --max_seq_len=50 --save_model_path=data\saved_models\human_finetuned --save_param=params --training_file=data\input\data\label_data\human\train.ids --epoch=50 --print_step=1 --save_step=400 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 --learning_rate=0.001 --sample_pro=0.1 +``` + ### 模型预测 #### 1、第一阶段matching模型的预测: - +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本预测 ``` @@ -329,8 +351,15 @@ python -u main.py \ 注:采用方式二时,模型预测过程可参考run.sh内具体任务的参数设置 +#### windows环境下: +预测: +``` +python -u main.py --do_predict=true --use_cuda=false --predict_file=data\input\data\unlabel_data\test.ids --init_from_params=data\saved_models\trained_models\matching_pretrained\params --loss_type=CLS --output_prediction_file=data\output\pretrain_matching_predict --max_seq_len=50 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 +``` + #### 2、第二阶段finetuning模型的预测: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本预测 ``` @@ -375,6 +404,11 @@ python -u main.py \ --vocab_size=484016 ``` +#### windows环境下: +``` +python -u main.py --do_predict=true --use_cuda=false --predict_file=data\input\data\label_data\human\test.ids --init_from_params=data\saved_models\trained_models\human_finetuned\params --loss_type=L2 --output_prediction_file=data\output\finetuning_human_predict --max_seq_len=50 --batch_size=256 --hidden_size=256 --emb_size=256 --vocab_size=484016 +``` + ### 模型评估     模块中5个任务,各任务支持计算的评估指标内容如下: @@ -412,6 +446,7 @@ seq2seq_naive:使用spearman相关系数来衡量评估模型对系统的打 |--|:--:|--:|:--:|--:| |cor|0.474|0.477|0.443|0.378| +#### linux环境下: #### 1、第一阶段matching模型的评估: ####     方式一: 推荐直接使用模块内脚本评估 @@ -434,8 +469,14 @@ python -u main.py \ --output_prediction_file="data/output/pretrain_matching_predict" \ --loss_type="CLS" ``` +#### windows环境下: +评估: +``` +python -u main.py --do_eval=true --use_cuda=false --evaluation_file=data\input\data\unlabel_data\test.ids --output_prediction_file=data\output\pretrain_matching_predict --loss_type=CLS +``` #### 2、第二阶段finetuning模型的评估: +#### linux环境下: ####     方式一: 推荐直接使用模块内脚本评估 ``` @@ -461,6 +502,11 @@ python -u main.py \ --loss_type="L2" ``` +#### windows环境下: +``` +python -u main.py --do_eval=true --use_cuda=false --evaluation_file=data\input\data\label_data\human\test.ids --output_prediction_file=data\output\finetuning_human_predict --loss_type=L2 +``` + ### 模型推断 #### 1、第一阶段matching模型的推断: ####     方式一: 推荐直接使用模块内脚本保存inference model diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py index eb27ed1c136292cf074041cee994a713503bc698..bc1dce21fd2b08225ac44e88b1ccf18c7e9b85ee 100644 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/prepare_data_and_model.py @@ -22,6 +22,7 @@ import os URLLIB=urllib if sys.version_info >= (3, 0): + import urllib.request URLLIB=urllib.request DATA_MODEL_PATH = {"DATA_PATH": "https://baidu-nlp.bj.bcebos.com/auto_dialogue_evaluation_dataset-1.0.0.tar.gz", diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py index 6797426fe9bd2f7fee27d9decf9e7a2626e5f115..a992aec97881ed9834f614b50da30dddcc677858 100644 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/ade/utils/save_load_io.py @@ -112,7 +112,7 @@ def save_param(args, exe, program, dirname): param_dir = os.path.join(args.save_model_path, args.save_param) if not os.path.exists(param_dir): - os.mkdir(param_dir) + os.makedirs(param_dir) fluid.io.save_params( exe, diff --git a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh index 78f8da406ebe670a5b7a04077b2479c523cebc4e..592fc6ced0fef6de32b28f7d8e11c9ae5dcc807f 100755 --- a/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh +++ b/PaddleNLP/PaddleDialogue/auto_dialogue_evaluation/run.sh @@ -77,7 +77,7 @@ function pretrain_train() --emb_size=256 \ --vocab_size=484016 \ --learning_rate=0.001 \ - --sample_pro 0.1 + --sample_pro=0.1 } function finetuning_train() @@ -111,7 +111,7 @@ function finetuning_train() --emb_size=256 \ --vocab_size=484016 \ --learning_rate=0.001 \ - --sample_pro 0.1 + --sample_pro=0.1 } #predict diff --git a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md index 6d49fda65e3df9b44e193bdc0296c2844af7b839..7fb56069cd59bd263eba896a05fed15064a81a47 100644 --- a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md +++ b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/README.md @@ -61,7 +61,7 @@ SWDA:Switchboard Dialogue Act Corpus; ```     数据集、相关模型下载: - +    linux环境下: ``` python dgu/prepare_data_and_model.py ``` @@ -71,11 +71,19 @@ python dgu/prepare_data_and_model.py     已训练模型路径:data/saved_models/trained_models +    windows环境下: +``` +python dgu\prepare_data_and_model.py +```     下载的数据集中已提供了训练集,测试集和验证集,用户如果需要重新生成某任务数据集的训练数据,可执行: ``` -cd dgu/scripts && bash run_build_data.sh task_name +linux环境下: +cd dgu/scripts && python run_build_data.py task_name +windows环境下: +cd dgu\scripts && python run_build_data.py task_name + 参数说明: task_name: udc, swda, mrda, atis, dstc2, 选择5个数据集选项中用户需要生成的数据名 @@ -145,6 +153,7 @@ encable_ce: 是否开启ce ### 单机训练 +#### linux环境下 ####     方式一: 推荐直接使用模块内脚本训练 ``` @@ -226,7 +235,13 @@ python -u main.py \ 1) 采用方式二时,模型训练过程可参考run.sh内相关任务的参数设置 2) 用户进行模型训练、预测、评估等, 可通过修改data/config/dgu.yaml配置文件或者从命令行传入来进行参数配置, 优先推荐命令行参数传入; +#### windows环境下 +``` +python -u main.py --task_name=atis_intent --use_cuda=false --do_train=true --in_tokens=true --epoch=20 --batch_size=4096 --do_lower_case=true --data_dir=data\input\data\atis\atis_intent --bert_config_path=data\pretrain_model\uncased_L-12_H-768_A-12\bert_config.json --vocab_path=data\pretrain_model\uncased_L-12_H-768_A-12\vocab.txt --init_from_pretrain_model=data\pretrain_model\uncased_L-12_H-768_A-12\params --save_model_path=data\saved_models\atis_intent --save_param=params --save_steps=100 --learning_rate=2e-5 --weight_decay=0.01 --max_seq_len=128 --print_steps=10 +``` + ### 模型预测 +#### linux环境下 ####     方式一: 推荐直接使用模块内脚本预测 ``` @@ -291,6 +306,11 @@ python -u main.py \ 注:采用方式二时,模型预测过程可参考run.sh内具体任务的参数设置 +#### windows环境下 +``` +python -u main.py --task_name=atis_intent --use_cuda=false --do_predict=true --in_tokens=true --batch_size=4096 --do_lower_case=true --data_dir=data\input\data\atis\atis_intent --init_from_params=data\saved_models\trained_models\atis_intent\params --bert_config_path=data\pretrain_model\uncased_L-12_H-768_A-12\bert_config.json --vocab_path=data\pretrain_model\uncased_L-12_H-768_A-12\vocab.txt --output_prediction_file=data\output\pred_atis_intent --max_seq_len=128 +``` + ### 模型评估     模块中6个任务,各任务支持计算的评估指标内容如下: @@ -314,6 +334,8 @@ swda:使用acc指标来评估DA任务分类结果; | SOTA | 76.70% | 87.40% | 96.90% | 96.89% | 74.50% | 98.32% | 81.30% | 91.70% | | DGU | 82.03% | 90.59% | 97.73% | 97.14% | 91.23% | 97.76% | 80.37% | 91.53% | +#### linux环境下 + ####     方式一: 推荐直接使用模块内脚本评估 ``` @@ -340,6 +362,11 @@ python -u main.py \ --output_prediction_file="./data/output/pred_${TASK_NAME}" ``` +#### windows环境下 +``` +python -u main.py --task_name=atis_intent --use_cuda=false --do_eval=true --evaluation_file=data\input\data\atis\atis_intent\test.txt --output_prediction_file=data\output\pred_atis_intent +``` + ### 模型推断 ####     方式一: 推荐直接使用模块内脚本保存inference model diff --git a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py index 641e56fa106bba7a07aa07eea92a2d5c381e7a3a..d47f8c4bb183811617d7612f31a7f706f6accda9 100644 --- a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py +++ b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/prepare_data_and_model.py @@ -23,6 +23,7 @@ import os URLLIB=urllib if sys.version_info >= (3, 0): + import urllib.request URLLIB=urllib.request DATA_MODEL_PATH = {"DATA_PATH": "https://baidu-nlp.bj.bcebos.com/dmtk_data_1.0.0.tar.gz", diff --git a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py index 6797426fe9bd2f7fee27d9decf9e7a2626e5f115..7fb9adc6858c86c82d0b9e22dff7a714b642531c 100644 --- a/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py +++ b/PaddleNLP/PaddleDialogue/dialogue_general_understanding/dgu/utils/save_load_io.py @@ -112,8 +112,8 @@ def save_param(args, exe, program, dirname): param_dir = os.path.join(args.save_model_path, args.save_param) if not os.path.exists(param_dir): - os.mkdir(param_dir) - + os.makedirs(param_dir) + fluid.io.save_params( exe, os.path.join(param_dir, dirname),