Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
63fe2970
M
models
项目概览
PaddlePaddle
/
models
大约 1 年 前同步成功
通知
222
Star
6828
Fork
2962
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
602
列表
看板
标记
里程碑
合并请求
255
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
602
Issue
602
列表
看板
标记
里程碑
合并请求
255
合并请求
255
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
63fe2970
编写于
5月 15, 2019
作者:
L
lilu
提交者:
GitHub
5月 15, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test=develop (#2246)
上级
da2f12b4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
98 addition
and
94 deletion
+98
-94
PaddleNLP/dialogue_model_toolkit/auto_dialogue_evaluation/README.md
...dialogue_model_toolkit/auto_dialogue_evaluation/README.md
+98
-94
未找到文件。
PaddleNLP/dialogue_model_toolkit/auto_dialogue_evaluation/README.md
浏览文件 @
63fe2970
# Auto Dialogue Evaluation
## 简介
## 简介
### 任务说明
对话自动评估(Auto Dialogue Evaluation)评估开放领域对话系统的回复质量,能够帮助企业或个人快速评估对话系统的回复质量,减少人工评估成本。
1.
在无标注数据的情况下,利用负采样训练匹配模型作为评估工具,实现对多个对话系统回复质量排序;
2.
利用少量标注数据(特定对话系统或场景的人工打分),在匹配模型基础上进行微调,可以显著该对话系统或场景的评估效果。
2.
利用少量标注数据(特定对话系统或场景的人工打分),在匹配模型基础上进行微调,可以显著
提高
该对话系统或场景的评估效果。
### 效果说明
我们以四个不同的对话系统(seq2seq
\_
naive/seq2seq
\_
att/keywords/human)为例,使用对话自动评估工具进行自动评估。
1.
无标注数据情况下,直接使用预训练好的评估工具进行评估;
在四个对话系统上,自动评估打分和人工评估打分spearman相关系数,如下:
在四个对话系统上,自动评估打分和人工评估打分spearman相关系数,如下:
/|seq2seq\_naive|seq2seq\_att|keywords|human
--|:--:|--:|:--:|--:
cor|0.361|0.343|0.324|0.288
/|seq2seq\_naive|seq2seq\_att|keywords|human
--|:--:|--:|:--:|--:
cor|0.361|0.343|0.324|0.288
对四个系统平均得分排序:
对四个系统平均得分排序:
人工评估|k(0.591)<n(0.847)<a(1.116)<h(1.240)
--|--:
自动评估|k(0.625)<n(0.909)<a(1.399)<h(1.683)
人工评估|k(0.591)<n(0.847)<a(1.116)<h(1.240)
--|--:
自动评估|k(0.625)<n(0.909)<a(1.399)<h(1.683)
2.
利用少量标注数据微调后,自动评估打分和人工打分spearman相关系数,如下:
/|seq2seq\_naive|seq2seq\_att|keywords|human
--|:--:|--:|:--:|--:
cor|0.474|0.477|0.443|0.378
/|seq2seq\_naive|seq2seq\_att|keywords|human
--|:--:|--:|:--:|--:
cor|0.474|0.477|0.443|0.378
## 快速开始
### 安装说明
1.
paddle安装
本项目依赖于Paddle Fluid 1.3.1 及以上版本,请参考[安装指南](http://www.paddlepaddle.org/#quick-start)进行安装
本项目依赖于Paddle Fluid 1.3.1 及以上版本,请参考[安装指南](http://www.paddlepaddle.org/#quick-start)进行安装
2.
安装代码
克隆数据集代码库到本地
```
git clone https://github.com/PaddlePaddle/models.git
cd models/PaddleNLP/dialogue_model_toolkit/auto_dialogue_evaluation
```
克隆数据集代码库到本地
```
git clone https://github.com/PaddlePaddle/models.git
cd models/PaddleNLP/dialogue_model_toolkit/auto_dialogue_evaluation
```
3.
环境依赖
python版本依赖python 2.7
python版本依赖python 2.7
### 开始第一次模型调用
1.
数据准备
下载经过预处理的数据,运行该脚本之后,data目录下会存在unlabel_data(train.ids/val.ids/test.ids/word2ids),lable_data(四个任务数据train.ids/val.ids/test.ids)
下载经过预处理的数据,运行该脚本之后,data目录下会存在unlabel_data(train.ids/val.ids/test.ids),lable_data(四个任务数据train.ids/val.ids/test.ids),以及word2ids.
该项目只开源测试集数据,其他数据仅提供样例。
```
sh download_data.sh
```
该项目只开源测试集数据,其他数据仅提供样例。
```
sh download_data.sh
```
2.
模型下载
我们开源了基于海量未标注数据训练好的模型,以及基于少量标注数据微调的模型,可供用户直接使用
```
cd model_files
sh download_model.sh
```
我们开源了基于海量未标注数据训练好的模型,以及基于少量标注数据微调的模型,可供用户直接使用
```
cd model_files
sh download_model.sh
```
我们提供了两种下载方式,以下载auto_dialogue_evaluation_matching_pretrained_model为例
我们提供了两种下载方式,以下载auto_dialogue_evaluation_matching_pretrained_model为例
方式一:基于PaddleHub命令行工具(PaddleHub可参考[安装指南](https://github.com/PaddlePaddle/PaddleHub)进行安装)
```
hub download auto_dialogue_evaluation_matching_pretrained_model --output_path ./
```
方式一:基于PaddleHub命令行工具(PaddleHub可参考[安装指南](https://github.com/PaddlePaddle/PaddleHub)进行安装)
```
hub download auto_dialogue_evaluation_matching_pretrained_model --output_path ./
```
方式二:直接下载
```
wget --no-check-certificate https://baidu-nlp.bj.bcebos.com/auto_dialogue_evaluation_matching_pretrained-1.0.0.tar.gz
```
方式二:直接下载
```
wget --no-check-certificate https://baidu-nlp.bj.bcebos.com/auto_dialogue_evaluation_matching_pretrained-1.0.0.tar.gz
```
3.
模型预测
基于上面的模型和数据,可以运行下面的命令直接对对话数据进行打分。
```
TASK=human
python -u main.py \
--do_infer True \
--use_cuda \
--test_path data/label_data/$TASK/test.ids \
--init_model model_files/${TASK}_finetuned
```
基于上面的模型和数据,可以运行下面的命令直接对对话数据进行打分(预测结果输出在test_path中).
```
TASK=human
python -u main.py \
--do_infer True \
--use_cuda \
--test_path data/label_data/$TASK/test.ids \
--init_model model_files/${TASK}_finetuned
```
4.
模型评估
基于上面的模型和数据,可以运行下面的命令进行效果评估。
基于上面的模型和数据,可以运行下面的命令进行效果评估。
评估预训练模型作为自动评估效果:
```
for task in seq2seq_naive seq2seq_att keywords human
do
评估预训练模型作为自动评估效果:
```
for task in seq2seq_naive seq2seq_att keywords human
do
echo $task
python -u main.py \
--do_val True \
...
...
@@ -98,50 +98,50 @@
--test_path data/label_data/$task/test.ids \
--init_model model_files/matching_pretrained \
--loss_type L2
done
```
评估微调模型效果:
```
for task in seq2seq_naive seq2seq_att keywords human
do
echo $task
python -u main.py \
--do_val True \
--use_cuda \
--test_path data/label_data/$task/test.ids \
--init_model model_files/${task}_finetuned \
--loss_type L2
done
```
done
```
评估微调模型效果:
```
for task in seq2seq_naive seq2seq_att keywords human
do
echo $task
python -u main.py \
--do_val True \
--use_cuda \
--test_path data/label_data/$task/test.ids \
--init_model model_files/${task}_finetuned \
--loss_type L2
done
```
5.
训练与验证
基于示例的数据集,可以运行下面的命令,进行第一阶段训练
```
python -u main.py \
--do_train True \
--use_cuda \
--save_path model_files_tmp/matching_pretrained \
--train_path data/unlabel_data/train.ids \
--val_path data/unlabel_data/val.ids
```
在第一阶段训练基础上,可利用少量标注数据进行第二阶段训练
```
TASK=human
python -u main.py \
--do_train True \
--loss_type L2 \
--use_cuda \
--save_path model_files_tmp/${TASK}_finetuned \
--init_model model_files/matching_pretrained \
--train_path data/label_data/$TASK/train.ids \
--val_path data/label_data/$TASK/val.ids \
--print_step 1 \
--save_step 1 \
--num_scan_data 50
```
基于示例的数据集,可以运行下面的命令,进行第一阶段训练
```
python -u main.py \
--do_train True \
--use_cuda \
--save_path model_files_tmp/matching_pretrained \
--train_path data/unlabel_data/train.ids \
--val_path data/unlabel_data/val.ids
```
在第一阶段训练基础上,可利用少量标注数据进行第二阶段训练
```
TASK=human
python -u main.py \
--do_train True \
--loss_type L2 \
--use_cuda \
--save_path model_files_tmp/${TASK}_finetuned \
--init_model model_files/matching_pretrained \
--train_path data/label_data/$TASK/train.ids \
--val_path data/label_data/$TASK/val.ids \
--print_step 1 \
--save_step 1 \
--num_scan_data 50
```
## 进阶使用
### 任务定义与建模
...
...
@@ -152,6 +152,10 @@
利用少量标注数据,在匹配模型基础上微调。
### 数据格式说明
训练、预测、评估使用的数据示例如下,数据由三列组成,以制表符('
\t
')分隔,第一列是以空格分开的上文id,第二列是以空格分开的回复id,第三列是标签
```
723 236 7823 12 8 887 13 77 4 2
8474 13 44 34 2 87 91 23 0
```
注:本项目额外提供了分词预处理脚本(在preprocess目录下),可供用户使用,具体使用方法如下:
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录