Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
249a5b9c
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看板
未验证
提交
249a5b9c
编写于
4月 08, 2019
作者:
X
xuezhong
提交者:
GitHub
4月 08, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1995 from xuezhong/dureader_v2.0
update readme
上级
1f1d80d5
da657b70
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
9 deletion
+22
-9
PaddleNLP/machine_reading_comprehension/README.md
PaddleNLP/machine_reading_comprehension/README.md
+22
-9
未找到文件。
PaddleNLP/machine_reading_comprehension/README.md
浏览文件 @
249a5b9c
DuReader是一个端到端的机器阅读理解神经网络模型,能够在给定文档和问题的情况,定位文档中问题的答案。我们首先利用双向注意力网络获得文档和问题的相同向量空间的表示,然后使用
`point network`
定位文档中答案的位置。实验显示,我们的模型能够获得在Dureader数据集上SOTA的结果。
DuReader是一个端到端的机器阅读理解神经网络模型,能够在给定文档和问题的情况
下
,定位文档中问题的答案。我们首先利用双向注意力网络获得文档和问题的相同向量空间的表示,然后使用
`point network`
定位文档中答案的位置。实验显示,我们的模型能够获得在Dureader数据集上SOTA的结果。
# 算法介绍
DuReader模型主要实现了论文
[
BiDAF
](
https://arxiv.org/abs/1611.01603
)
,
[
Match-LSTM
](
https://arxiv.org/abs/1608.07905
)
中的模型结构。
...
...
@@ -32,23 +32,27 @@ cd utils && bash download_thirdparty.sh
### 段落抽取
在段落抽取阶段,主要是使用文档相关性score对文档内容进行优化, 抽取的结果将会放到
`data/extracted/`
目录下。如果你用demo数据测试,可以跳过这一步。如果你用dureader数据,需要指定抽取的数据目录,命令如下:
```
sh run.sh --para_extraction --trainset data/preprocessed/trainset/zhidao.train.json data/preprocessed/trainset/search.train.json --devset data/preprocessed/devset/zhidao.dev.json data/preprocessed/devset/search.dev.json --testset data/preprocessed/testset/zhidao.test.json data/preprocessed/testset/search.test.json
ba
sh run.sh --para_extraction --trainset data/preprocessed/trainset/zhidao.train.json data/preprocessed/trainset/search.train.json --devset data/preprocessed/devset/zhidao.dev.json data/preprocessed/devset/search.dev.json --testset data/preprocessed/testset/zhidao.test.json data/preprocessed/testset/search.test.json
```
其中参数
`trainset`
/
`devset`
/
`testset`
分别对应训练、验证和测试数据集(下同)。
### 词典准备
在训练模型之前,我们应该确保数据已经准备好。在准备阶段,通过全部数据文件生成一个词典,这个词典会在后续的训练和预测中用到。你可以通过如下命令生成词典:
```
run.sh --prepare
bash
run.sh --prepare
```
上面的命令默认使用demo数据,如果想使用dureader数据集,应该按照如下方式指定:
```
run.sh --prepare --trainset data/extracted/trainset/zhidao.train.json data/extracted/trainset/search.train.json --devset data/extracted/devset/zhidao.dev.json data/extracted/devset/search.dev.json --testset data/extracted/testset/zhidao.test.json data/extracted/testset/search.test.json
bash
run.sh --prepare --trainset data/extracted/trainset/zhidao.train.json data/extracted/trainset/search.train.json --devset data/extracted/devset/zhidao.dev.json data/extracted/devset/search.dev.json --testset data/extracted/testset/zhidao.test.json data/extracted/testset/search.test.json
```
其中参数
`trainset`
/
`devset`
/
`testset`
分别对应训练、验证和测试数据集。
### 模型训练
训练模型的启动命令如下:
```
sh run.sh --train
bash run.sh --train
```
上面的命令默认使用demo数据,如果想使用dureader数据集,应该按照如下方式指定:
```
bash run.sh --train --trainset data/extracted/trainset/zhidao.train.json data/extracted/trainset/search.train.json --devset data/extracted/devset/zhidao.dev.json data/extracted/devset/search.dev.json --testset data/extracted/testset/zhidao.test.json data/extracted/testset/search.test.json
```
可以通过设置超参数更改训练的配置,比如通过
`--learning_rate NUM`
更改学习率,通过
`--pass_num NUM`
更改训练的轮数
训练的过程中,每隔一定迭代周期,会测试在验证集上的性能指标, 通过
`--dev_interval NUM`
设置周期大小
...
...
@@ -56,21 +60,30 @@ sh run.sh --train
### 模型评测
在模型训练结束后,如果想使用训练好的模型进行评测,获得度量指标,可以使用如下命令:
```
sh run.sh --evaluate --load_dir data/models/1
ba
sh run.sh --evaluate --load_dir data/models/1
```
其中,
`--load_dir data/models/1`
是模型的checkpoint目录
上面的命令默认使用demo数据,如果想使用dureader数据集,应该按照如下方式指定:
```
bash run.sh --evaluate --load_dir data/models/1 --devset data/extracted/devset/zhidao.dev.json data/extracted/devset/search.dev.json --testset data/extracted/testset/zhidao.test.json data/extracted/testset/search.test.json
```
### 预测
使用训练好的模型,对问答文档数据直接预测结果,获得答案,可以使用如下命令:
```
sh run.sh --predict --load_dir data/models/1 --testset data/extracted/testset/search.dev.json
bash run.sh --predict --load_dir data/models/1
```
上面的命令默认使用demo数据,如果想使用dureader数据集,应该按照如下方式指定:
```
bash run.sh --predict --load_dir data/models/1 --testset data/extracted/testset/search.test.json data/extracted/testset/zhidao.test.json
```
其中
`--testset`
指定了预测用的数据集,生成的问题答案默认会放到
`data/results/`
目录,你可以通过参数
`--result_dir DIR_PATH`
更改配置
### 实验结果
验证集 ROUGE-L:47.65
,测试集 ROUGE-L:54.58
。
验证集 ROUGE-L:47.65。
这是在P40上,使用4卡GPU,batch size=4
*
32的训练结果,如果使用单卡,指标可能会略有降低,但在验证集上的ROUGE-L也不小于47。
这是在P40上,使用4卡GPU,batch size=4
*
32的训练
5个epoch(约30个小时)的
结果,如果使用单卡,指标可能会略有降低,但在验证集上的ROUGE-L也不小于47。
## 参考文献
[
Machine Comprehension Using Match-LSTM and Answer Pointer
](
https://arxiv.org/abs/1608.07905
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录