SHOEISHA iD

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

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

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

エージェント・ネットワークの仕組み

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

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

 「Answers Anywhere」は、自然言語で入力されたユーザーの指示から意図を汲み取り、対話をしながら機器操作やデータ検索をするシステムを構築するためのミド ルウェアです。本稿では、前回と同じサンプルを使用し、Answers Anywhereがどのように動くのかについて紹介します。

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

1. はじめに

 Answers Anywhereは自然言語で入力されたユーザーの指示から意図を汲み取り、対話をしながら機器操作やデータを検索するシステムを構築するためのミドルウェアです。エージェント・ネットワークという独自の技術により高速、小容量、言語依存度が低いエンジンとなっていることが特徴です。前回は、SDKのインストールとAnswers Anywhereが自然文の入力に対してどのような反応を返すのかを電子メール検索のサンプルを使って説明しました。今回は同じサンプルを使いAnswers Anywhereがどのように動くのかについて解説をしたいと思います。

2. エージェント・ネットワークの構造

 エージェント・ネットワークは、対象となるアプリケーションの機能やデータ構造を記述した概念モデルです。このモデルは「エージェント・ネットワーク」という言葉が示すようにエージェントを組み合わせてネットワーク状の構造としたものです。エージェント・ネットワークは以下の順で構築されます。

  1. 対象とするアプリケーションの範囲を特定する(アプリケーションドメインの設定)
  2. 範囲を機能またはデータ要素に分割しそれを処理の単位とする。処理の単位は1つずつエージェントに割り当てる
  3. 分割された処理単位の関係に基づきエージェントの親子関係を構築
  4. 上記処理単位を起動させるための語彙や文法ルールを各エージェントに設定する

 具体的な例として、前回サンプルとして動かした電子メール検索を行うアプリケーションを考えて見ましょう。このアプリケーションの範囲を考えると(「電子メール検索」となっていますが操作全般について考えました)メール全体の中から条件に合致したものを参照する、削除するという操作が考えられます。操作の対象はメールやアドレス帳といったものになるでしょう。このように想定したアプリケーション範囲をリスト1に示します。

リスト1:電子メール検索の対象範囲
・条件に合致したメールを検索する
・条件に合致したメールを削除する
・条件に合致したアドレス帳を検索する
・条件に合致したアドレス帳を削除する

 範囲が決まったらそれらを処理の最小単位に分割します。このときは操作の内容(Command)、操作の対象(Object)、対象の持つ属性(Field)という区分で考えるとやりやすいと思います。この区分で考えた分割結果をリスト2に示します。

リスト2:アプリケーション範囲の分割
操作の内容(Command)
・検索する
・削除する

操作する対象(Object)
・メール
・アドレス帳

対象の持つ属性(FieldまたはRelation)
・メールのもつ属性:重要度、作成日、サブジェクト、
 送信者(アドレス帳)、受信者(アドレス帳)
・アドレス帳の中の人のもつ属性:姓、名、性別
 ...etc

 分割できたらそれを処理の単位としてエージェントに割り当てます。そして関係のあるもの同士を接続することでエージェント・ネットワークが構築できます。リスト2の例では「検索」の対象は「メール」と「アドレス帳」のため、EmailエージェントをEmailとContactエージェントに接続します。割り当ての一覧を表1に、構築されたネットワークを図1に示します。

表1 処理単位とエージェントへの割り当て(アドレス帳の属性は省略)
区分 分割された処理 エージェントへの割当
操作の内容(Command) 検索する Find
削除する Delete
操作する対象(Object) メール Email
アドレス帳 Contact
対象の持つ属性(Field) 重要度 Priority
受信日 CreationDate
サブジェクト Subject
対象の持つ属性
他の対象にひもづくもの(Relation)
送信者 Sender
受信者 Receiver
図1:Emailの操作を行うエージェント・ネットワーク
図1:Emailの操作を行うエージェント・ネットワーク

 最後に、各エージェントに語彙を割り当てます。Answers AnywhereのSDKでサンプルを読み込み、Emailエージェントをダブルクリックするとエージェントの設定画面が開きます。設定画面のTemplate PropertiesタブのKeywordの部分にはそのエージェントの処理単位を起動させるための語彙「Email」が設定されています。またSynonym Tableタブには語彙Emailの同義語が「メール」を含め10個ほど記述されています。この設定によりユーザーが「メール」と入力するとEmailエージェントが緑色になりメールに関連する操作が起動されるというわけです。エージェントには他にも振る舞いを設定するパラメータがたくさんありますがそれらについては連載の中で徐々に解説していきたいと思います。

図2:Emailエージェントの設定内容
図2:Emailエージェントの設定内容

 エージェント・ネットワークのアーキテクチャ上の特徴ですが、処理単位を分割することで各エージェントの処理が単純化され、文章を解析するという複雑な処理でも大量の計算をしなくてすむようになります。このため組み込み機器にものせて動作させることができるくらいエンジンの処理が軽くなります(現に組み込み版ランタイムも販売されています)。また、モデルの拡張をしたいときは新たな部分のみをエージェントとしてネットワークに追加するという方法で実現できるため、拡張性も高いという特徴を持っています。

次のページ
3. エージェント・ネットワークの仕組み

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

  • このエントリーをはてなブックマークに追加
自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI連載記事一覧

もっと読む

この記事の著者

アイエニウエアソリューションズ株式会社 伊藤 純一(イトウ ジュンイチ)

アイエニウェア・ソリューションズ株式会社 シニアエンジニア。8ビットの時代からコンピュータに触りはじめBASIC、アセンブラ、C言語などを独習。サンマイクロシステムズ入社の年にJavaが発表され、そこでJavaによる金融系、官公庁系のシステム開発を中心に手がける。その後外資系ベンチャーのデジマ・ジャ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング