見出し画像

【コード付き記事まとめ】あなたにもSiriが作れる?! チャットボットを作成しよう

画像1

みなさんはチャットボットをご存知でしょうか?

これはチャットが交わせるボット(ロボット)という意味で、ユーザーが入力した言葉を読み取って、あたかも会話しているかのように反応を返すプログラムのことです。聞きなれない言葉かもしれません。しかしこの記事にたどり着けているみなさんであれば、必ず一度は使ったことがあるはずです。

SiriやGoogleアシスタントなどの対話型AIは、あまりにも自然に会話ができるので意識しにくいかもしれませんが、実はこのチャットボットという技術がもとになっています。これらのサービスは、チャットボットと音声認識技術の合わせ技で実現しています。

仕事やプライベートの連絡のためのツールは、メールからLINEなどのチャットに移行しました。チャットといえば人間対人間のコミュニケーションを思い浮かべる方が多いと思いますが、AI技術の進歩した今、必ずしもそうとは言えなくなってきています。

この記事では、今注目されつつあるチャットボットが実際にどのような形で利用されているのかを紹介します。そして実践編として、Pythonを使った簡単なチャットボットのコードを掲載し、実際にどんな仕組みで動いているのかを体験してもらいたいと思います。

1. Pythonのチャットボットとは何か

画像2

1-1. Pythonのチャットボットとは会話できるプログラムである


日本語の文章は単語毎に別れておらず、そのままではコンピューターが単語間の関係や品詞を判別することはできません。そこでPythonの提供しているJanomeのようなライブラリを利用し、分かち書き(単語ごとに分ける)をした上でそれぞれの単語の品詞を判別することで、文章の意味を読み取らせます。

この作業のことを、形態素解析と呼びます。

「私はPythonを学ぶ」→「私」「は」「Python」「を」「学ぶ」


それではコンピューターが文章の意味を理解できるとして、それが具体的にどのような形でチャットボットに利用されているのでしょうか? Siriを例にして説明したいと思います。


「Hey, Siri」と声をかけることでSiriが起動します。


この後例えば、「Aさんに日程変更を伝えるメールを出して」と指示を出した時のことを考えてみましょう。

1−2. PythonのチャットボットをSiriを例にして解説

まずiPhoneのマイクによって感知された音声をもとに、音声認識によってテキストデータに変換します。このテキストデータはスマートフォンの画面に表示されます。そしてこのテキストデータを形態素解析して文章の意味を読み取るわけですが、ここで大事な点が一つあります。

試しにiPhoneを機内モードにしてみてください。Siriが使用できなくなるはずです(Androidでも同様)。

これはどういうことかというと、Siriがテキストデータを解析するためにAppleのサーバーにアクセスするからです。

Siriの文章解析には、AIが使われています。そのAIは、みなさんがお持ちのスマートフォンの中にあるわけではありません。AIの計算には高性能のコンピューターが必要となるため、中心的なサーバーを用意して、ユーザーがそれを使うタイミングでそこへアクセスするという仕組みになっています。iPhoneの通信を断つとSiriが使えなくなるのはその為です。

iPhoneに表示されたテキストデータは一旦Appleのサーバへと送られ、そこで形態素解析されます。試しにJanomeを使って例文を解析すると、以下のようになります。

Aさんに日程変更を伝えるメールを出して


A 名詞,固有名詞,組織,*,*,*,A,*,*
さん 名詞,接尾,人名,*,*,*,さん,サン,サン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
日程 名詞,一般,*,*,*,*,日程,ニッテイ,ニッテイ
変更 名詞,サ変接続,*,*,*,*,変更,ヘンコウ,ヘンコー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
伝える 動詞,自立,*,*,一段,基本形,伝える,ツタエル,ツタエル
メール 名詞,サ変接続,*,*,*,*,メール,メール,メール
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
出し 動詞,自立,*,*,五段・サ行,連用形,出す,ダシ,ダシ
て 助詞,接続助詞,*,*,*,*,て,テ,テ

MACのターミナルに出力された結果をそのまま出しているので、少々読みづらいかもしれませんが、単語毎の品詞が表示されています。

こうして解析された単語の中からAppleのサーバーにあるプログラムは、”メール”という名詞に注目して、ユーザーがメールの送信をしてほしいのだということを認識します。

そして、iPhoneに”メールのアプリを起動せよ”という命令を出すわけです。

これはSiriの例ですが、あらゆるサービスに使われているチャットボットに共通するものになります。テキストデータを解析してその中の単語を一つ一つ調べ、ユーザーが何をしてほしいのかを読み取ってそれに応じた情報を返しているのです。

1−3. Pythonのチャットボットが使われているサービス

Pythonのチャットボットは、既に社会のあらゆる場所に溶け込んでいます。チャットボットという言葉がまだ広まっていないだけです。

例えば、消費者の問い合わせをチャットボットで受け付けていたり、IT系のヘルプデスク業務をチャットボットで代替したりなどがあります。

