0
本文作者: 奕欣 | 2017-12-05 16:43 |
via GitHub
雷鋒網(wǎng) AI 科技評論消息,中國科學院計算技術(shù)研究所網(wǎng)絡(luò)數(shù)據(jù)科學與技術(shù)重點實驗室近日發(fā)布了深度文本匹配開源項目 MatchZoo。MatchZoo 是一個 Python 環(huán)境下基于 TensorFlow 開發(fā)的開源文本匹配工具,可以應(yīng)用于文本檢索、自動問答、復(fù)述問題、對話系統(tǒng)等多種應(yīng)用任務(wù)場景。
GitHub: https://github.com/faneshion/MatchZoo
在 arxiv 上,MatchZoo: A Toolkit for Deep Text Matching 介紹了開源項目的主要結(jié)構(gòu):
據(jù)雷鋒網(wǎng)了解,這一開源工具能夠讓大家更加直觀地了解深度文本匹配模型的設(shè)計、更加便利地比較不同模型的性能差異、更加快捷地開發(fā)新型的深度匹配模型。
MatchZoo 基于 Keras 開發(fā),支持 TensorFlow、CNTK 及 Theano,并能在 CPU 與 GPU 上無縫運行。MatchZoo 包括數(shù)據(jù)預(yù)處理,模型構(gòu)建,訓(xùn)練與評測三大模塊:
數(shù)據(jù)預(yù)處理模塊(data preparation)
該模塊能將不同類型文本匹配任務(wù)的數(shù)據(jù)處理成統(tǒng)一的格式,具體包含如下的幾個文件:
word dictionary:每個單詞的映射符,通過預(yù)設(shè)的規(guī)則進行過濾常用詞,篩選少見詞、噪聲詞。
corpus file:問題及回答內(nèi)容文件,每行以(id, length, word_id)格式書寫,分別表示問題或者回答的 id,文本長度,以及詞 id;
relation file:包括訓(xùn)練、驗證、測試文件,每行以(rel,query_id, doc_id)格式書寫,分別表示問題與回答的相關(guān)度(數(shù)據(jù)中1為相關(guān),0為不相關(guān)),問題的 id,以及答案的 id;
同時,該模塊針對不同的任務(wù)需求提供了不同的數(shù)據(jù)生成器,包括有基于單文檔的數(shù)據(jù)生成器、基于文檔對的數(shù)據(jù)生成器、以及基于文檔列表的數(shù)據(jù)生成器。不同的數(shù)據(jù)生成器可適用于不同的文本匹配任務(wù),如文本問答、文本對話、以及文本排序等。
模型構(gòu)建模塊(model construction)
該模塊基于 Keras 以幫助我們快速開發(fā)。Keras 中包含了深度學習模型中廣泛使用的普通層,如卷積層、池化層、全連接層等,除此之外,在 matchzoo/layers/中,研究人員還針對文本匹配定制了特定的層,如動態(tài)池化層、張量匹配層等。這些操作能夠快速高效地實現(xiàn)復(fù)雜的深度文本匹配的模型,在 matchzoo/models/中,研究人員實現(xiàn)了目前主流的深度文本匹配模型(如 DRMM, MatchPyramid, DUET, MVLSTM, aNMM, ARC-I, ARC-II, DSSM, CDSSM 等)。
訓(xùn)練與評測模塊(training and evaluation)
該模塊提供了針對回歸、分類、排序等問題的目標函數(shù)和評價指標函數(shù)。例如,在文本排序中常用的基于單文檔的目標、基于文檔對的目標、以及基于文檔序列的目標。用戶可以根據(jù)任務(wù)的需要選擇合適的目標函數(shù)。在模型評估時,MatchZoo 也提供了多個廣為使用的評價指標函數(shù),如 MAP、NDCG、Precision,Recall 等。同時,在文本排序任務(wù)中,MatchZoo 還能生成兼容 TREC 的數(shù)據(jù)格式,可以方便地使用 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 數(shù)據(jù)為例來介紹 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
運行十個模型的結(jié)果如下:
訓(xùn)練 loss 曲線圖如下:
測試 MAP 性能曲線圖如下:
論文地址:https://arxiv.org/pdf/1707.07270.pdf,雷鋒網(wǎng)整理
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。