こんな方におすすめ
自然言語処理に使用される「Maluuba NewsQA」データセットについて知りたい!
この記事では、Maluuba NewsQAデータセットについての内容を扱います
キーワード・知ってると理解がしやすい
- Docker
- python
目次
Maluuba NewsQA とは
CNN ニュース記事の「本文」、「質問」、「回答」から構成されているデータセットです. 「本文」から「質問」と「回答」を生成するタスクに使用する目的で作成されおります. 約 300K のデータセット数. データセットの提供は法的な理由で、直接は提供されていませんが、Maluuba/newsqa から作成可能です.
データフォーマット
提供されているデータフォーマットは JSON か CSV の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種類あり、それらは別のところから取得する必要があります.
- Microsoft 提供の ニュースデータセット / 120K
- CNN 記事の「本文」とその「質問」と「回答」から構成されている
- License は Microsoft Research Data License Agreement
- 元々は、DeepMinde のデータからデータセットを作成している
- Microsoft のアカウントでログインして、取得する必要がある
実行
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 2
- 7 RNNによる文章生成
ゼロから作るDeep Learning ❷ ―自然言語処理編
- 作者:斎藤 康毅
- 発売日: 2018/07/21
- メディア: 単行本(ソフトカバー)