nikkie-ftnextの日記

イベントレポートや読書メモを発信

日本語言語理解ベンチマーク JGLUE の構築方法の論文を読みました。クラウドソーシングを活用して一から構築!

はじめに

日大藤沢、めっちゃいい😭 nikkieです。

日本のお正月🎍ということで、自然言語処理における日本語ベンチマークを見ていきたいと思います!
ベンチマークってこうやって作るんだ〜」と興味深かったです。

目次

論文「JGLUE: 日本語言語理解ベンチマーク

本研究では,一般的な日本語言語理解能力を測ることを目的として,翻訳を介することなく,日本語で一から言語理解ベンチマーク JGLUE を構築する.(抄録より)

データセットの配布はこちら

JGLUEって、どんなデータセットなの?

言語理解ベンチマークにはGLUE(やSuperGLUE)があります。
これらは英語のデータセットで、同様のベンチマーク日本語版としてJGLUEが構築されました。
JapaneseのJかなと思っています。

構築者のこだわりを感じるのが、「翻訳を介することなく」という点。
論文の「1 はじめに」にありますが、

いずれの翻訳手法でも(※引用者注:機械翻訳でも人手翻訳でも)、翻訳文の不自然さや、翻訳元の言語(多くの場合英語)と翻訳後の言語(本研究では日本語)との間での文化・社会差が大きな問題となることが(略)指摘されている。(p.64)

一からの構築ですが、Yahoo!クラウドソーシングを使って構築しています。
(ヤフーの柴田さんが著者に名を連ねている点からつながりを感じています)

こうして構築されたJGLUEは

JGLUE は文章分類,文ペア分類,QA の 3 種類のタスクから構成される.(論文Webページの抄録より)

各タスクのデータセットを見ていきます。

文章分類

MARC-ja

MARCとはMultilingual Amazon Reviews Corpus
https://docs.opendata.aws/amazon-reviews-ml/readme.html
5段階のレビューですね

日本語のレビューのみを使用し、2値分類タスクに変換しています。

  • 星4,5のレビューは、positive
  • 星1,2のレビューは、negative

2クラスの分布を見ると50:50ではなく、positiveがnegativeの8倍の分布となっています(表3)

データセットはtrain/dev/testとありますが、devとtestはクラウドソーシングを使って内容と評価が乖離したデータを修正済み

MARC-jaの評価指標はaccuracyです。

JCoLA

他研究組織から提供を受ける予定であり、本稿では説明しない。(p.65)

別で論文が見つかりました。
日本語版 CoLA の構築
https://www.anlp.jp/proceedings/annual_meeting/2022/pdf_dir/E7-1.pdf

「提示された文が容認可能 (文法的)か容認不可能(非文法的)かの判断を下す課題」のデータセットで、言語モデルの統語知識の検証が目的。
例ですが(「5 結果」の(2))、

「私が昨日見たの人は素敵だった」

これを非文法的と判定できると嬉しいという理解です。
タスクとしては2値分類ですね。

文ペア分類

JSTS/JNLI

  • STS:文ペア(=2つの文)の意味的な類似度を推定
    • Semantic Textual Similarity
    • 0(意味が完全に異なる)〜5(意味が等価)の整数値
  • NLI:前提文と仮説文のペアが与えられた時、前提文が仮定文に対して持つ推論関係を認識
    • Natural Language Inference
    • 3クラス:「含意」「矛盾」「中立」

この2つは同時に構築されていきます(図1)。
元になるデータセットがYJ Captions Dataset

  • 同じ画像に対する2つのキャプションを文ペアとする
    • 類似度の高い文ペア
  • 異なる画像に対するキャプションから類似度の低い文ペア
  • クラウドソーシングで付与するNLIのラベルは「含意」と「中立」のみ
    • 「矛盾」はクラウドワーカーが作文して生成

評価指標は

  • JSTSが「Pearson および Spearman 相関係数
  • JNLIが精度(この論文では精度=accuracyという理解)

QA

JSQuAD

タスクとしては、文書を読み、それに関する質問に答えます(機械読解タスク)。
SQuAD(Stanford Question Answering Dataset)の日本語版を構築します。

Wikipediaを用いて一般ドメインの評価セットを構築する。(p.71)

機械読解タスクの例(図2)

[タイトル] 東海道新幹線
2020年3月現在、東京駅-新大阪駅間の所要時間は最速2時間21分

質問:2020年、東京〜新大阪間の最速の所要時間は
-> 2時間21分

Wikipediaの高品質な記事上位10000件からランダムに選び(822件)、段落に分割。
クラウドワーカーに段落を読んで答えられる質問と正解を書いてもらいます。
Wikipediaを元に機械読解タスクの例をいくつも作るわけですね。

評価指標は、Exact MatchとF1(文字単位)

JCommonsenseQA

常識推論能力を評価するための5択のQA

例(図3)

質問:会社の最高責任者を何というか?
選択肢:教師、部長、社長、部下、バイト(※太字が正解)

ConceptNetを使って構築します。

構築手順の中でクラウドソーシングを数か所使っています

  • 質問文の作成
  • 誤答選択肢の追加
  • 採用するQAを決めるために、回答してもらう

評価指標は精度(accuracyという理解)

BERTのfine-tuningで精度が90%出ており、5択の選択肢に質問文と関係ないものが多いから簡単なのでは?という分析から、難易度を上げる試みが面白かったです(機会があれば別で取り上げたいな)。
JCommonsenseQA 2.0: 計算機と人の協働による常識推論データセットの改良
https://www.anlp.jp/proceedings/annual_meeting/2023/pdf_dir/A12-4.pdf

JGLUEを使うには

transformersライブラリに用意されたexamplesスクリプトを使ったfine tuning1はこちら(私の宿題):
https://github.com/yahoojapan/JGLUE/tree/c35b43c73056f6898837de0dcc5ba11cc7dc3ecc/fine-tuning

『大規模言語モデル入門』執筆陣がdatasetsライブラリで読み込めるようにしてくださっています。
https://huggingface.co/datasets/llm-book/JGLUE

コードを書いてfine tuning!
https://github.com/ghmagazine/llm-book/tree/4990a3e69effd794847a6240b8386d3073d78ed4/chapter5

私の好みとしてはコードを書くのは最終手段だと思っているので、examplesスクリプトからまず試したいですね

Stability-AI/lm-evaluation-harnessはJGLUEも利用

LLMのEvaluation Harness2の日本語版

https://github.com/Stability-AI/lm-evaluation-harness/blob/effdbeaf742e74ea1787871e99272c12146ba346/docs/jptasks.md を参照するとJGLUEの記載があります。
LLMの評価でも採用されているんだ!

終わりに

JGLUEの作り方を見てきました。
ベンチマークということで正解が必要、そこでクラウドソーシングを使って構築していく手順は興味深かったです。
GLUEなどの先行ベンチマークがあるので、それを踏まえて品質を高めるために(特にクラウドソーシングで)工夫していたのは、なるほどなと思いました。

私が近日中にJGLUEのようなデータセットを構築する予定はないので、今日から早速役に立つわけではないのですが、NLPをする上であって当然と思っていたものの成り立ちを知れたのは個人的にはとてもよかったです。

おまけ:GPT-4に書いてもらったJGLUE。
3種のタスクやクラウドソーシングという入れ知恵をしました


  1. NLP2022のチュートリアルでも(JGLUE構築論文著者の1人の柴田さんから)聞いた方法です
  2. 元は