オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【データセット】Maluuba NewsQA

こんな方におすすめ

自然言語処理に使用される「Maluuba NewsQA」データセットについて知りたい!



この記事では、Maluuba NewsQAデータセットについての内容を扱います



キーワード・知ってると理解がしやすい



目次

Maluuba NewsQA とは

CNN ニュース記事の「本文」、「質問」、「回答」から構成されているデータセットです. 「本文」から「質問」と「回答」を生成するタスクに使用する目的で作成されおります. 約 300K のデータセット数. データセットの提供は法的な理由で、直接は提供されていませんが、Maluuba/newsqa から作成可能です.

データフォーマット

提供されているデータフォーマットは JSONCSV の2つ. CSV のデータだと、以下のようにデータが構成されているようです.

Column Name Description
story_id 記事ID
story_text 記事内容
question 質問文
answer_char_ranges 文字ベースの回答となる位置インデックス
answer_token_ranges 単語ベースの回答となる位置インデックス


(* 詳細は Maluuba/newsqa / csv をご確認 )

作成方法

Maluuba/newsqa / requirements を参考にして作成できました.

環境

Docker での作成を推奨しているようです. (ですが、pip install して host の python 環境で python script 実行でもいけそうでした)

Row Data の取得

データセット作成のための生データ2種類あり、それらは別のところから取得する必要があります.

1 NewsQA Dataset

  • Microsoft 提供の ニュースデータセット / 120K
  • CNN 記事の「本文」とその「質問」と「回答」から構成されている
  • License は Microsoft Research Data License Agreement
  • 元々は、DeepMinde のデータからデータセットを作成している
  • Microsoft のアカウントでログインして、取得する必要がある

2 DeepMind Q&A Dataset

  • DeepMind 提供のニュースデータセット / 90K + 197K
  • CNN と DailyMail のニュース記事「本文」とその「質問」と「回答」から構成

実行

Maluuba/newsqa / recommended-docker-set-up から、トークン化などを行い、CSV を作成します

Script

CSV でデータセットを作成した前提で、データを扱うスクリプトを記します.

データ読み込み


_read_data でデータを読み込みます.

  • 本文の長さを _MAX_DOC_LENGTH で揃える
  • 小文字に変換

batch 作成


document, question, answer の max size を決定し、パディングします. batch ごとにサイズが異なる可能性があるので、batch間で固定長にしたい場合、ここの設定を変える. (document に関しては、「データ読み込み」の時点で、_MAX_DOC_LENGTH で揃えているので、決定されている)

Generator を作る


_process_stories で bacth size 分のデータを用意して、それを返す Generator を作ります. 1 つの記事 (story) の中に、複数 batch 分のデータが含まれている可能性もあるので、if len(batch) + len(story) > _MAX_BATCH_SIZE: のような条件になっているが、 必要に応じて変更可能

全体

まとめ

  • 自然言語処理のDeepLearning の学習に使用することができる
  • タスクは「質問応答」などに使用されることが多い

参考

ゼロから作るDeep Learning ❷ ―自然言語処理編

ゼロから作るDeep Learning ❷ ―自然言語処理編

  • 作者:斎藤 康毅
  • 発売日: 2018/07/21
  • メディア: 単行本(ソフトカバー)