AIチャットボットを開発するレシピの紹介

# はじめに

Axrossを運営している藤原です。

**[Axross](https://axross-recipe.com/recipes)** とは、エンジニアの"教育"と"実務"のギャップに着目し、「学んだが活用できない人を減らしたい」という想いのもと、ソフトバンクと社内起業制度にて立ち上げたサービスです。

現役エンジニアによる開発ノウハウや実例を"レシピ"として教材化し、実際にプログラミングで実装を追体験しながら学ぶことができます。AI/機械学習をテーマにした、様々な業務領域やビジネスの課題解決に応用できる実践的な学習教材を140以上揃えています。（2021年6月時点）
Axross：https://axross-recipe.com
公式Twitter：https://twitter.com/Axross_SBiv
![Axrossアイキャッチ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/9f500e0e-a759-20e2-bb8b-480bbcfaaf9b.png)
今回は、チャットの質問に対してAIによって自動的に応答する仕組みと、その代表的なAIモデルを紹介し、Axrossのサービスで学べる実践的な、**AIチャットボットを構築する人気レシピ**をご紹介します。

# AIチャットボットの仕組み

チャットボットとは、リアルタイムで短文のやり取りを行うことを意味する「チャット」と、一定の作業を自動化するロボットを意味する「ボット」を合わせた名称で、チャットでの質問に自動で返答するプログラムやアプリケーションのことです。AIチャットボットは、AI（人工知能）を搭載したチャットボットのことであり、AIが人間の発する「あいまいな」言葉や文脈を解釈し、的確に意図を読み取り、複雑な会話でも精度の高い回答を自動応答できるのが特徴です。

## チャットボット導入メリット
チャットボットを導入するメリットは大きく３つあります。

１つ目は、24時間365日いつでも対応できる点です。チャットボット導入によって、オペレーターの人件費やシフト確保を心配をする必要がなくなり、顧客からの問い合わせに対して常時受けられるため、顧客満足度の向上にも繋がります。

2つ目は、親しみやすい点です。チャットボットは対話型UIにデザインされているため、ユーザーはWebサイトやLINE、Messenger等使い慣れたチャットUIからいつでも気軽に、簡単に質問できるようになります。電話やメールを利用した従来のお問い合わせ形式では、問い合わせまでに手間と時間がかかり、使い勝手が悪いデメリットがありましたが、チャットUIにすることで、問い合わせまでのハードルを下げて、顧客接点を増やし、チャットボットによる問い合わせの即時解決により顧客満足度の向上にも繋げられます。また、チャットUIは、ITリテラシーが低い人でも簡単に操作できるため、業務システムへの導入も効果的です。

3つ目に、問い合わせ業務の効率化ができる点です。例えば、コールセンターの繁忙期のオペレーターは、人間が対応できる入電量には限界があるため、よく似た内容のお問い合わせにいつも悩まされています。チャットボットを導入することで、お問い合わせ数の多い内容の返答を自動化できるため、コールセンターの入電数を減少させ、その結果、コールセンターの負担減少につながり、全体のオペレーションコスト削減も実現できます。また、問い合わせの蓄積されたデータは、企業のマーケティングにも活用でき、これも業務効率化に役立ちます。

## チャットボットの活用例
チャットボットは業界問わず様々な活用がされています。
例えば、ECサイトでのWeb接客やFAQ等のカスタマー対応、飲食店や病院等での予約受付、保険診断や見積もり提案 等、挙げたらきりがありません。


# AIチャットボットの代表的なモデル
## Watson
**IBM Watson**とは、IBM社が開発した、人が話す言葉（自然言語）の意図を認識し、学習、経験するといった、コグニティブ（認知）・コンピューティング能力を世界で初めて商用化したサービスです。

IBM Cloudに登録するだけで日本語化されたWatson APIを利用することができ、チャットボットの対話機能 Watson Assistantも利用することができます。

## BERT
**BERT**（Bidirectional Encoder Representations from Transformers）とは、2018年10月にGoogleの論文で発表された自然言語処理モデルです。

BERTでは、**Transformer**というアーキテクチャが組み込まれ、文章を双方向（文頭と文末）から学習することによって、文脈を読むことが可能な自然言語処理モデルです。2018年当時、BERTは、翻訳、文書分類、質問応答など自然言語処理の11個の主要なタスクにおいて、最高スコアを叩き出し、自然言語処理における過去最高のアップデートとして世界で注目を集めました。そして、2019年には、BERTをGoogleの検索エンジンに採用したと発表しました。

BERTは事前学習モデルであり、入力されたラベルが付与されていない分散表現をTransformerが処理することによって学習できるため、出力層を付け加えるだけで簡単にファインチューニングが可能なモデルです。また、事前学習には長文を読むデータセットを用いて、MLM(=Masked Language Modeling)とNSP(Next Sentence Prediction)を学習させることで、爆発的な精度向上を実現しています。

* Masked Language Modeling
従来の自然言語処理モデルでは、文章を単一方向でしか処理できず、前の文章や単語から予測するタスクが基本でした。一方で、BERTでは先述の通り双方向のTransformerによって学習し、単語周辺の複数個所が穴（マスク）になっている文章の単語を確率計算で予測するタスクにより、従来よりも高い精度を実現しました。

* Next Sentence Prediction
BERTは、2つの入力文に対して「その2文が連続した文かどうか」の確率を当てることで、2つの文の関係性を学習し、文章の文脈を考慮した自然言語処理モデルを実現しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/fb7acf73-dda5-7e85-3d4a-f0ca0ab8fecf.png)

