SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI(AD)

高速、小容量の自然言語解析で直感的な
対話型インターフェースを実現する「Answers Anywhere」

自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI 第1回

  • このエントリーをはてなブックマークに追加

 「Answers Anywhere」は、自然言語で入力されたユーザーの指示から意図を汲み取り、対話をしながら機器操作やデータ検索をするシステムを構築するためのミドルウェアです。本稿では、Answers Anywhereの概要から導入方法、Answers Anywhereを使って何ができるのか、について紹介します。

  • このエントリーをはてなブックマークに追加

1. Answers Anywhereとは

 「Answers Anywhere」は、自然言語で入力されたユーザーの指示から意図を汲み取り、対話をしながら機器操作やデータ検索をするシステムを構築するためのミドルウェアです。

 分かりやすいイメージとしては(かなり誇張表現ですが)アプリケーションを「2001年宇宙の旅」のHAL9000やスタートレックのコンピューターのように操作できるようにするものと言えるでしょう。映画の中でシステムは知的にふるまい音声対話によりユーザーの指示に答えながらユーザーを支援していました(HAL9000は最後暴走してしまいましたが……)。現状のAnswers Anywhereでは、映画中のシステムのように音声入力まで含めた機能は実現してはいないのですが、ユーザーから文章として受け取った指示を意味解釈し、アプリケーションの操作やデータ抽出を対話的に行うことができます。

 具体的な例としてAnswers Anywhereを洋服の注文処理をするアプリケーションに適用した例を紹介します(図1)。このアプリケーションではユーザーがシステムと対話しながら商品を検索し注文をすることができます。

リスト1:対話の例
ユーザー「シャツはありますか?」
システム「シャツは全部で10アイテムあります」【「シャツ」を認識し商品検索】
ユーザー「緑色で小さいサイズ」
システム「色がグリーン、Sサイズのシャツを検索しました」【条件を追加して商品絞込】
ユーザー「もう少し大きいものは?」
システム「色がグリーン、Mサイズのシャツを検索しました」【SサイズをMサイズに変更】
ユーザー「これを発注します」
システム「いくつ発注しますか?」【数量が指定されていないので対話で情報収集】
ユーザー「2着」
システム「製品番号xxxを2着発注しました」【注文処理完了】
図1 Answers Anywhereを使い自然言語で洋服の注文をするアプリケーション
図1 Answers Anywhereを使い自然言語で洋服の注文をするアプリケーション

 自然言語の意味解釈をするエンジンと言うと、大きな日本語辞書と複雑な文法規則を備えたシステムを思い浮かべる読者の方もいらっしゃるかと思います。しかし、Answers Anywhereではエージェント・ネットワークという独自の技術により高速、小容量、言語依存度が低いエンジンとなっていることが特徴です。エージェント・ネットワークはターゲットとするアプリケーションの機能やデータを構成する要素を記述した概念モデルです。対象ドメインを特化し分散解析することでこの特徴を実現しています。

 自然言語で記述されたユーザーの指示が与えられると、エージェント・ネットワークは概念モデルに従い、指示をアプリケーションが認識できる形、API呼び出しやSQL文に変換します。エージェント・ネットワークが人の指示を機械の伝えるために翻訳をするというわけです。

 エージェント・ネットワークはユーザーの意図が認識できない場合も、持っている概念でできる限りの認識を行おうとし不明点をユーザーに尋ねるような対話を自動生成します。不明な箇所がなくなり解釈結果が決定すると、エージェント・ネットワークはアプリケーションに翻訳された指示を伝えて処理が行われます。

図2 Answers Anywhereの動作概要図:アプリからの入力をI/Oで受け取る。その後、文章解析し対話要素(文脈追跡、推論ヒント)を生成。それをもとにデータソースを操作してユーザーに結果と対話内容を返す。
図2 Answers Anywhereの動作概要図:アプリからの入力をI/Oで受け取る。その後、文章解析し対話要素(文脈追跡、推論ヒント)を生成。それをもとにデータソースを操作してユーザーに結果と対話内容を返す。

 『WEB+DB PRESS Vol.30』(技術評論社)に「Answers Anywhereを使ってみよう!-自然言語対話エンジンで実現する使いやすいインターフェイス」という記事があるので、こちらも参照してください。

2. Answers Anywhereを動かしてみよう

 長い説明よりも、少しでも動かしてみるとAnswers Anywhereがどういうものかを理解し、面白さが体感していただけるのではないかと思います。アイエニウェア・ソリューションズ株式会社のWebサイトでは、Answers Anywhere SDKの無償評価版を配布しています。評価版は試用期間が限定されていますが製品版と同様、全機能を試用できます。

動作環境

 SDKのインストールには、以下に挙げるスペックのデスクトップPC、またはノートPCが必要です。

  • CPU: Pentium III 750MHz(1.5GHz以上推奨)
  • メモリ: 512MBytes(1GBytes以上推奨)
  • ハードディスク: Cドライブに400MBytes以上の空き容量
  • OS: Microsoft Windows 2000/XP

