サンプルの実行
Answers Anywhere SDKのセットアップは完了したので、次はサンプルを動かして見ましょう。ここでは、データベースに対して文章の質問で検索を実施するサンプルを動かします。
電子メールおよび連絡先が格納されているデータベースに対して、「池田からの重要メールは?」というような質問を行い、Answers Anywhereが質問を解釈して「送信者名=池田」「優先度=重要」の条件を含むSQL文を自動生成し、該当のテーブルからデータを抽出します。サンプルは以下の手順で動かします。
- データベース検索のエージェント・ネットワークサンプル「email_ja.zip」を任意の場所に展開します。
- ODBCデータソースの設定を行います。「email_ja\database」フォルダの「odbc_setup.bat」をダブルクリックし実行します。この操作で、電子メールおよび連絡先のサンプルデータが格納されているデータベース「email.mdb」が、システムODBCデータソース'Email'に登録されます。登録処理のログ「setup_odbc.log」が生成され登録が完了します。
- Windowsの[スタート]メニュー-[すべてのプログラム]-[Answers Anywhere Platform 5.2.0]-[Agent Network Development Environment]の順に選択し、Answers AnywhereのIDEを起動します。
- SDKのメニュー[File]-[Open]を選択し、ファイル選択のダイアログでフォルダ「email_jaのemail_ja.opal」を選択します。email_ja.opalがSDKに読み込まれ、エディタ上にエージェント・ネットワークが表示されます。
- [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発話以降において、不足している情報をシステムから尋ねたり、逆にユーザーから追加情報を与えることにより、最終的なゴールに到達することができるのです。
次回は、今回取り上げたサンプルを使いエージェント・ネットワークが入力を解析する仕組み、 対話をする仕組みについて解説する予定です。