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"となったら、学習は完了です。