SHOEISHA iD

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

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

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

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

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


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

7 Natural Language Classifierサービスの作成

 いよいよ、IBM Watsonを利用していきます。今回利用するIBM Watson APIは、「Natural Language Classifier(以下、NLC)」という一番オーソドックスかつ、とても重要なAPIを利用します。

 NLCは、Deep Learningを用いた自然言語のクラス分類を行います。文章を入力すると、その文章のカテゴリ(class)が学習データに基づいて返却されます。

 では、Bluemix上にサービスを作成しましょう。コマンドプロンプトから以下のコマンドを実行してください。

cf create-service natural_language_classifier standard watsonhubotdev-nlc

 watsonhubotdev-nlcという名前で、standardプランの、NLCのサービスが作成されました。コマンドプロンプトから以下のコマンドを実行してサービスが作成されているか確認しましょう。

cf services

 サービスが作成できているか確認できました。次に、Cloud FoundryアプリケーションにNLCサービスをバインドします。コマンドプロンプトから以下のコマンドを実行してください。

cf bind-service watsonhubotdev watsonhubotdev-nlc

 コマンドを実行したら、また、

cf services

で状態を確認します。bound appsにwatsonhubotdevと表示されていれば、正常にバインドできています。

 バインドした状態を反映させるため、Cloud Foundryアプリケーションを再起動します。コマンドプロンプトから以下のコマンドを実行してください。

cf restage watsonhubotdev

8 Natural Language Classifierサービスを利用する

8.1 NLCに分類器(Classifiers)を作成する

 さて、NLCサービスを作成し、Cloud Foundryアプリケーションにバインドしました。しかし、このままBotとして利用することはできません。まずはNLCのサービス資格情報を取得します。コマンドプロンプトから以下のコマンドを実行してください。

cf env watsonhubotdev

 すると、先ほどはなかった、"natural_language_classifier":という項目が追加されています。こちらのusername、passwordを控えておきます。

 次に、curlでNLCサービスに問い合わせを行ってみましょう。コマンドプロンプトから以下のコマンドを実行してください。

curl -X GET -u "(NLCのusername)":"(NLCのpassword)" -H "Content-Type:application/json" https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/

 すると、以下のJSONデータが返ってきます。当然、まだ分類器(classifiers)の作成は行っていないので、空です。

 ここで、分類器(classifiers)を作成すると同時に、NLCにデータを与え、学習をさせます。そのためには、学習データを準備する必要があります。

 サンプルデータを用意しました。下記URLからwatsonhubotdev.csvをダウンロードして、任意の場所に配置してください(後からアップロードするので、分かりやすいパスへ)。

 サンプルデータはカンマ区切りCSV、文字コードUTF-8、2カラムで構成され、1カラム目にはカテゴリ(class)の説明用文章、2カラム目にはカテゴリ(class)が記載されています。

 コマンドプロンプトから以下のコマンドを実行してください。

curl -u "(NLCのusername)":"(NLCのpassword)" -F training_data=@watsonhubotdev.csv -F training_metadata="{\"language\":\"ja\",\"name\":\"watsonhubotdev\"}" https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers

補足

 @watsonhubotdev.csvの部分は適時ご自分が配置したパスに置き換えてください。今回の例では、分かりやすく「C:\Users\(ユーザー名)\watsonhubotdev」フォルダ直下に配置し、作業時も同パスで作業を行っています。

 すると、分類器(classifiers)が"status" : "Training"で作成されます。classifier_idだけ、後で使うので控えておきましょう。

 後はTrainingが完了するのを待つだけです。だいたい約30分~1時間程度でTrainingは終了するので、気長に待ちましょう。ちなみに、現在のstatusを確認するには、コマンドプロンプトから以下のコマンドを実行してください。

curl -X GET -u "(NLCのusername)":"(NLCのpassword)" -H "Content-Type:application/json" https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/(NLCのclassifier_id)

 statusがTrainingの間は、まだ学習中です。

 "status" : "Available"となったら、学習は完了です。

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

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング