【配布】全自動でPDF問題集を作成する ~生成AI x Pythonで問題集を生成~
こんにちはRcatです。
前回の記事でPDFを自動で作成しました。
今回何やるかは…まあバレてると思いますが、全自動で問題集を作ってみようと思います。
というわけで早速内容に入っていきます。
次回はこちら
全自動オーディオブック化します
はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください
概要
概要
そもそもなんで作ることにしようと思ったかと言うと、過去に無限に問題を生成してくれるチャットボットは作成しましたが、ネットワーク環境が悪いとだめだったり、1問ずつ問題や回答の生成をするので、ちょっと時間がもったいないなと思うことがあったんですね。
というわけでだったら最初から問題集作っとけばいいじゃん。ということで問題集作るAIに改造します。
前回作った試験問題生成ボットを一部継承し、自動的に問題を表示するウェブページを作ります。
そして、そのウェブページを全自動でPDFに変換することで問題集を作成します。
せっかくウェブページを使うので、直接接続する場合はWebアプリとしても使えるような感じで考えています。
紹介
いつも通りまず完成形をお見せします
トップ画面
トップ画面はこんな感じ。
問題を解く方法は2つあり、上側のリンクを触れると問題を一問ずつ生成しながら回答することができます。
下側では試験問題をまとめて生成しPDFとして出力します。
アップデートでオーディオブックの作成にも対応しました。

WEB画面
では、直接解く場合はどんな感じなのか見ていきましょう。
まずはリンクをクリックして試験に入場します。
選択肢を選んだら、解答のリンクをクリックすることで解答解説を見ることができます。
回答が一瞬で表示されるのは、問題も回答も同時に生成しており、サーバー側で隠しているだけなので、AIを1度しか使っていないからです。
こんな感じで無限に問題が生成されるので、どんどん解いていきましょう。
解説は他のキーワードについても行われているので、問題で問われているものだけではなく、他のキーワードの説明も考えるなどすると、さらに勉強になりますね。

PDF出力
次にPDF出力です。
この機能を使う場合はPDF出力のセクションでどの試験のPDFを生成するか選択した後、ページ数を入力します。
2つの設定が完了したらPDFを作成ボタンを押します。
あとは問題の生成にかかる時間Xページ数の時間待つだけです。
※この時、ウェブ画面は完全にフリーズする仕様です。動かないからといって読み込み直したり、連打したりしないようにしてください。進行状況は黒い画面の方で確認できます。
出力されたPDFはツールと同じフォルダーに入っているので、そのまま自由にご利用ください。

出来上がったPDFはこちら。今回は200問作ってもらったので問題と解説合わせて400ページです。
ウェブページで読み込んだ時とほぼ同じレイアウトで1ページずつ出てきているのがわかります。

Kindle端末に転送
実はPDFかつ一問一答形式にこだわったのはこのためです。Kindle端末で電子書籍はよく読んでるんですが、自作のドキュメントも入れることができるんですね。そうすれば、いちいち端末を持ち替えなくてもいいので、そのためにPDF出力を行いました。
で、それがどんな感じかと言うとこんな感じです。
元々高品質なディスプレイなので、はっきりくっきりいい感じです。

ちなみにこちらのリンクからオリジナルのPDFをAmazonにアップロードすることで、紐づいている全Kindke端末やアプリから参照が可能になります。
https://www.amazon.co.jp/sendtokindle
オーディオブックを作成
詳細はこちらをご覧ください。
ハルシネーション対策
ハルシネーションとは息をするようにAIが嘘をつく現象のことです。
端的に言ってしまえば、AIは次に来る単語予測し続けることで文章を生成しているので、それ本来の意味を理解しているわけではありません。もちろん注意機構など、単語の関連性に注意を払う機構は搭載されていますが、だからといって本質的な意味で理解してるわけではないということです。
なのである言葉が予測されたその次の単語の予測結果が、今までの内容と矛盾することがあります。端的に言えばこれがあるハルシネーションになります。
で、どうするかですが、もう1回AIを噛ませてチェックします。敵対生成ネットワーク的な感じですね。確かに本質的に理解していませんが、文章を読み解く力はかなりあるので、間違った文章を入力すれば間違っていると指摘することができます。
その上で再度生成をかけるとかなりの確率で訂正することが可能です。
実際に間違いが含まれた問題文や回答が生成された時、その違いが指摘され、修正されるという場面を何度か目撃しています。
まあ、この問題集は補助的な位置づけであり、メインで使っていくものではないので、そこのところ間違いなければ問題ないのかなと思います。
それでも怖いという方はまだ活用するのは控えた方がいいかもしれませんね。
詳しくはこちら
使い方
次に本作をダウンロードして使う方法を紹介します。
Pythonのインストール
本作はPythonでできています。
そのため、まずはPythonのインストールが必要です。
インストール方法については以下の記事で解説していますので、参考にしてください。
パッケージ内容の確認
本作のパッケージ内容は以下のようになっています。
ダウンロードが完了したらstartという歯車のアイコンをダブルクリックして起動することで、自動的に環境構築が行われ稼働します。初回はパソコンの性能に応じて数分かかる可能性があります。

