开源一版DGCNN阅读理解问答模型(Keras版)
By 苏剑林 | 2019-08-20 | 71725位读者 |去年写过《基于CNN的阅读理解式问答模型:DGCNN》,介绍了一个纯卷积的简单的问答模型。当时是用Tensorflow实现的,而且没有开源,这几天抽空用Keras复现了一下,决定开源。
模型综述 #
关于DGCNN的基本介绍,这里不再赘述。本文的模型并不是之前模型的重复实现,而是有所改动,这里只介绍一下被改动的地方。
1、这里放出的模型,线下验证集的分数大概是0.72(之前大约是0.75);
2、本次模型以字为单位,使用笔者之前探索出来的“字词混合Embedding”(之前是以词为单位);
3、本次模型完全去掉了人工特征(之前用了8个人工特征);
4、本次模型去掉了位置Embedding(之前将位置Embedding拼接到输入上);
5、模型架构和训练细节有所微调。
其中,以字为单位是为了让模型的标注更灵活(避免分词错误);去掉人工特征也增强了模型的灵活性,并且提高了预测速度;至于去掉位置Embedding,是因为测了几次发现位置Embedding并没有明显提升;其它调整,比如用了最新的RAdam优化器进行训练,等等。
这次开放模型并没有精细追求分数的提高,只是纯粹引入一个Keras版本供大家参考,笔者相信提升空间还有不少,有兴趣的朋友自行调试即可(代码和数据集均已开放)。
开源地址 #
Github地址:https://github.com/bojone/dgcnn_for_reading_comprehension
(运行环境:Python 2.7 + Tensorflow 1.8 + Keras 2.2.4。运行环境问题勿扰,谢谢!)
词向量:https://pan.baidu.com/s/1YYE2T3f-lPyLBrJuUowAsA,密码:5p0h
数据集:https://pan.baidu.com/s/11C21BAupOpiYWoOx23J7Mg,密码:dh9w
(数据集的开源如有不当之处,敬请来信告知,笔者会尽快删除。)
最后的话 #
祝大家试用愉快,欢迎多多交流~
转载到请包括本文地址:https://kexue.fm/archives/6906
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Aug. 20, 2019). 《开源一版DGCNN阅读理解问答模型(Keras版) 》[Blog post]. Retrieved from https://kexue.fm/archives/6906
@online{kexuefm-6906,
title={开源一版DGCNN阅读理解问答模型(Keras版)},
author={苏剑林},
year={2019},
month={Aug},
url={\url{https://kexue.fm/archives/6906}},
}
August 21st, 2019
你好,词向量的提取码错误
抱歉,说错了,github里的是可以的
都是直接复制过来的,两者一致的~
刚刚试了是可以下载的。
August 24th, 2019
学习了,谢谢博主
September 26th, 2019
为什么要在每个delta gate cnn block的最后加一个为1的block呢,这个有什么作用吗?
大概是精细微调的思想吧(先膨胀获取全局信息,后不膨胀精细调整)。
好的
May 28th, 2020
模型训练完 怎么用的
自己想办法用
有没有参考啊 没搞过
参考:
1、一个月入门python;
2、一个月入门keras;
3、一个月入门机器学习;
4、一个月入门NLP;
5、至此应该可以熟练写出你想要的功能。
July 23rd, 2020
哈哈哈哈哈 说的对
July 27th, 2020
调用RAdam优化器的时候出现错误:AttributeError: can't set attribute。
请问是什么原因引起的
环境对了么
January 2nd, 2021
[...]回到模型方面,我们使用的是以句为单位的序列标注模型作为抽取模型,句向量部分用“BERT+平均池化”来生成,并固定不变,标注模型主体方面则用DGCNN模型构建。关于DGCNN模型,请参考 《基于CNN的阅读理解式问答模型:DGCNN》 、 《开源一版DGCNN阅读理解问答模型(Keras版)》 、 《基于DGCNN和概率图的轻量级信息抽取模型》 等。[...]