LINEのQ&AチャットボットをAzureを使ってノンコーディングで作成する[前編] #Azure リレー

はじめに

この記事は、先週の松枝さんの「自作のWindowsアプリをAKSに載せるキホン技 #Azure リレー」に引き続き、 毎週水曜日にAzure関連の記事を投稿する Azure リレー第7回目です。
今回はLINEのQ&AチャットボットをAzureを使ってノンコーディングで作成していきます。
目次は以下です。

  • 利用したAzureサービスとサイト
  • LINEのQ&Aチャットボットの作成
    • QnA Maker のナレッジ ベース作成
    • QnA Maker と Azure Bot Service の統合  <=この記事ではここまで
    • LINE Q&Aチャットボットの作成(LINE Messaging API の設定)
  • まとめ

画像多めで長くなっちゃったので、この前編では「QnA Maker と Azure Bot Service の統合」までをして、後編で「LINE Q&Aチャットボットの作成(LINE Messaging API の設定)」をしていきたいと思います。
ちなみにですが、Azure Bot Serviceを使ってオウム返しするLINEボットは石川君がこの記事で作成していたので、Azure Bot ServiceとLINEボット作成部分を参考にさせていただきました。

利用したAzureサービスとサイト

利用したAzureサービスとその簡単な概要は以下です。

  • Azure Bot Service : ボットの作成・テスト・配置・管理を一元的に行えるツール
  • QnA Maker : ユーザの質問に対して、ナレッジベースから回答の可能性が高いものを返すことができるツール

ここでいうナレッジベースとは、あらかじめ質問とその回答のペアを登録しておくデータベースのことです。
そのため、今回作成するチャットボットは登録した質問とその回答のペアからかけ離れた質問には答えることができません。

QnA Makerを利用するためには質問と回答を作成できるQ&Aサイト、オンラインドキュメントといったデータが必要なので、今回は私が最近見たQ&Aサイトである厚生労働省の「新型コロナウイルスに関するQ&A(一般の方向け)」を利用させていただきました。
また、QnA Makerは.tsv、.pdf、.doc、.docx、.xlsxにも対応しており、公式のチュートリアルではサンプルデータも配布しています。

LINEのQ&Aチャットボットの作成

QnA Maker のナレッジ ベース作成

ここではボットに教える知識、つまり質問とその回答のペアをQnA Maker のナレッジベースに格納していきます。

1. QnA Makerのポータルにアクセスし、左上のLoginボタンからログインします。

2. 左上の「Create a knowledge base」をクリックして、ナレッジベースの作成をしていきます。

3. STEP1の「Create a QnA service」をクリックします。

すると、以下のようにポータルに移動するので、項目を入力し作成します。
価格レベルはナレッジベースにおしゃべりを追加しない場合はF0でも大丈夫ですが、おしゃべりを追加する場合は容量が足りなくなるのでS1以上にしてください。

余談ですが、ナレッジベースのおしゃべりとは「こんにちは」や「こんばんは」などの会話に対してのデータセットです。
このおしゃべりにも以下のようにバラエティがあります。

おしゃべりについての詳細はこちらを参照してください。

4. リソースが作成できたら、QnA Makerのポータルに戻り、STEP2の「Refresh」ボタンを押してリロードしてから項目をSTEP3まで入力していきます。

5.ナレッジベースへの入力ソースを追加していきます。

今回はQ&Aサイトを対象にしたので、URLのみ入力しました。
また、Chit-chatは価格レベルをF0にして容量がないのでNoneを選択します。

6.「Create your KB」をクリックしてナレッジベースを作成していきます。

実際に作成されたナレッジベースが以下です。

質問とその回答の対が抽出されているのがわかりますが、Q&Aのサイトで44問だったQ&Aが62問抽出されていたり、質問部分や回答部分に不要な単語や欠けている文があったりしました。
具体的に見ていくと、2つほどQnA Markerの苦手な抽出部分がわかりました。
1点目は質問のリンク集です。
以下のように元々の文書で質問のリンクだった部分をQ&Aとして抽出していました。

2点目は改行の多い回答文です。
以下のように元々の文書でホームページのリンクを見やすくするために改行していると、中途半端な部分で回答が切れたりしていました。
また、質問部分に「問2」という不要な単語も残ってしまっていました。

7. 上記のような不要なQ&Aや単語を削除、欠けた回答の修正をします。

修正が終わったら、右上の「Save and train」を押して保存とQnA Makerの学習を行います。

8.作成したナレッジベースでどのような回答が取得できるのかをテストします。

右上の「Test」ボタンを押すと、チャットパネルが開くので、そこに質問を入力していきます。

ナレッジベースに回答がない場合は左のようにマッチしませんでしたと返ってきますが、似た質問がある場合は右のように回答が表示されます。

QnA Maker と Azure Bot Service の統合

1. 作成したナレッジベースの公開をします。

上の「PUBLISH」タブを選択して、「PUBLISH」ボタンを選択します。

すると、以下のようにQnAサービスが発行されました。

このページを参考にして、実際に回答が取得できるかをPostmanで試してみましょう。
Postmanで以下のようにURLやHeaders、Bodyを入力して送ります。

すると、以下のように応答を取得することができました。

2.ボットを作成していきます。

先ほどのページの「Create Bot」を選択して、Azure Portalに遷移したら、ボットの名前とサブスクリプション、リソースグループなどを以下のように入力していき、作成を押します。

すると、数分でボットが作成されるので、通知タブからリソースに移動します。

3.ボットが動くか検証します。

リソースに移動したら、左のメニューバーから「Webチャットでテスト」を選択して、チャットパネルを表示し、質問を入力してみます。
すると、以下のようにQnA Markerで作成したナレッジベースの回答が返ってきます。

おわりに

毎週水曜日にAzure関連の記事を投稿する Azure リレー第7回目前編では、LINEのQ&AチャットボットをAzureを使ってノンコーディングで作成していくために、「QnA Maker のナレッジ ベース作成」と「QnA Maker と Azure Bot Service の統合」を行いました。続く、後編では「LINE Q&Aチャットボットの作成(LINE Messaging API の設定)」をしていきます。

参考文献

https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/quickstarts/create-publish-knowledge-base

https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/quickstarts/get-answer-from-knowledge-base-using-url-tool?pivots=url-test-tool-postman

https://docs.microsoft.com/ja-jp/learn/paths/create-bots-with-the-azure-bot-service/

FIXER Inc. 佐藤 紗都 (^2)
  • FIXER Inc. 佐藤 紗都 (^2)
  • 2019年に新卒でFIXERに入社しました。今はMaaSに関する事業に携わりつつ、最近はPower PlatformとAzure勉強中です。趣味はアニメなので、こっそりブログネタに絡めています。最近の推しはプロメアです。

%d人のブロガーが「いいね」をつけました。