Sulawesi - ユビキタスコンピューティング(遍在コンピュータ処理)のための インテリジェント ユーザーインタフェース システム
数年前まではウェアラブルコンピュータはたった一人の人により、その人の ためだけに構築されるシステムでした。その器械は所有者個人の好みに合う ようにカスタマイズしてあり、どれか一つの入出力装置を使って多様な 双方向技術を実現しました。これまでのところこれらの器械に使用されて いるインタフェースは、現存するデスクトップ ユーザーインタフェース システムと、斬新な入出力装置の混成物です。
モバイル/ユビキタス環境において使用される、人とコンピュータの インタフェースの理想的な形の一つは、音声認識、身ぶり、マシンビジョン、 および他の情報チャネルを使用して、ユーザーの言うことに耳をそば立たせて、 彼が何をして欲しいのかを理解し、彼の要求を自動的に実行して、 最も適切な時に、適切な形式で、結果を返してくれる形態でしょう。 ユーザーの呼吸数、心拍数、および運動をモニタできる器械 なら、たとえば「私が寝入ったなら<ユーザーを指し示す> ライトを消してください」 と頼めるかもしれません。モバイル装置またはユビキタス環境との、 話し言葉や身ぶりによるこのような対話形式は、多態性および インテリジェント ユーザーインタフェースの部類に該当します。 Sulawesi とは多態性に対応する基本的な開発を可能にする 枠組みです。
Sulawesi システムの設計は 3 つの異なった要素から成り立っています。
システムは well defined API(すべてが正確に定義されている API)を通して 実世界の情報を取り込みます。現時点で実装されているのは、キーボード 入力、ネットワークからの入力、音声認識による入力、ビデオカメラ入力、 GPS入力、および赤外線入力です。入力ではデータの前処理は行わず、 単に未処理のデータをコアシステムに提供して、システムの内部に おいてサービスモジュールがそれを解釈します。
システムのコア部分には基礎的な自然言語プロセッサが含まれており、 これによりセンテンス (sentence: 自然言語で構成された文) を解釈します。 このプロセッサはセンテンスから、呼び出すべきサービスおよび出力を表出する 方法という 2 つの情報を抽出して、それを一連のコマンドに変換します。 サービスマネージャは具体化(instantiation)とサービスの監視をします。 またコマンドに対しシステム障害があった場合なんらかの復元処理をするよう チェックポイントを設けておきます。サービスは、それができる場合には、 (出力)形態に依存しない出力を生成して、処理のため出力レベルに送ります。
出力レベルでは、形態に依存しない結果をサービスから受取り、それを どう表出するかを決定します。その決定には、ユーザーが何を求めたか、 およびユーザーの現在の状況/環境をシステムが どう把握しているかの 2 つの判定基準があります。
ユーザーがある情報を求めるときは、それを視覚的にどう表出して欲しい かも中に含まれています。ユーザーが高速で移動中であると、システムが(入力 センサを経由して)感知したら、結果を前面のスクリーンに表示することは ユーザーの注意力をそらしかねないとシステムは判断します。(車を運転中に そうなったときを思い浮かべてみてください)..このような場合、システムは ユーザーの要求を無視して、もっと適切な表出方法、例えば音声による伝達、 に向け直すでしょう。
音声を認識するとき、人はセンテンスのすべての単語を理解するわけでは ありません。時には聞き漏らしたり、気が散ってセンテンスの全体を聞き取れ なかったりします。人はセンテンスの中の聞き漏らした単語を、その周りの 他の単語から推定して何を言ったかを理解します。いつもうまく いくとは限りませんが、大抵のばあい会話を十分に理解できます。 この種のセンテンス解読法は半自然言語処理法と呼ばれており、少数の 基本的な規則でもって実装されています。下の例では、人が理解できる センテンスを、どのようにシステムが理解できるコマンドに 変換するかを示しています -
could you show me what the time isI would like you to tell me the time
show timetell time
実装されているシステムでは、センテンスを処理、解釈することが できます。自動生成のサービスルックアップテーブルおよび言語変換 テーブルにより、半自然言語が処理されます。
サービス名は(ファイルシステムの制約により)固有なので、単純な仕組み
により、センテンス中の 'time' などのサービスを特定することができます。
言語をあらかじめ、すべて定義してハードコードしておくのは実際的ではなく、
ほとんど不可能です。またそのようなシステムだと多様な状況に対して簡単に
対応できないでしょう。ルックアップテーブルを使用することで、小さくまとまった
効率的な方法により、好みにあったシステムにカスタマイズできるので、
センテンスを理解させるためにコードを再プログラムまたは再コンパイルする
ことはありません。
システムはルックアップテーブルを参照して、'show'
や 'tell'などの単語がセンテンスの
中でどんな意味を持つかを理解し、結果をどの出力に生成するかを決めます。
ルックアップファイル例
|say|speak| |tell|speak| |read|speak| |show|text| |display|text| |EOF|ルックアップテーブルの一番上の見出しは、センテンスの中ではじめて "say" が出てきたら、サービスの結果を "speak" の出力に 生成することを示しています。
ルックアップテーブルを使用することで、センテンスの運用は本質的に 制限されます。システムが理解できるセンテンスを作るためには、以下の 規則を守らねばなりません。
<render type> <service name> <service arguments>
このシステムにより「暗くなったら明かりを消してくれませんか」 というようなセンテンスが使えるようになります。システムは、このセンテンスを 解釈して「照明」サービスを呼び出し、明かりを ON/OFF する照明調節装置 を使って出力を生成します。ここで強調しておかなければならないことが2つ あります。1つ目は器械サイドで自然文に近いセンテンスから意味を推定すること です。これはユーザーが器械に慣れる必要があるとか、複雑なコマンドを覚えるとか、 ユーザーインタフェースを操作する必要があるということではありません。 2つ目は実世界においてある条件が満たされた時に、要求された課題を実行すると いうことです。「暗くなったら」ということは、コンピュータが現在の光の状態を 感知して、ある閾値を下回ったと解釈したとき反応し、照明調節出力に信号を送る ということです。
Sulawesi システムによりこのような対話形式を柔軟にこなすことができます. しかし、このシステムは照明回路を制御する基礎的な機構は持っていません。それは プログラムしなければならない部分です。
オンライン文書およびダウンロードはここです - http://wearables.essex.ac.uk/sulawesi/