出典：[BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding](https://arxiv.org/pdf/1810.04805.pdf)

## GPT-3
**GPT-3**(Generative Pretrained Transformer3)は、Open AIが2020年に発表した、深層学習を使用してテキストを生成する自己回帰言語モデルの最新版です。Open AIとは、2015年12月にイーロン・マスクなど有力な実業家・投資家が参加したことで注目を集めた人工知能の研究機関です。

GPT-3は、約45TBの大規模なテキストデータのコーパスを約1750億個のパラメータの事前学習に利用しているため、いくつかの単語や文章を入力すると、次に出てくる適切な文章が何かを予測して、あたかも人間が書いたような文章を自動で生成します。GPT-3は、GPT、GPT–2に続く3番目のモデルですが、GPT-2は、事前学習に使用されるテキストデータが40GB、パラメータ数が約15億個であることを考えると、GPT-3はテキストデータが約1100倍以上、パラメータ数が約117倍以上と、いかに大規模なデータセットを事前学習して高性能になったが想像できると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/7e509314-63ad-f03e-0434-bf636dbbfee2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/bbd71f58-72fa-e1a4-de1c-abbb7b20e698.png)

GPT-3の文章生成の精度は非常に高く、チャットボットによる応答だけでなく、ニュース記事やブログ、楽曲、デザイン、プログラミングのソースコード等の自動生成としての活用が期待されています。

