データセット「GLUE」について説明。英語で自然言語処理モデルの性能を評価するための標準ベンチマーク。英語文法の正しさ判定などの9つのタスク(CoLA/SST-2/MRPC/STS-B/QQP/MNLI/QNLI/RTE/WNLI)に対応するデータセットのコレクション。
GLUE(General Language Understanding Evaluation) Benchmark(一般言語理解評価ベンチマーク)は、英語で自然言語処理(NLP)モデルの性能を評価するための標準ベンチマークである。英語文法の正しさ判定や映画レビューの感情分析などの9つのタスク(CoLA/SST-2/MRPC/STS-B/QQP/MNLI/QNLI/RTE/WNLI、詳細後述)に対応するデータセットのコレクションとなっている。
また、自然言語に見られる幅広い言語現象に関してモデルの性能を評価、分析できるように、手動でキュレーションされた小さな「診断(Diagnostic)データセット」が付属している(詳しくは論文のセクション4を参照してほしい)。
さらに、GLUEで評価したモデルを最終スコア(Score)順のランキングで掲載するリーダーボード(Leaderboard)も用意されている(図1)。最終スコアは各タスクのスコアを平均して計算される(計算方法はFAQの「10. How does the leaderboard work?」を参照してほしい)。
なお、GLUEは英語用であり、日本語理解の評価は行えない。日本語の場合は、2022年6月に公開された日本語用のJGLUEを使うとよい。
また、現在の自然言語処理モデルは、言語理解タスクの性能が高くなってきており、人間を超えてきている。そのため、GLUEよりも高難度に設計されたSuperGLUE Benchmark(v2.0)が2019年7月に登場した(※GLUEはバージョン「v1.0」と見なされる)。SuperGLUEベンチマークのリーダーボードはこちら。2023年3月現在の論文ではGLUEの方が採用数が多いが、今後は「GLUEの後継版」とも言えるSuperGLUEの利用が増えていく可能性がある。
GLUEの9つのタスクを箇条書きで簡単に紹介する。
各タスクに対応するデータセットは、オリジナルの既存データセットが存在する。例えばCoLA(The Corpus of Linguistic Acceptability)タスクのデータセットには、「The Corpus of Linguistic Acceptability(CoLA)」というオリジナルの既存データセットがある。
GLUEのデータセットは、オリジナルの既存データセットをベースに構築された派生データセットである。そのため、ライセンスもオリジナルの既存データセットを参照する必要がある。
GLUEのデータセットを引用する際には、使用している全てのデータセットを引用してほしい、とのことだ。詳しくはFAQの「14. How should I cite GLUE?」を参照してほしい。数が多いので本稿では割愛するが、各データセットの引用内容はTensorFlow Datasets「glue」ページを参照するとよい。
GLUEの各データセットは、
からダウンロードできる。
TensorFlow/PyTorchでGLUEを使う場合は、各ライブラリが提供する機能を利用することをお勧めする。それぞれのライブラリで「どのようなコードを書くとGLUEが使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。基本的に各ライブラリは、GLUEの各データセットを自動的にダウンロードして使いやすい形にロードしてくれる機能を提供している。
リスト1はTensorFlowでGLUEのCoLAデータセットを利用するコード例である。TensorFlow Datasetsには、CoLA/SST-2/MRPC/STS-B/QQP/MNLI/QNLI/RTE/WNLI/AX(診断データセット)と、GLUEの各データセットが用意されている。
# !pip install tensorflow-datasets # ライブラリ「TensorFlow Datasets」をインストール
import tensorflow_datasets as tfds
glue_train = tfds.load(name="glue/cola", split="train")
これらのデータセットは、tensorflow_datasetsモジュール(=tfds)のtfds.load()関数から利用できる。
リスト2はPyTorchでGLUEのCoLAデータセットを利用するコード例である。PyTorchのtorchtext.datasetsには、CoLA/SST-2/MRPC/STS-B/QQP/MNLI/QNLI/RTE/WNLIと、GLUEの各データセットが用意されている。
# !pip install torch torchdata torchtext # ライブラリ「PyTorch」「TorchData」「torchtext」をインストール
# !pip install portalocker # Google Colabで実行した際、このパッケージのインストールしないとエラーになった
import torch
import torchtext
glue_cola = torchtext.datasets.CoLA('./GLUE_CoLA', split='train')
data_loader = torch.utils.data.DataLoader(glue_cola, batch_size=4, shuffle=True)
これらのデータセットを使うには、torchtext.datasetsクラスのコンストラクター(厳密には__init__関数)でデータセットのオブジェクトを生成してデータをダウンロードし、torch.utils.data.DataLoaderクラスのコンストラクターでデータローダーのオブジェクトを生成してデータをロードすればよい。
Copyright© Digital Advantage Corp. All Rights Reserved.