via GitHub
雷锋网 AI 科技评论消息,中国科学院计算技术研究所网络数据科学与技术重点实验室近日发布了深度文本匹配开源项目 MatchZoo。MatchZoo 是一个 Python 环境下基于 TensorFlow 开发的开源文本匹配工具,可以应用于文本检索、自动问答、复述问题、对话系统等多种应用任务场景。
GitHub: https://github.com/faneshion/MatchZoo
在 arxiv 上,MatchZoo: A Toolkit for Deep Text Matching 介绍了开源项目的主要结构:
据雷锋网了解,这一开源工具能够让大家更加直观地了解深度文本匹配模型的设计、更加便利地比较不同模型的性能差异、更加快捷地开发新型的深度匹配模型。
MatchZoo 基于 Keras 开发,支持 TensorFlow、CNTK 及 Theano,并能在 CPU 与 GPU 上无缝运行。MatchZoo 包括数据预处理,模型构建,训练与评测三大模块:
数据预处理模块(data preparation)
该模块能将不同类型文本匹配任务的数据处理成统一的格式,具体包含如下的几个文件:
word dictionary:每个单词的映射符,通过预设的规则进行过滤常用词,筛选少见词、噪声词。
corpus file:问题及回答内容文件,每行以(id, length, word_id)格式书写,分别表示问题或者回答的 id,文本长度,以及词 id;
relation file:包括训练、验证、测试文件,每行以(rel,query_id, doc_id)格式书写,分别表示问题与回答的相关度(数据中1为相关,0为不相关),问题的 id,以及答案的 id;
同时,该模块针对不同的任务需求提供了不同的数据生成器,包括有基于单文档的数据生成器、基于文档对的数据生成器、以及基于文档列表的数据生成器。不同的数据生成器可适用于不同的文本匹配任务,如文本问答、文本对话、以及文本排序等。
模型构建模块(model construction)
该模块基于 Keras 以帮助我们快速开发。Keras 中包含了深度学习模型中广泛使用的普通层,如卷积层、池化层、全连接层等,除此之外,在 matchzoo/layers/中,研究人员还针对文本匹配定制了特定的层,如动态池化层、张量匹配层等。这些操作能够快速高效地实现复杂的深度文本匹配的模型,在 matchzoo/models/中,研究人员实现了目前主流的深度文本匹配模型(如 DRMM, MatchPyramid, DUET, MVLSTM, aNMM, ARC-I, ARC-II, DSSM, CDSSM 等)。
训练与评测模块(training and evaluation)
该模块提供了针对回归、分类、排序等问题的目标函数和评价指标函数。例如,在文本排序中常用的基于单文档的目标、基于文档对的目标、以及基于文档序列的目标。用户可以根据任务的需要选择合适的目标函数。在模型评估时,MatchZoo 也提供了多个广为使用的评价指标函数,如 MAP、NDCG、Precision,Recall 等。同时,在文本排序任务中,MatchZoo 还能生成兼容 TREC 的数据格式,可以方便地使用 trec_eval来进行模型评估。
git clone https://github.com/faneshion/MatchZoo.git
cd MatchZoo
python setup.py install
python main.py --phase train --model_file ./models/arci_ranking.config
python main.py --phase predict --model_file ./models/arci_ranking.config
在 Github 上,作者们以 WikiQA 数据为例来介绍 MatchZoo 的使用。
以 DRMM 为例,在 MatchZoo/matchzoo 中运行:
python main.py --phase train --model_file models/wikiqa_config/drmm_wikiqa.config
在测试时可运行:
python main.py --phase predict --model_file models/wikiqa_config/drmm_wikiqa.config
运行十个模型的结果如下:
训练 loss 曲线图如下:
测试 MAP 性能曲线图如下:
论文地址:https://arxiv.org/pdf/1707.07270.pdf,雷锋网整理