出典：[Language Models are Few-Shot Learners](https://arxiv.org/pdf/2005.14165.pdf)

## DialoGPT
**DialoGPT**とは、Microsoft が開発している深層学習を活用した会話型応答生成モデルです。OpenAIのGPT-2をベースに拡張したモデルであり、Redditから抽出した20億語の対話データから成る大規模コーパスで学習しています。

DialoGPTを使うことで、GPTモデルの高い言語生成パフォーマンスを、対話型のチャットボット開発に応用することが可能です。

出典：[マイクロソフトの強力なChatBOT、DialoGPTの紹介](https://ai-scholar.tech/articles/natural-language-processing/dialo_gpt)


## Clova Chatbot
**Clova Chatbot**は、NAVER社のクラウドサービスで利用できる自然言語ベースの会話モデリングエンジンです。自然言語処理技術と機械学習ベースの「教師なし学習」を通じて、非常に複雑な自然言語プロセスを使っており、人間が会話を学んでいく過程と同じように自然言語（文章や文法）を理解して返答するように機械学習させる高度な会話モデルを構築し、人間のような会話の自然な流れを実現できます。

Clova Chatbotは、NAVER社が提供するためLINEアプリとの親和性が高く、韓国語はもちろん日本語でも対話の応答品質は高く、応答精度の改善スピードも速いので国内利用においておすすめです。自然言語処理の世界では、複雑かつ独特な文法で、単語の種類が多い日本語は、非常に認識するのが難しいため、GoogleやWatson、Microsoft等の他社チャットボットエンジンと比べて後発ではありますが、LINEのデータを学習することで今後の更なる精度改善にも期待できると思います。

出典：[Clova Chatbot公式ページ](https://clova.line.me/clova-chatbot/)

# AIチャットボットを活用したレシピの紹介

#### [PythonのStreamlitでチャットボットWebアプリケーションをお手軽に作るレシピ](https://axross-recipe.com/recipes/179)
投稿者：[@benao_python](https://twitter.com/benao_python)さん

最近データ分析業界でよく使われるようになったPythonの**Streamlit**というWEB開発フレームワークを用いて、ブラウザ上でPythonのみで完結する、WEBアプリケーション開発を実践します。

Streamlit Sharingという専用のデプロイサービスを使って、簡単なチャットボットのWebアプリケーションを作成し、APIをWebアプリケーションに組み込む方法を学ぶことができます。

https://axross-recipe.com/recipes/179

#### [BERTによる日本語QAの発話応答モデル作成レシピ](https://axross-recipe.com/recipes/118)
投稿者：[@katkazzzzz](https://twitter.com/katkazzzzz)さん

Google検索エンジンに使われている自然言語処理モデル**BERT**を使って、A4紙1枚程度の日本語マニュアルの中から、日本語での質問に対する日本語の回答を探し出すモデルを作成します。BERTをfinetuningし、QAタスクに適用するPyTorchによる自然言語処理手法を学ぶことができます。

https://axross-recipe.com/recipes/118

また、続編である[【発展編】BERTによるQAチャットボットの学習モデル作成レシピ](https://axross-recipe.com/recipes/141)では、BERTと自然言語処理に特化した深層学習のフレームワーク**Transformers**を活用し、日本語QAチャットボットの学習モデルを作成します。

https://axross-recipe.com/recipes/141

#### [【基礎編】飲食店のFAQを想定し、LINEのCLOVA APIでチャットボット作成するレシピ](https://axross-recipe.com/recipes/201)
投稿者：Axross運営

「個人経営の街の中華屋さん」での飲食店の課題を想定して、 公式LINEアカウントを使って、顧客からのお問い合わせや予約の受付等、比較的ライトな顧客対応をLINE上のチャットボットで自動応対する手法を学べます。

日本語の認識精度が高い、教師なし機械学習ベースの会話モデリングエンジンを持つ、NAVER社の**CLOVA Chatbot**サービスを利用し、データセットの自作から、AIチャットボットを構築・学習、テスト評価、運用するまでの一連のLINEチャットボット開発の流れを体験できます。

https://axross-recipe.com/recipes/201

#### [GPT-3で自然対話するSlackボットを作るレシピ](https://axross-recipe.com/recipes/153)
投稿者：[@benao_python](https://twitter.com/benao_python)さん

OpenAIが開発した文章生成言語モデル**GPT-3**を使って、自由に対話できるチャットボットを開発する方法を学べます。

GPT-3は、GPT-2よりも膨大な学習データが使われ、飛躍的にモデル精度・キャパシティが向上しました。この最強言語モデルGPT-3を活用することで、文脈を踏まえた自然な返答文を自動生成することができます。SlackAPIとGoogleAppsScript（GAS）を組み合わせ、Slackグループで質問に応答したり、雑談ができるチャットボットを実装します。

https://axross-recipe.com/recipes/153

また、続編の[【GPT-3発展編】音声だけで会話するチャットボットを作るレシピ](https://axross-recipe.com/recipes/176)では、このGPT-3モデルに、Pythonの音源の文字変換や文字の音源変換ができるライブラリとWatson APIを組み合わせ、文章入力を介さず音声のみ（口頭）で会話するボットを開発します。

https://axross-recipe.com/recipes/176

### [Microsoftから独立した企業が公開した日本語版GPT-2でチャットボットを作るレシピ](https://axross-recipe.com/recipes/287)
投稿者：[@benao_python](https://twitter.com/benao_python)さん

2021/8/25にrinna株式会社が日本語版GPT-2の事前学習モデルをオープンソース化しました。rinna株式会社はマイクロソフトのAIチームが独立してできた会社です。

このレシピでは、日本語で構成されたデータセットで最適化されたりんなGPT-2の学習済みモデルを用いて、 Pythonでチャットボットや長文生成を試し、過去に書いたGPT-3のレシピとの精度・結果を比較します。

https://axross-recipe.com/recipes/287

### [MicrosoftのDialoGPTでチャットアプリを開発するレシピ](https://axross-recipe.com/recipes/223)
投稿者：[@su2umaru](https://twitter.com/su2umaru)さん

Microsoft が開発している **DialoGPT** を活用して、高性能なチャットアプリを開発します。DialoGPT は GPT-2 を拡張したモデルであり、Reddit のデータから成る大規模コーパスで学習しており、チャットアプリ開発を通して、DialoGPTの強力な応答性能を体験できます。

https://axross-recipe.com/recipes/223

# 最後に

今回は、Axrossサービスで学べる実践的な、**AIチャットボットを構築するレシピ** をご紹介しました。

AIを活用できる人材になるためのコツは、座学勉強よりも、まず実際にAIを実装する体験をしてみる、そして、様々なテーマやデータセットで、異なるAIモデルの実装を繰り返し演習することが近道だと思います。

Axrossのレシピを通して、プログラムの意味を考えながら写経（コードを実際に書き写す行為）し、実際に動くものをつくりながら学ぶことで、新たな知識の習得やスキルアップの一助になれれば幸いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/b48ed75c-2ed0-5598-0ca4-195626c30d70.png)
また、Axrossでは自身のナレッジを学習教材"レシピ"として寄稿いただけるエンジニアの方も募集しています！

見習いエンジニアから募った学びたい内容を[ウィッシュリスト](https://docs.google.com/spreadsheets/d/1HTL3puxFN6GGt6ReOwEbkuRGty82q_IDkjcQ9WSkD8c/edit#gid=175640870)として掲載しています。募集中のテーマからご自身で作成いただけるようでしたら、レシピ作成にご協力お願いいたします。