20151204 bmxug watson_j_v1.1

34
Copyright © 2015 TIS Inc. All rights reserved. BMXUG第6回 ~Watson Speical Ver.~ 日本語Watsonで質問応答システムを つくってみた 2015年12月4日 TIS株式会社 戦略技術センター AI技術推進室 稲田 冬子

Upload: inadaf

Post on 08-Jan-2017

1.905 views

Category:

Software


0 download

TRANSCRIPT

Copyright © 2015 TIS Inc. All rights reserved.

BMXUG第6回 ~Watson Speical Ver.~

日本語Watsonで質問応答システムを つくってみた

2015年12月4日 TIS株式会社 戦略技術センター AI技術推進室 稲田 冬子

Copyright © 2015 TIS Inc. All rights reserved. 2

自己紹介

稲田冬子(いなだふゆこ) TIS株式会社 戦略技術センター AI技術推進室 ■現担当: Bluemix Watsonサービスの調査 ■気になるBluemix Watsonサービス: Concept Expansion、Relationship Extraction (いずれもベータ)が今後どういう方向に進むか

Copyright © 2015 TIS Inc. All rights reserved. 3

日本語Watsonで質問応答システムを作ってみた

(1) Bluemix Watson+日本語=? (2) このサービスは日本語で使えるか? (3) 日本語の質問応答デモを作る (4) まとめ

本日お話しする内容

Copyright © 2015 TIS Inc. All rights reserved. 4

日本語Watsonで質問応答システムを作ってみた

(1) Bluemix Watson+日本語=? (2) このサービスは日本語で使えるか? (3) 日本語の質問応答デモを作る (4) まとめ

Copyright © 2015 TIS Inc. All rights reserved. 5

Bluemix Watsonサービス+日本語=?

■BluemixカタログのWatsonサービスは全16種類(ベータ含む)と、 数はかなり充実 ■しかし、今年前半に予告された日本語の正式対応はまだ(待ち遠しい!) →英語版のデモだけでは、使い方がもうひとつピンとこない… →部分的にでも日本語データで使えないか?

Copyright © 2015 TIS Inc. All rights reserved. 6

質問応答の基本部品となるサービス群

サービス名称 アイコン 正式対応 言語

機能・用途

①Dialog

英語のみ (※1)

システムに対話型インタフェースを実装するサービス。自動応答や操作手順の説明など、ユーザとの対話フローが必要な場面で利用できる。

②Natural Language Classifier (NLC)

英語、ポルトガル語、スペイン語 (※2)

文章をクラスに振り分ける分類器。文章⇔クラスの組み合わせを与えると機械学習により法則を習得する。話題の絞込みや対応の分岐に利用できる。

③Retrieve and Rank (R&R)

多言語に対応 (※3)

検索に対して、関連性の高い情報を抽出して返す。機械学習でデータの「サイン」を検出することで、全文検索よりも的確なランク付けが行える。

(※1)http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/dialog/reference_nodes.shtml ダイアログXMLの<setting name=“LANGUAGE”>は英語(EN)のみという記載がある。 (※2)http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/nl-classifier/#tech (※3)https://developer.ibm.com/answers/questions/234325/supported-languages-retrieve-and-rank-only-english/

Copyright © 2015 TIS Inc. All rights reserved. 7

質問応答の基本部品となるサービス群

サービス名称 アイコン 正式対応 言語

機能・用途

④Speech to Text

英語 (米国)、スペイン語

(※4)

人間が話した言葉を音声から文字に変換する。キーボードを使わずに声でシステムを制御したり、通話内容をテキストで記録するといった場面で利用できる。

⑤Text to Speech

英語(米国)、英語(英国)、フランス語、 ドイツ語、イタリア語、スペイン語(カスティリャ語)、スペイン語(北米)(※5)

テキストで書かれた言葉を音声合成して出力する、いわゆる読み上げ機能。

(※4)https://console.ng.bluemix.net/catalog/services/speech-to-text/ ブラウザを日本語設定にして見た場合。英語に切り替えると中国語、ポルトガル語(ブラジル)も表示される (※5)https://console.ng.bluemix.net/catalog/services/text-to-speech/

ドキュメント上は「日本語が使える」という情報はほとんど無いが、体当たりで実験してみた

Copyright © 2015 TIS Inc. All rights reserved. 8

日本語Watsonで質問応答システムを作ってみた

(1) Bluemix Watson+日本語=? (2) このサービスは日本語で使えるか? (3) 日本語の質問応答デモを作る (4) まとめ

