生成系AIにクイズをつくってもらった話
こんにちは、こんにゃくざむらいです。
ナビタイムジャパンでAIを利用したシステムのバックエンド開発を担当しています。
今回はナビタイムジャパンが保有する、観光記事の情報と生成系AIを利用して、クイズを生成した話をします。記事の途中で生成したクイズを出題するのでぜひ解いてみてください!
なぜクイズをつくるのか
ナビタイムジャパンでは、旅行者のニーズに応えるため、さまざまな観光アプリやサービスを提供しています。国内旅行向けサービスの『NAVITIME Travel』では、日本各地の観光スポットや交通手段、グルメ情報など、旅行者が快適に旅を楽しむための情報が充実しています。
一方、訪日外国人観光客向けのサービス『Japan Travel by NAVITIME』では、日本の観光情報や交通案内が提供され、言語の壁を越えてスムーズに旅行を楽しむためのサポートが充実しています。
これらのサービスは、旅行者が目的地に到着する前から帰路に着くまでの全ての段階で役立つ情報を提供し、快適で充実した旅行体験をサポートしています。
当社では、これらの観光アプリに情報を掲載するため、各地の観光スポットに関する記事を豊富に保有しています。
これらの記事は、旅行者が目的地での体験をより深く楽しむための重要な資産です。この貴重なコンテンツをさらに活用し、旅行者に新たな価値を提供する方法がないかと考えた結果、観光スポットにより強い興味を持ってより楽しんでもらう、ということを可能にするクイズ作成に取り組むことにしました。
ただ当社が保有する観光スポットに関する記事は膨大で、ひとつひとつ作成するとなると大変です。そこで生成系AIを活用して効率的に資産を拡張する取り組みを始めました。
具体的には、これまでに蓄積してきた観光スポットの記事を基に、旅行者が楽しみながら学べる観光スポットに関するクイズを作成しました。生成系AIを活用することで、記事の内容を迅速かつ効率的にクイズ形式に変換し、多彩な問題を生み出すことが可能となりました。このクイズは、旅行者が訪問予定のスポットについての知識を深めたり、まだ知らなかった場所に興味を持ったりするきっかけとなります。実際のサービスに関して詳しくはこちらをご覧ください。
どのようにクイズをつくったか
そもそも生成系AIの手法にはどのようなものがあるかをお話しします。生成系AIの手法には、zero-shot、one-shot、few-shotといったアプローチがあります。これらは、AIがどのように学習データを使って新しいタスクに対応するかを表す概念で、それぞれ異なるレベルのデータ量と汎用性を持っています。
Zero-shot Learning
Zero-shot learning(ゼロショット学習)は、AIが全く新しいタスクや質問に対して、特定の訓練データを与えられなくても対応できる手法です。つまり、AIは事前にそのタスクについて学習した経験がなくても、既存の知識やパターンを応用して正しい回答を生成します。このアプローチは、あらかじめ定義されていない観光スポットに関するクイズの作成に非常に有効です。たとえば、当社の観光アプリで初めて扱う場所についても、ゼロショット学習により、AIは類似の既存知識を基に適切な問題を生成することができます。
One-shot Learning
One-shot learning(ワンショット学習)は、AIが新しいタスクや概念をわずか1つの例から学習し、それを応用できる手法です。通常、機械学習モデルは多くのデータを必要としますが、ワンショット学習では1つのデータポイントだけでAIが新しいパターンを理解し、将来の類似タスクに対応します。たとえば、特定の観光スポットに関連する新しいクイズを作成する際に、AIがそのスポットについて1つの例しか提供されていなくても、その情報を基に適切なクイズを生成できます。
Few-shot Learning
Few-shot learning(フューショット学習)は、少数のデータポイント(通常は数例)を使って新しいタスクを学習し、それを応用する手法です。ゼロショット学習よりも少し多くの情報を与えることで、AIがより高い精度で新しいタスクに対応できます。例えば、新しい観光スポットに関する記事が数件しか存在しない場合でも、AIはそれらの記事を元にして、そのスポットに関連するクイズを複数生成することができます。
結局、生成系AIに入力する具体例をいくつ入れるかというお話しです。以上が生成系AIの手法(zero-shot、one-shot、few-shot)の説明でした。詳しくはこちらのサイトが参考になります。生成系AIを利用した手法は他にもあり、例えばRAG(Retrieval-Augmented Generation)は当社のチャットボットで利用されています。よければこちらの記事をご覧ください。
今回のクイズ作成ではそれぞれの観光スポットの記事を利用できたため、One-shotの方法で作成しています。クイズを生成する旨とともにクイズの具体例を入力に含めることで、出力をある程度指定することができます。今回はJSON形式で三択クイズと◯✕クイズを出力しました。実際に作成されたクイズと元になった観光記事はこちらです。よかったら実際にクイズを解いてみてください!
クイズ:「三重県南伊勢町にある4つの展望台が点在する公園はどこ?」
選択肢:「1. 鵜倉園地, 2. 八望台, 3. 通天閣」
答え:記事のリンク
正解できたでしょうか?実際にはこちらの仕組みをAPIに組み込んでサービスに利用しています。ここでは観光記事を利用して観光スポットに関するクイズを作成していますが、他のアプリでもこの仕組みを利用して、それぞれに適したクイズを作成しています。入力を少し変えるだけで用途を変えられるというのも生成系AIのメリットの1つだと思います。選択肢は当社が保有するデータから同じカテゴリのものを用意しています。
今回利用した生成系AIに関して
以前チャットボットで利用した生成系AIはAzure OpenAIのGPT-3.5を利用していましたが、今回は価格の観点でAWS Bedrockで利用できるAnthropicのClaude3を利用しました。ただ現在この記事を執筆時点ではAzure OpenAIのGPT-4o mini が格安で利用できるようになっているため、生成系AIの成長スピードは早いなぁとしみじみ感じています。
今後の取り組み
クイズの作成を通じて、ユーザーに新たな楽しみ方を提供するだけでなく、ナビタイムジャパンのアプリの価値も一層高めることができました。私たちは、既存のコンテンツを最大限に活用し、新しい形で旅行者に提供することで、より豊かな旅行体験をサポートしています。生成系AIの導入により、コンテンツの再利用と価値の拡張が容易になり、今後もさらに多様な形でユーザーを支援する新たなアイデアを生み出し続けていくことに全力を尽くしてまいります。