自然言語処理モデルBERTの検証(8)-GLUEベンチマーク(その6)

##### [前回] [自然言語処理モデルBERTの検証(7)-GLUEベンチマーク(その5)](https://qiita.com/mingchun_zhao/items/4adc19cca2068e6c033d)

## はじめに

今回は、GLUEベンチマークのQNLIタスクを検証します。
2つの入力文が質問とそれに対する回答になっているか判定します。

GLUEの中で、個人的には一番興味深いタスクです。

## 検証手順

下記検証手順で、「GLUEからタスクを選択」を除いてはそのまま使えます。
[自然言語処理モデルBERTの検証(3)-GLUEベンチマーク(その1)](https://qiita.com/mingchun_zhao/items/9269538a0434335fe87d)

「GLUEからタスクを選択」手順で、ドロップダウンメニューから`glue/qnli`を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/88554bd2-c6ab-46d9-19ff-5eca174d51c8.png)

上記検証手順をそのまま通すと、テスト結果を得られます。
ファインチューニングで少々待たされました(所要時間14分)

## QNLI: Q&A のテスト結果
 
```
question: tf.Tensor([b"When was Levi's Stadium picked for Super bowl 50?"], shape=(1,), dtype=string)
sentence: tf.Tensor([b'It is the first Super Bowl held in the San Francisco Bay Area since Super Bowl XIX in 1985, and the first in California since Super Bowl XXXVII took place in San Diego in 2003.'], shape=(1,), dtype=string)
The question is NOT answerable by the sentence
BERT raw results: tf.Tensor([-4.5055275  3.0442333], shape=(2,), dtype=float32)

question: tf.Tensor([b"What did 'Da Yuan Tong Zhi' mean?"], shape=(1,), dtype=string)
sentence: tf.Tensor([b'They placed Yes\xc3\xbcn Tem\xc3\xbcr (or Taidingdi) on the throne, and, after an unsuccessful attempt to calm the princes, he also succumbed to regicide.'], shape=(1,), dtype=string)
The question is NOT answerable by the sentence
BERT raw results: tf.Tensor([-4.31587    2.5717149], shape=(2,), dtype=float32)

question: tf.Tensor([b'There are direct contractual links between who?'], shape=(1,), dtype=string)
sentence: tf.Tensor([b"There are direct contractual links between the architect's client and the main contractor."], shape=(1,), dtype=string)
The question is answerable by the sentence
BERT raw results: tf.Tensor([ 4.388849  -1.7322829], shape=(2,), dtype=float32)

question: tf.Tensor([b'Whose army liberated Warsaw in 1806?'], shape=(1,), dtype=string)
sentence: tf.Tensor([b'The Royal University of Warsaw was established in 1816.'], shape=(1,), dtype=string)
The question is NOT answerable by the sentence
BERT raw results: tf.Tensor([-4.752378   2.7241473], shape=(2,), dtype=float32)

question: tf.Tensor([b'What is one way in which graphs can be encoded?'], shape=(1,), dtype=string)
sentence: tf.Tensor([b'For example, integers can be represented in binary notation, and graphs can be encoded directly via their adjacency matrices, or by encoding their adjacency lists in binary.'], shape=(1,), dtype=string)
The question is answerable by the sentence
BERT raw results: tf.Tensor([ 5.0089655 -2.2794259], shape=(2,), dtype=float32)
```

2つの入力文が受け答えになっているか、判定してくれました。
一つずつ、問題を確認してみます。

問題1
```
When was Levi's Stadium picked for Super bowl 50?

リーバイススタジアムがスーパーボウル50に選ばれたのはいつですか？

It is the first Super Bowl held in the San Francisco Bay Area
 since Super Bowl XIX in 1985, 
and the first in California since Super Bowl XXXVII 
took place in San Diego in 2003.

これは、1985年のスーパーボウルXIX以来、サンフランシスコベイエリアで
開催された最初のスーパーボウルであり、2003年にサンディエゴで
スーパーボウルXXXVIIが開催されて以来、
カリフォルニアで最初のスーパーボウルです。
```

判定結果はX。

問題2
```
What did 'Da Yuan Tong Zhi' mean?

「DaYuanTongZhi」とはどういう意味ですか？

They placed Yes\xc3\xbcn Tem\xc3\xbcr (or Taidingdi)
 on the throne, and, after an unsuccessful attempt
 to calm the princes, he also succumbed to regicide.

彼らは泰定帝(またはTaidingdi)を王位につけ、
王子を落ち着かせようとして失敗した後、
彼はまた王殺しに屈した。
```

判定結果はX。
質問にある'Da Yuan Tong Zhi'(大元通制)とは、
中国歴史の元の英宗至治3(1323)年に頒行された法書を指します。

問題3
```
There are direct contractual links between who?

誰との間に直接の契約上のつながりがありますか？

There are direct contractual links between 
the architect's client and the main contractor.

建築家のクライアントと元請業者の間には直接の契約上のつながりがあります。
```

判定結果はO。

問題4
```
Whose army liberated Warsaw in 1806?

1806年に誰の軍隊がワルシャワを解放しましたか？

The Royal University of Warsaw was established in 1816.

ワルシャワロイヤル大学は1816年に設立されました。
```

判定結果はX。

問題5
```
What is one way in which graphs can be encoded?

グラフをエンコードする1つの方法は何ですか？

For example, integers can be represented in binary notation,
 and graphs can be encoded directly via their adjacency matrices,
 or by encoding their adjacency lists in binary.

たとえば、整数は2進表記で表すことができ、
グラフは隣接行列を介して直接エンコードすることも、
隣接リストを2進でエンコードすることによってエンコードすることもできます。
```

判定結果はO。
これはすごいと思いました。質問と回答の内容そのものが難解ですので。

## おわりに

GLUEタスクQNLIを用いて、2つの入力文が
質問と回答ペアとして成立するか判定してみました。
いい感じに判定がなされているようです。

GLUEベンチマークの検証は一旦これで一段落とさせていただきます、
待望の日本語版GLUE(JGLUE)が公開されたら、検証再開しようと思います。

拙い文章を最後まで読んでいただき誠にありがとうございました。