Copyright © 2015 TIS Inc. All rights reserved. 9

①Dialog-概要

サービス名称 アイコン 正式対応 言語

機能・用途

Dialog

英語のみ

システムに対話型インタフェースを実装するサービス。自動応答や操作手順の説明など、ユーザとの対話フローが必要な場面で利用できる。

■利用方法 ①対話フローを定義したXMLファイルを作成して、APIで登録 ②conversation APIにユーザが入力したテキストを渡すと、XMLの定義に従った応答が返ってくる→この繰り返しで対話が進む

■ドキュメント

http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/dialog/

■デモ(ピザ注文デモ)

http://dialog-demo.mybluemix.net/

Copyright © 2015 TIS Inc. All rights reserved. 10

①Dialog-仕組み

■ダイアログXML • 「ああ言われたら(input)、こう言う(ouput)」定義の集合体

• goto文、検索スコープ制御、セッション変数などの仕組みと組み合わせて、自分が欲しい対話フローを実現する

• 「ああ言われたら」の部分にはマッチングさせたい文字列パターンを直接記述

<input> <grammar> <item>$ (Toppings)</item> <item>$ topping</item> <item>$ toppings</item> </grammar> <output> <prompt selectionType="RANDOM"> <item>We have cheese, pepperoni, olives, mushrooms, etc.</item> </prompt> </output> </input>

<例>(ピザ注文デモのXMLから抜粋)

Copyright © 2015 TIS Inc. All rights reserved. 11

①Dialog-仕組み

■ダイアログXML • 「ああ言われたら(input)、こう言う(ouput)」定義の集合体

• goto文、検索スコープ制御、セッション変数などの仕組みと組み合わせて、自分が欲しい対話フローを実現する

• 「ああ言われたら」の部分にはマッチングさせたい文字列パターンを直接記述

<input> <grammar> <item>$ (Toppings)</item> <item>$ topping</item> <item>$ toppings</item> </grammar> <output> <prompt selectionType="RANDOM"> <item>We have cheese, pepperoni, olives, mushrooms, etc.</item> </prompt> </output> </input>

<例>(ピザ注文デモのXMLから抜粋)

入力された文字列に “topping(s)”という 単語が含まれていたら・・ ($は部分一致の記号)

→UTF-8の文字列をマッチングしているだけなら、そのまま 日本語でも使えるのでは?(勝手な想像)

この文字列を返す

Copyright © 2015 TIS Inc. All rights reserved. 12

①Dialog-日本語で使えるか?

■実験内容 • <input><output>などに日本語を入れたダイアログXMLを作成 • ダイアログのXMLのsettingsパートでLANGUAGE=“JA”を指定

■結果

• 日本語の入出力は問題なくできるが、文字列マッチングが一部NG。 • Dialogの文字列マッチングは単純な文字列一致ではなく「word」単位。→Dialogは日本語のword境界を判定できないため、期待通りに動かない

• ただし、日本語の句読点や文字種の境目はword境界とみなされる模様 例)パターン「$行きたい」を指定(「行きたい」を含む文との一致を期待)

→「行きたいです」「行きたいね」「行きたいと思う」などを入力してもヒットしない。 →以下のように入力すればヒットする。

「行きたい△です」(△は半角スペース) 「行きたいデス」

→対話のキーになる文字列マッチングが一部NGなので、想定外の動きをすることがある(分かち書きツールで事前加工するなどの手当がおそらく必要)

BMXUGで説明に使った「$おはよう」のパターンを再検証したところマッチングできたため、例文を差し替えました。

Copyright © 2015 TIS Inc. All rights reserved. 13

②NLC-概要

■利用方法 ①文章とクラスの組み合わせを定義したCSVファイルを作成して、APIで登録 →NLCが機械学習によって分類の基準を習得 ②NLCに新たな文章を渡すと、習得済みの基準に従ってクラス分類が行われ、 クラス名と確度が返される ■ドキュメント http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/nl-classifier/

■デモ(気温・天候に関する文章の分類) http://natural-language-classifier-demo.mybluemix.net/

サービス名称 アイコン 正式対応 言語

機能・用途

Natural Language Classifier (NLC)

英語、ポルトガル語、スペイン語

文章をクラスに振り分ける分類器。文章⇔クラスの組み合わせを与えると機械学習により法則を習得する。話題の絞込みや対応の分岐に利用できる

Copyright © 2015 TIS Inc. All rights reserved. 14

<学習データ例> (NLCデモのサンプルデータから抜粋)

②NLC-仕組み

text class

