見出し画像

LangChainによる質問応答データセットの自動生成を試す

「LangChain」による質問応答データセットの自動生成を試したのでまとめました。

前回

1. Generate Examples

LangChainの「Generate Examples」という機能を使って、3つほどのサンプルデータを元に、オリジナルの質問応答データセットを自動生成してみます。

2. 質問応答データセット

質問応答データセットは、質問応答タスクをAIに学習させるためのデータセットです。Context、Question、Answerの3つのデータで構成されます。Answerは、Context内に含まれる必要があります。

【例】

◎ Context
ナポリタンは、茹でたスパゲッティをタマネギ、ピーマン、ハムなどと共にトマトケチャップで炒めた洋食である。日本で創作された日本風パスタ料理であり、類似の名を持つイタリア料理のスパゲッティ・アッラ・ナポレターナとは異なる。ナポリタンに類似した名で呼ばれるパスタ料理は幅広く存在するが、本稿では、第二次世界大戦後に日本の喫茶店や洋食屋で広く提供されていた、軟質小麦を原料としたコシのない麺をケチャップで炒めたものを中心に解説する。その周辺の類似したパスタ料理についても適宜解説する。

◎ Question
ナポリタンに用いるソースは何ですか。

◎ Answer
トマトケチャップ

日本語の質問応答のデータセットは、「JaQuAD」が有名です。今回は、ここからデータを3つほど使わせてもらいました。

3. Colabでの実行

Google Colabでの実行手順は、次のとりです。

(1) パッケージのインストール。

# パッケージのインストール
!pip install langchain
!pip install openai

(2) 環境変数の準備。
以下のコードの <OpenAI_APIのトークン> にはOpenAI APIのトークンを指定します。(有料)

import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIのトークン>"

(4) サンプルデータの準備。
「JaQuAD」から3つほどデータを使わせてもらって、以下のように定義します。questionに "Context: <Context>\nQuestion: <Question>" とContextも含めているのがポイントです。

examples = [
  {
    "question": "Context: 宮﨑駿(みやざきはやお、1941年1月5日-)は、日本の映画監督、アニメーター、漫画家である。別名として秋津三朗(あきつさぶろう)、照樹務(てれこむ)がある。映画などのクレジットタイトルでは宮崎駿(みやざきはやお)と表記されることもある。\n\n株式会社スタジオジブリ取締役、公益財団法人徳間記念アニメーション文化財団理事長、三鷹市立アニメーション美術館(三鷹の森ジブリ美術館)館主である。\n\n東京府東京市出身。学習院大学政経学部卒業した。東京都小金井市、三鷹市名誉市民。埼玉県所沢市在住。アニメーション制作会社スタジオジブリに映画監督として所属し、2005年4月より取締役となった。また、自身が企画開発した三鷹市立アニメーション美術館(三鷹の森ジブリ美術館)の館主である。\n\n個人の事務所に、株式会社二馬力があった。主に宮﨑の著作権関連の管理を行っており、かつては自身が代表取締役社長を務めていたが、2016年スタジオジブリに吸収合併し解散した。\n\n愛煙家としても知られている。\nQuestion: 宮崎駿が館主としている美術館の名前は?",
    "answer": "三鷹市立アニメーション美術館"
  },
  {
    "question": "Context: ゴジラは1954年に第1作が公開されて以降、半世紀以上に亘って製作されている怪獣映画である。演技者がぬいぐるみ(着ぐるみ)に入って演じる手法を主体としており、この手法は以後、日本の特撮映画やテレビ特撮番組の主流となった。怪獣や怪獣同士の格闘のみならず、逃げ回る住民や攻防する軍隊等の周辺の人間描写も毎回描かれ好評を得ている。日本のみならず海外でも上映されて人気を呼び、ハリウッド・ウォーク・オブ・フェームに日本のキャラクターとしては唯一の例として登録されている。\nQuestion: 『ゴジラ』の撮影は演技者がどこに入って行われますか?",
    "answer": "ぬいぐるみ"
  },
  {
    "question": "Context: ナポリタンは、茹でたスパゲッティをタマネギ、ピーマン、ハムなどと共にトマトケチャップで炒めた洋食である。日本で創作された日本風パスタ料理であり、類似の名を持つイタリア料理のスパゲッティ・アッラ・ナポレターナとは異なる。ナポリタンに類似した名で呼ばれるパスタ料理は幅広く存在するが、本稿では、第二次世界大戦後に日本の喫茶店や洋食屋で広く提供されていた、軟質小麦を原料としたコシのない麺をケチャップで炒めたものを中心に解説する。その周辺の類似したパスタ料理についても適宜解説する。\nQuestion: ナポリタンに用いるソースは何ですか。",
    "answer": "トマトケチャップ"
  },
]

