Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

QnA Makerを使ったFAQチャットボットの検証

374 views

Published on

Cogbot コミュニティの「Cogbot勉強会!#19 - QnA Maker & LT Night !」で話した内容の資料

Published in: Technology
  • Be the first to comment

QnA Makerを使ったFAQチャットボットの検証

  1. 1. 2019年1月22日 上林 知彦 QnA Makerを使ったFAQチャットボットを検証してみた ~検証結果とノウハウ共有~
  2. 2. 1自己紹介
  3. 3. 2話すこと https://qiita.com/tomohiku/items/c0ced418227136535e17
  4. 4. 3もくじ
  5. 5. 1.QnA Makerの概説
  6. 6. 51-1.利用シナリオ…どういう時に何を目的にして使うのか? •ヘルプデスク業務の工数削減 だいたいがコレ 顧客&従業員満足度の向上 顧客への広告
  7. 7. 61-2.基本機能概要…なにをしてくれて、なにをしてくれないのか? シンプルにいうと・・・ Microsoft アカウントとは何ですか? Microsoft アカウントはインターネット上で個人認 証を行う手段のひとつで・・・・・・・ こういう自由な文章で書いた質問に、 こういう適切な回答を返す機能です。 ■QnA Makerサイト 「自由な文章」なとこ ろがAI技術で可能に なったところ
  8. 8. 7 学習データを作る作業の一 部を自動化して作成効率 を上げた 学習データのメンテナンス工 数を下げた。 アプリ連携の開発工数を下 げた。 セキュリティなど要件に厳しい 企業でも本気使えるインフラ にもできる 他のAzureサービスと連携 し、拡張性を高めた 1-2.基本機能概要…なにをしてくれて、なにをしてくれないのか?
  9. 9. 8 • QnA Maker利用の流れ 1-2.基本機能概要…なにをしてくれて、なにをしてくれないのか?
  10. 10. 9 Cortana Skills 1-2.基本機能概要…なにをしてくれて、なにをしてくれないのか?
  11. 11. 10 ③類義語・同義語②異なる質問の言い回し①質問と回答のペア 1-3.
  12. 12. 11 学習と公開 •ナレッジベースを公開 ユーザの利用 •問合せをする 問合せの蓄積 •問合せを受けた質問の蓄積 回答結果のレビュー •正しい回答かレビュー •間違っていれば修正 •回答がナレッジベースになければ、回答を追加 定期的に実施 ③類義語・同義語 ※一般的な日本語 外部から取得②異なる質問の言い回し ①質問と回答のペア QnA Makerにて 蓄積 QnA Makerにて 自動化 QnA Makerが支援 ツールを提供 QnA Makerにて 取り込みの自動化 ③類義語・同義語 ※社内用語 1-3.
  13. 13. 2.精度検証の結果
  14. 14. 132-1. ※Qiita記事から抜粋 内容 件数 質問と答えペアの数 (分類するクラス数) 約1300件 言い回し質問を含む 全学習データ量 約5000件  検証で使った学習データ Cognitive Toolkit版およびQnA Maker版で同じデータ 8割で学習 2割でテスト ランダムな分割
  15. 15. 142-2. ※Qiita記事から抜粋
  16. 16. 15 ※Qiita記事から抜粋 2-2. 正確には、QnA Maker単体ではな く、Bot Serviceの初期テンプレート がイマイチなところ。 QnA Makerとしては複数回答は対 応してくれているのでカスタマイズして 対処する。
  17. 17. 16 ※Qiita記事から抜粋 2-2.
  18. 18. 3.QnA Makerを使った開発ノウハウ
  19. 19. 183-1. • 自然言語分類の仕組みを知る理由 • 学習データとはどうあるべきか、最適な形にするにはどういった整備をすればいいかを考えるため には、自然言語分類の仕組みを知る必要がある。 • QnA Makerを使えば仕組みを知らなくとも、なんとなく学習データを作れてしまいますが、精度 が出る良い学習データを作るには、必須の知識だと考えています。 ※この資料での説明より、さらにより深く仕組みを理解するには、Microsoft Cognitive Toolkit(CNTK)などで実装してみ ることが有効です。以下の投稿で利用&実装手順&サンプルコードを書いています。 https://qiita.com/tomohiku/items/63dff5751326a9f59dea
  20. 20. 193-1. 自然言語分類の仕組みを説明するためにCNTKモデルの学習データの作成手順を例として説 明します。 1. 質問文と回答番号のペアを作成する(言い回し一覧の作成) 質問文 回答番号 Office365ってどうやったら変えるの? 1 Office365を買う方法 1 Excelだけを買うことできますか? 2 Excelを単体で買うことは可能? 2 Office365のサブスクリプションIDってどこでわかる? 3 Office365のサブスクリプションIDを入力してくださいと出ます 3 O365のsubscription IDはどこに書いている? 3 O365のsubscription IDを教えてください 3 ・・・ ・回答番号1つ当たり言い回しを変えた15パターンの質問文を用意する。 (最低でも10パターンの質問文が必要。) ◆言い回し一覧の例 ※以下の例は言い回しが2つずつだが、15つずつ作る
  21. 21. 20 2. 文章を形態素分解し、分かち書きにする(単語単位に区切る) 話し言葉・流行語辞書を取り込み、分解精度を向上させる 「Office365」などの業界特化の専門的な固有名詞は、できるだけ単語として認識された方が良いが 「Office」「365」に分かれてしまっても、あまり精度に影響をあたえません。 理由は、分類器で利用するRNNアルゴリズムが単語の順序を意識して、パターンマッチングをしているためです。 質問文 分かち書き後 回答番号 Office365ってどうやったら買えるの? Office 365 って どう やっ た 買える の ? 1 Office365を買う方法 Office 365 を 買う 方法 1 Excelだけを買うことできますか? Excel だけ を 買う こと でき ます か ? 2 Excelを単体で買うことは可能? Excel を 単体 で 買う こと は 可能 ? 2 Office365のサブスクリプションIDってどこでわかる? Office 365 の サブスクリプション ID って どこ で わかる ? 3 Office365のサブスクリプションIDを入力してくださ いと出ます Office 365 の サブスクリプション ID を 入力 し て くださる と 出 ます 3 O365のsubscription IDはどこに書いている? O 365 の subscription ID は どこ に 書い て いる ? 3 O365のsubscription IDを教えてください O 365 の subscription ID を 教え て ください 3 ・・・ 3-1.
  22. 22. 21 3. 分かち書きにしたテキストに以下の加工を行う  同じ意味として認識してほしいのに、言葉の揺らぎにより別単語となってしまっている単語を置き換える ① 類義語・略語 を統一する 例:O365 → Office365 ② 同義語辞書(漢字送り仮名) を統一する 例:買い方、買いかた → 買い方 ③ 修飾詞・動詞などの活用形 を基本活用に統一する 例:できますか → できる ます か  分類するために、不要な単語を除去する ① ストップワード(除外ワード)辞書 に登録した単語を除去する 例:あのね、あー → (除去) 4.質問文の全ての単語の辞書を作る Word,Index office 365,1 excel,2 って,3 どう,4 やる,5 買える,6 買う,7 方法,8 word,9 ~ ~ o,25 subscription,26 書く,27 いる,28 教える,29 単語単位に番号を1から採番する。 単語の重複は無くす。 3-1.
  23. 23. 223-1. 5. CNTK用の学習データを作る 0 |# office |Word 1:1 |Label 1:1 0 |# 365 |Word 2:1 0 |# って |Word 3:1 0 |# どう |Word 4:1 0 |# やる |Word 5:1 0 |# 買える |Word 6:1 1 |# office |Word 1:1 |Label 1:1 1 |# 365 |Word 2:1 1 |# 買う |Word 7:1 1 |# 方法 |Word 8:1 2 |# excel |Word 9:1 |Label 2:1 2 |# だけ |Word 10:1 2 |# 買う |Word 7:1 2 |# こと |Word 11:1 2 |# できる |Word 12:1 2 |# ます |Word 13:1 2 |# か |Word 14:1 3 |# excel |Word 9:1 |Label 2:1 3 |# 単体 |Word 15:1 3 |# 買う |Word 7:1 3 |# こと |Word 11:1 3 |# 可能 |Word 16:1 Sparse形式のフォーマット。 左端の番号が文章単位の番号。 Wordが単語辞書での番号。 Labelがラベル番号(回答番号) 。 #の部分はコメント 質問 番号 コメン ト 単語 番号 回答番 号
  24. 24. 23 6. 学習させる直前の単語の扱い(実際の格納方法ではなくイメージ) • ※RNNアルゴリズムでは単語がでてきた順番も考慮される。 7. テストデータも学習データと同様に2~5の加工をして、学習済みデータモデルで予測す る 元の文章 回答番号 1桁目 (Office) 2桁目 (365) 3桁目 (って) 4桁目 (どう) 5桁目 (やる) 6桁目 (買える) 7桁目 (excel) 8桁目 (を) 9桁目 (買う) 10桁目 (こと) 11桁目 (だけ) 12桁目 (できる) 13桁目 (ます) 14桁目 (方法) 15桁目 (か) ・・・ Office365ってどうやったら 買えるの? 1 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 ・・・ Office365を買う方法 1 1 2 0 0 0 0 0 3 4 0 0 0 0 5 0 ・・・ Excelだけを買うことできま すか? 2 0 0 0 0 0 0 1 3 4 5 2 6 7 0 8 ・・・ ・・・ 3-1. 回答番号:1 数字:123456000000000・・・ 回答番号:1 数字:120000034000050・・・ 回答番号:2 数字:000000134526708・・・ … 自然言語の文章を数値に変換し、回答番号と のペアを作る。 これで自然言語が数字に代わり、機械が扱え るようになりました。
  25. 25. 243-2. • 学習データ作成とチューニングの全体像 ・言い回し質問一覧 FAQ 1つ当たり、 約15通りの問合せ 言い回し文 データの整備 ・整備済みデータ (言い回し質問一覧&回答) ・FAQ一覧 ・類義語・略語一覧(専門用語) 例:O365→Office365 ・類義語・略語 辞書(一般用語) ・同義語辞書 (漢字送り仮名) ユーザ側で準備 モデル作成チーム側で用意 【①データ整備】 以下の整備する 1. 誤りデータの排除・修正 2. 曖昧な問合せ文の修正 3. 学習データ不足の補完 学習 ・学習済みデータモデル 【②学習モデルのチューニング】 ※QnA Makerでは不要 正答率を上げるためのチューニングポイントは従来は、【①データ整備】と【② 学習モデルのチューニング】であった。しかし、QnA Makerだと②は不要になり、 ①に注力すれば良い。 ・類義語・同義語
  26. 26. 253-2. ※Qiita記事から抜粋
  27. 27. 263-2. ※Qiita記事から抜粋
  28. 28. 27 • 言い回し質問のイメージ(Excel) • FAQのイメージ(Excel) 3-2.
  29. 29. 28 • 言い回し質問を作る時のポイント 3-2. ※Qiita記事から抜粋
  30. 30. 293-2. ※Qiita記事から抜粋 言い回し質問に含まれる単語のみを対象とすること。 形態素分解して抽出する。
  31. 31. 303-2. ※Qiita記事から抜粋 QnA Maker大量問い合わせ投入 し、結果をまとめるツールをGithub に公開しているので、よければどうぞ。 ・ QAMakerRunner https://github.com/tomohik ue/QAMakerRunner
  32. 32. 313-2. 回答 ツールでエラーが出た時は、再起動してください。 「バージョンが古いです」というエラーになった場合は、再起動してソフトウェアをバージョンアップしてください。 例 例 別の回答に紐づくべき質問が混 じっている 2つの回答自体が曖昧で、そのため、質問も論理的に1対1にでき ない。
  33. 33. 32 Azure Azure AD オフィス Chat 利用ユーザ 学習メンテナンス ユーザ QnA Maker 専用Web サイト Internet App Service WebUI Microsoftのサイト https://www.qnamaker.ai/ App Service WebAPI (Bot Framework テンプレート) QnA Maker自動 出力ログ Azure Table Storage QnA Makerカスタ ムログ※1 ※1 QnA Makerが自動でApp Insightに出力するログは最小限で学習メンテナンス用には足りない。 そのため、Web APIでAzure Table Storageに出力している。 3-3
  34. 34. 333-3 Microsoft Teamsのタブに Webサイト表示で利用するUI イメージ
  35. 35. 34 https://github.com/tomohikue/QAMakerRunner https://github.com/tomohikue/AutoSuggestFaqUI https://github.com/tomohikue/ChatBotApp ※Qiita記事から抜粋
  36. 36. ご清聴ありがとうございました

×