【jslgg】お手軽watsonアプリ開発セミナー
TRANSCRIPT
【JSLGG】 女性限定!
お手軽Watsonアプリ開発セミナー
#softlayer #blemix
日本アイ・ビー・エム システムズ・エンジニアリング株式会社
グロース・テクノロジー コグニティブ・ソリューション
佐藤 大輔 ( [email protected] / VegaSato )
Bluemixを使って、ダイエットQAに答えてくれるWatsonを作ってみよう♪
© 2016 IBM Corporation2
IBM Bluemixwww.bluemix.net
ご注意
この資料は日本アイ・ビー・エム株式会社および日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受けておりません。
資料の内容には正確を期するよう注意しておりますが、この資料の内容は2016年07月現在の情報であり、製品の新しいリリース、修正などによって動作/仕様が変わる可能性があります。
当資料は、資料内で説明されている製品の仕様を保証するものではありません。従って、この情報の利⽤またはこれらの技法の実施はひとえに使⽤者の責任において為されるものであり、資料の内容によって受けたいかなる被害に関しても⼀切の補償をするものではありません。
また、IBM、IBMロゴおよびibm.comは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点でのIBMの商標リストについてはhttp://www.ibm.com/legal/copytrade.shtmlをご覧ください。
© 2016 IBM Corporation3
IBM Bluemixwww.bluemix.net
目次
1.10分でわかるBluemix!
2.さわってみようBluemix!!
3.つくってみようWatsonアプリ!!!
4.まとめ
© 2016 IBM Corporation5
IBM Bluemixwww.bluemix.net
ITシステムに関わるSEが抱える課題
顧客の声をもっと細かく拾いたい
異業界のトレンドに合わせてXXをキャンペーンで売り出したい
やっぱりYYはやめよう
企業から顧客へのアプローチが刻々と変化
自然言語処理, 仮説生成,ダイナミック学習
MQTTプロトコルでセンサー情報を収集/活用
技術要素が刻々と変化
提案したいが、技術妥当性が判断できない・・・実機で試してみないと・・・
とにかく時間がない・・・開発に集中できる基盤が欲しい!!
アイデアを元に試してみたいがミドルウェアの導入が面倒・・・
© 2016 IBM Corporation7
IBM Bluemixwww.bluemix.net
IBM Bluemix
アプリケーションを構築・管理・実行するための、オープン・スタンダードなテクノロジーを活⽤した、クラウド・ソリューション
Bluemixの主な特徴
1. オープン・スタンダードを採⽤したPaaS
2. 豊富な「API」と「サービス」の提供
3. DevOps推進のための開発ツールの提供
4. お客様に合わせた提供形態
© 2016 IBM Corporation8
IBM Bluemixwww.bluemix.net
1. オープン・スタンダードを採⽤したPaaS
Networking Networking Networking Networking
Storage Storage Storage Storage
Servers Servers Servers Servers
Virtualization Virtualization Virtualization Virtualization
O/S O/S O/S O/S
Middleware Middleware Middleware Middleware
Runtime Runtime Runtime Runtime
Data Data Data Data
Applications Applications Applications Applications
Traditional On-Premises
Infrastructureas a Service
Platformas a Service
Softwareas a Service
:利⽤者が⽤意
:サービスとして提供
Platform as a Service(PaaS)で提供することにより、開発者は基盤の⽤意の煩わしさから解放され、迅速に基盤が利⽤可能になる
© 2016 IBM Corporation9
IBM Bluemixwww.bluemix.net
オープンソースを活⽤したOpen PaaS基盤
Cloud Foundry等のオープンソース・ソフトウェアをベースとしてOpen PaaS (特定のIaaS/ベンダーに縛られないPaaS)基盤を提供
New
© 2016 IBM Corporation10
IBM Bluemixwww.bluemix.net
2. 豊富な「API」と「サービス」の提供
デファクト・スタンダードなオープンソース・ソフトウェアからIBM製品ベースのソリューションまで、100を超えるサービスから選択し、利⽤することが可能
ランタイム(言語)を選択
IBM提供
コミュニティー提供
アプリが必要とするサービス(=機能)を選択
11カテゴリーから選択・Wason・モバイル・DevOps・Webとアプリケーション・ネットワーク・統合・データおよび分析・セキュリティー・ストレージ・ビジネス・アナリティクス・モノのインターネット・API
© 2016 IBM Corporation11
IBM Bluemixwww.bluemix.net
Bluemixでの開発アプローチ
組み立て型(コンポーザブル)のアプローチを採⽤し、最小限の機能から開発
段階的に機能追加し、拡張していくスモール・スタートのアプローチが取りやすい
Internet of Things
モバイル
アプリ実行環境
データベース
コグニティブコンピューティング
必要に応じてサービスを追加・削除
アナリティクス
セキュリティー
© 2016 IBM Corporation12
IBM Bluemixwww.bluemix.net
Bluemixの基本⽤語
コンテナー
アプリ
ランタイムJava, Node.js, Ruby, PHP, Python, Go等アプリの開発言語に合わせた実行環境「コンテナー」単位で環境を提供
アプリケーション開発者が実際に開発し、アップロードするコード
サービスアプリケーションが必要とする機能を提供するいつでも好きなタイミングで作成・削除可能ランタイムとの組み合わせ可否に要注意
バインド
バインドランタイムからサービスに接続することランタイム上の環境変数(VCAP_SERVICES)
に接続情報が提供されるようになる
プッシュ
サービス作成
プッシュ作成したアプリケーションのランタイムを要求・生成する操作
アプリ開発者
© 2016 IBM Corporation13
IBM Bluemixwww.bluemix.net
提供中のサービス例) 自然言語処理&画像分析
Language Translation自然言語テキストについて翻訳対象の言語へ翻訳を行う
Relationship Extraction使⽤されている語彙の関連性を見つける
Personality Insights個人の発信した文章を解析して性格を診断する
Concept Insightsテキストからの概念の抽出を行う
Text to Speechテキスト文章を人間の音声に変換する
Speech to Text人間の音声をテキスト文章に変換する
Tradeoff Analytics複数の競合する選択肢の中から、選択を行う過程を支援する
Visual Recognition学習データに基づきイメージの分類を行う人間の顔の位置と性別・年齢判定、画像内の文字を読み取る
Natural Language Classifierテキスト文章の分類を行う(質問の意図推定など)
Dialogユーザーとの対話の制御を事前定義されたルールに基づき行い、対話の内容を記録して次のプロセスに継承
Tone Analyzerテキストの感情や社交性を解析する
Retrieve and Rank自然言語の質問に対して、回答の候補を返す
テキスト解析機能
洞察系
画像系
音声系
テキスト応答機能
Document Conversionテキスト文章を段落などの塊に分割する
BETA
日本語対応済みサービス
ベータ版サービスBETA
AlchemyAPI - AlchemyLanguageURLやテキストからポジネガ分析等を行う
(2016/05/20にAlchemyVisionと統合)
AlchemyAPI - AlchemyDataニュースやブログをキーワード等で検索する
※2016年7月現在
Conversationユーザーの発言の意図を理解し、それに応じた応答を返しながら対話を行う
非推奨
New
© 2016 IBM Corporation14
IBM Bluemixwww.bluemix.net
3. DevOps推進のための開発ツールの提供
SaaSの開発ツールであるIDS (IBM Bluemix DevOps Services)を合わせて提供
あるいはコマンドライン + お使いのIDE自由に開発を進められる
主な提供機能
アジャイルな計画立案と追跡(TRACK & PLAN)
Web IDE (Webブラウザー上でのソースコードの修正と管理)
Git, Jazz SCM, GitHubを使⽤したソースコード管理 (SCM)
Bluemixへの自動デプロイ (BUILD & DEPLOY)
EclipseやAtomなどで開発でも問題なし‼︎
© 2016 IBM Corporation15
IBM Bluemixwww.bluemix.net
アイデアを実現するための開発エディター: Node-RED
シンプルなWebアプリケーションからIoT関連のアプリケーションまで、
自由に開発可能なフロー・エディター
ブラウザー・ベースのUIを提供し、
ドラッグ&ドロップで直感的に作業ができる点がポイント!!
© 2016 IBM Corporation16
IBM Bluemixwww.bluemix.net
4. お客様に合わせた提供形態
3つの提供形態で、お客様の要件に応じた最適な環境を選択可能
パブリック・クラウド(SoftLayer)上 オンプレミス(お客様DC)
共有 専有 オンプレミスIBM Bluemix (Public) IBM Bluemix Dedicated IBM Bluemix Local
・マルチテナントの経済性を活⽤し、費⽤を抑えてアプリを開発したい
・思い立ったときにすぐに始められる迅速性を活かしたい
・いろいろなサービスを試してみたい
・規制遵守やコンプライアンス対応の観点から、SoftLayerの国内のDCでかつ占有環境を確保し、使⽤したい
・物理的に社内環境での運⽤を必要としている
・オンプレミス資産を有効活⽤したい
© 2016 IBM Corporation17
IBM Bluemixwww.bluemix.net
ハイブリッド連携も容易に実現可能
他クラウド, オンプレミスにある外部リソースとセキュアに連携し、容易に基盤をハイブリッド化するためのサービスが複数提供
例) Secure Gatewayサービス
- 他クラウド/オンプレミス上のリソースとの間の通信をセキュアに行うための連携サービス
他クラウド or オンプレミスBluemix
app
セキュア・トンネル 既存リソース
SGゲートウェイ SGクライアント
ランタイム
セキュアな通信を保証
関係ないアプリの通信の遮断も可
© 2016 IBM Corporation18
IBM Bluemixwww.bluemix.net
ここまでのまとめ
IBM Bluemixはアプリケーションを構築・管理・実行するための、
オープン・スタンダードなテクノロジーを活⽤した、クラウド・ソリューション
開発者のアイデアを形にし、「開発に専念できる環境」を提供します
Bluemixの主な特徴
1. オープン・スタンダードを採⽤したPaaS
2. 豊富な「API」と「サービス」の提供
3. DevOps推進のための開発ツールの提供
4. お客様に合わせた提供形態
© 2016 IBM Corporation19
IBM Bluemixwww.bluemix.net
もっと学びたい!
例えば、以下の資料などでBluemixの基本が学べます
[1] Bluemixハンズオンセミナー資料: 基本操作はこちらから https://ibm.biz/BMhandsontext
[2] IBM Bluemix の基礎: [1]と同じく基本操作/サンプルを説明 http://www.ibm.com/developerworks/jp/bluemix/fundamentals/
[3] 今からはじめるBluemix Webinarシリーズ: サービスの紹介など動画で公開 https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/Wdec01e50fbfa_493c_8a88_6d
d85c4d983f/page/今からはじめるBluemix Webinarシリーズ
[4] IoTをBluemixで使ってみる: IoT関連のブログ記事などの紹介 https://ibm.biz/bluemix-iot
[5] dashDB Learning Center: dashDBの利⽤方法を紹介
https://developer.ibm.com/clouddataservices/docs/dashdb/
Qiita Watson Qiita Bluemix
他にも以下のキーワードで検索すると様々な情報が見つかります
© 2016 IBM Corporation21
IBM Bluemixwww.bluemix.net
ハンズオンをはじめるにあたり
テキストを見れば大体わかるようになっています
できる人はどんどん進めていただいて構いません
ハンズオン・サポーターが控えています
わからない/できないところがあったら、手をあげてお近くのサポーターに知らせてください
© 2016 IBM Corporation22
IBM Bluemixwww.bluemix.net
Bluemixにログインする(1/3)
1
2
https://new-console.ng.bluemix.net/ にアクセスし、Bluemixトップページを開きます
画面右上の「ログイン」ボタンをクリックし、Bluemixのログイン・ページを開きます
© 2016 IBM Corporation23
IBM Bluemixwww.bluemix.net
Bluemixにログインする(2/3)
3
4
「Enter your IBM id」および「Password」欄にはBluemix
登録時に入力したEメール・アドレスとパスワードを入力します
「LOG IN」ボタンをクリックし、Bluemixにログインします
Eメール・アドレスを入力
パスワードを入力
© 2016 IBM Corporation24
IBM Bluemixwww.bluemix.net
Bluemixにログインする(3/3)
5 以下のようなWelcomeページが表示されることを確認します
© 2016 IBM Corporation25
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の構築 (1/6)
ようこそ画面で、「すべての項目」を選択1
【ハンズオン1】
ダッシュボード画面右上にある をクリック2
© 2016 IBM Corporation26
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の構築 (2/6)
表示されたカタログの中から、作成するアプリケーションの実行環境を選択
「計算」カテゴリから「CF アプリケーション」を選択
「CF アプリケーションの作成」画面の「ランタイム」にて「SDK for Node.js」を選択
3
【ハンズオン1】
© 2016 IBM Corporation27
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の構築 (3/6)
アプリ名とホスト名を指定して「作成」ボタンをクリック
アプリ名とホスト名はハンズオン2で使⽤するのでメモを⽤意
任意の名前/ホスト名を指定する重複しているとエラーになるため
ユニークな名称を指定してください
4
【ハンズオン1】
© 2016 IBM Corporation28
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の構築 (4/6)
30秒ほどでインスタンスの作成および起動が完了
アプリケーションの設定を確認するため、「概要」をクリック5
【ハンズオン1】
© 2016 IBM Corporation29
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の構築 (5/6)
アプリ名の右に表示される 「状況」ランプが緑色に変わり、「アプリは実行中です」のメッセージが表示されることを確認
「状況」ステータスが変わらない場合は、Webブラウザーのリロード(F5キー)を試行
6
【ハンズオン1】
© 2016 IBM Corporation30
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の構築 (6/6)
サンプルとして用意されたスターター・アプリケーションにアクセス
「アプリの表示」リンクをクリックすると、Node.jsで作成されたスターター・アプリケーションが動いていることの確認が可能
7
【ハンズオン1】
© 2016 IBM Corporation31
IBM Bluemixwww.bluemix.net
サービスの追加 (1/4)
アプリの「概要」画面左下にある「新規に接続」ボタンをクリック
アプリに追加するサービスのカタログを表示1
【ハンズオン1】
© 2016 IBM Corporation32
IBM Bluemixwww.bluemix.net
サービスの追加 (2/4)
表示されたカタログの中から、アプリと連携させたいサービスを選択
先ほど作成した Node.js の実行環境にCloudant NoSQL DBサービスを追加2
【ハンズオン1】
© 2016 IBM Corporation33
IBM Bluemixwww.bluemix.net
サービスの追加 (3/4)
サービスを追加するアプリケーションを指定し、「作成」ボタンをクリック
「接続」の項目で、先ほど作成したアプリ名が指定されているのを確認
サービス名はハンズオン2で使⽤するのでメモを⽤意
3
【ハンズオン1】
© 2016 IBM Corporation34
IBM Bluemixwww.bluemix.net
サービスの追加 (4/4)
アプリの再起動(再ステージ)の確認画面で「再ステージ」をクリック
約20秒ほどでサービスの追加が完了。アプリケーションの「概要」画面の「接続」欄に、追加したサービスが表示されることを確認
必要となるサービス毎に、この追加操作を適宜実施
4
5
【ハンズオン1】
© 2016 IBM Corporation35
IBM Bluemixwww.bluemix.net
アプリケーションの 「概要」 の画面には、実行環境が使⽤するリソース情報が表示されるここでは実際にリソースの変更を行う
インスタンス : 3、メモリー : 384MB と指定して「保存」をクリック再起動後、リソースが拡張されていることを確認
アプリケーション実行環境の操作 (1/5) ~リソースの動的追加
合計値が
1GBを超えないように
メモリー量を変更
【ハンズオン1】
© 2016 IBM Corporation36
IBM Bluemixwww.bluemix.net
「概要」の右隣にある「ランタイム」を選択
ページ上部で CPU やメモリーの使⽤率など、インスタンスの詳細情報が確認可能
先程インスタンスを増やしたので、リストには3行が表示される
今度はリソースの縮退を行う
インスタンス : 1、メモリー : 256MB と指定して「保存」をクリック
リソースは増やすだけでなく、減らすこともできることを確認してください
アプリケーション実行環境の操作 (2/5) ~リソースの動的追加
【ハンズオン1】
© 2016 IBM Corporation37
IBM Bluemixwww.bluemix.net
「メモリーおよびインスタンス」の右二つ隣にある「ファイル」を選択
実行環境のファイル・システム上にあるアプリケーション・ファイルやログ・ファイルを参照/ダウンロードすることが可能
アプリケーション実行環境の操作 (3/5) ~ファイルの参照
【ハンズオン1】
© 2016 IBM Corporation38
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の操作 (4/5) ~ログの参照
「ランタイム」の右二つ隣にある「ログ」を選択
実行環境の標準出力およびエラーが表示される
【ハンズオン1】
© 2016 IBM Corporation39
IBM Bluemixwww.bluemix.net
アプリケーション実行環境の操作 (5/5) ~環境変数の参照
上側のメニュー内の「ランタイム」を選択後、「環境変数」を選択
インスタンスに設定されている環境変数の情報を確認することが可能
連携に必要となる情報は、自動的に環境変数にセットされるので、アプリケーションはこれらの環境変数の値を取得して、サービスにアクセスするようにコーディングする
環境変数をユーザー個別に設定することも可能(例:デバッグ・モードでの起動)
Bluemix では、Web ブラウザーからアプリケーション実行環境の構築やサービスのバインド、様々な
運用管理作業ができることを確認いただきました。お疲れ様でした!
サービスにアクセスするための認証情報やURLなどがVCAP_SERVICESと呼ばれる変数で渡される
【ハンズオン1】
© 2016 IBM Corporation41
IBM Bluemixwww.bluemix.net
目次
1. 実習その1 NLCによる分類を体験する
2. 実習その2 画面を作成してオウム返しアプリを作る
3. 実習その3 NLCでクラスを返すアプリを作る
4. 実習その4 NLCの結果でセリフが変わるアプリを作る
5. まとめ
© 2016 IBM Corporation42
IBM Bluemixwww.bluemix.net
アプリケーション全体像
このハンズオンでは次のような動きをするアプリケーションを作成する
1. ユーザーがアプリに質問を入力
2. アプリがWatsonのNLCに質問の意図を問い合わせる
3. NLCは判定した意図をアプリに返す
4. アプリは意図に応じた応答メッセージを選択する
5. アプリは応答メッセージをユーザーに返す
アプリケーション
①質問入力
⑤応答出力
②意図の問い合わせ
③意図を返信
④意図に応じたメッセージをセット
ユーザーNLC
© 2016 IBM Corporation43
IBM Bluemixwww.bluemix.net
ハンズオンの流れ
Natural Language Classifier(NLC)による分類を体験する
NLCのサービスを追加する
NLC ToolkitでNLCをトレーニングする
NLC ToolkitでClassifierをテストする
NLCを利⽤するアプリケーション作成を体験する
Node-RED Starterを作成する
オウム返しするアプリケーションを作成する
NLCに問い合わせてクラスを返すアプリケーションを作成する
NLCに問い合わせた結果に応じて応答が変わるアプリケーションを作成する
© 2016 IBM Corporation45
IBM Bluemixwww.bluemix.net
Natural Language Classifier
概要自然言語を理解し、意味を抽出する予め定義されたクラスに分類する
ユースケース質問応答、Twitter/SMSの分類、感情分析、ダイアログによる分類
バリュー・プロポジション先進の分類器
関連サービス Dialog Speech to Text Text to Speech
© 2016 IBM Corporation46
IBM Bluemixwww.bluemix.net
NLCの利⽤ステップ
NLCを利⽤する場合、大きく分けて以下の3ステップがある
今回はデータは⽤意してあるものを利⽤し、Step 2とStep 3を体験する
Step 1
トレーニングデータの用意(CSV形式)
Step 2
Classifierインスタンスの作成と学習
Step 3
Classifierの利用と改善
© 2016 IBM Corporation47
IBM Bluemixwww.bluemix.net
トレーニング・データ
例文と分類すべきクラスのペアをCSV形式で保存
NLC_TrainingData_Diet.csvから⼀部抜粋
目安として1つのクラスにつき5個以上の例文を⽤意する
ファイルの文字コードはUTF-8である必要がある
メモ帳では「名前を付けて保存」時に文字コードを指定して保存する
例文 クラス
炭水化物抜きダイエットについて教えて。 糖質制限ダイエット
炭水化物を控えるダイエットを教えて。 糖質制限ダイエット
糖質制限や炭水化物抜きダイエットって何のこと? 糖質制限ダイエット
糖質制限ダイエットって何? 糖質制限ダイエット
低糖質ダイエットについて教えて。 糖質制限ダイエット
雑穀米ダイエットについて教えて。 雑穀米ダイエット
雑穀米ダイエットって何を食べればいいの? 雑穀米ダイエット
雑穀ダイエットのやり方を教えて。 雑穀米ダイエット
雑穀ダイエットって何? 雑穀米ダイエット
雑穀を食べて痩せたい。 雑穀米ダイエット
雑穀ダイエットって? 雑穀米ダイエット
食べたいものは食べてやせたいんだけど。 食事制限ダイエット
食事の制限しないでダイエットしたいんだけど 食事制限ダイエット
食事制限はしたくないのだけど。 食事制限ダイエット
食事制限は嫌だ。 食事制限ダイエット
ご飯の量は減らしたくないのですが。 食事制限ダイエット
: :
© 2016 IBM Corporation48
IBM Bluemixwww.bluemix.net
Bluemixにログインする
Bluemixのトップページにアクセス
https://new-console.ng.bluemix.net/
画面右上の「ログイン」をクリック
Bluemix登録時に使⽤したユーザーID、パスワードを入力し「LOG IN」をクリック
© 2016 IBM Corporation49
IBM Bluemixwww.bluemix.net
NLCのサービスを追加する(1/3)
初期画面(概要)で「すべての項目」タブをクリック
画面右上の をクリック
© 2016 IBM Corporation50
IBM Bluemixwww.bluemix.net
NLCのサービスを追加する(2/3)
画面左側のカテゴリー・リストから「Watson」をクリック
「Natural Language Classifier」をクリック
© 2016 IBM Corporation51
IBM Bluemixwww.bluemix.net
NLCのサービスを追加する(3/3)
サービス名に「watson-handson-nlc-xxxxxx」を入力する
xxxxxxは社員番号等任意の文字列とする
下までスクロールして「作成」をクリック
© 2016 IBM Corporation52
IBM Bluemixwww.bluemix.net
NLCの資格情報を確認する
「サービス資格情報」をクリックする
NLCのAPI呼び出し⽤のユーザーIDとパスワードを確認できる
あとで利⽤するので覚えておく
© 2016 IBM Corporation53
IBM Bluemixwww.bluemix.net
NLC Toolkitを起動する
「管理」タブをクリック
「Access the beta toolkit」をクリックする
© 2016 IBM Corporation54
IBM Bluemixwww.bluemix.net
NLC Toolkitにログインする
Bluemixへのログインが表示された場合はクリックしてログインする
確認許可が出た場合は内容を確認して「確認」をクリック
© 2016 IBM Corporation55
IBM Bluemixwww.bluemix.net
NLC Toolkitでトレーニングする(1/7)
NLC Toolkitの初期画面が表示される
© 2016 IBM Corporation56
IBM Bluemixwww.bluemix.net
NLC Toolkitでトレーニングする(2/7)
「Add training data」をクリック
© 2016 IBM Corporation58
IBM Bluemixwww.bluemix.net
NLC Toolkitでトレーニングする(4/7)
アップロードするトレーニング・データのファイルを選択する
NLC_TrainingData_Diet.csv を選択して「開く」をクリック
トレーニング・データはUTF-8で保存されている必要がある
© 2016 IBM Corporation59
IBM Bluemixwww.bluemix.net
NLC Toolkitでトレーニングする(5/7)
アップロードが完了する
「Create classifier」ボタンをクリック
© 2016 IBM Corporation60
IBM Bluemixwww.bluemix.net
NLC Toolkitでトレーニングする(6/7)
Classifierの属性を指定する
Name:Classifierの名前
ここでは「ダイエット」とする
Training data language:「Japanese」であることを確認
「Create」をクリック
© 2016 IBM Corporation61
IBM Bluemixwww.bluemix.net
NLC Toolkitでトレーニングする(7/7)
NLCのトレーニングが開始される
今回のケースではトレーニングは10分程度かかる
データ量およびサーバーの負荷状況によっては必要時間は変化する
トレーニングが完了すると右図のようになる
Classifier IDは後で使⽤するので覚えておく
© 2016 IBM Corporation62
IBM Bluemixwww.bluemix.net
NLC ToolkitでNLCをテストする(1/2)
テストしたいNLCの右下の矢印をクリック
試したい質問を入力して「Classify」をクリック
© 2016 IBM Corporation63
IBM Bluemixwww.bluemix.net
NLC ToolkitでNLCをテストする(2/2)
NLCの分類結果が表示される
「ダイエットの種類」クラスの確信度が「0.98」あるという意味
© 2016 IBM Corporation64
IBM Bluemixwww.bluemix.net
(参考)NLC Toolkitが使えない場合(1/4)
cURLを使⽤してNLCのトレーニングが可能 NLCのドキュメントにはcURLを使う方法が紹介されている
cURLとは cURLはURLシンタックスを⽤いてファイルを送信または受信するコマンドラインツールである
(Wikipediaより)
コマンド・プロンプト等からHTTPリクエスト(GET/POST等)を発行可能
REST APIのテストをするのに適している
当ハンズオンでのcURL利⽤環境の立ち上げ方 デスクトップの「ハンズオン⽤データ」フォルダーを開く
hansdon(またはhandson.bat)をダブルクリックする
コマンド・プロンプトが立ち上がってcURLが使えるようになる
ユーザーIDとパスワードが必要 ユーザーIDとパスワードの確認方法はNLCの資格情報のページを参照
© 2016 IBM Corporation65
IBM Bluemixwww.bluemix.net
(参考)NLC Toolkitが使えない場合(2/4)
Classifierの作成
指定するオプション
username、passwordはNLCの資格情報を参照
training_dataにトレーニング・データのファイル名を指定
training_metadataのnameにClassifier名を指定(※Windowsの場合は前後を「¥"」で囲む)
結果
Classifier IDが生成される
以降のリクエストで使⽤するので覚えておく
> curl -k -i -u "<username>":"<password>" -F training_data=@./NLC_TrainingData_Diet.csv -F training_metadata="{¥"language¥":¥"ja¥",¥"name¥":¥"Diet¥"}" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers"
{
"name": "Diet",
"language": "ja",
"status": "Training",
"url": "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>",
"classifier_id": "<your-classifier-id>",
"created": "2015-05-28T18:01:57.393Z",
"status_description": "The classifier instance is in its training phase, not yet ready to accept classify requests"
}
© 2016 IBM Corporation66
IBM Bluemixwww.bluemix.net
(参考)NLC Toolkitが使えない場合(3/4)
Classifierのステータス確認
指定するオプション
username、passwordはNLCの資格情報を参照
URLの最後にClassifier IDを指定する
結果
statusが「Available」になったらトレーニング完了
> curl -k -i -u "<username>":"<password>" -X GET "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>"
{
"name": "Diet",
"language": "ja",
"status": "Available",
"url": "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>",
"classifier_id": "<your-classifier-id>",
"created": "2015-05-28T18:01:57.393Z",
"status_description": "The classifier instance is in its training phase, not yet ready to accept classify requests"
}
© 2016 IBM Corporation67
IBM Bluemixwww.bluemix.net
(参考)NLC Toolkitが使えない場合(4/4)
Classifierのテスト
指定するオプション
username、passwordはNLCの資格情報を参照
URLの最後にClassifier IDを指定する
「text=質問文」をURLエンコードして渡す
結果
結果がJSON形式で返される
top_class:確信度が⼀番高いクラス
classes:確信度の順にクラスと確信度を並べたもの
> curl -k -G -u "<username>":"<password>" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>/classify" --data-urlencode "text=糖質制限ダイエットって?"
{
"classifier_id" : "<your-classifier-id>",
"url" : "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>",
"text" : "糖質制限ダイエットって?",
"top_class" : "糖質制限ダイエット",
"classes" : [ {
"class_name" : "糖質制限ダイエット",
"confidence" : 0.9795312414924932
}, {
"class_name" : "食事制限ダイエット",
"confidence" : 0.003724224889437014
(以下略)
コマンドプロンプトで実行した場合結果の日本語は文字化けしますが、
動作は正常です
© 2016 IBM Corporation69
IBM Bluemixwww.bluemix.net
Node-RED Starterを追加する(1/5)
初期画面(概要)で「すべての項目」タブをクリック
画面右上の をクリック
Node-RED Starterを探してクリック
© 2016 IBM Corporation70
IBM Bluemixwww.bluemix.net
Node-RED Starterを追加する(2/5)
アプリ名に「watson-handson-xxxxxx」を入力する
xxxxxxは社員番号等任意の文字列
ホスト名は自動で埋まる
ホスト名+ドメインがユニークになるように設定する必要あり
下までスクロールして「作成」をクリック
© 2016 IBM Corporation71
IBM Bluemixwww.bluemix.net
Node-RED Starterを追加する(3/5)
「ログ」をクリック
以下メッセージがログに表示されるのを待つ(約5分かかる)
上記メッセージが表示されたら、「アプリの表示」をクリックする
または「https://watson-handson-xxxxxx.mybluemix.net」にアクセス
© 2016 IBM Corporation72
IBM Bluemixwww.bluemix.net
Node-RED Starterを追加する(4/5)
「Go to your Node-RED flow editor」をクリックして、フロー・エディターを起動する
© 2016 IBM Corporation74
IBM Bluemixwww.bluemix.net
画面表示⽤フローの作成(1/2)
httpノードをエディター上にドラッグ&ドロップする
同様に、templateノード、http responseノードをドラッグ&ドロップする
© 2016 IBM Corporation75
IBM Bluemixwww.bluemix.net
画面表示⽤フローの作成(2/2)
ノード同士を線でつなぎ、フローをつくる
httpノードのout側をクリックしたまま、templateノードのin側まで移動し、ボタンを離す
同様に、templateノードのout側とhttp responseノードのin側をつなぐ
© 2016 IBM Corporation76
IBM Bluemixwww.bluemix.net
HTTPリクエストの受け口を作る
httpノードを編集してHTTPリクエストの受け口を作る
httpノードをダブルクリック
以下のように値を入力
URL:/sample
「Ok」をクリック
httpノードの表示が右のようになる
© 2016 IBM Corporation77
IBM Bluemixwww.bluemix.net
templateノードにHTMLを記述する
Webブラウザー表示のHTMLをtemplateノードに記述する
templateノードをダブルクリック
以下のように値を入力
Name:チャット画面
Template:ファイルからコピペ
もともとある1行のメッセージは削除する
「Node-RED_template.txt」をメモ帳などで開いてコピペする
章末のリンクからも入手可能
「Ok」をクリック
templateノードの表示が右のようになる
削除
© 2016 IBM Corporation78
IBM Bluemixwww.bluemix.net
デプロイ
ここまでの変更を保存・反映するため「デプロイ」する
右上の「Deploy」ボタンをクリック
正しくデプロイされると「Successfully deployed」が表示される
更新ありを示す表示が消える
ノードの右上の青丸が消える
「Deploy」ボタンがグレーアウトする
© 2016 IBM Corporation79
IBM Bluemixwww.bluemix.net
画面を表示してみる
以下のURLにアクセスし、ブラウザーで画面を表示してみる
https://watson-handson-xxxxxx.mybluemix.net/sample
xxxxxxは社員番号等任意の文字列
右のような画面が表示される
メッセージを入力して「送信」をクリックするとメッセージが表示されるが、まだ何も応答は返ってこない
© 2016 IBM Corporation80
IBM Bluemixwww.bluemix.net
応答⽤フローの作成
以下のノードをドラッグ&ドロップし、線でつなぐ
httpノード
changeノード
http responseノード
httpノードをダブルクリックして、以下の値をセットして「Ok」をクリック
Method:POST
URL:/sampleanswer
© 2016 IBM Corporation81
IBM Bluemixwww.bluemix.net
changeノードによる値のセット
オウム返しの設定をchangeノードに記述する
changeノードをダブルクリック
以下のように値を入力
Name:オウム返し
Rules
Set:msg.payload.response
to:msg.payload.input_text
「Ok」をクリック
toは▼をクリックしてmsgを選択する
© 2016 IBM Corporation82
IBM Bluemixwww.bluemix.net
デプロイ&テスト
「Deploy」ボタンをクリックしてデプロイする
ブラウザーで以下にURLにアクセスする
https://watson-handson-xxxxxx.mybluemix.net/sample
xxxxxxは社員番号等任意の文字列
右のような画面が表示される
メッセージを入力して「送信」をクリックするとメッセージが表示され、応答として同じメッセージが表示される
© 2016 IBM Corporation84
IBM Bluemixwww.bluemix.net
ノードの追加
changeノード、NLCノード、changeノードをドラッグ&ドロップする
既存の接続を削除する
接続部分を選択して、DELETEキーで削除可能
以下のようにつなぎなおす
© 2016 IBM Corporation85
IBM Bluemixwww.bluemix.net
値のセット
1つ目のchangeノードをダブルクリック
以下のように値を入力
Name:入力文章セット
Rules
Set:msg.payload
to:msg.payload.input_text
「Ok」をクリック
2つ目のchangeノードをダブルクリック
以下のように値を入力
Name:クラスセット
Rules
Set:msg.payload.response
to:msg.payload.top_class
「Ok」をクリック
msgを選択
msgを選択
© 2016 IBM Corporation86
IBM Bluemixwww.bluemix.net
NLCノードの設定
NLCノードをダブルクリック
以下のように値を入力
Name:ダイエットNLC
Username:NLCのユーザーID
Password:NLCのパスワード
Mode:Classifyのまま
Classifier ID:使⽤するClassifierのID
「Ok」をクリック
以下のようなフローができあがる
BluemixのNLCの「サービス資格情報」から確認可能
NLC Toolkitで確認可能
BluemixのNLCの「サービス資格情報」から確認可能
© 2016 IBM Corporation87
IBM Bluemixwww.bluemix.net
デプロイ&テスト
「Deploy」ボタンをクリックしてデプロイする
ブラウザーで以下にURLにアクセスする
https://watson-handson-xxxxxx.mybluemix.net/sample
xxxxxxは社員番号等任意の文字列
右のような画面が表示される
メッセージを入力して「送信」をクリックすると、入力文章がNLCによりクラス分類され、最も確信度の高いクラスを返す
© 2016 IBM Corporation89
IBM Bluemixwww.bluemix.net
NLCの結果と適切なセリフのマッピング(1/2)
NLCでは以下の5種類のクラスを返すようにトレーニングしている
糖質制限ダイエット
雑穀米ダイエット
食事制限ダイエット
運動ダイエット
ダイエットの種類 例文 クラス
炭水化物抜きダイエットについて教えて。 糖質制限ダイエット
炭水化物を控えるダイエットを教えて。 糖質制限ダイエット
糖質制限や炭水化物抜きダイエットって何のこと? 糖質制限ダイエット
糖質制限ダイエットって何? 糖質制限ダイエット
低糖質ダイエットについて教えて。 糖質制限ダイエット
雑穀米ダイエットについて教えて。 雑穀米ダイエット
雑穀米ダイエットって何を食べればいいの? 雑穀米ダイエット
雑穀ダイエットのやり方を教えて。 雑穀米ダイエット
雑穀ダイエットって何? 雑穀米ダイエット
雑穀を食べて痩せたい。 雑穀米ダイエット
雑穀ダイエットって? 雑穀米ダイエット
食べたいものは食べてやせたいんだけど。 食事制限ダイエット
食事の制限しないでダイエットしたいんだけど 食事制限ダイエット
食事制限はしたくないのだけど。 食事制限ダイエット
食事制限は嫌だ。 食事制限ダイエット
ご飯の量は減らしたくないのですが。 食事制限ダイエット
: :
◆トレーニング・データの抜粋
© 2016 IBM Corporation90
IBM Bluemixwww.bluemix.net
NLCの結果と適切なセリフのマッピング(2/2)
これらのクラスに応じて、以下のコメントを応答として返すようにする
「上記以外」は現在はありえないが、クラスが追加になったときを想定して設定しておく
クラス 応答コメント
糖質制限ダイエット糖質制限ダイエットのやり方はとっても簡単。普段の食事から、主食や糖分を抜くだけなんです。ご飯・パン・麺・イモ類などの炭水化物や糖質を避けて、おかずをメインで食べていくやり方ですね。
雑穀米ダイエット痩せたいけどご飯もお腹いっぱい食べたい。そんな方でもできるダイエット方法は雑穀米ダイエットです。白米を雑穀米に代えるだけでよく噛み、高い栄養を得られる、そんな美しく健康的にダイエットができるとブームになっています。
食事制限ダイエットダイエットの道は険しいのです。運動はダイエットに効果的ですが、消費カロリーそのものは微々たる物ですし、運動によって食欲が高まったりしますので、やはり食事制限は併⽤した方が良いでしょう。
運動ダイエット運動するなら、脂肪燃焼効果の高い有酸素運動と、基礎代謝をあげる筋トレを併⽤するのがおすすめです。有酸素運動はウォーキングやジョギングがいいですね。筋トレは下半身などの大きな筋肉から鍛えていくと効果的ですよ。
ダイエットの種類ダイエットにはいろいろありますが、糖質制限ダイエット、雑穀米ダイエット、食事制限、運動などが特にお勧めですよ。
上記以外 すみません、よくわかりませんでした。もう⼀度お願いします。
© 2016 IBM Corporation91
IBM Bluemixwww.bluemix.net
セリフ選択⽤フローの作成(1/2)
新しいフロー⽤にノードを追加する
switchノード、changeノード(6個)をドラッグ&ドロップする
© 2016 IBM Corporation92
IBM Bluemixwww.bluemix.net
セリフ選択⽤フローの作成(2/2)
NLCの選択クラスによる条件分岐を作成する switchノードをダブルクリック
以下のように値を入力
Name:条件分岐
Property:msg.payload.top_class
条件:「==」のまま
値:属性はString(a-z)で「糖質制限ダイエット」を入力
左下の「+rule」をクリックして入力欄を増やす
同様に、以下の値を繰り返し入力する
「Ok」をクリック
swithノードの出力が6つに分岐する
条件 値
== 雑穀米ダイエット
== 食事制限ダイエット
== 運動ダイエット
== ダイエットの種類
otherwise
© 2016 IBM Corporation93
IBM Bluemixwww.bluemix.net
クラスに応じたセリフのセット
各クラスのセリフをセットする
changeノードをダブルクリック
添付ファイル「応答メッセージ.txt」を参照して各ノードの値を入力する
Name:クラス名
Rules
Set:msg.payload.response
to:応答コメント
ハンズオン⽤ファイル「応答メッセージ.txt」からコピペできる
「Ok」をクリック
編集後、changeノードは右のようになる
Stringを選択(デフォルト)
© 2016 IBM Corporation94
IBM Bluemixwww.bluemix.net
セリフ選択⽤フローの作成
フローのつなぎ換え
NLCの出口からクラスセットの間、クラスセットからhttp responseノードの間の接続を削除する
以下のように接続する
© 2016 IBM Corporation95
IBM Bluemixwww.bluemix.net
デプロイ&テスト
「Deploy」ボタンをクリックしてデプロイする
ブラウザーで以下にURLにアクセスする
https://watson-handson-xxxxxx.mybluemix.net/sample
xxxxxxは社員番号等任意の文字列
右のような画面が表示される
メッセージを入力して「送信」をクリックすると、入力文章がNLCによりクラス分類され、クラスに応じたセリフを応答する
いろんな会話をテストしてみよう!
© 2016 IBM Corporation97
IBM Bluemixwww.bluemix.net
まとめ
このハンズオンでやったこと
NLCを⽤いた自然言語によるクラス分類の実現
NLCのトレーニングを実行した
NLCを⽤いて自然言語の文章のクラス分類を行った
Node-REDを使いWatsonサービスを呼び出すWebアプリの作成
IBM_Watsonカテゴリーのノードを使⽤してNLCを簡単に呼び出した
NLCを使った応答システムを作成した
応⽤編:アプリをさらに改良するなら
Confidence(確信度)の値に応じて応答メッセージを変える
Confidenceが高い=自信満々
Confidenceが低い=自信なさげ、聞き返す 等
NLC以外のWatsonサービスとの連携
Speech to Text、 Text to Speechと併⽤して、音声入力/音声応答の実現
Retrieve & Rankと併⽤して、さらに柔軟な応答システムの作成
Dialogと併⽤して、会話しながら自然に対象を絞込む
Watson Developer Cloudのリファレンスを見ながら試してみよう!
© 2016 IBM Corporation99
IBM Bluemixwww.bluemix.net
ハンズオン資料
本日のハンズオンのデータは以下のサイトからダウンロード可能です
NLCトレーニング⽤ CSVファイル
NLC_TrainingData_Diet.csv
https://gist.github.com/satohdai/6f3cf674a02e1d1ee550d0f23536c50e
(UTF-8で保存する必要があります)
Node-RED templateノード⽤ HTMLファイル
Node-RED_template.txt
https://gist.github.com/satohdai/8ca13bbb98b21aabc093b7bdd5ccbd14
changeノード⽤ 応答メッセージファイル
応答メッセージ.txt
https://gist.github.com/satohdai/17f551714da589d6c93fc0b6c9388f83