(5) プロンプトテンプレートの準備。

from langchain.llms.openai import OpenAI
from langchain.example_generator import generate_example
from langchain.prompts import PromptTemplate

# プロンプトテンプレートの準備
example_template = PromptTemplate(
    template="{question}\n{answer}", 
    input_variables=["question", "answer"])

(6) データの生成。
generate_example()にサンプルデータ、LLM、プロンプトテンプレートを渡して実行します。

# データの生成
new_example = generate_example(examples, OpenAI(max_tokens=2000), example_template)
print(new_example)
Context: ピカチュウは、ポケモンの中で最も人気があり、世界中で愛されているポケモンです。ジムリーダーのサトシが最初に捕まえたポケモンで、サトシと共に冒険をしていきます。個性的なポーズや表情で、子供から大人まで憧れの存在となっています。
Question: ピカチュウが最初に捕まえられたのは誰でしたか?
サトシ


他の例は、次のとおりです。

Context: スターウォーズは、1977年に公開された米国のSF映画である。ジョージ・ルーカス監督のデビュー作であり、SF映画史に残る名作となった。スターウォーズの舞台は、銀河系を舞台とした架空の世界である。主人公のルーク・スカイウォーカーは、ジェダイ士であるオビ=ワン・ケノービを指導し、帝国軍と戦うストーリーが描かれている。
Question: スターウォーズの監督は誰でしょうか。
ジョージ・ルーカス
Context: モンスターストライクは、2010年にサービスを開始したスマートフォン向けゲームである。プレイヤーはモンスターをコレクションして、他のプレイヤーとバトルを行う。バトルでは、自分のモンスターを操作して相手モンスターを倒すことを目標とする。バトルは最大3vs3で行われる。ゲーム内には複数のモンスターが存在し、モンスターは属性別に分類されている。属性別には、火、水、風、光、闇などがある。モンスターの能力値(攻撃力、防御力など)は、レベルアップによって上昇させることができる。モンスターストライクは、2013年から2019年まで7年間に渡って放送されたテレビアニメ『モンストアニメ』を展開している。
Question: モンスターストライクのバトルは何対何で行われますか?
3vs3
Context: マクドナルドは、アメリカのハンバーガー・チェーン店である。本社はイリノイ州オークブルックにあり、世界各国で店舗を展開している。1940年、リック・マクドナルドとマクドナルド兄弟が米国カリフォルニア州サンタ・モニカに創業した。彼らはハンバーガーを手軽に食べられるよう、ハンバーガーを加工して作る新しい料理を考案した。1955年、彼らは現在の形態となる「スピード・サービス」を導入した。
Question: マクドナルドの創業地はどこですか?
カリフォルニア州サンタ・モニカ
Context: カルボナーラは、パスタ料理の中でも最も有名なイタリア料理の一つである。「カルボナーラ」という言葉はイタリア語で「チーズと塩辛いもの」を意味する。カルボナーラは、チーズを使用したレシピで作られる家庭料理であるため、各家庭のレシピが異なっている。だが、多くの場合、パスタを茹でて、それにチーズなどの調味料を加え、オーブンで温めるのが一般的な作り方となっている。
Question: カルボナーラを作る際、調味料として使われるものは何ですか。
チーズ
Context: メキシコ料理は、メキシコ本土、中米、そして北米の3つの地域で見られる多様な料理を指します。それぞれの地域には異なる料理があり、基本的なものには、メキシコ本土の「ナチョス」、中米の「タコス」などがあります。メキシコ料理は、コーン、ナチョス、チリ、タコス、ガーリック、オニオンなどを活用した、酸味、辛味、甘味が調和したフレーバーが特徴です。
Question: メキシコ料理の基本的なものとして、何が挙げられますか。
ナチョス、タコス

バラエティ豊かですが、アニメ、映画、料理と、サンプルデータで与えたジャンルで作成されやすい傾向がありそうです。

関連

次回



この記事が気に入ったらサポートをしてみませんか?