SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IBM Bluemix User Group(BMXUG)リレー寄稿

IBM Watsonと連携するTwitter Botを作ってみよう!

IBM Bluemix User Group(BMXUG)リレー寄稿 第4回


  • X ポスト
  • このエントリーをはてなブックマークに追加

9 Hubotにスクリプトを追加し、再度デプロイする

 Hubotはスクリプトを追加することで、さまざまな動作をさせることができます。今回はREST APIを利用するスクリプトを作成しましょう。スクリプトは、「C:\Users\(ユーザー名)\watsonhubotdev\ scripts」フォルダ直下に配置します。

 HubotのスクリプトはCoffeeScriptかJavaScriptで記述します。今回はCoffeeScriptで記述しています。

 テキストエディタなどを開き、以下のコードをコピーしてください。

ファイル名:watson_nlc.coffee
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サービスが新しく加わったので、テキストエディタなどを開き、以下の内容としてください。

ファイル名:manifest.yml
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システムなどを作成する際にも利用できるものとなっています。

 ぜひ、この記事の内容を応用して、快適なコグニティブ・ライフをお過ごしください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
IBM Bluemix User Group(BMXUG)リレー寄稿連載記事一覧

もっと読む

この記事の著者

佐藤 一成(Bluemix User Group)(サトウ イッセイ)

株式会社DIGC/株式会社アイク・ラボの両社にて、代表取締役社長を務める。フルスタック・IBM Watsonを主とした人工知能系エンジニア。大学卒業後、大手SIer、外資系コンサル企業を経て、ベンチャー・一部上場企業の社内SEを経験。その後フリーランスとなり、2015年起業、現在に至る。全国初のIBM Watsonを活用したIctシステムのコンサルティング・システム開発を専門とする。現在は、株式会社株式会社DIGCにて1...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9621 2016/09/30 12:54

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング