DX station

【第二回】Azure Cognitive Services for Language で簡単テキスト分析!~質問応答を使ってみる編~

高橋 良輔

高橋 良輔

こんにちは。データサイエンスチームの高橋です。

前回の記事「【第一回】Azure Cognitive Services for Language で簡単テキスト分析!~サービス紹介と感情分析を使ってみる編~」では Azure Cognitive Services for Language のサービス概要と感情分析の利用方法について紹介しました。前回ご紹介した通り、本サービスには感情分析以外にも様々な機能が用意されています。今回はその機能の 1 つである「質問応答 (Question answering) 」の利用方法をご紹介していきます。

機能 説明 用途
固有表現抽出 (NER) 固有表現と呼ばれる人名や地名、日付などを文中から抽出します チャットボット
テキストマイニング
個人を特定できる情報 (PII) の検出 電話番号やメールアドレスなどの個人を特定できる情報を、文中から検出します データの匿名化
キーフレーズ抽出 文中からキーフレーズを抽出し、そのリストを返します 文書のタグ付け可視化
エンティティ・リンキング 文中の語句と知識ベース (Wikipedia) を紐づけ、詳細情報を提供します チャットボット
テキストマイニング
Text Analytics for Health 電子カルテなどの医療関係の文書に対する分析機能を提供します 医療用文書の分析
カスタム NER ユーザーが独自の専門領域に特化した NER のモデルを構築できます 領域に特化したチャットボット
テキストマイニング
感情分析 文章に対して “negative”, “neutral”, “positive” でラベリング・スコアリングします レビュー・SNS分析
株価予測
言語検出 文章がどの言語で書かれているかを検出します 他機能との連携
カスタム文書分類 (プレビュー) ユーザーが任意のカテゴリに分類する文書分類モデルを構築できます スパムフィルタリング
ニュース記事分類
文書要約 (プレビュー) 記事や論文などの要約を生成します 要約
Conversational Language Understanding (プレビュー) 会話の内容を理解して、対応する意図 (Intent) に分類します チャットボット
音声コントロール
Question answering
★本記事
質問から適切な回答を選択します チャットボット
FAQ ボット


「CogEra」はこちら

「Knowledge Bot」はこちら

「ML Connect」はこちら

「機械学習導入支援サービス」はこちら


質問応答 (Question Answering) とは?

質問応答とは、その名の通り、質問すると適切な応答をしてくれるシステムです。例えば、「日本の首都はどこ?」というユーザーの質問に対して、システムが「東京」と答えるようなイメージとなります。身近なものであれば、iPhone の機能である Siri は質問応答システムを発展させたものと言えます。それ以外でも、ホームページなどを閲覧していて、右下にチャットボット用のウィンドウが表示されているのを見かけたことはないでしょうか。あのようなシステムも簡易的な質問応答システムとなります。

質問応答システムの導入には様々なメリットがあります。質問応答システムで問い合わせ対応を自動化することで、対応コストを減らすことができ、人件費削減や業務効率化を実現できます。また、チャットベースの質問応答システムでは、欲しい回答を自然かつ即座に得られることによって、ユーザビリティの向上というメリットもあります。

このような質問応答システムを構築するためには、質問と回答が組になった QA ペアを収集しデータ化する必要があります。また質問文の意図を正しく理解するためには、自然言語処理や機械学習の知識も必要になってきます。質問応答システムを自前で構築するとなると非常に大変ですが、これらの手間や専門知識を必要とせずに、質問応答システムを構築できてしまうのが Azure Cognitive Services for Language の質問応答のサービスとなります。本記事では、Azure Cognitive Services for Language での質問応答の利用方法についてご紹介していきます。

Azure Cognitive Services for Language では質問応答として 2 種類の機能が提供されています。

  • Answer questions
    事前構築済みの質問応答モデルを利用して、与えられたテキストの中から、質問に対する回答となる部分を抽出する機能です。ナレッジベース (QA ペアからなるデータベースのようなもの) の構築や管理が不要なため、非常に簡単に利用することができます。
  • Custom question answering
    作成したい質問応答システムに合わせて、モデルをカスタマイズできる機能です。与えられたテキストから自動的に QA ペアを抽出して、ナレッジベースを構築してくれます。QA がまとまったテストファイルやWEBページなどがあれば簡単に利用でき、チャットボットとしてのデプロイも可能な実用的な機能となっています。


「CogEra」はこちら

「Knowledge Bot」はこちら

「ML Connect」はこちら

「機械学習導入支援サービス」はこちら


Answer questions を試す