How hot is it today? temperature

What is the expected high for today? temperature

Will it rain? condition

Will it be cloudy? condition

気温

天候

text class confidence

Is it windy outside? condition 99.1%

一般的な語の関係はNLCがあらかじめ習得済みなので、 学習データにない語が含まれていても分類できる

■分類器(classifier)の作成 • 学習用データ(文章+クラスの組み合わせ)をCSV形式で登録。

→与えたデータから分類方法を学習した、新しい分類器が作られる。

■分類器の利用 • 分類器に新しい文章を与えると、先に学習した基準で分類が行われる

Copyright © 2015 TIS Inc. All rights reserved. 15

■実験内容 • 英語版デモとほぼ同じ内容の学習データを日本語で作成 • 学習用データの登録時に、メタデータのlanguageに“ja”を指定

■結果

• 新しい文章を与えると、日本語でもかなり高い確信度で分類が行われた

<学習データ例> (抜粋)

②NLC-日本語で使えるか?

text class

外は暑いですか? 気温

今日の最低気温は何度ですか? 気温

雪は降りそうですか? 天候

雨はいつごろ止みそうですか? 天候

text class confidence

今日はぬくい。 気温 89.9%

今日はしばれる。 気温 80.5%

台風が来そうだ。 天候 92.3%

学習データにない語 (上の2つは、ややムチャ振り)

→上記の結果からは、NLCは日本語に関しても各種コーパスの 情報を取りこみ済みで「使える」状態に見える

確信度の高さから、NLCはその語を「知って」

いると推測

Copyright © 2015 TIS Inc. All rights reserved. 16

③R&R-概要

■利用方法 ①Apache Solrのコンフィギュレーションを行う ②検索対象文書を登録する→Retrieve API(Solr全文検索)が利用可能になる ③{質問、回答、関連度}の組み合わせ情報をrankerに与えて学習させる →Rank API(Watson独自の検索)が利用可能になる ■ドキュメント http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/retrieve-rank/

■デモ(航空力学の文章に関するRetrieveとRankの結果比較) http://retrieve-and-rank-demo.mybluemix.net/rnr-demo/dist/

サービス名称 アイコン 正式対応 言語

機能・用途

Retrieve and Rank (R&R)

多言語に対応

検索に対して、関連性の高い情報を抽出して返す。機械学習でデータの「サイン」を検出することで、全文検索よりも的確なランク付けが行える。

Copyright © 2015 TIS Inc. All rights reserved. 17

通常の 全文検索による

検索結果

③R&R-仕組み

■概念図 • R&R=Retrieve(Solr)とRank(Watson独自)の複合検索機能 • 図の上半分はApache Solrそのもの。

R&Rサービス

Solr用設定ファイル ※Ranker連携用の

定義を含む

Solr ・形態素解析

・インデクス生成 ・検索

Ranker(Solrプラグイン) ・検索結果のランク付け (機械学習に基づく)

学習用データ (ground truth)

設定

トレーニング

Solrの 管理API

Ranker 管理API

Retrieve

機械学習による 検索結果

(結果の並び順が Retrieveと異なる)

Rank

利用者向け API

検索対象 文書群

(select)

(fcselect)

Copyright © 2015 TIS Inc. All rights reserved. 18

文書番号 関連度 文書番号 関連度 文書番号 関連度

図書館は誰でも使えますか? 1 3 2 1

私はアメリカ人ですが、本を借りられますか? 1 3 2 2

隣の市から通学していますが、本は借りられます

か?1 3 2 2

5歳の子供がいますが、ひとりでも本を借りられま

すか?2 2 15 1

小さい子を連れていても利用できますか。 2 3 45 3 15 3

最近引っ越してきたので、図書館の利用方法を

教えてください。1 2 2 3 5 1

利用カードをなくしました。 3 2 41 3 40 2

質問文回答になる文書の文書番号と、関連度(ここでは3段階)

③R&R-仕組み

■Rankerのトレーニング • 代表的な質問を抽出して{質問文、回答となる文書のID、関連度}の組み合わせを学習させる

• 組み合わせと関連度は、人間が判断してデータ化する • 学習したRankerは単純な全文検索よりも人間に近い判断をする(はず)

<学習用データ(ground truth)の形式>

<検索対象文書>

文書ID 本文1 XXX図書館のご案内

この図書館は、市内在住または在勤の方ならどなたでも無料でご利用になれます。資料を借りる場合は、図書館利用カードが必要です。 ・・・・・

