0
| 本文作者: 奕欣 | 2017-12-05 16:43 |

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,雷鋒網整理
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。