GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

faneshion

MatchZoo – MatchZooはテキストマッチングのためのツールキットです。 深いテキストマッチングモデルの設計、比較、共有を容易にするために開発され..

投稿日:

MatchZooはテキストマッチングのためのツールキットです。 深いテキストマッチングモデルの設計、比較、共有を容易にするために開発されました。

MatchZooはテキストマッチングのためのツールキットです。 深いテキストマッチングモデルの設計、比較、共有を容易にすることに重点を置いて開発されました。 統一されたインタフェースで設計されたDRMM、MatchPyramid、MV-LSTM、NMM、DUET、ARC-I、ARC-II、DSSM、およびCDSSMなど、多数の深いマッチング方法があります。 MatchZooに関連する潜在的な仕事には、文書の検索、質問の回答、会話のレスポンスランキング、言い換えの識別などが含まれます。MatchZooのすべてのユーザーからコードの寄稿、提案、コメントをいつでも喜んで受け取ります。

タスク テキスト1 テキスト2 目的
言い換えの識別 文字列1 文字列2 分類
テキストの黙示 テキスト 仮説 分類
質疑応答 質問 回答 分類/ランキング
会話 ダイアログ 応答 分類/ランキング
情報検索 クエリ 資料 ランキング

インストール

MatchZooはまだ開発中です。 最初の安定版(1.0)の前に、リポジトリを複製して実行してください

git clone https://github.com/faneshion/MatchZoo.git
cd MatchZoo
python setup.py install

メインディレクトリには、依存関係が自動的にインストールされます。

使用例については、

python matchzoo/main.py --phase train --model_file examples/toy_example/config/arci_ranking.config
python matchzoo/main.py --phase predict --model_file examples/toy_example/config/arci_ranking.config

概要

MatchZooツールキットのアーキテクチャーは、以下の図では図で説明されていますが、

ツールキットには、データ準備、モデル構築、トレーニング、評価の3つの主要モジュールがあります。 これら3つのモジュールは、実際にはデータフローのパイプラインとして編成されています。

データ準備

データ準備モジュールは、さまざまなテキストマッチングタスクのデータセットを深いマッチングモデルの入力として統一フォーマットに変換することを目的としています。 ユーザーは、テキストのペアとそのラベルを含むデータセットを提供し、モジュールは次のファイルを生成します。

  • 単語辞書 :各単語のマッピングをwidという一意の識別子に記録します。 あまりにも頻繁な単語(例えばストップワード)、あまりにも稀で騒々しい(例えばファックス番号)の単語は、あらかじめ定義されたルールで除外することができます。
  • コーパスファイル :各テキストからのマッピングを、そのテキストに含まれる一連の単語識別子とともに、 tidという一意の識別子に記録します。 ここで、各テキストは、ユーザによってカスタマイズされた固定長に切り詰められるか、または埋められます。
  • 関係ファイル :2つのテキスト間の関係を格納するために使用され、各行には1組のtidと対応するラベルが含まれます。
  • 詳細な入力データフォーマット入力データフォーマットの詳細な説明は、 MatchZoo / data / toy_example / readme.mdにあります。

モデル構築

モデル作成モジュールではKerasライブラリを使用して、ユーザーが深いマッチングモデルをレイヤーごとに簡単に構築できるようにします。 Kerasライブラリは、畳み込みレイヤ、プールレイヤ、密なレイヤなど、神経モデルで広く使用される一連の共通レイヤを提供します。 ディープテキストマッチングモデルの構築をさらに容易にするために、Kerasライブラリを拡張して、テキストマッチング用に特別に設計されたいくつかのレイヤインタフェースを提供します。

さらに、ツールキットは代表的な深いテキストマッチングモデルの2つの学校、すなわち表現主義モデルと相互作用重視モデルを実装している[Guo et al。]

トレーニングと評価

