こんにちは。データサイエンスチームの高橋です。
前回の記事「Azure Cognitive Services for Language で簡単テキスト分析!~質問応答を使ってみる編~」では Azure Cognitive Services for Language の質問応答サービスの利用方法について紹介しました。質問応答では、チャット形式で質問に対して適切な回答が得られることを確認しました。このようなチャットボットをより多才にできる機能が、本サービスには用意されています。今回はその機能である会話言語理解 (Conversational Language Understanding) についてご紹介しようと思います。
機能 | 説明 | 用途 |
---|---|---|
固有表現抽出 (NER) | 固有表現と呼ばれる人名や地名、日付などを文中から抽出します | チャットボット テキストマイニング |
個人を特定できる情報 (PII) の検出 | 電話番号やメールアドレスなどの個人を特定できる情報を、文中から検出します | データの匿名化 |
キーフレーズ抽出 | 文中からキーフレーズを抽出し、そのリストを返します | 文書のタグ付け可視化 |
エンティティ・リンキング | 文中の語句と知識ベース (Wikipedia) を紐づけ、詳細情報を提供します | チャットボット テキストマイニング |
Text Analytics for Health | 電子カルテなどの医療関係の文書に対する分析機能を提供します | 医療用文書の分析 |
カスタム NER | ユーザーが独自の専門領域に特化した NER のモデルを構築できます | 領域に特化したチャットボット テキストマイニング |
感情分析 | 文章に対して “negative”, “neutral”, “positive” でラベリング・スコアリングします | レビュー・SNS分析 株価予測 |
言語検出 | 文章がどの言語で書かれているかを検出します | 他機能との連携 |
カスタム文書分類 (プレビュー) | ユーザーが任意のカテゴリに分類する文書分類モデルを構築できます | スパムフィルタリング ニュース記事分類 |
文書要約 (プレビュー) | 記事や論文などの要約を生成します | 要約 |
Conversational Language Understanding (プレビュー) ★本記事 |
会話の内容を理解して、対応する意図 (Intent) に分類します | チャットボット 音声コントロール |
Question answering | 質問から適切な回答を選択します | チャットボット FAQ ボット |
会話言語理解 (Conversational Language Understanding) とは会話文の理解に特化した機能となります。この機能は主にチャットボットのような対話システムを、より高性能にする目的で利用されます。例えば、「明日の新宿の天気は?」という質問では、前回紹介した質問応答の機能のような、回答を事前に用意しておく方法では対処できません。このような質問に適切に回答するためには、文中の「明日」や「新宿」の意味を正しく認識し、文全体の意図は何かを適切に理解することが必要となります。このような会話文の理解を手助けしてくれるのが、本サービスとなります。
会話文の理解というと抽象的ですが、具体的には、会話文の Intent の判定と文中の Entity を抽出する機能となります。Intent と Entity については次の章で解説しますが、ざっくりと言えば「何をどうする」ということにおいて、「何」に対応するものが Entity であり、「どうする」に対応するものが Intent になります。これらを抽出することで発言の内容を認識し、次のアクションへ繋げることができます。具体的には以下のような利用が考えられます。
上の例は、天気や気温の情報を得るために利用しているものです。会話言語理解を利用して、天気を知りたいのか、それとも気温を知りたいのかという Intent の判定と、日付や場所といった Entity の抽出を行っています。抽出した結果を天気予報 API に渡すことで、知りたい情報を得るというのが全体の流れとなります。このように本機能は会話文の理解に特化しているので、次のアクションを実行するための外部サービスとの連携が前提になっているともいえます。この設計によってさまざまな応用が考えられる汎用的なサービスとなっています。期待できる応用先として例えば、お店の予約や乗換案内のようなカスタマー向けのサービスや、カレンダーの管理や会議設定のような業務関連の作業などを、チャットベースで利用可能にするといったことが考えられます。また既に身近なものとしてある iPhone の Siri や各種 AI スピーカーでは、会話言語理解と同じような機能が搭載されていると考えられます。本機能でも Azure のSpeech to Text や Text to Speech のような音声認識・合成サービスと組み合わせることで、AI スピーカーのような使い方も可能となります。このように入出力ともに様々な外部サービスと連携することで、多くの課題解決に繋げられます。
また本機能は、以前から存在していた Language Understanding サービスである LUIS の次世代版とされています。基本的な機能は LUIS も変わらないのですが、次世代版である本機能では、中身の AI モデルとして Transformer ベースのものが採用されています。 Transformer とは、私が以前執筆した記事で紹介している BERT などの元になるモデル、またはそのアーキテクチャを指します。NLP 分野で最先端のモデルを取り入れることで、会話文の理解能力を向上させているものが、本サービスとなります。
会話言語理解の機能を使ってみる前に、用語として知っておかなくてはならない Intent と Entity について説明します。前章でも述べたように、会話言語理解では Intent と Entity を抽出することで、発言の内容を認識しています。以下が Intent と Entity の簡単な解説となります。
会話言語理解では、まずは抽出したい Intent と Entity を設定し、それぞれがタグ付けされた例文を用意します。本機能ではこの例文から学習を行うことで、未知の発言に対しても適切な認識を可能とする AI モデルを構築します。Intent や Entity が何かは理解したけど、実際どのようなものを設定すればよいか分からない、という方もいらっしゃると思います。Intent や Entity の設定の方針としては、本機能の結果を連携したい API の仕様から検討するのが効率的かと思います。例えば天気予報 API と連携したい場合は、天気予報 API にはどのような機能 (関数) が用意されているか、そしてその機能の利用に必要な情報 (引数) は何かを洗い出します。これにより、機能 (関数) に対応する Intent と、必要な情報 (引数) に対応する Entity を設定すればよいということになります。
本機能では、Entity として以下の 3 種類のコンポーネントが用意されています。
また、同一の Entity に対して複数のコンポーネントが重複して適用されるときの挙動を、Overlap メソッドというものにより制御することも可能です。このような細かなサポートも利用することで、より効果的なモデルの構築が可能となります。
さっそく会話言語理解を利用してみましょう。今回は利用シーンとして「会議室の利用予約」を想定し、会話言語理解モデルの構築を行っていきたいと思います。
以上の手順により、会話言語理解モデルを構築することができます。最新の AI モデルを採用していることもあり、実用的な精度を達成していることも確認できました。
本記事では Azure Cognitive Services for Language で会話言語理解の機能の利用方法をご紹介しました。Intent や Entity といった聞き慣れない用語が登場しましたが、意味が分かってしまえばとても便利な機能であることが分かると思います。最先端の AI モデルを採用した会話言語理解モデルの構築も、上記のように画面の手順に従って操作を行っていくだけで、非常に簡単にできてしまうことが確認できました。今回は会話言語理解モデルの構築までについてご紹介しましたが、前述したように、本機能は外部サービスと連携することで真価を発揮するものと言えます。今回構築したモデルについても、実際に会議室予約システムと連携させ、Teams のチャットから部屋の確認・予約ができるような仕組みを作ることも可能であると考えられます。API を利用することで様々な応用ができるサービスとなっていますので、どんなところに活用できそうか想像を膨らませることに本記事が少しでも役立てば幸いです。
当社でも、Azure のサービスを活用したチャットボットソリューションである Knowledge Bot など、本記事に関連するサービスをご用意しております。また AI モデルの構築やデータ分析はもちろん、Azure を活用したデータ基盤やインフラの設計など、システム全体の構築にも強みを持っていますので、ご相談などがありましたら、当社までお気軽にお問い合わせください。最後までお読みいただきありがとうございました。
関連ページ |