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

via GitHub
雷鋒網(wǎng) AI 科技評(píng)論消息,中國(guó)科學(xué)院計(jì)算技術(shù)研究所網(wǎng)絡(luò)數(shù)據(jù)科學(xué)與技術(shù)重點(diǎn)實(shí)驗(yàn)室近日發(fā)布了深度文本匹配開(kāi)源項(xiàng)目 MatchZoo。MatchZoo 是一個(gè) Python 環(huán)境下基于 TensorFlow 開(kāi)發(fā)的開(kāi)源文本匹配工具,可以應(yīng)用于文本檢索、自動(dòng)問(wèn)答、復(fù)述問(wèn)題、對(duì)話系統(tǒng)等多種應(yīng)用任務(wù)場(chǎng)景。
GitHub: https://github.com/faneshion/MatchZoo
在 arxiv 上,MatchZoo: A Toolkit for Deep Text Matching 介紹了開(kāi)源項(xiàng)目的主要結(jié)構(gòu):

據(jù)雷鋒網(wǎng)了解,這一開(kāi)源工具能夠讓大家更加直觀地了解深度文本匹配模型的設(shè)計(jì)、更加便利地比較不同模型的性能差異、更加快捷地開(kāi)發(fā)新型的深度匹配模型。
MatchZoo 基于 Keras 開(kāi)發(fā),支持 TensorFlow、CNTK 及 Theano,并能在 CPU 與 GPU 上無(wú)縫運(yùn)行。MatchZoo 包括數(shù)據(jù)預(yù)處理,模型構(gòu)建,訓(xùn)練與評(píng)測(cè)三大模塊:
數(shù)據(jù)預(yù)處理模塊(data preparation)
該模塊能將不同類型文本匹配任務(wù)的數(shù)據(jù)處理成統(tǒng)一的格式,具體包含如下的幾個(gè)文件:
word dictionary:每個(gè)單詞的映射符,通過(guò)預(yù)設(shè)的規(guī)則進(jìn)行過(guò)濾常用詞,篩選少見(jiàn)詞、噪聲詞。
corpus file:?jiǎn)栴}及回答內(nèi)容文件,每行以(id, length, word_id)格式書寫,分別表示問(wèn)題或者回答的 id,文本長(zhǎng)度,以及詞 id;
relation file:包括訓(xùn)練、驗(yàn)證、測(cè)試文件,每行以(rel,query_id, doc_id)格式書寫,分別表示問(wèn)題與回答的相關(guān)度(數(shù)據(jù)中1為相關(guān),0為不相關(guān)),問(wèn)題的 id,以及答案的 id;
同時(shí),該模塊針對(duì)不同的任務(wù)需求提供了不同的數(shù)據(jù)生成器,包括有基于單文檔的數(shù)據(jù)生成器、基于文檔對(duì)的數(shù)據(jù)生成器、以及基于文檔列表的數(shù)據(jù)生成器。不同的數(shù)據(jù)生成器可適用于不同的文本匹配任務(wù),如文本問(wèn)答、文本對(duì)話、以及文本排序等。
模型構(gòu)建模塊(model construction)
該模塊基于 Keras 以幫助我們快速開(kāi)發(fā)。Keras 中包含了深度學(xué)習(xí)模型中廣泛使用的普通層,如卷積層、池化層、全連接層等,除此之外,在 matchzoo/layers/中,研究人員還針對(duì)文本匹配定制了特定的層,如動(dòng)態(tài)池化層、張量匹配層等。這些操作能夠快速高效地實(shí)現(xiàn)復(fù)雜的深度文本匹配的模型,在 matchzoo/models/中,研究人員實(shí)現(xiàn)了目前主流的深度文本匹配模型(如 DRMM, MatchPyramid, DUET, MVLSTM, aNMM, ARC-I, ARC-II, DSSM, CDSSM 等)。
訓(xùn)練與評(píng)測(cè)模塊(training and evaluation)
該模塊提供了針對(duì)回歸、分類、排序等問(wèn)題的目標(biāo)函數(shù)和評(píng)價(jià)指標(biāo)函數(shù)。例如,在文本排序中常用的基于單文檔的目標(biāo)、基于文檔對(duì)的目標(biāo)、以及基于文檔序列的目標(biāo)。用戶可以根據(jù)任務(wù)的需要選擇合適的目標(biāo)函數(shù)。在模型評(píng)估時(shí),MatchZoo 也提供了多個(gè)廣為使用的評(píng)價(jià)指標(biāo)函數(shù),如 MAP、NDCG、Precision,Recall 等。同時(shí),在文本排序任務(wù)中,MatchZoo 還能生成兼容 TREC 的數(shù)據(jù)格式,可以方便地使用 trec_eval來(lái)進(jìn)行模型評(píng)估。
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ù)為例來(lái)介紹 MatchZoo 的使用。
以 DRMM 為例,在 MatchZoo/matchzoo 中運(yùn)行:
python main.py --phase train --model_file models/wikiqa_config/drmm_wikiqa.config
在測(cè)試時(shí)可運(yùn)行:
python main.py --phase predict --model_file models/wikiqa_config/drmm_wikiqa.config
運(yùn)行十個(gè)模型的結(jié)果如下:

訓(xùn)練 loss 曲線圖如下:

測(cè)試 MAP 性能曲線圖如下:

論文地址:https://arxiv.org/pdf/1707.07270.pdf,雷鋒網(wǎng)整理
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。