自然言語処理に関連するデータセットを簡単に利用できる「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のサービスの一つとして、
が提供されている。
英語ではあるが、詳細な説明は要らないだろう。簡単に概説しておくと、右側にはダウンロード数順で人気のデータセットが一覧表示されている。
キーワード検索できるだけでなく、左側の[Task Categories](タスクのカテゴリー:問題種別の大まかな大分類)/[Tasks](タスク:より具体的な問題種別)/[Languages](言語)/[Multilinguality](多言語性)/[Sizes](データサイズ)/[Licenses](ライセンス)でフィルタリングできる。
機械学習の際に「どのデータセットを使えばよいか」を悩むことはよくあると思うが、このランキング表示は非常に参考になるのではないだろうか。
各データセットのページ内容
図1のデータセット名(例えばwikitext)をクリックしてページを開くと、図2のように表示される。
これも直観的に把握できると思うので、細かな説明は不要だと思う。ここではヒントだけ示しておくと、上部にはデータセット識別子(例:wikitext)などが表示されている。
中央に、データセットの概要説明や、データセット内に含まれる各インスタンス名(例:wikitext-103-raw-v1/wikitext-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」を参照してほしい。
Hugging FaceのDatasets: 自然言語処理のデータセット提供サイト - ITmedia
Read More
No comments:
Post a Comment