深いマッチングモデルを学習するために、ツールキットは、回帰、分類、およびランキングのためのさまざまな目的関数を提供します。 例えば、ランキング関連の目的関数には、いくつかのよく知られているポイントワイズ、ペアワイズおよびリストワイズの損失が含まれます。 ユーザーが最適化のためにトレーニングフェーズでさまざまな目的関数を選択することは柔軟性があります。 一旦モデルが訓練されると、ツールキットは、マッチングスコアを生成する、一致するラベルを予測する、または入力テキストに対してターゲットテキスト(例えば、ドキュメント)をランク付けするために使用することができる。

ベンチマーク結果:

ここでは、ランクと分類のためのMatchZooの使用法を示すために、例として2つの代表的なデータセットを採用します。 ランキングタスクの場合、例としてWikiQAデータセットを使用します。 分類作業では、例としてQuoraQPデータセットを使用します。

ランキングのためのWikiQA

WikiQAは、質問応答の回答文選択のための一般的なベンチマークデータセットです。 我々は、データセットをダウンロードするためのスクリプトを提供しそれをMatchZooデータフォーマットに準備しました。 modelsディレクトリには、WikiQAデータセットの各モデルについていくつかの設定があります。

DRMMを例に取る。 トレーニングフェーズでは、

python matchzoo/main.py --phase train --model_file examples/wikiqa/config/drmm_wikiqa.config

テスト段階では、

python matchzoo/main.py --phase predict --model_file examples/wikiqa/config/drmm_wikiqa.config

我々は10モデルを比較したが、結果は以下の通りである。

モデル NDCG @ 3 NDCG @ 5 地図
DSSM 0.5439 0.6134 0.5647
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
K-NRM 0.6268 0.6693 0.6256
NM 0.6160 0.6696 0.6297
デュエット 0.6065 0.6722 0.6301
マッチピラミッド 0.6317 0.6913 0.6434
DRMM_TKS 0.6458 0.6956 0.6586

列車データセットの各モデルの損失は、次の図で説明されていますが、

テストデータセットの各モデルのMAPを次の図に示します。

ここで、DRMM_TKSは、短いテキストマッチングのDRMMの変形である。 具体的には、一致するヒストグラムがtop-kマックスプール層に置き換えられ、残りの部分は固定される。

分類のためのQuoraQP

QuoraQP(Quora Question Pairs)はkaggleとのテキストマッチング競合で、提供された質問のペアが同じ意味を持つかどうかを予測します。 我々は、データセットをダウンロードするためのスクリプトを提供しそれをMatchZooデータフォーマットに準備しました。 modelsディレクトリには、QuoraQPデータセットの各モデルに関する多数の設定があります。

一例としてMatchPyramidを取る。 トレーニングフェーズでは、

python matchzoo/main.py --phase train --model_file examples/QuoraQP/config/matchpyramid_quoraqp.config

テスト段階では、

python matchzoo/main.py --phase predict --model_file examples/QuoraQP/config/matchpyramid_quoraqp.config

列車データセットの各モデルの損失は、次の図で説明されていますが、

テストデータセットの各モデルの精度は、次の図に示されていますが、

モデルの詳細:

  1. DRMM

このモデルは、 アドホック検索のための深い関連性マッチングモデルの実装です。

  • モデルファイル:models / drmm.py
  • モデルの設定:models / drmm_ranking.config

  1. マッチピラミッド

このモデルは画像認識としてテキストマッチングの実装です

  • モデルファイル:models / matchpyramid.py
  • モデルの設定:models / matchpyramid_ranking.config

  1. ARC-I

このモデルは、 自然言語文のマッチングのための畳み込みニューラルネットワークアーキテクチャの実装です

  • モデルファイル:models / arci.py
  • モデルの設定:models / arci_ranking.config

  1. DSSM

このモデルは、 クリックスルーデータを使用したWeb検索のための深層構造セマンティックモデルの学習の実装です

  • モデルファイル:models / dssm.py
  • モデルの設定:models / dssm_ranking.config

  1. CDSSM

このモデルは、 Web検索のための畳み込みニューラルネットワークを用いた学習意味表現の実装である

  • モデルファイル:models / cdssm.py
  • モデルの設定:models / cdssm_ranking.config

  1. ARC-II

