からあげDSアゲ太郎 #2　-世界最強の自然言語処理AI「GPT-3」のベータテスターになったのでからあげを題材にサンプルを3つ試してみる-　[GPT3 APIサンプルリスト付き]

#はじめに
![building_karaage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/2a5aa22d-b346-5e21-7026-645618d31f41.png)
いやはや、早いもので2021年も始まって気づいたらゴールデンウィークに入っていましたね。
どうも、カラアゲニストの[Yusuke Miyamaru](https://qiita.com/fried_chicken_380)です。
データサイエンティスト（DS）としてお客様の課題を解決するために日々精進しています。


インテックのデータ分析・AI活用のノウハウをまとめた連載記事です↓

https://note.com/note_fsd1/n/nee2e3fa5e710

クリスマスにからあげの値段と地域性について調査を行った前回の記事も見ていただけると幸いです。↓

https://qiita.com/fried_chicken_380/items/bb54101ea702568303d4

- - -
 
本日はあのイーロンマスク氏が作った「OpenAI」にて生み出された世界最強の自然言語処理AI「GPT-3」の
オープンベータテストのアカウントを手に入れることが出来ましたので
###「からあげ」をテーマに
###「GPTｰ3」の使い方を模索することを目的として
デモを色々試してみたいと思います！

#目次
１．GPT-3とは？
２．GPT3 APIのデモサンプルの種類
３．デモ①　Factual answering（事実に基づく回答） -からあげとは-
４．デモ②　Recipe generator（レシピジェネレーター）　-からあげの作り方生成-
５．デモ③　Restaurant review creator（レストランレビュークリエーター）　-からあげ専門店のレビュー生成-
６．おわりに

#１．GPT-3とは？
まず、GPT-3とは何か？という人もいますので、wikipediaから抜粋させていただきます。※1

> Generative Pretrained Transformer 2 (GPT-2) の後継モデルである Generative Pretrained Transformer 3 (GPT-3) は、教師なしの Transformer 言語モデルである。 
> GPT-3 は 2020 年 5 月に初めて紹介された。 OpenAI によると、GPT-3 には 1,750 億個のパラメータが含まれ、GPT-2（パラメータ数 15 億個）より 2 桁大きい。

要するに、世界最先端の「自然言語アルゴリズム」で世界最大の「データ」をインプットに、世界最高レベルの「コンピューターリソース」で学習させることでパラメータが約15億個で構成される超巨大AIモデルを生み出したということです。

今回は詳細は割愛しますが、転移学習を主軸に置くカスタマイズ性に優れたGoogleの「BERT」に対し、追加で学習をさせずに汎用的なタスクに対応できるといった位置づけなのが「GPT-3」とも考えられます。

こうした「BERT」と「GPT-3」の違いなども議論されているので、下記記事なども興味があればご覧になると良いかもです。

https://analyticsindiamag.com/gpt-3-vs-bert-for-nlp-tasks/


また、今回はベータテスター登録や使用するまでの手順などは割愛しますが、下記記事など参考にすると良いかもです。

https://qiita.com/nissan_lab/items/8d0a887b6d32881d6d80



#２．GPT3 APIのデモサンプルの種類

さて、続いてはどんなデモのサンプルがあるか紹介します。

こちらはデモのサンプルページです。

![スクリーンショット 2021-05-03 0.08.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/1a69a24f-2c80-5e95-8fe9-407becf29fe9.png)

現在公開されているのはなんと40個（2021年5月3日時点）。下記に名前と概要をリストでまとめてみました。

|#|デモの名前|概要|
|:---|:---|:--|
|1|Chat|AIアシスタントとの自由形式の会話が可能|
|2|Q&A|既存の知識に基づいて質問に回答するための質問と回答を作成|
|3|Grammar correction|入力された文を標準英語に修正|
|4|Summarize for a 2nd grader|難しいテキストをより単純な概念に要約|
|5|Text to command|テキストをプログラムコマンドに変換|
|6|English to French|英語のテキストをフランス語に翻訳|
|7|Parse unstructured data|長い形式のテキストからテーブルを作成|
|8|Classification|アイテムをカテゴリに分類|
|9|Movie to Emoji|映画のタイトルを絵文字に変換|
|10|Advanced tweet classifier|テキストから感情を検出|
|11|Keywords|テキストのブロックからキーワードを抽出|
|12|Factual answering|"？”をつけて質問することで知らない単語やフレーズを回答|
|13|Ad from product description|商品の説明を広告コピーに変換|
|14|Product name generator|単語から製品名を作成|
|15|TL;DR summarization|テキストを要約|
|16|Spreadsheet generator|さまざまな種類のデータのスプレッドシートを作成|
|17|JavaScript helper chatbot|JavaScriptの使用に関する質問に答えるチャットボット|
|18|ML/AI language model tutor|言語モデルに関する質問に答えるQAチャットボット|
|19|Science fiction book list maker|SFの本のリストを作成|
|20|Tweet classifier|ツイートから感情を検出|
|21|Airport code extractor|テキストから空港コードを抽出|
|22|SQL request|単純なSQL要求を作成|
|23|Extract contact information|テキストから連絡先情報を抽出|
|24|JavaScript to Python|単純なJavaScript式をPythonに変換|
|25|Friend chat|テキストメッセージの会話をエミュレート|
|26|Mood to color|テキストの説明をカラーコードに変換|
|27|Analogy maker|アナロジーを作成|
|28|JavaScript one line function|JavaScript関数を1行に変換|
|29|Micro horror story creator|トピック入力から2〜3文の短いホラーストーリーを作成|
|30|Third-person converter|一人称のテキストを三人称に変換|
|31|Notes to summary|会議のメモを要約に変換|
|32|VR fitness idea generator|バーチャルリアリティゲームのアイデアを作成|
|33|ESRB rating|ESRBの評価に基づいてテキストを分類|
|34|Essay outline|研究トピックの概要を生成|
|35|Recipe generator|材料のリストからレシピを作成|
|36|Marv the sarcastic chat bot|皮肉っぽく答えるチャットボット|
|37|Turn by turn directions|自然言語をターンバイターン方式の経路案内に変換|
|38|Restaurant review creator|いくつかの言葉をレストランのレビューに変換|
|39|Create study notes|トピックを入力すると、研究の文章を出力|
|40|Interview questions|面接の質問を作成|

今回はこの中から3つ選んで、どんな挙動をするか調べていきたいと思います！

#３．デモ①　Factual answering（事実に基づく回答） -からあげとは-
まずデモの1つ目は「Factual answering」です！

![スクリーンショット 2021-05-03 0.29.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/804a64d6-1bb6-f3ac-14ac-a09b56bcc4ea.png)

このデモでは、
###「からあげ」とは何なのか、その定義を
GPT-3に聞いてみたいと思います！

![スクリーンショット 2021-05-03 0.30.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/e4b8be48-613d-0e10-64a4-26cade20301e.png)
GPT-3のデモはブラウザから直接クエリを投げれるので便利ですね。こちらのブラウザでAIと対話してみようと思います。
まずは、日本語で「からあげって何？」って聞いてみようと思います。さて結果は。

![スクリーンショット 2021-05-03 0.35.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/cab2294a-5e09-ad3f-8348-2891749d2b73.png)

###「からあげは、鶏肉を細かく切って、油で揚げたものです。」

おぉ、すごい。日本語でもしっかり答えてくれました！

ついでに北海道で揚げ物のことを指す「ザンギ」についても聞いてみましょうか。（ザンギの定義については諸説あるので今回は左記の定義でいきます）
ニッチなものについてもしっかり応答してくれるのでしょうか。さて結果は。

![スクリーンショット 2021-05-03 0.46.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/b144cc05-452f-ee13-5c16-996f70a2f179.png)

###「ザンギは、日本の伝統的な音楽です。」

###なるほど？？？

（注:「ザンギ 伝統音楽」でグーグル検索しましたが、見つかりませんでした。もしご存じの方がいらしたら情報提供お願いします。）

ニッチな単語については少し難しかったようですね。

ですが、日本語でクエリしてもしっかりと返答が返ってくることがわかりましたね。

#４．デモ②　Recipe generator（レシピジェネレーター）　-からあげの作り方生成-
続いての2つ目は「Recipe generator」です！

![スクリーンショット 2021-05-03 2.20.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/49911982-d36c-35e1-d9f4-d6bd6068e143.png)

このデモでは、
###「からあげ」の「作り方」を
GPT-3に聞いてみたいと思います！

こちらのデモですが、
###「料理名」と「材料」
を入力すると
###「料理の手順」
が返ってくるといった内容です。

それではこちらも日本語でいってみましょう。
料理名を「からあげ」
材料はベーシックな鶏の唐揚げの材料である「鶏もも肉」「小麦粉」「片栗粉」「油」の４点にします。※あくまで主観です。あしからず。
それでは結果です。

![スクリーンショット 2021-05-03 2.40.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/145e842c-32d7-6186-83af-a16fb7b56afb.png)
###1. 鶏もも肉を油で炒める
###2. 小麦粉と片栗粉を加えて炒める
###3. からあげにして食べる

・・・

###揚げてない。

何ということでしょう。まさか粉ものをまぶさずに炒めていく方式を取るとは。

日本語だと、やはり文意を汲み取るのが難しいのでしょうか。
それか、調味料を入れたほうが良いのでしょうか。（普通に入れ忘れていました）

下記の調味料を追加で入れてみましょう。
・「しょうゆ」
・「みりん」

GPT-3はからあげのことをしっかりと「鶏肉を細かく切って、油で揚げたもの」と言っていました。
もう一度、調味料を入れてクッキングスタートです。

![スクリーンショット 2021-05-03 3.05.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/7b62c372-5735-a1a1-0848-cb0f3558b3d0.png)
###1. Cut the chicken into bite-sized pieces.（鶏肉を一口大に切る。）
###2. Combine the flour, salt, pepper, and baking powder in a bowl.（小麦粉、塩、コショウ、ベーキングパウダーをボウルに入れて混ぜる。）
###3. Add the eggs and mix well.（卵を加えてよく混ぜる。）
###4. Add the oil and mix well.（油を加えて、よく混ぜる。）
###5. Add the chicken and mix well.（鶏肉を加えて、よく混ぜる。）
###6. Add the soy sauce and mix well.（醤油を加えて、よく混ぜる。）
###7. Add the mirin and mix well.（みりんを加えて、よく混ぜる。）
###8. Add the water and mix well.（水を加えて、よく混ぜる。）
###9. Add the flour and mix well.（小麦粉を加えて、よく混ぜる。）
###10. Add the potato starch and mix well.（片栗粉を加えて、よく混ぜる。）
###11. Add the cabbage（キャベツを加える。）

・・・

###卵とキャベツ、どこから来た？？　

うーん。英語で出力されたうえ、卵とキャベツが登場してしまいました。（そしてまた揚げてない）
やはり高度なクエリを日本語で行うのはまだまだ難しそうですね。

英語でも試してみましょうか。下記に変更です。
「からあげ」→「fried chicken」
「鶏もも肉」→「chicken」
「小麦粉」→「flour」
「片栗粉」→「potato starch」
「油」→「oil」
「しょうゆ」→「soy sauce」
「みりん」→「mirin」

それでは結果です。


![スクリーンショット 2021-05-03 3.17.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/734adbb2-d095-01fd-b0f5-c608adf99e19.png)

###1. Cut the chicken into bite-sized pieces.（鶏肉を一口大に切る。）
###2. Coat the chicken in flour, potato starch, and soy sauce.（小麦粉、片栗粉、しょうゆで鶏肉をコーティングする。）
###3. Fry the chicken in oil.（鶏肉を油で揚げる。）
###4. Add mirin to the pan and cook until the sauce thickens.（みりんを加えて、ソースが濃くなるまで煮込む。）

・・・

おぉ！すごい。3番までは完璧です！GPT-3は、みりんの扱いにはあまり慣れてなさそうです。
日本語でのクエリは難しいですが、英語だとかなりの精度で応答が返ってくることがわかりましたね。


#５．デモ③　Restaurant review creator（レストランレビュークリエーター）　-からあげ専門店のレビュー生成-
最後の3つ目は「Restaurant review creator」です！

![スクリーンショット 2021-05-03 3.32.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/db760ded-260b-7baa-3da9-22861ac85c73.png)


このデモでは、
###「からあげ専門店」の「レビューの書き方」を
GPT-3に聞いてみたいと思います！


こちらのデモですが、
###「店の名前」と「お店に対するコメント」
を入力すると
###「そのお店のレビュー」
が返ってくるといった内容です。

それでは、自分がからあげ店を出店すると仮定し、お店に対するコメントを入力してみます。

###お店の名前：からあげ専門店「からあげDSアゲ太郎」
###お店に対するコメント：揚げ時間のばらつきが少ない、衣がサクッとしている、クリスマスに足を運びたい、安くて美味しい

では上記内容で、出力されるか試してみます。では結果です。
![スクリーンショット 2021-05-03 4.14.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/0a6ba215-69cc-f3ba-8636-10f543dfcb2f.png)

###The restaurant is called "Karaage DS Age-Tarou" and specializes in fried chicken. （そのお店は「からあげDS アゲ太郎」というお店で、フライドチキンの専門店です。）
###The fried chicken is crispy and the batter is not too thick. （フライドチキンはサクサクしていて、衣は厚すぎない。）
###The chicken is not greasy and the meat is tender. （鶏肉は油っぽくなく、肉は柔らかいです。）
###The restaurant is open late and is a great place to go for a Christmas meal.（このお店は遅くまで営業しているので、クリスマスの食事には最適です。）

・・・

###おお！かなり自然ですね。

コメントは全ては反映されていませんが、文が自然になるように調整してくれているみたいです。
「衣がサクッっとしている」や「クリスマスに足を運びたい」の意味がちゃんと意味を壊さずに反映されているのが驚きでした。

#６．最後に
![ai_man_akusyu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439339/9de5ce0e-07f5-fdde-9d00-cd08aa72d1f4.png)
今回は様々な観点から「からあげ」を題材にGPT-3のサンプルを試してみましたが
なかなか
###「アツい」技術
ではないでしょうか！

日本語に特化したモデルでもないので、まだまだ日本では実践ベースで使いにくい部分はあるかもしれませんが
こうした自然言語処理AIはビジネスにて、ますます活用が進んでいくのではないでしょうか。

ここまで見てくださってありがとうございます！
今後も楽しくデータ分析や開発の魅力をお伝えできればと思います！
ではまた。

#参考資料
※1　OpenAI - Wikipedia（https://ja.wikipedia.org/wiki/OpenAI）