SDKの入手

  1. アイエニウェア・ソリューションズ株式会社のWebサイトにアクセスして、ページ中ほどのAnswers Anywhere評価版の[ダウンロード]を選択します。
  2. お客様のログイン画面になります。はじめての方は[お客様情報登録]を押していただきお客様情報をご登録していただくことで新規のログインIDを取得できます(無料)。ログインIDをお持ちの方はIDとパスワードを指定して[ログイン]を押します。
  3. ライセンス契約同意確認画面となります。ライセンス契約の内容を確認し、問題なければ[同意する]を選んで[次へ]を押してください。
  4. ダウンロード製品の選択画面となります。選択肢より「Answers Anywhere 期間限定評価版」をお選びいただき、画面下部の[選択]を押してください。
  5. 期間限定評価版のダウンロード画面となります。Windows版またはUnix/Linux版のリンクを押すことでセットアップファイルがダウンロードされます。同じ画面に記載されているインストールキーはインストールの際に必要となりますので、カット&ペーストして保存、または印刷してください。

SDKパッチとサンプルの入手

 次に、SDKのパッチとサンプルコードをAnswers Anywhere 開発者サポートページからダウンロードしましょう。SDKパッチ適用によりAnswers Anywhereを日本語環境にて利用の際に発生する問題が修正されます。サンプルはSDKにもいくつか付属していますが、サポートページでは日本語のサンプルを提供しております。ここでは、あとで動作確認に使用するデータベース検索のエージェント・ネットワークサンプルをダウンロードします。

サポートページからダウンロードするもの

  • SDKパッチ: aapatch_v090510.zip (バージョンは記事執筆時のもの)
  • データベース検索のエージェント・ネットワークサンプル: email_ja.zip

日本語マニュアルの入手

 SDKに付属しているマニュアルは英語ですが、ホームページでは日本語に翻訳されたマニュアルが公開されています。

 開発に必要な情報やチュートリアルが載っていますので、こちらも入手しましょう。

SDKのインストール方法

 以下の手順に従ってインストールを行います。

  1. Answers Anywhere SDKのセットアップファイル「setup_5.2.0.358.exe」をダブルクリックします。
  2. インストーラーの初期画面が表示されるので、[次へ]をクリックします。
  3. 「使用条件の条項に同意します」を選択し、[次へ]をクリックします。
  4. Answers Anywhereをインストールするディレクトリを指定します。特に問題がなければ、そのまま[次へ]をクリックします。
  5. インストール・タイプは「標準」を選択し、[次へ]をクリックします。
  6. これでインストールの準備が整いました。後は[インストール]をクリックすると、ファイルのコピーが開始されます。
  7. ファイルのコピーが終了すると、ライセンスキーの入力画面が表示されます。Company Nameの欄に会社名または所属組織名を、アルファベットまたは記号を使って入力します。また、License Keyの欄にはダウンロード画面に表示されたライセンスキーを入力し、[次へ]をクリックします。
  8. 次に[終了]ボタンをクリックして、インストーラーを終了します。
  9. 続いてSDKパッチの適用を行います。SDKパッチのインストールの条件として環境変数AAP_HOMEがAnswers Anywhere のインストール先を正しく指している必要があります。この環境変数はSDKが正常にインストールされていれば自動設定されますが、念のため値の確認を行います。[コントロールパネル]-[システム]を開き、「システムのプロパティ」ダイアログの[詳細設定]タブ(Windows 2000では[詳細])を選択します。[環境変数]ボタンを押し、システム変数に定義されているAAP_HOMEが手順4で指定したフォルダ名と同じかどうかを確認します。
  10. SDKパッチ「aapatch_v090510.zip」を任意の場所に展開し、aapatchフォルダのinstall.batをダブルクリックし実行します。 「パッチのインストール実施します。よろしいですか?」と質問されますので「y」を入力します。これでパッチの適用が完了です。aapatchフォルダは不要なので削除してもかまいません。