このモデルは、 自然言語文のマッチングのための畳み込みニューラルネットワークアーキテクチャの実装です

  • モデルファイル:models / arcii.py
  • モデルの設定:models / arcii_ranking.config

  1. MV-LSTM

このモデルは、 複数の位置センテンス表現を用いたセマンティックマッチングのためA Deep Architectureの実装です

  • モデルファイル:models / mvlstm.py
  • モデルの設定:models / mvlstm_ranking.config

  1. NM

このモデルはaMMMの実装です:注意ベースの神経マッチングモデル用いた短答テキストのランキング

  • モデルファイル:models / anmm.py
  • モデルの設定:models / anmm_ranking.config

  1. デュエット

このモデルは、 Web検索のためのテキストのローカル表現と分散表現を使用して一致させる学習の実装です

  • モデルファイル:models / duet.py
  • モデルの設定:models / duet_ranking.config

  1. K-NRM

このモデルは、 カーネルプーリングを用いたEnd-to-End Neural Ad-hoc Rankingの実装です

  • モデルファイル:models / knrm.py
  • モデルの設定:models / knrm_ranking.config

  1. CONV-KNRM:

このモデルは、 アドホック検索においてソフトマッチングするnグラム畳み込みニューラルネットワークの実装です

  • モデルファイル:models / convknrm.py
  • モデルの設定:models / convknrm.config

  1. 開発中のモデル:

Match-SRNNDeepRank ….

引用

@article{fan2017matchzoo,
  title={MatchZoo: A Toolkit for Deep Text Matching},
  author={Fan, Yixing and Pang, Liang and Hou, JianPeng and Guo, Jiafeng and Lan, Yanyan and Cheng, Xueqi},
  journal={arXiv preprint arXiv:1707.07270},
  year={2017}
}

プロジェクト主催者

  • 郭嘉豊
    • 中国科学アカデミーコンピューティング技術研究所
    • ホームページ
  • ヤンヤン・ラン
    • 中国科学アカデミーコンピューティング技術研究所
    • ホームページ
  • 徐輝鄭
    • 中国科学アカデミーコンピューティング技術研究所
    • ホームページ

環境

  • python2.7 +
  • テンソルフロー1.2+
  • ケラス2.06+
  • nltk 3.2.2+
  • tqdm 4.19.4+
  • h5py 2.7.1+

開発チーム

  • 宜興ファン
    • 中国科学アカデミーコンピューティング技術研究所
    • Google Scholar
  • 梁팡
    • 中国科学アカデミーコンピューティング技術研究所
    • Google Scholar
  • 劉ヤン
    • マサチューセッツ州アマースト大学知的情報検索センター
    • ホームページ

謝辞

Yixing FanLiang PangLiu YangWang BoYukun ZhengLijuan ChenJianpeng HouZhou YangNiuguo Chengなど、 MatchZooにソースコードを提供してくださった方々に感謝の意を表します。

フィードバックと参加

GitHubの問題に関するご意見やご提案はお気軽にお寄せください。ご質問にはお答えします。 また、新しい深みのあるテキストマシニングモデルをMatchZooに追加することを提案し、MatchZooを一緒に開発するために参加することを申請することもできます。

2011年12月10日の更新:別のWeChat ID:CLJ_Keepを適用しました。 WeChatグループに参加したい人は誰でもこのWeChat idを友人として追加することができます。 あなたの名前、会社、学校、市がそのような要求を送るときは、私たちに教えてください。 WeChatの友人の一人として「CLJ_Keep」を追加した後、あなたはMatchZoo WeChatグループに参加するようにあなたを招待します。 “CLJ_Keep”はMatchZooチームの一員です。

2010年4月7日のアップデート:GoogleのディスカッショングループMatchZooディスカッションを作成して、ユーザーのQ&Aディスカッションをよりよくサポートしました。 MatchZooツールキットに質問/提案を投稿することができます。 コミュニティの開発者や経験豊富なユーザーがあなたの質問に答えます。







-faneshion
-, , ,

執筆者: