連載
» 2021年11月01日 05時00分 公開

Hugging FaceのDatasets: 自然言語処理のデータセット提供サイトAI・機械学習のデータセット辞典

自然言語処理系のデータセットが簡単に使えるHugging FaceのDatasetsを紹介。データセット一覧ページでは、フィルタリングしながら人気順でデータセットを探せる。各データセットページでは、データセットの概要説明が掲載されているだけでなく、データセット内容を表示する機能や、データセットを使うための基本コードを取得する機能もある。

[一色政彦,デジタルアドバンテージ]
「AI・機械学習のデータセット辞典」のインデックス

連載目次

 自然言語処理に関連するデータセットを簡単に利用できる「Hugging FaceのDatasets」が有用なので紹介したい。

Hugging FaceのDatasetsとは?

 「Hugging Face」をご存じだろうか? 主に自然言語処理を対象にした大規模なオープンソースコミュニティーである。その代表的なサービスには、事前にトレーニングされたディープラーニングモデルを提供するModel Hub(ハブ)などがある。特に近年ではTransformerと自然言語処理が注目を高めるにつれて、Hugging Faceの認知と活用が広がってきている(参考:「State of Data Science and Machine Learning 2021 | Kaggle」の34ページ目のスライド)。

 Model Hub以外のHugging Faceのサービスの一つとして、

が提供されている。

図1 Hugging FaceのDatasetsのトップページ 図1 Hugging FaceのDatasetsのトップページ

 英語ではあるが、詳細な説明は要らないだろう。簡単に概説しておくと、右側にはダウンロード数順で人気のデータセットが一覧表示されている。

 キーワード検索できるだけでなく、左側の[Task Categories](タスクのカテゴリー:問題種別の大まかな大分類)/[Tasks](タスク:より具体的な問題種別)/[Languages](言語)/[Multilinguality](多言語性)/[Sizes](データサイズ)/[Licenses](ライセンス)でフィルタリングできる。

 機械学習の際に「どのデータセットを使えばよいか」を悩むことはよくあると思うが、このランキング表示は非常に参考になるのではないだろうか。

各データセットのページ内容

 図1のデータセット名(例えばwikitext)をクリックしてページを開くと、図2のように表示される。

図2 wikitextのデータセットページ 図2 wikitextのデータセットページ

 これも直観的に把握できると思うので、細かな説明は不要だと思う。ここではヒントだけ示しておくと、上部にはデータセット識別子(例:wikitext)などが表示されている。

 中央に、データセットの概要説明や、データセット内に含まれる各インスタンス名(例:wikitext-103-raw-v1wikitext-103-v1など。複数のデータセットバージョンが含まれていることがある)とデータ例、データフィールド、データ分割(訓練/検証/テストデータなど)などが掲載されている。

 左側は、そういうった各項目へのショートカットリンクとなっている。

 右側には、[Use in dataset library]ボタンという対象データセットを使うための基本的なコードを表示してコピーできる機能や、[Explore dataset]ボタンというデータセット内のデータを簡単に閲覧するためのツールを起動する機能などが用意されている。その下に、ホームページやダウンロードサイズなどの属性情報なども表示されている。

各データセットの使い方

 データセットを使うのも本当に簡単だ。なお前提として、(名前が非常にストレートだが……)「datasets」ライブラリをPython環境にインストールしておく必要がある。

 その上でリスト1のようにdatasets.load_dataset()関数を呼び出すシンプルなコードを書くだけである。このコード自体は、上記の[Use in dataset library]ボタンで取得できるので、覚えておく必要もない。

# !pip install datasets

from datasets import load_dataset

dataset = load_dataset(
  'wikitext', # データセット識別子
  'wikitext-103-v1') # データセット内のインスタンス名

リスト1 Hugging FaceのDatasetsを使うための基本的なPythonコード例

 「取得したデータセットを各機械学習ライブラリなどでどうやって使うか?」であるが、これも簡単だ。リスト2のように、ロードしたデータセットのオブジェクト(ここではdatasetオブジェクト)に含まれるset_format()メソッドを呼び出すと、datasetオブジェクトから各データを取得する際に、set_format()メソッドのtype引数に指定したデータ形式で取得できるようになる(ちなみにこの例では省略したが、columns引数に列名を指定することで、対象としたい列も調整できる)。

dataset.set_format(type='python') # (デフォルト)Pythonオブジェクト形式にする場合
dataset.set_format(type='torch') # PyTorchテンソル形式にする場合
dataset.set_format(type='tensorflow') # TensorFlowテンソル形式にする場合
dataset.set_format(type='jax') # JAX配列形式にする場合
dataset.set_format(type='numpy') # NumPy配列形式にする場合
dataset.set_format(type='pandas') # pandasデータフレーム形式にする場合

リスト2 Hugging FaceのDatasetsを使うための基本的なPythonコード例

 このようにHugging FaceのDatasetsでは、各ライブラリのデータセット機能と組み合わせて使うための機能が提供されている。例えばリスト2にもあるdataset.set_format(type='torch')というコードでdatasetオブジェクトから取得するデータの形式をPyTorchテンソルとした場合は、torch.utils.data.DataLoader(dataset)のようにPyTorchデータローダーに直接指定することで、PyTorchにとって自然な形でデータを使うコードが書けるようになっている。詳しくは公式ドキュメント「Using a Dataset with PyTorch/Tensorflow」を参照してほしい。

「AI・機械学習のデータセット辞典」のインデックス

AI・機械学習のデータセット辞典

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。