サンプルの実行

 Answers Anywhere SDKのセットアップは完了したので、次はサンプルを動かして見ましょう。ここでは、データベースに対して文章の質問で検索を実施するサンプルを動かします。

 電子メールおよび連絡先が格納されているデータベースに対して、「池田からの重要メールは?」というような質問を行い、Answers Anywhereが質問を解釈して「送信者名=池田」「優先度=重要」の条件を含むSQL文を自動生成し、該当のテーブルからデータを抽出します。サンプルは以下の手順で動かします。

  1. データベース検索のエージェント・ネットワークサンプル「email_ja.zip」を任意の場所に展開します。
  2. ODBCデータソースの設定を行います。「email_ja\database」フォルダの「odbc_setup.bat」をダブルクリックし実行します。この操作で、電子メールおよび連絡先のサンプルデータが格納されているデータベース「email.mdb」が、システムODBCデータソース'Email'に登録されます。登録処理のログ「setup_odbc.log」が生成され登録が完了します。
  3. Windowsの[スタート]メニュー-[すべてのプログラム]-[Answers Anywhere Platform 5.2.0]-[Agent Network Development Environment]の順に選択し、Answers AnywhereのIDEを起動します。
  4. SDKのメニュー[File]-[Open]を選択し、ファイル選択のダイアログでフォルダ「email_jaのemail_ja.opal」を選択します。email_ja.opalがSDKに読み込まれ、エディタ上にエージェント・ネットワークが表示されます。
  5. [Ctrl]+[I]を押してInteraction Consoleを表示します。

 準備ができたので早速質問を入力して対話検索をすることにしましょう。Interaction ConsoleのUser Inputのフィールドに質問を入力し[Apply]を押します。

質問:山田のメール
結果:データベースのEmailテーブルから 送信者='山田' または 受信者='山田' のデータを抽出

 「山田」がアドレス帳(Contact)の氏名だと認識されデータベースから送信者か受信者が「山田」であるデータが抽出されました。ここで、Answers Anywhereは「山田に関する解釈が一意に決まりません…」とユーザーに対話をかけてきます。山田は送信者とも受信者とも取れるのでユーザーにそう尋ねて、さらに絞込みができますよということを伝えているのです。

 続けて次のように入力します。

質問:..送信者(※前にドットを2つ付けます)
結果:データベースのEmailテーブルから 送信者='山田'のデータを抽出

 Answers Anywhereは文脈より「送信者」は「山田」であることを認識します。質問の頭に..(ドット)を付けましたが、これは入力が先の質問の続きであることを明示するための記号です(この記号を使わないモードもあります)。さらに続けて、次のように入力します。

質問:..2009/3の重要メール
結果:データベースのEmailテーブルから 送信者='山田' かつ 2009/3/1<=送信日<=2009/3/31かつ 重要度='High のデータを抽出

 条件が追加されてさらにデータが絞り込まれました。このように文章の中から概念要素を抽出しそれを組み立てていくことで対話が進行していきます。

 さて、ここまで入力に対してAnswers Anywhereがどのように振舞うかをみてきましたが、入力のたびにエージェント・ネットワークのある部分が緑色になったり赤くなったりする様子に気づかれたことでしょう。これこそがエージェント・ネットワークがどのように言語解析をし対話を行なっているかを示すものです。この仕組みについては次回以降の連載にて詳しく解説したいと思います。

3. Answers Anywhereの適用領域

 さて、実際に試された読者の方は「いままでに見たことがなく、面白い技術だ」という興味をもたれた方も多いのではないのでしょうか。一方で「一体、何に使ったらよいのか?」という疑問も湧いてくるのではないかと思います。

 Answers Anywhereの一つの適用領域としては、アプリケーションのユーザービリティ向上があげられます。いつの時代にも共通することですが、ハードウエアの進化は続いており、それに伴いソフトウエアの高機能化も進んでいます。処理能力という点でも大量のデータを一度に処理することが可能になりました。

 さて、多機能・大量データへの流れは、システムを使用するユーザーを幸せにしたのでしょうか? 例えば最近の複合機では印刷したものをソートして製本までしてくれるものがほとんどです。うまく使えばプレゼン資料の作成などは大変楽になっています。しかし、ほとんどのユーザーは印刷した後で必要な部数だけ手動でコピーしてホチキス止めをしているというのが現状ではないでしょうか。その理由としては機能があるのを知らないというユーザーもいるでしょうが、「そういう機能があるのは知っているがメニューをどう操作したら設定できるかわからない」という方も多いかと思います。高機能になった反面、それを扱うためのユーザーインターフェイスが複雑となりユーザービリティの低下が発生します。

 データについても容量が増え一見リッチになっているようですが、その反面、目的にあったものを見つけ出すためのユーザーインターフェイスが複雑化すればユーザーがその恩恵を受けられるかは疑問です。

 こういった場面にAnswers Anywhereを適応することで課題が解決することが期待されます。自然言語入力により、ユーザーが普段使っている言葉で、例えば「デスクトップのプレゼン資料を1ページ2枚で10部カラー印刷して」とエージェント・ネットワークにお願いすれば、自分で頑張らなくとも所与の目的を達成することが可能というわけです。

 また対話により、きっかけとなる言葉(第1発話)がやろうとしていることを明示的にすべて表していなくても、第2発話以降において、不足している情報をシステムから尋ねたり、逆にユーザーから追加情報を与えることにより、最終的なゴールに到達することができるのです。

 次回は、今回取り上げたサンプルを使いエージェント・ネットワークが入力を解析する仕組み、 対話をする仕組みについて解説する予定です。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4076 2009/07/03 14:01

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング