4. match-pyramid (Text Matching as Image Recognition)¶
代码请参考:match-pyramid文本匹配模型如果我们的代码对您有用,还请点个star啊~关注我们,多少你能懂一点
4.1. 内容¶
4.2. 模型简介¶
在许多自然语言处理任务中,匹配两个文本是一个基本问题。一种有效的方法是从单词,短语和句子中提取有意义的匹配模式以产生匹配分数。受卷积神经网络在图像识别中的成功启发,神经元可以根据提取的基本视觉模式(例如定向的边角和边角)捕获许多复杂的模式,所以我们尝试将文本匹配建模为图像识别问题。本模型对齐原作者庞亮开源的tensorflow代码:https://github.com/pl8787/MatchPyramid-TensorFlow/blob/master/model/model_mp.py, 实现了下述论文中提出的Match-Pyramid模型:
@inproceedings{Pang L , Lan Y , Guo J , et al. Text Matching as Image Recognition[J]. 2016.,
title={Text Matching as Image Recognition},
author={Liang Pang, Yanyan Lan, Jiafeng Guo, Jun Xu, Shengxian Wan, Xueqi Cheng},
year={2016}
}
4.3. 数据准备¶
训练及测试数据集选用Letor07数据集和 embed_wiki-pdc_d50_norm 词向量初始化embedding层。该数据集包括:1.词典文件:我们将每个单词映射得到一个唯一的编号wid,并将此映射保存在单词词典文件中。例如:word_dict.txt2.语料库文件:我们使用字符串标识符的值表示一个句子的编号。第二个数字表示句子的长度。例如:qid_query.txt和docid_doc.txt3.关系文件:关系文件被用来存储两个句子之间的关系,如query 和document之间的关系。例如:relation.train.fold1.txt, relation.test.fold1.txt4.嵌入层文件:我们将预训练的词向量存储在嵌入文件中。例如:embed_wiki-pdc_d50_norm
4.4. 运行环境¶
PaddlePaddle>=2.0
python 2.7/3.5/3.6/3.7
os : windows/linux/macos
4.5. 快速开始¶
本文提供了样例数据可以供您快速体验,在任意目录下均可执行。在match-pyramid模型目录的快速执行命令如下:
# 进入模型目录
# cd models/match/match-pyramid # 在任意目录均可运行
# 动态图训练
python -u ../../../tools/trainer.py -m config.yaml # 全量数据运行config_bigdata.yaml
# 动态图预测
python -u ../../../tools/infer.py -m config.yaml
# 静态图训练
python -u ../../../tools/static_trainer.py -m config.yaml # 全量数据运行config_bigdata.yaml
# 静态图预测
python -u ../../../tools/static_infer.py -m config.yaml
4.6. 模型组网¶
受卷积神经网络在图像识别中的成功启发,神经元可以根据提取的基本视觉模式(例如定向的边角和边角)捕获许多复杂的模式,所以我们尝试将文本匹配建模为图像识别问题。模型的组网结构如下:match-pyramid:
4.7. 效果复现¶
为了方便使用者能够快速的跑通每一个模型,我们在每个模型下都提供了样例数据。如果需要复现readme中的效果,请按如下步骤依次操作即可。在全量数据下模型的指标如下:
模型 | map | batch_size | epoch_num | Time of each epoch |
---|---|---|---|---|
match-pyramid | 0.39 | 128 | 2 | 约5分钟 |
确认您当前所在目录为PaddleRec/models/match/match-pyramid
进入paddlerec/datasets/letor07目录下,执行该脚本,会从国内源的服务器上下载我们预处理完成的Letor07全量数据集,并解压到指定文件夹。
cd ../../../datasets/letor07
bash run.sh
切回模型目录,直接一键运行:bash run.sh 即可得到复现的论文效果. 执行该脚本后,会开始自动训练并测试模型,将测试的结果保存到result.txt文件,最后通过执行eval.py进行评估得到数据的map指标
cd - # 切回模型目录
bash run.sh #动态图训练并测试,最后得到指标