2 利用カードは、XXX図書館の受付カウンターで作成できます。利用登録申込書に記入し、ご本人が住所を確認できる身分証明書を持ってカウンターへお越しください。小学生未満のお子さんは、親御さんの同伴をお願いします。

「住所を確認できる身分証明書」の例・健康保険証運転免許証  ・学生証  ・パスポート  ・住基カード ・・・・

3 利用カードはXXX図書館の全館と、提携している△△図書館でもご利用になれます。住所や電話番号等が変更になった場合は、変更手続きをしてください。電話番号、メールアドレスの変更は、ホームページの利用者メニューからご自身で行うことができます。住所の変更は、上記の住所を確認できる身分証明書をお持ちになって、最寄りの図書館カウンターで手続きをしてください。カードを紛失した時は、なるべく早く図書館にご連絡ください。有効期限は1年間です。期限が切れた場合、次回貸出時に登録内容変更の有無を確認させていただきます。・・・・

例えば「図書館は誰でも使えますか?」という質問に対しては文書1は非常に関連度が強い、文書2は多少関連がある、いった判断をしながらトレーニングデー

タを作成していく

Copyright © 2015 TIS Inc. All rights reserved. 19

③R&R-日本語で使えるか?

■前提 • RetrieveはSolr(多言語対応)を日本語用に設定すれば問題なく動く

■実験内容

• Rankerに日本語の学習用データ(ground truth)を与えてトレーニング • RetrieveとRankに同じ質問を与えて検索結果を比較

■結果

• RankがRetrieveとは違うソート順で検索結果を返すことは確認できた • 「日本語で、RankがRetrieveよりも良い結果を返すか」は判断つかず

• 実験データの件数・文章量が少なかったことも一因 • 本来はRankの効果を確認したい→使用データと評価方法が今後の課題

■参考情報 • DeveloperWorksのQ&A回答によると、「R&Rは英語以外の言語でも使えるが、

Rankの結果の品質は言語によって違う」らしい https://developer.ibm.com/answers/questions/234325/supported-languages-retrieve-and-rank-only-english/

→Retrieve、Rankとも「システム的には」日本語で正しく動く。

Rankが返す結果の妥当性評価方法は今後の課題。

Copyright © 2015 TIS Inc. All rights reserved. 20

④Speech to Text-概要

■利用方法 ①音声認識用のセッションを生成 ②recognize APIに音声データを渡すと、音声認識結果のテキストが確度とともに返される ■ドキュメント http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/speech-to-text/

■デモ https://speech-to-text-demo.mybluemix.net/

サービス名称 アイコン 正式対応 言語

機能・用途

Speech to Text

英語 (米国)、スペイン語

人間が話した言葉を音声から文字に変換する。キーボードを使わずに声でシステムを制御したり、通話内容をテキストで記録するといった場面で利用できる。

Copyright © 2015 TIS Inc. All rights reserved. 21

④Speech to Text-日本語で使えるか?

■実験内容→記述省略

【祝】12/2に、デモ画面に日本語の選択肢が登場!

ドキュメントにはない「Japanese」が APIでmodel一覧を取得すると存在する (使える)ことを書く予定だったが、 省略・・

Copyright © 2015 TIS Inc. All rights reserved. 22

⑤Text to Speech-概要

■利用方法 ①synthesize APIにテキストを渡すと、合成結果の音声ファイルが返される。 ■ドキュメント http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/text-to-speech/

■デモ https://text-to-speech-demo.mybluemix.net/

サービス名称 アイコン 正式対応 言語

機能・用途

Text to Speech

英語(米国)、英語(英国)、フランス語、 ドイツ語、イタリア語、スペイン語(カスティリャ語)、スペイン語(北米)

テキストで書かれた言葉を音声合成して出力する、いわゆる読み上げ機能。

Copyright © 2015 TIS Inc. All rights reserved. 23

⑤Text to Speech-日本語で使えるか?

■実験内容→記述省略

【祝】12/2に、デモ画面に日本語の選択肢が復活! (以前はあったが10月中旬に一度削除された…)

こちらも、API上は実は日本語が使える ことを書く予定だったが、省略・・

Copyright © 2015 TIS Inc. All rights reserved. 24

ここまでのまとめ

■日本語対応状況(私見) ・Bluemix Watsonで、質問応答システムの基本部品になるサービスの 日本語対応状況を確認したところ、結果は以下のとおり

No. サービス 日本語利用可? 備考

1 Dialog

△ 日本語の文字列マッチングが一部機能しないので、あまりシビアな用途には使えない

2 NLC

○ 日本語で使える