設定の変更
設定を変更する部分があります。
問題集作成サーバーというファイルを編集して、100行目くらいに以下の行があります。
一番後ろの所にdifyのAPIキーを入力してください。
2行ありますが、同じAPIキーでも別のモデルでも構いません。下の行は解答チェックに使用します。

Difyの導入
difyについてはこちらで解説しています。参考に導入するなり、オンライン版のアカウントを作るなりで対応してください。
なお、今回のツールは向こうでも何も設定していないので、BOTの配布はありません。
こんな感じでテキストジェネレーターを適当に用意して、利用するAIの設定とAPIキーだけ取得しておいてください。
今回はGoogleのGeminiを使います。

試験問題の準備
最後に試験問題データを用意します。
examフォルダの中に試験名の名前でフォルダをもう1個作ります。そして、その中にTSV形式で試験問題を作成します。
tsvとはタブでフィールドが区切られたファイルのことです。

TSVデータの例
いくつか決まりがあるので例を書いておきます。
まず、最初の行は見出しです。この中で"キーワード"は絶対に必要です。何列目にあってもいいですが、必ずキーワードの列を含めるようにしてください。それ以外は任意なので、好きに作成できます。
また、各項目はタブ区切りです。拡張子はCSVですが、カンマ区切りではないのでご注意。
キーワードはカンマ区切りで複数入力します。このキーワードを使って問題を生成するため、問題のバリエーションはキーワードの数に依存します。以下の例では1行で4つのキーワードを定義しています。
例えば、G検定のシラバスを使ったデータは以下の通りです。
大項目 中項目 目標 キーワード
人工知能をめぐる動向 3.探索・推論 ・探索,・推論の具体例を説明できる,・探索,・推論を実現する代表的な手法を説明できる αβ法,Mini-Max法,SHRDLU,STRIPS,探索木,ハノイの塔,幅優先探索,深さ優先探索,ブルートフォース,モンテカルロ法データ全体ではこんな感じです。キーワードが多いので右側が見切れてしまってますが…。
これ作るのすごい苦労しました…。
ちなみにCSVデータの文字コードはUTF8です。エクセルで開くとほぼ確実に文字化けしますので、使わないようにしてください。

ちなみにメモ帳の右下のところ。ここに書いてあるのが文字コードです。Windows11なら何も考えなくてもUTF-8になります。ExcelだとUTF-16になってしまい読み込めないので注意してください。Windows10の場合はSJISなのでそれも読めません。
なんか統一感ないなと思いますが、今時はUTF-8が標準です。

画面にアクセスして利用する
準備が完了し、ツールの起動が確認できたらアクセスしてみましょう。
知識のある方はローカルホストにアクセスしてください。
わからない方は、以下のショートカットをダブルクリックすることでアクセスすることができます。

無事にアクセスできれば完了です。

PDF出力時の注意
前回の記事でも触れていますが、PDFを作るライブラリが外部のツールに依存しているようで、環境によってはエラーが出ることがあります。
もしエラーが出る場合は内容を確認し、各自対応してもらう必要があります。
解説
解説
解説は下記より行っていますので、詳しい仕組みが気になる方はチェック!
まとめ
今回は生成AIを活用して全自動で問題集を生成してみました。
今まではチャットでやるだけだったので、文字が生成できればよかったんですが、PDF化するにあたりレイアウトを検討する必要がありました。
それについてはHTMLを使うことで、レイアウトは解決かつオンラインでリアルタイムに生成可能なサーバーもついでにできてしまいました。
こういうのをうまく活用して、用語ぐらいは覚えられたらいいな。
それではまたお会いしましょう。
配布情報
配布URL
以下のURLより配布しています。
利用規約に同意の上ご利用ください。
ダウンロードには以下の記事から配布情報を取得する必要があります。
いいなと思ったら応援しよう!
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。