ChatGPTに機械的に選択問題の採点をしてもらおう

# 採点してもらおう
答えがア、イ、ウ、エ、になるようなやつの試験勉強、ありますよね。
ちょっと答えと解答の照合がめんどくさいので、
ChatGPTに機械的に採点をしてもらいましょう。

## 下準備

### 問題を解く
問題を解きます。

とはいえ、適当にメモ帳に
「アイウエア…」
と書いていきます。

例えばですが、行数＝問になるようにタテにこうやって書いています。
![memo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/2b08d70b-8549-f66b-f782-e05b1d6d49b4.png)

コピペできるようになっていれば、ヨコにずらっとなっていてもいいと思います。
私は「これ何問目の回答だっけ？」となるときに迷うのでタテにやっていて、行数表示で何問目だったか把握しています。

### 解答を用意する

PDFとか、コピペできるときはコピペします。
その時はアイウエオとか解答だけ、あるいは
問一　ア
問二　ア
とか、答えだけだと使いやすいですね。
厳密に形式が問われないのはChatGPTのいいところですね。

問題集などである場合は文字起こしが必要ですね。
手段はいろいろありますが、スマホで撮ってGoogle Documentで開くとかでいいんじゃないかな～。

# 丸付けしてもらう

さてさて、問題はChatGPTは次にイチバン来そうな言葉推測機なので、（今のところは）自分の回答と正答それ自身を渡してやるのは精度に問題があるということです。

## できてるようだけど間違っているよ

![seitou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/2e24e350-3533-f62e-6a50-4e86353cf117.png)

**できてるように見えて、問５は正答していません。**

### まったく適当なことばっかりいいやがって……。

ChatGPTにこういうのをやらせるコツはいったん機械的な処理を挟むこと、つまりプログラムのコードを介してしまうことです。

### 「Pythonで書け」と言って書いてもらいます。

![kaitou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/d76b36ef-2398-cda9-d725-6fe7d6db33b1.png)



リストを挿げ替えられるようにするとか、工夫はいろいろ考えられますが、頼むのには１０秒もかからないので、使い捨てのものはバシッと出してもらってポイしていいかなと思います。
いや～、なんて気楽なんだ。
Pythonの実行環境がない場合は[Colaboratory - Google](https://colab.research.google.com/?hl=ja)とか使いましょう。

ちなみになんですが、
![matigai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/bb306f42-e33e-c9cd-4d67-6bc883b3b6da.png)
ChatGPTが出してきた出力結果は**大嘘**ですが、ちゃんとpythonで実行すると正解してます。

![jikkoukekka.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/48a239b3-d2e6-2846-6aff-0cc540be5367.png)

# 実際に投げているところ
![q.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/2d9d9b43-c67f-ddd3-6f93-d6da59f7f049.png)

**こんな感じで、雑に投げてOKです。**
(こっから、気に入らなかったら、正答率を出してとか間違った場所を列挙してとか小さな注文を付けます)

# ちょっと気の利くGPT-4
GPT-4で出してもらいましたので、ついでに貼っておきますね。

```python
# 正解リスト
correct_answers = [
    "エ", "ア", "ウ", "イ", "ア", "ウ", "エ", "ウ", "イ", "エ", 
    "ア", "ウ", "エ", "イ", "ウ", "ア", "ウ", "エ", "ウ", "ア", 
    "エ", "ウ", "イ", "ア", "エ", "イ", "ア", "ウ", "エ", "ウ", 
    "イ", "エ", "ウ", "エ", "ウ", "ア", "ウ", "エ", "ア", "ウ", 
]

# 受験者の解答
student_answers = [
    "ア", "イ", "ウ", "エ", "イ", "エ", "イ", "ウ", "ア", "ウ", 
    "ウ", "エ", "エ", "ウ", "イ", "エ", "ウ", "エ", "エ", "ア", 
    "エ", "ア", "ア", "エ", "ア", "ウ", "ウ", "ウ", "エ", "イ", 
    "エ", "エ", "イ", "ウ", "エ", "エ", "イ", "イ", "ウ", "エ"
]

# 正答数をカウント
correct_count = 0
# 間違った問題の番号と正解を保存するリスト
wrong_answers = []

# 各問題について
for i in range(len(correct_answers)):
    # 解答が正しいかどうかをチェック
    if correct_answers[i] == student_answers[i]:
        # 正しい場合は正答数を増やす
        correct_count += 1
    else:
        # 間違っていた場合は問題番号と正解をリストに追加
        wrong_answers.append((i+1, correct_answers[i]))

# 正答率を計算
correct_ratio = correct_count / len(correct_answers) * 100

# 結果を出力
print(f"誤答した問題の番号と正解: {wrong_answers}")
print(f"正答率: {correct_ratio:.2f}%")
```

＊いちお～、実際の問題とは解答をかえているので丸写しではないです。

次からコードを使いまわしたかったら、これに流し込むこの形式で書いてっておねだりします。
（すぐ出してくれるので、１から書かせることもさほど苦ではないんですが……）
ChatGPTちゃんは、自身による照合はニガテのようですが、
「これを加工して」ってリストアップするだけなら適当言わないで「あ～、元のテキストがこれね？」ってやってくれるようです。

気が利くあまり、半角カナを全角にしてきたりとかそういうことはあるんですけれども、まあまあこのくらいならOK。

```python
# 正解リスト
correct_answers = [
    "エ", "ア", "ウ", "イ", "ア", "ウ", "エ", "ウ", "イ", "エ", 
    "ア", "ウ", "エ", "イ", "ウ", "ア", "ウ", "エ", "ウ", "ア", 
    "エ", "ウ", "イ", "ア", "エ", "イ", "ア", "ウ", "エ", "ウ", 
    "イ", "エ", "ウ", "エ", "ウ", "ア", "ウ", "エ", "ア", "ウ", 
]

# 受験者の解答
student_answers = [
    "ア", "イ", "ウ", "エ", "イ", "エ", "イ", "ウ", "ア", "ウ", 
    "ウ", "エ", "エ", "ウ", "イ", "エ", "ウ", "エ", "エ", "ア", 
    "エ", "ア", "ア", "エ", "ア", "ウ", "ウ", "ウ", "エ", "イ", 
    "エ", "エ", "イ", "ウ", "エ", "エ", "イ", "イ", "ウ", "エ"
]
```