

【QnA Maker②】AIサービスを利用して簡単にFAQ Botを作成
こんにちは。ソリューション開発部 情報発信分科会の飯出(いいで)です。
前回の記事に引き続き、既存のコンテンツから簡単に FAQ サービスを作成できると定評の AI サービス「QnA Maker」を使って、チャットからの問い合わせに答えてくれるサービスを作ってみたいと思います。
QnA Maker を使った FAQ データベースの作成方法については、前回の記事をご覧ください。
QnA Maker はどのような回答を返すか
今回は、QnA Maker で作成した FAQ データベースに対して色々な質問を投げ、どのような回答が返ってくるか検証してみましょう。
作成済みの FAQ データベースを選ぶ
まず、QnA Maker のコンソール画面を開きましょう。URL を忘れた?こちらです。
[My knowledge bases] をクリックして、サービスの一覧画面を開きます。
![[My knowledge bases] をクリックして、サービスの一覧画面を開きます。](https://devlog.arksystems.co.jp/wp-content/uploads/2018/07/QnAMaker_10-1200x686.jpg)
![[My knowledge bases] をクリックして、サービスの一覧画面を開きます。](https://devlog.arksystems.co.jp/wp-content/uploads/2018/07/QnAMaker_10-1200x686.jpg)
サービスの一覧画面にて、前回の記事で作成した FAQ データベース「TrialFAQ」をクリックして開きます。


前回作成した FAQ データベースの中身を見ることができました。


テストしてみましょう!
質問とその回答をチェックするだけであれば、QnA Maker のみで完結します。画面右上の [← Test] をクリックすると、テスト用のチャット画面を表示することができます。
![画面右上の [← Test] をクリックすると、テスト用のチャット画面を表示することができます。](https://devlog.arksystems.co.jp/wp-content/uploads/2018/07/QnAMaker_12-1200x686.jpg)
![画面右上の [← Test] をクリックすると、テスト用のチャット画面を表示することができます。](https://devlog.arksystems.co.jp/wp-content/uploads/2018/07/QnAMaker_12-1200x686.jpg)
もう一度クリックすれば、チャット画面を閉じることができます。チャット画面を開いた後は、[→ Test]に変わってますね。なお、[Start over] で、画面をクリアして最初から会話を始めることができます。


FAQ の質問と同じ文章を入力する
まずは手始めに、FAQ に記載されている質問と同じ文章を入力してみます。「事業内容を教えてください。」と質問です。


回答のスタイル崩れが若干気になりますが、概ね良好ですね。
質問の表現を変えてみる
ここからが AI サービスの本領発揮。QnA Maker は Cognitive Services の自然言語解釈系 API「LUIS(Language Understanding Intelligent Service)」に近い機能を持っています。文章の中からキーワードを抽出し、キーワードが多くマッチする質問例から回答を引き出してきます。LUIS について、ここでは割愛します。いつか試す日が来れば。
表現を少し変えて、「事業内容は?」と質問してみます。


結果良好!きちんと返答してますね。
回答が存在しない質問を入力する
作成した FAQ データベースに回答が存在しない質問を入力してみます。「BRoomHubs とは?」と入力してみました。
※ BRoomHubs とは、当社が提供するクラウド型の会議室予約・来訪管理システムです。


「No good match found in KB.」と回答してきました。そのとおりですね。利用者の使い勝手を考えると日本語で回答したいところですが、とりあえず良いでしょう。
質問に対して適切な回答を返せなかったケース
ここまで紹介してきた質問以外にも、さまざまな質問をしてみましが、質問に対して適切な回答を返せなかったケースを紹介します。チャット画面で、「職種について教えてください。」と質問してみます。


期待していた回答は、「募集要項に記載している職種を募集しております。」だったのですが、この回答は、質問「社内イベントについて教えてください。」に記載されている回答ですね。
この質問に対する QnA Maker の回答を少し覗いてみましょう。
チャット画面で入力した質問の直下に、[Inspect] というリンクがありますので、クリックしてみて下さい。チャット画面が横に広がり、複数の回答がスコア(Confidence score)と共に表示されています。


回答の内容を見る限り、QnA Maker は
- 社内イベントについて教えてください
- 福利厚生について教えてください
- 年次有給休暇について教えてください
という質問のいずれかであろうと認識し、回答の候補としてピックアップしたようです。「~について教えてください。」を重視した回答となっていますね。
ただ、「職種」というキーワードに対しての回答が全くできていません。このようなケースに対しては、回答を自作する必要があります。
QnA Maker で回答を自作する
QnA Maker では、質問に対する回答を自作することもできます。上記の「職種について教えてください。」という質問を例に、適切な回答を準備してみます。
この場合における適切な回答は、「募集要項に記載している職種を募集しております。」です。回答の文字列には、サイトの遷移先となるリンクも含まれています。
そこで、以下のような文字列を準備して、QnA Maker に回答を登録してみます。
<a href="https://saiyo.arksystems.co.jp/recruit/career.html">募集要項</a>に記載している職種を募集しております。
特に説明の必要は無いかと思いますが、「募集要項」に遷移先の URL を追加するために、アンカータグを設置しただけのシンプルな文字列です。
この作成した文字列を、[Enter a new answer here] と記載されているテキストボックスに登録します。


さぁ、もう一度質問してみましょう。チャット画面に再度、「職種について教えてください。」と質問してみます。


今度はきちんとした回答をすることができました。設定したリンクもちゃんと機能しています。
画面を細かく見るとわかりますが、自作した回答が、[Original source: Editorial] として登録されていますね。めでたしめでたし。
ここまでのまとめ
今回は FAQ サイトをそのまま読み込んだ形の FAQ データベースに対して色々な質問を投げてみましたが、想像以上に適切な回答を返せることがわかりました。しかし、実運用を想像すると使い勝手が悪いケースも多々発生するのではと思います。
実運用に耐えるには、質問を文章形式のまま登録するのではなく、キーワード抽出をして単語単位に分割するなどのカスタマイズを実施し、よく検証する必要があると感じています。
次回は、QnA Maker で作成した FAQ データベースを Bot 化するために、Azure Bot Service と連携してみます。
それでは、また。