シェル・スクリプトでの Watson Natural Language Classifier の使用方法

UNIX コマンド・ライン愛好者向け

Comments

概要

原文の著者: jfcorb
スキル・レベル: 初心者
Watson サービスについては初級、UNIX コマンド・ラインについては中級。
Watson サービスをコマンド・ラインで使用するのは、不可能なことではなく、有益なことです。このレシピは、コマンド・ラインまたはシェル・スクリプトを介して Natural Language Classifier 用 Watson API と対話する方法を理解する上で役立ちます。

前提条件

  • IBM Cloud アカウント
  • UNIX またはシェルを利用できるコマンド・ライン環境

ステップバイステップ

1

Watson Natural Language Classifer 資格情報の作成

プロセス:

  1. カタログから IBM Watson Natural Language Classifier サービスを作成します。
  2. サービスが作成されたら、提供された資格情報を表示させて保存します。

結果:

  • 新しく作成されたサービスにリダイレクトされます。
  • URL、username、password の資格情報が json フォーマットで表示されます。
        {
          "url": "https://gateway.watsonplatform.net/natural-language-classifier/api",
          "username": "{username}",
          "password": "{password}"
        }
2

新しく作成したサービス下での分類器 (classifier) のトレーニング

プロセス:

  1. 適切なレーニング・データを使用して、次のコマンドで分類器を作成します。
    curl -v -u "{username}":"{password}" -F training_data=@train2.csv -F training_metadata="{\"language\":\"en\",\"name\":\"My Classifier\"}" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers"
  2. HTTP 状況コード「200 OK」が返されて、この分類器に関する状況レポートに分類器についての情報が表示されるはずです。

結果:

  • 分類器作成 API のサンプル出力。
      {
       "classifier_id": "10D41B-nlc-1",
       "name": "My Classifier",
       "language": "en"
       "created": "2015-05-28T18:01:57.393Z",
       "url": "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/10D41B-nlc-1",
       "status": "Training",
       "status_description": "The classifier instance is in its training phase, not yet ready to accept classify requests"
      }

コマンド:

  • 作成した分類器の状況を 30 秒おきに確認し、使用可能な状況を探し続けます。
    while true; do clear; curl -v -u "{username}":"{password}" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/{classifier_id}"; sleep 30; done
3

IBM Watson NLC classification を実行可能な UNIX コマンド環境

プロセス:

  • 分類するためのコマンド (基本)
    curl -X POST -u "{username}":"{password}" -H "Content-Type:application/json" -d "{\"text\":\"How hot will it be today?\"}" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/{classifier_id}/classify"
  • シェル・スクリプトに取り込みます。このシェル・スクリプトを nlc_classify.sh と呼ぶことにします。
    #!/bin/bash
    curl -s -X POST -u "{username}":"{password}" -H "Content-Type:application/json" -d "{\"text\":\"$1\"}" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/{classifier_id}/classify"
  • ファイルからの質問のリストを分類するには、次のようにします。
    paste questions.txt | while read line; do echo "classifying question $line"; ./nlc_classify.sh $line; echo; done
  • データをフィルタリングするための、いくつかの方法
    a) 通常の grep コマンドと awk コマンドを使用した、要求データのフィルタリング
    ./nlc_classify.sh "How hot will it be today?" |grep class_name |head -n 1 |awk '{print $2}'
    b) JSON 構文解析プログラムの使用と、jpath 構文の使用 (つまり jq コマンド) ./nlc_classify.sh "How hot will it be today?" |jq '.classes[0].class_name'

ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=1054683
ArticleTitle=シェル・スクリプトでの Watson Natural Language Classifier の使用方法
publish-date=12212017