初心者が10分もあれば作れるAIがあるだと!?
そんなHappyなことあるわけなかろう…
ということで作ってみました。
―――――――――――――――――――――――――――
こんにちは。アラサーサラリーマンです。
今回は、既に世の中に出回っている無料API(Application Programming Interface)を使って、簡単なAIを作ってみようと思います。
APIを使うので、AIを作るというか、AIを使える枠組み・仕組みを作ってみる感じになるんですかね?
APIとは何ぞやということについては、後ほど私の理解をさっと書いておきます!
これをやることで、自分が今後詳しくやっていくべきことを学べれば今回の目標は達成です!
- 0. そもそもAPIって何?
- 1. 必要なDoを整理しよう!
- 2. Talk APIを使えるようにしよう!
- 3. Talk APIを呼び出す環境を考えよう!
- 4. Talk APIを呼び出して自然対話AI(チャットボット)を使ってみよう!
- 5. コードを分析して理解し、次につなげよう!
0. そもそもAPIって何?
そもそもAPIって何?ってことを私がざっと調べて理解したイメージで書きます!
(自分が理解しやすいイメージで覚えておけばまあ問題はないでしょう!)
APIはアプリケーション プログラミング インターフェースの略だそうです。
これだけではイマイチよく分からんのですが、
我々は、APIに変数を渡せば、APIを通してAPI開発元(ライブラリ)の機能を使えるようになるそうです。それもライブラリの中身を知らなくとも。
つまり、高性能なスマート調理器みたいなものですね。
食材を入れてスイッチ押すだけで完成した料理を出してくれるのがAPIですね。開発元が育成してきたノウハウを使って、混ぜたり煮たり色々してくれるんでしょうけど、その過程はユーザーはわからないです。
とにかく我々はAPIに食材を渡せば具体的な結果を返してくれると覚えておきます。
(下図みたいな感じですね)
1. 必要なDoを整理しよう!
まずは今回必要なDoを調べました。
- 使用するAPIを決める
今回はリクルートが公開している無料API「Talk API」を使ってみようと思います。決め手は料金です。
NTTのAPIもありましたが、私が調べた限りでは料金がかかりそうだったので、やめました。(もしかしたら調べ方がまずかっただけかもしれませんが、、、) - 作成したAIを使うためのUI(User Interface)を準備する
…ココ、盲点でした。確かにUIがなければAIを実行できませんね。
私が最終的にやりたい自動文章作成AIも何らかの見やすいUIを介して実行していく感じにしたいです。
わかりやすいUIにするためにはHTMLなども使いこなさないとできそうにないので、
今回は(UIを最終的にはどうやって作るのか考えながら)、UIにこだわらず実行結果が確認できればOKということにします。 - APIを呼び出して使うコードを記述する
…ええ、今気づきましたが、コード書けないと始まらないじゃん!
この業界にたった今生まれ落ちた私のような存在はこの初歩のAIもできないじゃん!
…よし、ここは世の中の猛者達の技術を使わせてもらおう…
…もはやこれはAIを作るというよりかは、コピペして使っただけになるが…まあ許してもらおう…
…気を取り直して、順番にDoをつぶしていこう!
2. Talk APIを使えるようにしよう!
前項でも書きましたが、今回はリクルートの出しているTalk APIを使います。
使えるようにするための手順は下記サイトを参考にさせていただきました。
5分くらいでAPIを利用できる権利を得ることができました!(簡単!)
リクルートのサイト(PRODUCT | A3RT (recruit.co.jp))によれば、Talk APIとは、
「Chatbotを作成するためのAPIです。 Recurrent Neural Network(LSTM)を用いた入力文からの応答文生成による日常会話応答機能を提供します。 Talk APIを活用したChatbotによって様々なアプリケーション上でユーザとの対話を自動化し、 どのようなタイミングにおいても即座にユーザからの問いかけに対して応答することができます。」
とのこと。おそらく会話を入力したらAPIさんが答えを探してきて返答を返してくれます。
このRecurrent Neural Networkというのは、ニューラルネットワークのように各層の入力が次の層に影響を与えるだけでなく、ある時点での入力がそれ以降の時点の入力による出力にも影響するらしい。
ヘエースゴイネ-、アラサービックリシチャッタヨ。
3. Talk APIを呼び出す環境を考えよう!
モシカシテ、イロンナホウホウデ エーピーアイッテ ヨビダセルノカナ?
って状態なんですが、今後のことを考えてGoogle Colaboratory(Colab)を使ってみたいと思います!
Colabを使えばWEB上でPythonの記述・実行ができるらしく、
「PCのこと正直よくわかんな~い。環境整備とか自分でやるのたいへ~ん。」と思っている私にはうってつけだな! ということで実はちょっと知ってました。
ちなみにPythonはプログラミング言語の1つです。コンピュータと人間がおしゃべりするときに使う言葉です。猫と話すとき人間も「にゃ~」と言いますよね。あれです。
早速Google Colaboratoryと検索してサイトに行ってみると、下図の画面が出てきて、、、
なんとなんと、何もしてないけどもう使える感じ!?
Googleにログインしているだけで使えそうです!
小さくて見づらい(赤線部)ですが、環境構築不要、ブラウザ上で記述・実行可能と書いてありますね~
初心者にとてもやさしいですね!
実行結果は味気ない感じのようですが、今回の目的としては十分です!
4. Talk APIを呼び出して自然対話AI(チャットボット)を使ってみよう!
先に謝っておきますが、私はまだPythonコードを十分に書けませんので、
先人のコードを拝借して実行するだけです。
繰り返しになりますが、AIを使うための仕組みを理解して、今後やるべきことを学ぶのが今回の目的です。
今回拝借させていただくコードの主のリンクはこちらです。
上記リンク先に紹介されているコードをcolabのセルにコピペして実行して、Talk APIのkeyを入力するだけです!
すると下記画面が出てきました!
まず初めに、上図赤枠で囲った実行結果欄(出力欄)に
5. コードを分析して理解し、次につなげよう!
- 1行目:Requestsモジュールをインポートして使えるようにしている。7行目に使っているんですかね。
- 3,14行目:talk_api関数とmain関数を定義している。変数messageを受け渡しているよう。
- 20行目:本流はここですね。あるときにmain関数を呼び出せっていう命令が出ていますね。プログラミングってこうやって関数呼び出して終了って感じなんかな。_name_==_main_ってやつはコマンドラインから入力された場合を指す。なんのこっちゃねん!
- 14~18行目:main関数の中は、Trueの間(Falseになることないから切らない限りずっと続くわけね。)、以下を繰り返す。
- 3~12行目:talk_api関数の中では受け取ったmessageを使って何かをreturnしている。
覚えることが多すぎて、もうお腹いっぱいなので、jsonはjava scriptの何かだということだけは覚えておきます。。。
モデルで出力できなかったときのメッセージは、APIは返してくれないんですね笑
文章を入力させて、それを関数に渡して、既に作ってあるモデルに横流しして、計算してもらって、元の画面に返してやれば1対1で対応した回答が返ってくる構造になっているって思っておけばよさそうです。
私がやりたいことは、
キーワードを入力させて、それを関数に渡して、これから試行錯誤するモデルに横流しして、計算してもらって、元の画面に文章を返す構造にすればよさそうなので、
ほとんどこの形式と同じっぽいですね。
APIが隠したノウハウの部分を習得しようとしたら、
既にあるものを組み合わせたり、改造すればイケるものなのか、
自分で一から作るものなのか全くわからないので、次はそこら辺のお勉強をすることになりそうですね。
ではまた次の日に!
※ブログも初心者なもので文字ばかりになってしまい、見ていただいた皆様には恐縮です。徐々に見やすくできればと思いますので、しばらくの間お付き合いください。