3 R&R ○? 日本語で使えるが、Rankの本来の効果が出ているかは不明

4 Speech to Text

○ 日本語で使える

5 Text to Speech

○ 日本語で使える(女性の声のみ)

いくつか制約はあるものの、日本語データを入れて動かすことはできそう →実際に、日本語を使って簡単なデモを作ってみる

Copyright © 2015 TIS Inc. All rights reserved. 25

日本語Watsonで質問応答システムを作ってみた

(1) Bluemix Watson+日本語=? (2) このサービスは日本語で使えるか? (3) 日本語の質問応答デモを作る (4) まとめ

Copyright © 2015 TIS Inc. All rights reserved. 26

質問応答デモ:概要

■テーマ • 日本語を使った対話型の観光案内(都内某区)

■利用したWatson サービス • Dialog・・・ユーザーとの対話(制約付きのまま使用) • NLC・・・おすすめ観光コースの選択 • R&R・・・おすすめ観光スポットの検索 • Text to Speech・・・Watsonの回答を音声で出力 • Speech to Text・・・(今回は間に合わず)

■雛形&参考にしたソース

• 各サービスのデモプログラム(非常に充実!) • WatsonのNode.js SDK(APIラッパー)

https://github.com/watson-developer-cloud/node-sdk

Copyright © 2015 TIS Inc. All rights reserved. 27

質問応答デモ:対話フロー

■対話フロー

受付メッセージ

観光コース紹介

どれかに 興味あり?

該当コースの パンフレットを

提示

興味のある分野を 聞き出す

おすすめコースを 選んで提示

関連スポットを 検索して提示

NLC

R&R

Dialog

YES NO

Copyright © 2015 TIS Inc. All rights reserved. 28

質問応答デモ:画面構成

Dialog

Text to Speech

NLC

R&R

#ほとんどPizza注文デモ画面のままですが・・・

Copyright © 2015 TIS Inc. All rights reserved. 29

質問応答デモ

~DEMO~

Copyright © 2015 TIS Inc. All rights reserved. 30

質問応答デモ:実装のポイント①

■課題:DialogとNLCやR&Rをどうやって統合するか? ■デモでの対応方法

• こんなことはできないので…

• Dialogの応答文を利用してフローに割り込む

アプリ

Dialog

NLC

R&R

アプリ

Dialog

Conversation API

NLC

R&R

Conversation API

Dialogの応答をチェックし、所定のキーワードが来たら

コールバック内でNLCやR&Rを呼び出す

Dialogが返す応答にあらかじめシステム制御用のキーワードを埋め込む

<item>画面右側にパンフレットのリンクが表示されましたか?{NlcEndCue}</item>

Dialog用XML

Copyright © 2015 TIS Inc. All rights reserved. 31

質問応答デモ:実装のポイント②

■課題:NLCやR&Rに渡す質問用テキストをどうやって用意するか? • デモの設定上、「ユーザが興味を持ちそうな」コースやスポットをおすすめしたい • しかし、ユーザに「興味があることをフリー入力してください」というのは無理

■デモでの対応方法

• 観光スポットに関係するキーワードを埋め込んだ文章を用意して、「興味があるか」をユーザに1つずつ聞いていく

• ユーザが肯定的な返事をした文章だけをマージして、NLCやR&Rに対する質問文にする

文学好きの方には、作家の旧居や作品に出てくる建築物が…

江戸時代初期から幕末にかけての史跡もいろいろ…

洋館や庭園など、緑が多くてゆったり巡れる場所…

はい 行って

みたいです

あまり 興味が… 割と

好きです

これらをマージした文章をNLC/R&Rに渡して、コース・施設とマッチング

Copyright © 2015 TIS Inc. All rights reserved. 32

日本語Watsonで質問応答システムを作ってみた

(1) Bluemix Watson+日本語=? (2) このサービスは日本語で使えるか? (3) 日本語の質問応答デモを作る (4) まとめ

Copyright © 2015 TIS Inc. All rights reserved. 33

まとめ

■Bluemix Watson+日本語=「かなり使える」 • 今回調べたサービスは、若干の制約はあるが日本語でも動く • 「使い方を覚えたい」「使い道を検討したい」といった目的なら、試す価値は十分ある

■アプリ開発は思ったより手をつけやすい

• 資料はすべて英語だが、サンプルが充実しているので現物で確認できる

■あとは日本語正式対応を待つだけ! • 日本語ハッカソン開催、Speech/Textデモの日本語公開と続いて、すでに秒読み?(だと期待!)