AIが特に強いのは、特定の傾向が多く見られる問題に適切な解答を返すことです。例えば上記のような問い合わせ業務の従事者は、よくあるQ&Aのページを見れば解決するような問い合わせをいくつも対応することになります。基本的にITに疎い人ほど、電話の方が安心するなどといった理由でいきなり電話をしてしまいがちですよね。

こういった特定の質問に対して適切な解答を返すのは、AIの得意分野です。問い合わせのフォームに入力された問い合わせの内容を解析し、よくある質問のパターンに該当するものがないかをチェックします。そして該当するものがあればパターン化された解答を返し、該当するものがなければ人間のオペレーターに繋ぎます。これだけでオペレーターの負担を大幅に減らすことができます。

また最近はこれとは違った形で、チャットボットを導入している企業もあります。その1つは会話型広告です。

例えばエンジニアの求人などで寄せられる問い合わせをチャットボットで受け付け、ユーザーの求める条件などをヒアリングしていきます。その条件に合った求人情報を返し、ユーザーが気に入ればエージェントが実際に求人を紹介するというサービスがあります。

ユーザーが求めているサービスをチャットによって特定し、それを契約に結びつける。こういった形の広告を導入する企業は増えつつあります。

この会話型広告をメインビジネスとしている株式会社ZEALSは、4.2億円の資金調達をしたことで話題になりました。またこのZEALSはサイバーエージェントが筆頭株主にもなっています。起業家や投資家も、チャットボットに目をつけ始めているということがわかります。

PythonのWeb開発スキルの転職市場における需要について書いたnoteはこちら。


2. Pythonでチャットボットを作るコード掲載記事まとめ

Pythonで実装するチャットボットには多様なものがあります。Slackのようなチャットツールに組み込むものから、pepperくんに組み込むカメラ連動型などがあります。また言語生成アルゴリズムによっても分類することができ、個人でも作れるようなマルコフ連鎖を使った簡易なものから、ハイスペックなサーバーを使った機械学習によるGPT-3をはじめとした学習モデルなどがあります。

ここでは読者の方のレベルに合わせて選べるように、私の執筆したPythonコード付きのチャットボット記事を紹介したいと思います。

2-1. PythonのStreamlitでチャットボットWebアプリケーションをお手軽に作るレシピ

スクリーンショット 2021-10-12 23.27.40

StreamlitというWebアプリケーションフレームワークを使って、ブラウザ上で動くチャットボットを開発する記事です。これはHTMLやCSSが不要で、Pythonで完結させることができるシンプルなフレームワークで最近注目されています。

GitHubにコードアップするだけで自分だけのWebアプリができるので、サーバーを借りたりする必要もなく開発初心者の方にも最適です。

2-2. 夏目漱石の「坊ちゃん」を学習させてマルコフ連鎖で新作を自動生成させるレシピ

スクリーンショット 2021-10-12 23.42.19

こちらは夏目漱石の原稿をデータセットに、学習を行って著者の作風を模した文章を生成するボットを作成する記事になります。マルコフ連鎖という数学的な手法を使っています。このような古典の原稿は青空文庫に公開されているので、好きな著者で学習されたボットを作成することができます。

機械学習からどのようにして言語を生成するボットを作成するのか興味のある方にはおすすめです。中にはTwitterでボットを作成している方もいるようです。

2-3. GPT-3で自然対話するSlackボットを作るレシピ

スクリーンショット 2021-10-12 23.49.36

こちらは例外的にPythonではなくGASを使っていますが、GPT-3という機械学習モデルを使った高性能なSlackボットを作成する記事です。イーロンマスクの運営しているOpenAIという研究所が公開している文章生成言語モデルです。

Slackで雑談ができる部屋が作れるので、仕事の息抜きとしてもおすすめです。

2-4. あなたのPCをPepperのような表情認識ロボットにできるレシピ

スクリーンショット 2021-10-13 0.05.43

Pazというドイツの研究所が公開しているロボット開発用のライブラリを使って、カメラに映った人の表情に応じて音声で発話するボットを作成します。gTTSというGoogleのライブラリで、チャットボットで生成したテキストを音声に変換します。

笑顔・悲しみ・怒りなどの表情に応じたセリフをかけてくれます。より本格的なロボット開発に興味のある方はおすすめです。

2-5. Microsoftから独立した企業が公開した日本語版GPT-2でチャットボットを作るレシピ

スクリーンショット 2021-10-13 0.26.17

これまで紹介した技術はどれも外資系のサービスによるものでしたが、こちらは日本企業が作ったアルゴリズムです。Microsoftから独立した日本人の方が作った会社の技術です。

TransformerというGPT-3にも使われている自然言語処理ライブラリが使われています。以下のリンクからチャットボットをテストできます。

これをPythonを使って自前のPCで動かす方法を解説しています。チャットボットのアルゴリズムは英語をベースにしたものが多い中、日本語に特化したものということでこちらも注目されています。

少しでも参考になりましたらスキ・フォローお願いします!

またココナラでPython関連の相談や開発を受けているので、お困りの方は以下からどうぞ!






サポートは料理好きなのでの食材費にさせていただきます。