专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
爱可可-爱生活  ·  晚安~ #晚安# -20250206224457 ·  8 小时前  
黄建同学  ·  这门课的两位讲师是《Hands-On ... ·  9 小时前  
宝玉xp  ·  Deep Research ... ·  2 天前  
宝玉xp  ·  //@钱钱_P大数学病院患者:llama之类 ... ·  2 天前  
51好读  ›  专栏  ›  机器学习研究会

深度文本匹配开源工具(MatchZoo)

机器学习研究会  · 公众号  · AI  · 2017-12-05 22:46

正文


中国科学院计算技术研究所网络数据科学与技术重点实验室近日发布了 深度文本匹配开源项目 MatchZoo。MatchZoo是一个Python环境下基于TensorFlow开发的开源文本匹配工具,让大家更加直观地了解深度文本匹配模型的设计、更加便利地比较不同模型的性能差异、更加快捷地开发新型的深度匹配模型。MatchZoo提供了基准数据集(TREC MQ系列数据、WiKiQA数据等)进行开发与测试,整合了当前最流行的深度文本匹配的方法(包括 DRMM [1] , MatchPyramid [2] , DUET [3] , MVLSTM [4] , aNMM [5] , ARC-I [6] , ARC-II [6] , DSSM [7] , CDSSM [8] 等算法的统一实现),旨在为信息检索、数据挖掘、自然语言处理、机器学习等领域内的研究与开发人员提供便利, 可以应用到的任务场景包括文本检索,自动问答,复述问题,对话系统等等。作为一个开源项目,欢迎大家给我们提供宝贵的建议与意见,同时也欢迎大家申请加入我们的开发队伍。

GitHub : https://github.com/faneshion/MatchZoo

MatchZoo工具具有容易拓展和便于设计新的深度文本匹配模型的特点,其结构如图所示:

MatchZoo使用了Keras中的神经网络层,并有数据预处理,模型构建,训练与评测三大模块组成:

  • 数据预处理模块( matchzoo/inputs/):该模块包含通用的文本预处理功能,如分词、词频过滤、词干还原等,并将不同类型文本匹配任务的数据处理成统一的格式,具体包含如下的几个文件:

    • corpus_preprocessed.txt :问题及回答内容文件,每行以( id, length, word_id)格式书写,分别表示问题或者回答的id,文本长度,以及词id;

    • relation_train.txt, relation_valid.txt, relation_test.txt :训练, 验证, 测试文件,每行以(rel,query_id, doc_id) 格式书写,分别表示问题与回答的相关度(数据中1为相关,0为不相关),问题的id,以及答案的id;

    • embed_glove_d50: 词向量文件,每行以( id, embeddings)格式书写,分别表示词向量的 id, 以及每个 embedding分量,该文件根据模型需要可选择性的提供。

      同时该模块针对不同的任务需求提供了不同的数据生成器,包括有基于单文档的数据生成器、基于文档对的数据生成器、以及基于文档列表的数据生成器。不同的数据生成器可适用于不同的文本匹配任务,如文本问答、文本对话、以及文本排序等。

  • 模型构建模块( machzoo/models/, matchzoo/layers/):该模块基于Keras以帮助我们快速开发。Keras中包含了深度学习模型中广泛使用的普通层,如卷积层、池化层、全连接层等,除此之外,在matchzoo/layers/中,我们还针对文本匹配定制了特定的层,如动态池化层、张量匹配层等。这些基本的层操作使得我们能够快速高效地实现复杂的深度文本匹配的模型,在matchzoo/models/中,我们实现了目前主流的深度文本匹配模型(如DRMM, MatchPyramid, DUET, MVLSTM, aNMM, ARC-I, ARC-II, DSSM, CDSSM等),具体的模型介绍请参照后续的模型部分。

  • 训练与评测模块( matchzoo/losses, matchzoo/metrics/):该模块提供了针对回归、分类、排序等问题的目标函数和评价指标函数。例如,在文本排序中常用的基于单文档的目标、基于文档对的目标、以及基于文档序列的目标。用户可以根据任务的需要选择合适的目标函数。在模型评估时,MatchZoo也提供了多个广为使用的评价指标函数,如MAP、NDCG、Precision,Recall等。同时,在文本排序任务中,MatchZoo还能生成兼容TREC的数据格式,可以方便地使用trec_eval [9] 来进行模型评估。

基准测试

我们采用 TREC MQ系列基准数据、WikiQA基准数据等进行开发与测试,以下我们以WikiQA数据为例说明MatchZoo的使用。 在项目的数据文件夹的WikiQA/run_data.sh 中,我们提供了从数据下载到预处理并生成MatchZoo数据格式的脚本,直接运行run_data.sh即可生成所需的数据。同时,matchzoo的模型文件夹中,针对WikiQA任务,我们为不同的模型配置了运行所需的参数,参数配置在matchzoo/models/README中有详细的说明。

在训练时,只需在MatchZoo/matchzoo中运行:

python main.py --phase train --model_file models/wikiqa_config/drmm_wikiqa.config

在测试时,可先在配置文件中指定要加载的模型参数文件,然后在MatchZoo/matchzoo中运行:

python main.py --phase predict --model_file models/wikiqa_config/drmm_wikiqa.config

我们对比了以下 10 个模型,不同模型的性能如下所示:

模型

性能指标

NDCG@3

NDCG@5

MAP

DSSM

0.3412

0.4179

0.3840

CDSSM

0.5489

0.6084

0.5593

ARC-I

0.5680

0.6317

0.5870

ARC-II

0.5647

0.6176

0.5845

MV-LSTM

0.5818

0.6452

0.5988

DRMM

0.6107

0.6621

0.6195







请到「今天看啥」查看全文