本项目实现了一个单一事实类问答系统.何谓"单一事实类"?即,回答的答案只为单一实体.这里提供了两个 深度学习模型 来完成这一目标.(1)
BiLSTM-CRF
(它是由 IDL 提出的)(2)Match-LSTM & CRF
(在前者的基础上添加了Match-LSTM
,用于学习文本推理信息).项目中这两个模型都是使用 PaddlePaddle 实现的.
- 搭建
PaddlePaddle
环境- 安装
Docker
, 详见 Docker docs - 获取
PaddlePaddle
的 Docker 镜像
sudo docker pull docker.paddlepaddlehub.com/paddle
ps: 详见 PaddlePaddle 使用文档 , 若有问题可使用邮箱联系我,我有制作好的 Docker 镜像;
ps: 推荐使用pycharm 远程调试 PaddlePaddle 代码
- 安装
- 下载运行所需资源
- 词向量相关( data/embedding 文件夹下)
- 已训练模型( models 文件夹下)
- 将项目代码导入到
Docker
中- 开启
PaddlePaddle
相关容器
sudo docker run -d --name paddle -p 2202:22 paddle
(这里镜像名称为paddle
, 并且容器命名为paddle
)
sudo docker exec paddle /etc/init.d/ssh start
(启动容器中的ssh
, 若未使用pycharm
此步骤不需要)- 将代码拷贝到
Docker
中
方法一:
sudo docker cp QA paddle:/home/
(这里将 QA 拷贝到容器中的 home 文件夹下)
方法二: 可使用pycharm
进行可视化操作,这里不再详细描述 - 开启
- 使用
BiLSTM-CRF
模型
sudo docker exec paddle /usr/bin/python /home/QA/src/application.py /home/QA/data/qe_text
(qe_text
中包含了 查询 和 证据文章 , 下面对它的结构做详细介绍)
- 使用
Match-LSTM & CRF
模型
sudo docker exec paddle /usr/bin/python /home/QA/src/mLSTM_crf/mLSTM_crf_application.py /home/QA/data/qe_text
- 说明
以上运行后将会得到一串标识,这些标识的数量等于证据文章中词的个数.其中,
0;
标识对应就是答案.
qe_text
结构
第一行为分词后的 "查询" .
接下来的所有都是分词后的 "证据文章". 每一行代表一篇.
- 训练
BiLSTM-CRF
- 所有的参数设置都在
config.py
中,请自行修改.(注意,这里的训练集来自于WebQA
,请自行下载.WebQA
是由百度发布的,现在好像不提供下载了,如需要邮箱联系);- 运行
train.py
即可进行训练;
- 训练
Match-LSTM & CRF
类似上述,略!