LoginSignup
7
8

More than 5 years have passed since last update.

Watson on Bluemix でNLCことはじめ (2)

Last updated at Posted at 2016-07-08

Watson on Bluemix でNLCことはじめ (1) の続きです。
今回はアプリケーションからAPI経由で、NLCサービスをつついてみたいと思います。
とは言いつつもアプリケーションは一から手作りせずに、以下の方針で進めます。

  1. GutHubからアプリを拝借
  2. 拝借したアプリの設定を変更して、自作のNLCサービスに接続
  3. アプリから自作のNLCをつついてみる

こんな感じでやってみようと思います。

今回の手順では、Bluemixのクラウド上で全てを済ませることが出来るので、特にクライアント側で準備するものはありません。
もし、UIを変更したり独自の機能を作りこみたい場合、ローカルで作業したくなると思います。その際は、今回拝借するアプリがNode.jsアプリなので、ローカルにNode.jsnpmを入れたり、Bluemixデプロイ用にCloud Foundry CLIツールを入れたりする必要があります。

1. GitHubからアプリを拝借

今回利用するのは、IBM Watson Developer Cloudで公開されているNLCのデモアプリです。

デモ自体は、天候についての質問をすると「気温」についての質問なのか、「天候状態」についての質問なのか、を分類してくれるとっても興味深いデモです。トレーニングデータも公開されています。

1-1. GitHubから"Deploy to Bluemix"

早速、デモアプリのgithubページからアプリを拝借します。
https://github.com/watson-developer-cloud/natural-language-classifier-nodejs

普通のForkではなく、ページ中段にある「Deploy to Bluemix」ボタンからアプリを持ってくるようにします。

101_fork.jpg

すると、Bluemixにログインするように求められるので、素直にログインします。
デプロイに際しては、アプリ名やデプロイ対象のBluemixスペースなどを設定して、「DEPLOY」ボタンをクリックします。

102_deploy.jpg

※ここでは、IBM DevOps Servicesが利用されます。
詳細についてはこちらのチュートリアルがわかりやすいかもしれません。
Gitのホスティングサービス、Web IDE、自動デプロイなどの機能が提供されています。

しばらく待つとデプロイが完了し、以下のような画面になります。

103_deploy_success.jpg

1-2. アプリケーション確認

「VIEW YOUR APP」ボタンをクリックすると、自分のBluemix環境上にデプロイされたデモアプリが開きます。
この段階で、画面上の「Ask」ボタンをクリックしてもNLCが動かないため、Errorとなります。

いったん、Bluemixのダッシュボードに戻ってみると、以下のようにアプリケーションとNLCサービスが作成されていることがわかります。

104_deploy後ダッシュボード.jpg

NLCのサービス名が「natural-language-classifier-standard」となっている方が、DEPLOYによって自動生成されたものです。
今回、自動生成された方のサービスは使わないので、右上の歯車マークから「サービスの削除」をしてしまって良いです。

2. 自作のNLCサービスに接続

ここからは、Gitから取得したアプリ(ソース)に、前回作成した自作のNLCサービスを紐付けて、自作NLCサービスに接続するように設定していきます。

2-1. サービスをバインド

まず、ダッシュボードからアプリケーションを選択し、アプリケーション概要ページで「サービスまたはAPIのバインド」をクリックします。

105_アプリ概要.jpg

ポップアップ内に表示される前回作成した自作のNLCサービスを選択し、"追加" ボタンをクリックします。これでアプリケーションに自作のNLCサービスがバインドされました。

バインドが完了すると、"アプリを再ステージングするか" と聞かれますが、どっちみちまだ動かないのでしなくても良いです。

2-2. 資格情報を確認

つぎは、利用するサービスの資格情報を確認し、アプリケーションに設定できるようにメモっておきます。

アプリケーションにサービスをバインドすると、概要ページにサービスのハコが表示されるので、NLCのハコの中にある、"資格情報の表示"をクリックします。
資格情報が表示されるので、"password" と "username" をメモっておきます。

106_サービス資格情報.jpg

また、NLCのtoolkitを起動し、作成したClassifierの "Classifier ID" もメモっておきます。
107_classifierID.jpg

2-3. Web IDEでソース編集

続いては、コードを編集して自作NLCを設定します。
アプリケーションの概要ページにある、"コードの編集" をクリックすると、Web IDEが起動し、ソースコードを編集できます。

107_コード編集.jpg

Web IDE
110_コード編集画面_対象.jpg

app.jsとmanifest.ymlが編集対象です。以下のように修正します。

app.js
username と password の箇所を2-2. で確認した資格情報の値で置き換えます。47行目の"classifier-id"を自作NLCのClassifier IDに置き換えます。

// Create the service wrapper
var nlClassifier = watson.natural_language_classifier({
  url : 'https://gateway.watsonplatform.net/natural-language-classifier/api',
  username : '<username>',
  password : '<password>',
  version  : 'v1'

});
// Call the pre-trained classifier with body.text
// Responses are json
app.post('/api/classify', function(req, res, next) {
  var params = {
    classifier: process.env.CLASSIFIER_ID || '<classifier-id>', // pre-trained classifier
    text: req.body.text
  };

manifest.yml
"natural-language-classifier-standard"の箇所を自作NLCの名前に修正します。

---
declared-services:
  natural-language-classifier-standard:
    label: natural_language_classifier
    plan: standard
applications:
- services:
  - natural-language-classifier-standard
  name: natural-language-classifier-nodejs-xxx
  command: npm start
  path: .
  memory: 512M
  host: natural-language-classifier-nodejs-xxx
  • 編集後、保存するのを忘れずに!
    (Ctrl+s もしくは、「メニュー」->「ファイル」->「保存」)

  • "ワークスペースからのアプリケーションのデプロイ" を実行
    111_デプロイonWebIDE.jpg

  • 実行中になればOK

3. アプリから自作のNLCをつついてみる

ようやく、自分のBluemix上のアプリから、自作NLCをつつきます。
アプリケーションの概要から「経路」のURLから画面を開いて、前回やったような文言をテキストボックスに入力し、「Ask」ボタンクリックしてみます。

112_アプリ画面.jpg

Outputが、OK・NG にClassificationされていれば自作NLCが使えています。
お疲れ様でした!


さいごに、、、

今回はアプリから自作NLCをつついてみるという事でしたが、Bluemixの使い方に終始してしまった感があります。。とは言え、これをきっかけにいろいろいじっていければと思う次第です。

以下参考
7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8