9 Hubotにスクリプトを追加し、再度デプロイする
Hubotはスクリプトを追加することで、さまざまな動作をさせることができます。今回はREST APIを利用するスクリプトを作成しましょう。スクリプトは、「C:\Users\(ユーザー名)\watsonhubotdev\ scripts」フォルダ直下に配置します。
HubotのスクリプトはCoffeeScriptかJavaScriptで記述します。今回はCoffeeScriptで記述しています。
テキストエディタなどを開き、以下のコードをコピーしてください。
module.exports = (robot) -> status = {} robot.respond /(.*)/i, (res) -> message = res.match[1] return if message is '' res .http('https://(NLCのusername):(NLCのpassword)@gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/(NLCのclassifier_id)/classify') .headers('Content-Type': 'application/json') .post(JSON.stringify({ text: message})) (err, response, body) -> if err? console.log "Encountered an error #{err}" else data = JSON.parse body res.send Math.round(data["classes"][0]["confidence"]*100) + '%の確率でプログラム言語 「' + data["top_class"] + '」 のことではないでしょうか?'
ファイル名は何でも構いませんが、ここではwatson_nlc.coffeeとしました。後、保存時に必ず文字コードUTF-8で保存するようにしてください。そうしないと、日本語が文字化けしてしまいます。
最後に、manifest.ymlを編集します。NLCサービスが新しく加わったので、テキストエディタなどを開き、以下の内容としてください。
applications: - name: watsonhubotdev path: . memory: 256M services: - watsonhubotdev-nlc
最後に、Cloud Foundryアプリケーションにデプロイを行います。コマンドプロンプトから以下のコマンドを実行してください。
cf push watsonhubotdev
デプロイが完了したら、用意したアカウントとは別のTwitterアカウントでログインし、何か話しかけてみましょう。試しに、「一番難しいプログラム言語は?」と話しかけてみます。
高確率で、「93%の確率でプログラム言語 「C」 のことではないでしょうか?」という回答が返って来ました。プログラム言語のことを学習させているので、それについての話題の正答率は高いです。
では、「アイスクリーム美味しいよね!」と全然関係ない話題を振ったらどうなるでしょうか。
「49%の確率でプログラム言語 「Java」 のことではないでしょうか?」という回答が返って来ました。
このように、学習させた話題とまったく異なる内容では、正答率は極端に低くなることが分かります。
10 最後に
今回は、Hubotを利用して、「質問すると、プログラム言語を返答するBot」を作成してみました。しかし、今回の内容は一例でしかありません。IBM Watsonに学習させる内容や、Hubotのスクリプトの記述次第では、もっと汎用的な質問に回答できるBotを作成できます。また、NLC APIの内容については、QAシステムなどを作成する際にも利用できるものとなっています。
ぜひ、この記事の内容を応用して、快適なコグニティブ・ライフをお過ごしください。