まずは Answer questions を利用して、Azure Cognitive Services for Language の質問応答がどのようなものか試してみます。感情分析と同様に Language Studio から以下の手順で実行できます。

  1. Language Studio (https://language.azure.com) にアクセスおよびログインします。Answer questions では感情分析と同様に、無料である F0 の Language リソースで利用可能です。
  2. 一覧から Answer questions を選択すると以下の画面が表示されます。
  3. 質問応答の対象となるテキストと質問文を入力して Run を押下するだけで、質問応答が実行できます。今回は質問応答の対象となるテキストとして「日本」の Wikipedia のページの先頭の文を利用し、質問文として「日本の首都は?」を利用して結果を見てみます。
  4. 以下が実行結果となります。質問文の「東京の首都は?」の回答となる文に下線が引かれて表示されます。
  5. より詳細な結果は、出力の JSON を確認することで得られます。以下が JSON の結果の一部です。この結果では「東京都」という部分だけ適切に抽出できていることが分かります。結果の信頼度を表す confidenceScore も 0.97 と高いことが確認できます。

このように非常に簡単に質問応答を試すことができます。結果も分かりやすく表示されるので、とりあえず使ってみる場合に最適な機能です。



「CogEra」はこちら

「Knowledge Bot」はこちら

「ML Connect」はこちら

「機械学習導入支援サービス」はこちら


Custom question answering を試す

続いて、Custom question answering を利用してみます。Custom question answering では、ニーズに合わせてモデルをカスタマイズでき、チャットボットとしてのデプロイも可能となっているため、より実用的な機能と言えます。今回はこの機能を利用して、東京都が公開している「新型コロナウイルス感染症FAQ(よくある質問)」( https://www.metro.tokyo.lg.jp/tosei/tosei/news/documents/corona_faq_2.pdf ) から質問応答のチャットボットを作成しようと思います。

  1. こちらの機能は F0 の Language リソースでは利用不可となっているため、リソースの価格レベルを S Standard へ変更する必要があります。1000文あたり約173円の従量課金となります。
  2. また機能の項目から、カスタム質問応答の有効化を行います。有効化には Azure Cognitive Search が別途必要となります。Azure Cognitive Search については無料のリソースでも利用可能です。
  3. Language Studio の一覧から Custom question answering を選択すると以下の画面が表示されます。Create new project を押下して新規のプロジェクトを作成します。
  4. 作成するプロジェクトの設定を行っていきます。リソースの言語の設定では、日本語のみ対象とします。
  5. プロジェクトの名称およびデフォルトの回答を指定します。デフォルトの回答は、質問に対する回答が見つからなかったときに結果として出力されるものです。今回は素直に「回答が見つかりません。」という文言が出力されるよう指定しています。
  6. 設定を確認して Create project を押下すると、プロジェクトが作成されます。
  7. プロジェクトが作成されると、以下の画面が表示されます。まず Manage sources から質問応答に利用するテキストのソースを指定します。ここで指定するテキストから自動的に QAペア が抽出されることになります。今回は URL から指定するので Add source の URLs を選択します。
  8. 以下のウィンドウが表示されるので、 Add url から ソースとなる URL とその名称を入力します。今回は以下の URL をソースとしています。入力後、Add all を押下します。
  9. ソースの追加が完了すると、ソースから自動的に QA ペアを抽出して、ナレッジベースの構築が行われます。今回のソースでは短時間で構築完了しました。
  10. ナレッジベースの構築が完了すると、ナレッジベースの確認・編集が可能となります。ナレッジベースを確認すると、ソース中の全ての QA ペアについて、綺麗に抽出されていることが確認できます。このようにソースの URL を指定するだけで、面倒なナレッジベースの構築が自動かつ高精度に実行できます。この機能により非常に効率的な質問応答システムの作成が実現できています。
  11. 以上の工程で質問応答システムの設定は完了となります。実際に質問応答システムのテストをしてみましょう。テストも非常に簡単で、メニューにある Test を押下すると、チャット形式でテストすることができます。
  12. 実際の質問応答の結果を見ていきます。まずはソースにあった質問文「後遺症の原因は、判明しているのでしょうか?」についての質問をしてみます。以下の結果を見ると、質問に対応する回答が適切に表示されていることが確認できます。
  13. Include short answer response を選択すると、元の回答とともに回答部分となる短い一節も表示されます。
  14. 少しだけ質問の表現を変えて結果を確認してみます。ソースの質問文「どのように感染しますか?」に対して「主な感染経路は?」という表現で質問してみます。以下の結果を見ると、問題なく対応する回答が表示されていることが確認できます。この結果から、質問文の意味を正しく理解した上で、回答を選択できていることが分かります。
  15. 回答が存在しない質問に対しては、デフォルトの回答が表示されることも確認できます。
  16. Inspect を選択することで、それぞれの回答の詳細を見ることができます。結果の信頼度を表す Confidence Score もここから確認できます。
  17. 本機能を利用することで、質問応答システムのデプロイまで行うことが可能です。Deploy knowledge base から Deploy を選択することでデプロイされます。
  18. デプロイすることで、Azure bot サービスの連携や、発行されたエンドポイントを利用した開発が可能となります。


「CogEra」はこちら

「Knowledge Bot」はこちら

「ML Connect」はこちら

「機械学習導入支援サービス」はこちら


さいごに

本記事では Azure Cognitive Services for Language で簡単に質問応答システムを構築する方法をご紹介しました。本機能で提供されている Answer questions と Custom question answering の使い分けとしては、試しに使ってみたい場合や QA ペアの収集が困難な場合には Answer questions を利用して、既存の FAQ ページなどを利用したい場合には Custom question answering を利用するという方法が考えられるかと思います。今回のご紹介で、質問応答システムをとても簡単に構築できることが少しでも伝われば幸いです。また今回は質問応答システムの構築までについてご紹介しましたが、構築したシステムをどう利用していくかも重要となります。例えば WEB 上で公開してユーザーが使えるようするといった利用方法や、Teams と連携することで、Teams から質問応答システムに問い合わせができるようにするといった利用方法も考えられます。このような連携についても様々な機能が用意されているので、目的に合わせた多種多様な使い方が可能になっています。もし 「FAQ がうまく活用できていない!」というような課題がございましたら、Azure Cognitive Services for Language の質問応答の利用をご一考されてはいかがでしょうか。

当社でも、Azure のサービスを活用したチャットボットソリューションである Knowledge bot など、本記事に関連するサービスをご用意しております。チャットボット以外についても、Azure を活用したデータ分析から AI モデルのスクラッチでの実装まで、ご相談などがありましたら、当社までお気軽にお問い合わせください。最後までお読みいただきありがとうございました。


関連ページ

「CogEra」はこちら
「Knowledge Bot」はこちら
「ML Connect」はこちら
「機械学習導入支援サービス」はこちら

DX推進に役立つ情報をお届けします!メールマガジン登録はこちら

【総合】お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録