(57)【要約】【課題】ユーザーの経歴や動作の情報を考慮してユーザーが支援を必要としているかどうか不明な場合に推論を行いこうした推論に基づきユーザーに支援を行う機能を提供する。【解決手段】インテリジェントユーザーインターフェースシステムは、ユーザーとソフトウェアアプリケーションとの対話を監視し、確率論的推論を適用して特定の機能を使用中または特定のタスクを実行する際にユーザーが支援を必要とする可能性を検出する。さらにこのインテリジェントユーザーインターフェースでは、支援を求めるユーザーからのフリーテキスト質問が入力され、ユーザーの動作及びプログラム状態の推論分析とフリーテキスト質問の推論分析を組み合わせる。推論システムでは、更新可能な豊富なユーザープロファイルシステムにアクセスして常に能力を調べ、ユーザーの能力に応じて提供される支援内容を変更する。【選択図】図２
2008084321.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアプログラムを操作中のユーザーを支援するソフトウェアプログラム用インテリジェントユーザーインターフェース機能は、 ソフトウェアプログラムからイベントを発生させるイベントプロセッサと、 推奨すべきユーザー支援をイベントの発生から決定する推論システムとから構成されていることを特徴とする機能。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理におけるエキスパートシステムに関するものである。特に、ソフトウェアシステムまたはアプリケーションの操作上のユーザーのニーズや好みを推論してソフトウェアユーザーを支援したり、コンピュータシステムやソフトウェアの機能を最適化する自動機械推論のためのシステム及び方法に関するものである。
【背景技術】
【０００２】
グラフィカルユーザーインターフェース分野における著しい進歩によりパーソナルコンピュータユーザーにとってソフトウェアアプリケーションへのアクセスや生産性は改善されたが、操作性が良くなるにつれより高度な機能への要望が高まっている。初めて複雑なアプリケーションソフトウェアに接した場合、ユーザーインターフェースのメニューやツールバーからアクセスできる機能の数が圧倒的に多く、またそれらの機能が複雑であるため、ユーザーは混乱してしまう。ソフトウェア機能に不慣れなユーザーが、所望の機能の起動方法を見つけようとしてあるメニュー項目から別のメニュー項目へ次々とメニューを切り換えるメニューサーフィンという方法をとることがよくある。ユーザーがアプリケーションソフトウェアでタスクを行う方法を一通りまたは複数通り知っている場合でも、効率的な方法を知らないことがある。タスクを行う方法をユーザーが知っている場合に、タスク自体を行うというよりはむしろシステムに対して、先を見越してユーザーのニーズを判断させたり、あるいは、すぐに必要になるアプリケーションを起動させたり、アプリケーションを終了させたり、離れたところにあるサーバーからファイルまたは情報を前もって取り出させておき要求があった場合にそれらのファイルまたは情報をより効率的に利用できるようにするといったタスクを行わせるか、このようなタスクを行うことを提案させたりすることがある。
【０００３】
ユーザーがソフトウェアで作業を行っている最中に最適な動作またはユーザーに提供する最適な情報を自動的に判断するには、ソフトウェアプログラムと協働し、ユーザーのニーズ、意図あるいは目標をユーザーの経歴や動作から判別する能力を備えた演算的方法を開発する必要がある。こうした方法は、ユーザーのニーズをユーザーの経歴や動作に明確にリンクするモデルを生成して利用することで実現できる。
【０００４】
様々なタスクを行っている人の意図を推論するモデル、これらのモデルに基づいてアドバイスや支援を行うモデルの利用について従来から幾つかの研究がなされている。教育分野でのコンピュータの利用について研究を行っている研究者らは、ユーザーモデルを用いて誤解の原因や最適な生徒教授方法を判断するプログラムの構築を試みている。これらのモデルでは、ユーザーが質問に対して行う回答やその他の試みを調べることができる。１９８０年代のコンピュータ処理戦略構想の対象の一つに、多種多様な入力からパイロットの意図を推論し、戦闘機の操縦や戦闘の際にパイロットに最適な支援を行う方法がある。こうした多くの「パイロット支援」プロジェクトでは、パイロットの意図を推論できるシステムをエンジニアは設計しようとしていた。一般に、選択肢の決定や優先順位の設定には、ルールベースアプローチまたは論理アプローチが使用された。
【０００５】
複雑で時間が肝要な[以下、タイムクリティカルと称す]タスクを監視するといったタスクにおけるユーザーの要求事項を確率論的モデルを利用してモデル化することいった研究も従来から行われている。確率論的依存モデルを情報表示の改良へ利用することについて行われた初期の議論の一部はプロジェクト化され、ユーザーをモデル化して航空機パイロットのモニタに表示する情報を制御する実験が行われた。確率論的推論方法は、パイロットのモニタに表示する情報を制御する手段として検討された。この他に、NASAのミッションコントロールセンタのフライトエンジニアのモニタに表示する最も重要な情報を推論する判断論理方法を利用した研究も行われていた。この方法では、ユーザーの専門的知識レベルや判断に必要なスペースシャトルからの遠隔測定データを考慮し、タイムクリティカル特性及びユーザーの考えや意図について行った確率論的モデルを利用する。その他、様々な交換条件を表示してパイロットに最善の情報と説明を表示する研究も行われている。またさらに、コンピュータオペレーティングシステムのコマンドライン入力システムで作業しているコンピュータユーザーを確率論的モデルを用いて支援する方法を研究している研究者らもいる。
【０００６】
論理ルールや論理ルールに基づく発見的方法を用いて、コンテキストと動作に基づいてユーザーを支援するプロジェクトがある例えば、Microsoft Windowsのオペレーティングシステム用に書かれたアプリケーションで利用可能な、一般的な状況感知型ヘルプ機能には、図形オブジェクトを選択して標準的なヘルプコマンド（例えば、キーボード上のファンクションキー）をクリックしてアクセスする。すると、ツールバーのような図形オブジェクトの機能を説明したヘルプ情報が表示される。その他の例としては、Microsoft Excelの製品に使用されているTipWizardシステムがある。このシステムでは、ユーザーによるイベントの発生順序を継続的に調べ、タスクをもっと効率的に実行できるようユーザーを援助する論理ルールが多数使用されている。Luciwらの米国特許5,390,281に開示されているアップルコンピュータ社の研究では、一連の論理ルールを用いて、あるルールについて設けられている条件の数と特定の状況での条件数を比較する発見的方法を用いてタスクを行うユーザーを支援したり、その結果求められたフラクションをルールで示された動作に関する強さとして解釈している。
【０００７】
ユーザーのゴールやソフトウェアによる援助の必要性の曖昧さを考慮するさらに高度な確率論モデルに関する研究もある。例えば、Microsoft Office製品のアンサーウィザード機能では、ユーザーからのフリーテキスト質問中の単語を解釈するために確率論モデルを使用しているが、これではコンピュータソフトウェアアプリケーションによるユーザー支援に焦点を当てている。この製品では、質問文中に見られる一連の関連語と様々な支援の種類との間の不明確な関連性を確率を用いてモデル化している。この方法は、米国特許084,400,797に開示されている。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、プログラムを用いて自立的に検出したユーザーの経歴や動作の情報をはじめとする多数の証拠を考慮してユーザーが支援を必要としているかどうか不明な場合に推論を行う高度な方法は前記従来の方法では用いられておらず、またこうした推論に基づきユーザーに関連する支援を行うようなこともなかった。また、従来のシステムではソフトウェアプログラムとユーザーとの対話を監視して、ユーザーがフリーテキスト質問で直接ヘルプを求める場合にそのフリーテキスト質問中の単語の分析とユーザーの動作およびプログラムコンテキストについて現在行っている分析とを組み合わせるといったことは考慮されていない。
【課題を解決するための手段】
【０００９】
特定の機能を使用中または特定のタスクを実行する際にユーザーが支援を必要とする可能性を自立的に検出し、ユーザーの経歴や動作の情報をはじめとする複数の証拠を考慮して関連する援助を行うインテリジェントユーザー支援機能が望まれている。また、ユーザーがフリーテキスト質問で直接ヘルプを求めてきたらいつでも、フリーテキスト質問中の単語の分析とユーザーの動作とプログラムコンテキストについて現在行っている分析とを組み合わせるインテリジェントユーザー支援機能も望まれている。本発明は、特定の機能を使用中または特定のタスクを実行する際にユーザーが支援を必要とする可能性を自立的に検出し、ユーザーの経歴や動作の情報をはじめとする複数の証拠を考慮して適切な援助を行ういった課題を解決するものである。また、本発明は、ユーザーがフリーテキスト質問で直接ヘルプを求めてきたらいつでも、フリーテキスト質問中の単語の分析とユーザーの動作とプログラムコンテキストについて現在行っている分析とを組み合わせを行うといった課題を解決するものである。さらに、本発明によれば、プログラムにおけるキーデータ構造の状態、図形ユーザーインターフェースと通常の対話を行っている最中にユーザーがマウス制御カーソルで行った一連の入力、支援を求めるフリーテキスト質問に記された単語、注視及びジェスチャー情報といったユーザーの視覚情報、音声情報等の複数部類のイベントを監視し、推論することができる。
【００１０】
本発明は、ソフトウェアプログラムを操作中にユーザーを支援するソフトウェアプログラム用インテリジェントユーザー支援機能を構築する方法を提供するものである。インテリジェントユーザー支援を行うためソフトウェアプログラムの機能を判別する。判別されたプログラム機能に関するインテリジェントユーザー支援作業のための推論モデルが構築される。この推論モデルでは、ユーザーの動作、プログラム状態及び単語等の情報を分析することにより、ユーザーの別の意図、別の目標、あるいは情報の必要性について確率を演算する。特定されたプログラム機能についてのモデル化イベントを定義してインテリジェントユーザー支援を行うために推論モデルが使用できるようにする。モデル化イベントの発生を意味する原子ユーザーインターフェースの対話を判別する。
【００１１】
本発明はまた、低レベルのイベントの組み合わせから高レベルのイベントを発生させることができる総合イベント生成監視システムから構成されている。推論システムと組み合わせることにより、このイベントシステムは、種々の目的のために異なる幾つかのクラスのイベントを監視し、推論することができる。この複数クラスのイベントとしては、プログラム中のキーデータ構造の状態、図形ユーザーインターフェースと通常の対話を行っている最中にユーザーがマウス制御カーソルで行った一連の入力、支援を求めるフリーテキスト質問に記された単語、注視及びジェスチャー情報といったユーザーについての視覚情報、音声情報が挙げられる。また、本発明は、ユーザーとソフトウェアプログラムとの対話を監視し、確率論的推論を適用して特定の機能を使用中または特定のタスクを実行する際にユーザーが支援を必要とするであろうことを検出するシステム及び方法を提供するものである。このシステムでは、ユーザーの動作を継続的に調査し、この結果得られた情報からユーザーのニーズや目標について確率を求める。
【００１２】
実施態様において、ソフトウェアタスクの種々のテキストベースのヘルプトピックまたはデモンストレーションが関連する確率を演算し、ユーザーが支援を得られるようにする。関連するヘルプトピックの確率だけでなく、ユーザーがヘルプを要望する確率をも演算する。この実施態様では、別の形のヘルプをユーザーが必要とする確率を演算し、ヘルプが要求されると演算から求めた情報を用いてリスト内のヘルプトピックの優先順位を決める。ヘルプ要求が無い場合は、ユーザーが支援を求める時期を推論し、演算した申し出の重要性とユーザーが設定した閾値のレベルによっては自立的に支援を申し出る。前記実施態様では、ユーザーがフリーテキスト質問で直接ヘルプを求めたらいつでも、フリーテキスト質問中の単語の分析とユーザーの動作とプログラムコンテキストについて現在行っている分析とを組み合わせる。
【００１３】
本発明は、機能が豊富で更新可能なユーザープロファイルシステムを含む。ヘルプトピックの実施態様においては、推論システムがユーザープロファイルシステムにアクセスしユーザーの能力を継続的に確認し、その能力に基づき行われる支援の内容を変更する。
【００１４】
本発明はまた、特別な時間推論（temporal reasoning）手順からなる注釈付きベイズネットワークを備えた新規の推論システムを含む。あるイベントの発生から時間が経過することに伴う、ユーザーの現在のニーズと目標に対してイベントとの関連性の変化を時間推論機構を用いて考慮する。椎論エンジンは新規で具体的な近似手順を含み、この単一の陽的（explicit）ベイズネットワーク知識ベースを使用しているが、観測を行った過去の時点からの時間的距離にもとづいて可能性情報を変化させる。
【００１５】
また、このシステムでは、ユーザー支援を提供するか否かを判定するために用いる閾値をユーザーが制御して、ユーザー支援により注意がそらされることに関してシステムの動作をユーザーの個人的好みに合わせることができる。最後に、動画キャラクタの形をしたソシアル―ユーザーインターフェース等の複数の図形ユーザーインターフェースと上記方法を統合した。
【発明を実施するための最良の形態】
【００１６】
本発明は、低レベルのイベントの組み合わせから高レベルイベントを生成することができる総合イベント生成監視システムを提供する。推論システムと組み合わせることにより、このイベントシステムは種種の目的のために異なるいくつかの部類のイベントを監視し、推論することができる。この複数部類のイベントとしては、プログラム中のキーデータ構造の状態、図形ユーザーインターフェースと通常の対話を行っている最中にユーザーがマウス制御カーソルで行った一連の入力、支援を求めるフリーテキスト質問に記された単語、注視及びジェスチャー情報といったユーザーの視覚情報、音声情報が挙げられる。また、本発明では、ユーザーの動作の組み合わせから高レベルのイベントを生成する総合イベントプロセッサを急速に展開することができる新規なイベント特定ツールを採用している。
【００１７】
本発明はまた、特別な時間推論手順を含む注釈付きベイズネットワークを備えた新規の推論システムを含む。推論エンジンは新規な特定の近似手順を含み、この手順では単一の陽性ベイズネットワーク知識ベースを使用しているが、観測を行った過去の時点からの時間的距離にもとづいて可能性情報を変化させる。前記知識ベースは時間的ダイナミック情報を有する特別な注釈を含み、また前記推論エンジンは時間の経過に伴う変化を取り扱うための特別な手順を含む。
【００１８】
また本発明は、コンピュータソフトウェアユーザーを支援する最善の方法を判断する確率論的論理推論用インテリジェントユーザー支援機能及び方法を提供するものである。本発明は、ユーザーの動作、プログラム状態、及び単語の情報を分析してユーザーの意図、目標、または情報の必要性について確率を演算する推論モデルを作ることでインテリジェントユーザー支援機能を構築する方法を提供するものである。本発明の実施例において、ユーザーとソフトウェアアプリケーションとの対話を監視し、確率論的推論を適用して特定の機能を使用中または特定のタスクを実行する際にユーザーが支援を必要とするであろうことを検出する。さらに本発明の実施例においては、支援を求めるユーザーからのフリーテキスト質問が入力され、ユーザーの動作及びプログラム状態の推論分析とフリーテキスト質問の推論分析を組み合わせる。また本発明の実施例においては、新規なユーザープロファイルシステムがユーザーの能力に関する情報を格納する。この情報は、最初にユーザーからの入力またはユーザーとの対話から求められ、現在実行中のユーザーの動作の結果に応じて更新される。この持続的なユーザープロファイルにより推論分析時にはユーザーに能力情報が提供され、さらにアプリケーション終了後に指導情報をユーザーについてカスタム化することもできる。
【００１９】
また、本発明の実施例においては、ユーザーが援助を求める時期を推論し、演算した申し出の重要性とユーザーが設定した閾値のレベルによっては自立的に支援を申し出る自動支援推論を行う。ユーザーがフリーテキスト質問で直接ヘルプを求めた場合、フリーテキスト質問中の単語の分析がユーザーの動作について現在行っている分析とを組み合わせられる。
【００２０】
第１図は本発明を実施するのに適したコンピュータシステム１０のブロック図である。第１図に示したコンピュータシステム１０は単なる例示であり、分散型システム、マルチプロセッサシステム、携帯装置などのその他の構成のコンピュータシステムでも本発明を実施できることは当業者にも分かるであろう。前記コンピュータシステム１０は、プロセッサ１２と入出力システム１４で構成されている。入力装置とは例えばカメラ１５、キーボード１６、マウス１８、マイクロフォン２０、ポインタ、その他の入力装置などである。出力装置とは例えば表示スクリーン２２、プリンタ２４、スピーカ２６、その他の出力装置などである。さらにコンピュータ装置１０は、音声システムをマイクロフォン２０及びスピーカ２６とを接続する音声インターフェース２７を具備している。コンピュータ装置１０はさらに、視覚認識追跡システムを、カメラ１５、または赤外線リフレクタまたは３次元超音波センサを備えたその他の専用ヘッドギヤと接続する視覚認識追跡インターフェース２９を具備している。また、コンピュータ装置１０は、コンピュータをローカルエリアネットワークまたはインターネットのようなワイドエリアネットワークであるネットワーク３０と接続するネットワークインターフェース２８を具備している。さらに、アプリケーションプログラムやインテリジェントユーザー支援機能を格納するシステムメモリ３２及び耐久性記憶装置３４をコンピュータ装置１０は具備している。該耐久性記憶装置とはディスケット、CD-ROM、ハードディスクドライブ、ファームウェアなどである。前記コンピュータ装置１０は、オペレーティングシステム３６の他にスプレッドシートアプリケーションプログラム３８、ワードプロセッシングアプリケーションプログラム４０あるいはその他のアプリケーションプログラム４２を備えている。システムバス４４はプロセッサ１２、システムメモリ３２、耐久性記憶装置３４、入出力システム１４を相互に接続する。インテリジェントユーザー支援機能をアプリケーションプログラムに直接組み込んだり、システムライブラリまたはオペレーティングシステムの一部をなす独立機能として構成してもよいことは当業者にも分かるであろう。
【００２１】
インテリジェントユーザー支援機能（IUAF）の概要
複雑な機能にアクセスする際のユーザーインターフェースの問題はソフトウェア操作性の研究で指摘でき、またこうした研究によりユーザーインターフェースを簡略化し、より直感的なものにして機能へのアクセスを図ることができる。しかしながら、ユーザーインターフェースが向上すると、インターフェースを介して表示される機能の数を減らしたりおよび/または全ての機能を簡略化した形でのみ表示しない限りは、不慣れなユーザーの目から数多くの複雑な機能を隠したり、複雑な機能を簡略にするようなことはできない。
ソフトウェアプログラムの操作性研究の副産物として、ユーザーが特定のソフトウェアプログラムの基本的な機能を使用するのが困難であると感じた時に、そのユーザーの動作を判別することができる。本発明は、ユーザーが困難と感じる場合または自動的な動作があればユーザーが恩恵を受けるような場合のユーザーの動作を観測理解することで、特定のソフトウェアプログラム用インテリジェントユーザー支援機能を実現するプロセスを提供するものである。
【００２２】
第２図は、ソフトウェアプログラム用インテリジェントユーザーインターフェースの生成方法を示す図である。プロセスの第１ステップ５０では、ユーザーが困難を感じるかまたは自動支援があればユーザーが恩恵を被るような特定のソフトウェアプログラムの基本的機能を判別し、またユーザーが困難を感じた場合または支援を望んだ場合にユーザーが取った動作を判別する。このステップを実現する一つの方法としては、特定のソフトウェアプログラムの操作性の調査でユーザーが困難な経験をした場合に、ユーザーが取った動作を観測及び記録する方法がある。例えば、スプレッドシートプログラムの操作性を調査している時に、スプレッドシートと対話しているユーザーがスプレッドシートのデータの図形チャート（例えば、バーチャート）を更新するよう頼まれるかもしれない。もし、そのユーザーが作成済みのバーチャートを変化または修正した経験がない場合には、次のような動作を取る可能性がある。最初に、グラフ上までマウスポインターを移動させマウスボタンをダブルクリックしてバーチャートを選択する。次に、いったん操作を中断して、内省あるいは次のステップを検索しながらグラフの所でしばし考え込む。この動作の観測結果は、ユーザーがスプレッドシートのグラフ機能を使用するのが難しいと感じている印として使用できる。
【００２３】
基本的機能を使用するのが難しいことが判別されると、特定された基本機能に関するインテリジェント支援を提供する作業のためのモデルを次のステップ５２で作成する。モデルの１つの種類として、観測可能な証拠、中間変数、及び対象となっている仮説の間の確率論的関係を表すベイズネットワークのような相互依存変数のネットワークがある。ベイズネットワークは非輪型有向グラフであり、このグラフではノードがランダム変数を表し、ノード間を結ぶ弧がランダム変数間の確率論的依存性を表している。ベイズネットワークは一組の変数に関する結合確率分布を表しており、ベイズネットワークで走るベイズ推論アルゴリズムと呼ばれている演算手順が開発されている。これらのアルゴリズムは、状態値の変動を与えられたベイズネットワークにおいて複数の変数状態にわたる確率分布を更新する。状態変動の例は、世界における観測可能な状態を観測した後でその状態を表す変数状態に割り当てらる新規の値である。ベイズネットワークの説明は、「インテリジェントシステムにおける確率論的推論」(Judea Pearl，1 Morgan Kaufmann Publishing Inc.，San Mateo，1988)を参照のこと。
【００２４】
ノードの一部は観測可能な証拠を示す変数であり、他のノードは、対象になっている自動的判断に使用されるであろう仮説が観測不能または観測が困難であることを表す。第３図には単純な２変数ベイズネットワークが示されている。このネットワークは、ユーザーが支援を必要とする状態６８にある場合と複数のメニュー検索の状態６９（すなわち、進歩のない「メニューサーフィン」を行っている状態）にある場合との間の依存性を表している。メニューサーフィンは検出できるが、ユーザーが支援を必要としているかどうかは容易に観測できない。複雑なソフトウェア機能に対するユーザーの苦労をモデル化する場合、証拠ノードは、ある目標へ向けて動作を行っている時またはソフトウェアプログラム機能について困難に直面している時のユーザーの挙動を表す。一方、仮説ノードは、ユーザーのゴール、即ちプログラム機能を用いてタスクを完了させるのに必要な特定の支援を表す。例えば、グラフ生成コマンドを選択した後グラフ生成中にユーザーが一時停止を行う場合、証拠ノード変数はコマンド選択後ユーザーが一時停止を行ったことを表すことになる。また、仮説ノード変数は、グラフ生成コマンド選択後ユーザーが一時停止を行ったと仮定してグラフ生成時にユーザーが支援を必要とするという仮説の確率を表す。ベイズネットワークを用いることは、ユーザーの動作と仮説の間の予測不能な関係をモデル化する一つの方法である。決定ツリーやルールベース推論のようなその他のモデルも使用できることは当業者には分かるであろう。
【００２５】
いずれのモデルの場合も、次のステップ５４では証拠変数とそれに対応するモデル化イベントを定義する。この証拠変数とモデル化イベントは、ユーザーがソフトウェアプログラムの基本的機能を使用しようとするときに経験する様々な苦労あるいは支援の必要性を差別化するもので、これらはユーザーがソフトウェアと対話している時に検出できる。インテリジェント支援機能用ベイズネットワークを構築する上で必要となる主な作業は、観測されるであろう証拠変数の定義付けと、対象となる仮説を表す変数と前記証拠変数との間の確率論的関係を記述することである。こうしたイベントは、複雑な一般的ソフトウェア機能、特に、アプリケーションソフトウェアの複雑な特定ソフトウェア機能を使用する時にユーザーが経験すると思われる様々な困難性や必要性を検出し、区別する上で役に立つものである。
【００２６】
ユーザーがいつどのような支援を必要とするかを特定する上で有用である複数種類の観測として、検索の証拠(例えば、マルチメニューの検索)、内省の証拠(例えば、コマンド入力の突然の一時停止や入力動作が遅くなるような状態)、注目の証拠(例えば、オブジェクトの選択やオブジェクト上での一時停止)、望まざる動作結果の証拠(例えば、コマンド/アンドゥ、ダイアログのオープン後や何もせず取り消す動作)、効率の悪いコマンドシーケンスの証拠、現在作業しているファイルの構造的及び意味的内容の証拠、及び特定のゴールのための一連の動作の証拠などが挙げられる。さらに、プログラム状態およびコンテキスト、ユーザーの能力、ユーザーが再検討した情報履歴などの証拠も有用である。
【００２７】
ベイズネットワークを展開したり観測可能な変数の指定をする場合には、ユーザーの動作を検出するのに利用するインテリジェントユーザー支援機能の特質と定義を考慮することが肝要である。ソフトウェアシステムまたはアプリケーションから利用できる基本イベントを考慮する必要がある。システムによってその発生が検出されるモデル化イベントは観測可能な各変数に対応するようになっている。これらのモデル化イベントは、ソフトウェアプログラムが生成する基本的すなわち原子的イベントの点から定義付けしなくてはならない。
【００２８】
実行時には、ベイズネットワークでモデル化された観測可能な証拠変数に対応するモデル化イベントを推論システムに送り、そこで証拠変数を特定の値に設定する。このインテリジェントユーザー支援機能は、現在同時に発生している複数のモデル化イベントを考察したり、それらのイベントが発生した時点を考察したり、こうした監視情報を利用してベイズネットワークにおける観測変数の状態を更新できる。観測変数の状態とタイミングに関する動的に変動する設定値を備えたベイズネットワークを推論システムで分析し、対象となっている異なる仮説の可能性を更新する。こうして得た確率は、動作やユーザーに提供する表示情報を判断する際に利用される。
【００２９】
ベイズネットワークの証拠変数とそれに関連するモデル化イベントを定義付けするタスクの完了後、次にステップ５６へ進んで各モデル化イベントの発生を表す原子イベントを特定する。モデル化イベントは、ユーザーの動作またはプログラム状態に関連する単一原子イベントの発生によって定義することができ、１つの原子イベントまたは複数からなる一連の原子イベントを表すものであってもよい。例えば、（１）棒グラフをユーザーが選択し、（２）次に１０秒以上グラフの所で考え込んでいるといった二つの原子イベントは、ベイズネットワークの証拠変数に対応する単一モデル化イベントに合成することができる。これらのイベントは組み合わされて一つのモデル化イベント、すなわちSel_Chart_Pauseが生成される。このイベントは、スプレッドシート上でデータを用いてグラフを更新することにユーザーが苦労していることを表している。
【００３０】
ベイズネットワークの変数は二値で２つの状態（例えば、有り、無し）をとってもよいし、あるいは複数の状態をとってもよい。複数の状態をとる場合は、観測に対応するいずれか一つの状態に変数を設定する。観測可能な二値変数を説明しているが、それ以上の値の変数にも本発明の技術を適用できる。モデル化されたイベントを観測し、観測したイベントを推論システムへ送った場合、このイベントに対応する証拠変数を、イベントが発生した時間に「有り」に設定する。ベイズネットワークで確率論的推論を行う場合はいつでも、モデル化イベントで設定可能な全ての変数の状態を考慮する。推論の結果、対象となる仮説変数の変動が認められる。例えば、Sel_Chart_Pauseが発生し、グラフ関連タスクでユーザーが苦労している確率を更新するその他の観測が行われたと仮定すると、スプレッドシート上でデータによりグラフを更新するのに苦労しているとの仮定に割り当てられる確率が増加するであろう。
【００３１】
モデル化イベントのその他の例としては、一組のグラフ関連コマンドのうちいずれか一つのコマンドに続いてアンドゥコマンドを選択するようなユーザーの動作がある。一組のグラフ関連コマンドにおける原子またはモデル化イベントのいずれか一つのイベントが発生し、その後アンドゥコマンドが入力されるような場合は、Chart_Cmd_Undoモデル化イベントとして構成することができる。このモデル化イベントが対応証拠ノードをベイズネット内に設定すると、スプレッドシート上でデータによりグラフを更新するのにユーザーが苦労しているだろうという仮定に割り当てられた確率が増加するのを見ることができるであろう。例えば、上記実施例に続いてモデル化イベントSel_Chart_Pauseの原子イベントとして、（１）棒グラフを選択し、その後（２）休止が予め設定した最低時間（例えば、１０秒）続いた場合、ユーザー動作が中断したことが示される。
【００３２】
原子イベントが直接モデル化イベントとなることもある。例えば、Del_Chartはベイズネットワークの観測変数に対応するモデル化イベントでもあるグラフの削除を表す原子イベントである。
【００３３】
又、モデル化イベントはアプリケーション内のデータ構造の常態についての状況的情報（contextual information）を含む。例えば、Chart_Viewはグラフは現在表示中であることを意味している。これはグラフ化の支援がユーザーに関係がある確立を増加させる。
【００３４】
フリーテキスト質問中に現れる単語も原子イベントである。高レベルのモデル化イベントは、ユーザーの質問に含まれる所定の一組の単語のうち１つの単語が現れることと定義できる。ユーザーが「このグラフの色を変えるにはどうしたらよいのか？」という質問をした場合は、モデル化イベントすなわち質問文中で認識される一組の単語（例えば、この例の場合は一組の単語には「変更」、「変換」、「更新」という語がエレメントとして含まれる）の中の１つの単語が推論システムへ送られる。「色」や「グラフ」といった質問文中のその他の重要な単語も、前回モデル化された同様な単語の組の中にあると認識される場合にモデル化イベントとして検出される。これらのモデル化イベントは、「変換」という単語と同様に分析される。
【００３５】
様々な形でソフトウェアプログラムを使用しても変わることのないモデル化イベントのクラスをプロファイル情報として定義する。これらのモデル化イベントは、ユーザーの能力あるいは能力の欠如を示すとともにユーザープロファイルデータベースに記憶されるイベントを含む。ユーザープロファイルに記憶されるモデル化イベントは、前回ユーザーが特定のアプリケーション機能を使用した時の経験または特定のタスクの実績、あるいは過去の指導教材を再度参照するといったユーザーに関する付加的な情報を提供するものである。これらのイベントは、ベイズネットワークに記され、推論システムで仮説評価の調整に使用される変数に相当する。
【００３６】
その他の種類の原子イベントとしては、ユーザーがコンピュータの前に居るかどうかを近接検出器で検出した情報、注視しているユーザーの焦点、ユーザーの表情あるいはユーザー身振りといったユーザーの視覚的特徴をビデオカメラや視覚認識追跡システムで判別した情報、音声認識システムで検出及び処理するユーザーの発話に関する情報などが挙げられる。
【００３７】
モデル化イベントの各イベント毎に原子イベントとそれらの適当な組み合わせを特定した後、次のステップ５８でソフトウェアプログラム用イベントモニタを構築する。このモニタは、ユーザーインターフェースの動作を調べて推論分析入力用原子イベントを抽出する。こうして構築したイベントモニタをソフトウェアアプリケーションにと一体化し、ステップ６０でこのソフトウェアアプリケーションをインストールしてインテリジェントユーザー支援機能を実現する。イベントモニタはアプリケーションソフトウェアに組み込んでもよいし、システムライブラリやオペレーティングシステムの一部を構成する独立部材として構成してもよいことは当業者には分かるであろう。
【００３８】
インテリジェントユーザー支援機能を完成するため、イベントプロセッサは原子ユーザーインターフェース動作からモデル化イベントを生成する(ステップ６２)。次に、モデルから知識ベースを構築する(ステップ６４)。最後のステップ６６ではモデルから推論エンジンを構築し、モデル化イベントが発生すると知識ベースを用いて必要なユーザー支援を決定する。推論手順を備えたベイズネットワークは知識ベースと推論エンジンを兼ねる。
【００３９】
第４図は上記方法を用いて構成されたインテリジェントユーザー支援機能の実施例の構成部材の機能ブロック図である。インテリジェントユーザー支援機能は、ソフトウェアプログラムと対話しているユーザーの行動やイベントを監視するよう組み込まれたソフトウェアプログラム７２を備えている。イベントプロセッサ７４は行動またはイベントを周期的に精査し、それら行動またはイベントが単独または組み合わせによりベイズネットワークの観測可能変数を表しているかどうかを判断する。推論システム７６ではモデル化イベントを分析してユーザーがどのような支援を必要とするかについて複数の仮説をたて、それらを評価する。こうしたイベントにより、特定のアプリケーションの使用または特定のタスクの遂行においてユーザーが苦労しているという確率が増減する。
【００４０】
また、推論システム７６はユーザープロファイルシステム７８にアクセスして能力を判断し、ユーザーの能力に応じて行われる支援を変化させる。ユーザーの経歴、特定の分野における能力を示す主要なタスクの遂行の成功、ユーザーが前に見たヘルプはユーザープロファイルシステム７８に記憶される変数の一部である。
インテリジェントユーザー支援機能コントローラ７９は制御モード設定に基づいて推論システム７６に推論分析サイクルを開始させる。推論サイクルは、ユーザーがヘルプを求めてきた場合、特別なイベントが一回以上発生した場合に開始するようにしても良く、単純に一定のクロック周期で発生するものでも良く、あるいはこれらのモードの組み合わせでもよい。特別なイベントの発生により、推論サイクルを開始するあるいは一定の周期で推論サイクルが発生するように制御モードを設定されている場合、算出した支援申し出の重要度がユーザーが設定した自律支援閾値を越えた時に推論システム７６は自律的にユーザーにヘルプを表示する。ユーザーがヘルプを求めた時に推論サイクルを開始するよう制御モードが設定されている場合、ユーザーがフリーテキスト質問を行うとユーザーの動作及びプログラムコンテキストの推論分析がフリーテキスト質問中の単語の分析と組み合わされる。
【００４１】
図示されている機能ブロックを個別構成要素で構成したり、あるいは機能ブロックのいくつか又は全てを単一構成要素で構成してもよいことは当業者には分かるであろう。例えば、個別ライブラリを設けて推論システムの機能とイベントプロセッサの機能をこのライブラリにまとめてもよい。このような構成とすることにより、推論システムは前回の質問以後の全ての原子イベントについて周期的にインストールプログラムの照会を行ったり、あるいは最も新しく発生した所定個数のイベントに対してのみ照会を行う。次に、推論システムは特定のソフトウェアプログラムについてのモデル化イベントデータベースにアクセスし、原子イベントの中に推論分析入力用モデル化イベントがあるかどうかを判断する。ユーザーがフリーテキスト質問で直接ヘルプを求めてきた時以外は、ユーザーの動作とプログラムコンテキストについて現在行っている分析だけが含まれるように推論分析を実行することは、当業者には分かるであろう。この場合、ユーザーがフリーテキスト質問で直接ヘルプを求めてきた場合に、フリーテキスト質問中の単語の分析だけが行われるように推論分析を実行してもよい。質問文中の単語やインターフェースの動作のように異なるクラスのモデル化イベントを個別に分析し、異なる分析結果に付与される重み付けを調整する能力と前記個別分析の結果とを組み合わせることができることは当業者には分かるであろう。
【００４２】
インストール済みプログラム
ソフトウェアプログラムまたはライブラリは、オペレーティングシステムプログラムやアプリケーションプログラムを含むインストール済みプログラムである。インストール済みプログラムの例として、アプリケーションプログラムについて説明する。一般的なソフトウェアアプリケーションにはユーザーインターフェースとアプリケーション手順が組み込まれている。キーボードのキーを押したり、マウスのボタンをクリックするなど入力装置を用いてユーザーがソフトウェアアプリケーションと対話すると、こうしたユーザーの動作をオペレーティングシステムがイベントに翻訳し、このイベントはアプリケーションプログラムへ送られる。アプリケーションプログラムのユーザーインターフェースはこうしたイベントを処理し、その処理結果はそれらイベントに応答するための適当なアプリケーション手順へと送られる。特定のアプリケーション用インテリジェントユーザー支援機能のために構成されているイベントモニタは、第５図に示すようにアプリケーションソフトウェアに組み込んでもよい。このような構成の場合、イベントモニタ８４はユーザーインターフェース８２からアプリケーション手順８６へ転送されるイベントを監視するとともにそれらのイベントを呼出インターフェースを介してイベントプロセッサへと転送する。イベントモニタは、システムまたはアプリケーションライブラリの一部を構成する独立構成要素として実現し、アプリケーションプログラムを周期的に呼び出して前回の周期以降の全てのイベントをイベントモニタに送らせるようにしてもよい。あるいは、最も新しく発生した所定数のイベントだけをアプリケーションプログラムが送るように要求することもできる。あるいは、イベントモニタをオペレーティングシステムの一部に組み込んでもよい。この場合、オペレーティングシステムからアプリケーションプログラムへ送られるイベントをイベントモニタが選別し、選別したイベントをイベントプロセッサに送る。
【００４３】
第６図は、ヘルプトピック実施例と同様のインストール済みスプレッドシートアプリケーションプログラムの機能ブロック図である。ユーザーが入力装置を用いてスプレッドシートアプリケーションプログラムと対話すると、オペレーティングシステムはユーザーの動作をイベントに翻訳し、このイベントをスプレッドシートアプリケーションプログラムヘ転送する。例えば、ユーザーがメニュー項目までマウスのポインタを移動し、メニュー項目のところでマウスボタンをクリックする。すると、オペレーティングシステムでは、ユーザーの動作をユーザーがアプリケーションメニューの項目をクリックしたというイベントへ翻訳し、そのイベントをスプレッドシートアプリケーションに送る。イベントはインストールスプレッドシートアプリケーションプログラム９０のユーザーインターフェース９２に入力され、さらに適当なスプレッドシートアプリケーション手順９６へ送られて処理される。インターフェース９２からアプリケーション手順９６へ送られるイベントを監視するスプレッドシートイベントモニタ９４は入力されたイベントを認識し、その複製をイベントプロセッサへと送る。
【００４４】
イベントプロセッサ
イベントプロセッサとは総合監視イベント生成システムであり、低レベルのイベントを組み合わせて高レベルのイベントを作成することができる。このイベントプロセッサには高度な推論能力は不要である。しかしながら、様々な決定論的及び確率論的イベント前処理方法を用いてイベントの任意の捨象（abstraction）や集合体を処理したり、直接可能性として解釈できるものなどの数値情報へ様々な数学的関数を用いて変換することもできることは当業者には分かるであろう。
【００４５】
イベントプロセッサが一組の論理イベントを生成するため、ルールベースまたは確率論的推論エンジンではイベントプロセッサの出力を利用できる。第７図はイベントプロセッサの構成要素を表すブロック図である。インストール済みプログラムのようなイベントソース１００は原子イベント即ちユーザーの入力装置との対話をイベントプロセッサへと転送する。インストール済みプログラムは、イベントプロセッサに対するイベント情報を指定する呼出インターフェースを使用してもよい。これらのイベントが入力されると、各イベントの時刻を記録し、それらのイベントをシステムメモリのようなローカル記憶装置１０２に記憶する。このとき、時刻あるいは先入れ先出しの順番に配列された記録データベースまたは円形有限待ち行列をはじめとする様々な種類の情報記憶データ構造の中のいずれかのデータ構造の形でイベントを記憶する。
【００４６】
モデル化イベントコンポーザー１０４はローカル記憶装置１０２に記憶されている原子イベントを周期的に調べてモデル化イベントに構成可能な１または複数の原子イベントを検索する。通常この検索は、推論システム７４が推論サイクルの始めに開始するのであるが、新規原子イベントが入力された時または特別なトリガーイベントが入力された時などに推論サイクルの合間にモデル化イベントコンポーザー１０４がイベントの生成を行うこともできる。次に、モデル化イベントコンポーザー１０４は、イベント仕様に規定されているイベント生成ルールに従って原子イベントからモデル化イベントを生成する。モデル化イベントデータベース１０８内の原子イベントから作成した各モデル化イベントをモデル化イベントコンポーザー１０４に格納する。
【００４７】
インテリジェントユーザー支援機能を用いているプログラムの各々に対してモデル化イベントデータベースを作成できることは当業者には分かるであろう。例えば、コンピュータシステムに常駐しているインストール済みアプリケーションプログラムの各々についてモデル化データベースを設けることが可能である。さらに、プログラムを立ち上げたり終了するような共通システムあるいはアプリケーションのイベントを含む別個の総合モデル化データベースを追加しても良いことは当業者には分かるであろう。この場合、推論サイクル期間中に、推論システムは総合モデル化イベントデータベースやアクティブプログラムのモデル化イベントデータベースの両方にアクセスできる。
モデル化イベントデータベースの一例において、該データベースのモデル化イベント毎に単一レコードが設けられている。インテリジェントユーザーインターフェース付きプログラムを起動すると、ユーザープロファイルに予め記憶されている永続的イベントを用いてモデル化イベントデータベースを初期化する。コンポーザーがモデル化イベントを生成すると、そのイベントのレコードがモデル化イベントデータベース内で更新される。このモデル化イベントデータベース内のモデル化イベントレコードフォーマットの一例を以下に示す。
【００４８】
【表１】
2008084321.tif 000003
【００４９】
発生回数や発生率のカウントに使用するフィールドのうち前回及びカウントのフィールドは、全ての永続的なモデル化イベントについてユーザープロファイルデータベースに記憶されている。プログラムを初期化すると、これらのフィールドはユーザープロファイルデータベースからモデル化イベントデータベース内の対応するモデル化イベントへそれぞれロードされる。
【００５０】
モデル化イベントが関連性を有するのは比較的短時間のあいだである。モデル化イベントが関連性を有する期間をそのイベントの範囲[horizon]と称す。この範囲はイベント毎に異なるもので、ユーザーの動作から生成されるイベントの範囲の大半は６２の範囲が適している。範囲の期間は推論システム７６でモデル化イベントが考慮される範囲を決定する。
【００５１】
デフォルトのシステムまたはアプリケーションの範囲または特定の範囲を各モデル化イベントに割り当てる。モデル化イベントデータベース１０４へアクセスしたり更新する場合、前記範囲時間を越えてモデル化イベントデータベース１０４に常駐しているモデル化イベントは廃棄される。しかしながら、モデル化イベントデータベース１０４からそれらのモデル化イベントを破棄する前に、永続的なモデル化イベントをユーザープロファイルに記録する。一般に推論エンジン７６とユーザープロファイルはイベントシンクとして機能し、モデル化イベントデータベース１０４にアクセスしてモデル化イベントレコードを抽出する。しかしながら、これには例外がある。プログラム初期化の時、ユーザープロファイルに予め格納されている永続的イベントを用いてモデル化イベントデータベース１０４を初期化すると、結果としてプログラムの動作が修正される。
【００５２】
イベントシステム指定ツール
ソフトウェアプログラムのインテリジェントユーザー支援ツールを生成する期間に、イベント指定ツールは特定のアプリケーションプログラム用のモデル化イベントコンポーザーとモデル化イベントデータベースを短時間に作成できる。アプリケーションのようなプログラムにより利用可能となった原子イベント（例えば、１０秒以内に複数のメニューを開き何ら行動を取らない場合やスプレッドシートにカーソルが位置しているような場合）からモデル化イベント（例えば、メニューサーフィン）を構成する言語を開発した。この言語は、原子イベントを高レベルモデル化イベントに生成できるだけでなく、原子イベントを直接モデル化イベントとして利用できる。また、モデル化イベントをさらに組み合わせて他のモデル化イベントを生成することができる。具体的には、前記言語は原子イベントをブール組み合わせで処理したり、ブールイベントを組み合わせて一時性の概念を有する演算子付きモデル化イベントを生成することができる。ベイズユーザーモデルを構築改良しながらモデル化イベントとそれらの定義を生成できるようイベント指定ツールを直接ベイズネットワークモデル化ツールにリンクできる。
【００５３】
第７図はモデル化イベントコンポーザー１０４とモデル化イベントデータベース定義１１８のコード生成に使用されるイベントシステム指定ツール１１０のブロック図である。モデル化イベントを定義するステップで生成された各モデル化イベント定義１１２を用いてイベント言語１１４のイベントを特定する。このイベント言語１１４はイベント言語翻訳プログラム１１６へ入力され、そこで仕様のイベント言語による記述はＣのような高レベル言語コードに翻訳されてモデル化イベントコンポーザー１０４が生成される。また前記イベント言語翻訳プログラムは、モデル化イベントデータベース定義も生成する。またこの処理プロセスの途中では、イベント言語翻訳プログラム１１６がデータベース構造を用いながらシステム中のモデル化イベントデータベース定義１１８から直接モデル化イベントデータベース１０６を生成し、モデル化イベントの状態情報を記憶する。
【００５４】
イベント言語はブール集合演算子から構成されており、連続や中断といった時間的動作も付加されている。イベント指定言語で書かれた個別テキストモジュールにモデル化イベントを定義付けする。しかしながら、モデル化イベントは特別な定義フォームを用いても作成できる。テキスト定義は、モデル化イベント毎に名前付きステートメントブロックとして生成される。この定義には原子イベントのレベルが含まれており、一または複数の原子イベントでの動作を示す。イベント定義言語のモデル化イベント宣言の一般的なフォームは次の通りである。
【００５５】
declare ModeledEventName
｛ 
<expression list>
｝
Dwell_on_Chartモデル化イベントのモデル化イベント宣言の例は次の通りである。
declare Dwell_on_Chart
｛
（and（Select_Chart，Dwell((5,s))
｝
【００５６】
翻訳プログラムは、イベント定義言語の構文ステートメントをモデル化イベントの名称Dwell_on_Chartへ翻訳し、そのイベント名称をレコードに追加してモデル化イベントデータベースを更新し、全てのレコードフィールドを初期化する。モデル化イベントは他のモデル化イベントからなる複数のイベントを複雑に合成したものであったり、あるいは原子イベントの名称を単に変えたものにすぎないこともある。イベント合成言語は、原子イベント、モデル化イベント、算術演算、論理演算子の論理的な組合わせを伴う挿入式をサポートしている。各基本演算を実行し、その中間結果をイベントとして処理すると同様の特性を備える。
【００５７】
イベント言語は論理的かつ理論的集合演算子や時間及び算術演算子からなる。
演算子は、特定のイベントや一連のイベントに基づいて一般化した定義付けがなされたイベントを定義付けできる。例えば、高レベルイベントはElementのような演算子で抽象化または一般化することで生成できる。
【００５８】
Element({Xi,...Xn})：一連のイベント{Xi,...Xn}のエレメントから抽出されるイベントが発生する。こうした一連のイベントは特定クラスのイベントと定義できる。
【００５９】
時間（temporal）演算子は一定期間の一連のイベントを定義付けできる。時間（temporal）間隔の幅は、ユーザーの動作の回数、時間、又はユーザーの動作と時間の関数として定義可能な時間の測定値として測定できる。例えば、それは、モデル化イベントをScaled_secondsすなわちユーザーの作業速度で秒を変倍して平均的ユーザーよりも作業速度の早いまたは遅いユーザーに時間定数を適合させた時間の測定値を定義するのに有用である。時間演算子を指定する場合、時間間隔の測定値のディメンションは、時間ディメンションｄを値（例えば、コマンドの場合はｃ、秒の場合はｓまた変倍秒の場合はss）
で指定して表示する。有用な時間演算子の一部を以下に示す。
【００６０】
Rate(x,t,d)：ディメンションｄの期間ｔの間に少なくともx個の原子イベントが発生する。
Ensemble_N({xi,...xn},t,d)：ディメンションｄの期間ｔの間に一組のイベント{xi,...xn}のうち少なくともN個のイベントが発生する。
【００６１】
All({xi,...xn},t,d)：ディメンションｄの期間ｔの間に一組のイベント{xi,...xn}の全てのイベントが発生する。
Sequence({xi,...xn},t,d)：一組のイベント{xi,...xn}の中で指定されたイベントは全てディメンションｄの期間ｔの間に発生する。
Tight({xi,...xn},t,d)：一組のイベント{xi,...xn}の中で指定されたイベントは全てディメンションｄの期間ｔの間に発生する。
Dwell(t,d)：ディメンションｄのｔ秒間あるいは変倍ｔ秒のあいだにユーザーが何も行動を起こさない。
【００６２】
さらに、モデル化イベントの発生から経過時間の増加に対するモデル化イベントとベイズネットワーク内のその他の変数との間の確率論的関係の永続性や動特性[dynamics]を定義する変数を指定できる。一般に、イベントとベイズネットワーク内の他の変数との確率論的関係がイベントの発生から経過時間の増加とともにどのように変化するかを記述する時間的関数を提供できる。
【００６３】
すなわち、前記言語は、p(Eito|Hj,tp)、即ち仮説Ｈjが真であることを条件として、が過去の時間toで発生したイベントEiの現時点pでの確率は、前回イベントが発生してからの時間tp=theの増加とともに変化する。
【００６４】
時間的動特性を表すのに役立つ特徴とは範囲（horizon）と衰退である： 範囲：イベントが真になった時点t=toを開始点とし、確率論的関係がp(Eito|Hj,tp)のまま変化しない時間的期間。現時点tpと最も最近イベントが発生した時点toとの差分が範囲以内であれば確率論的関係は変化しない。
【００６５】
動特性：範囲に達した後のp(Eito|Hj,tp)とp(Eito|not(Hj),tp)を記述する時間依存関数。動特性は、これらの確率の割合で定義される可能性比（likelihood ratio）の変化の記述によって要約できる。この関数は、イベントが真になった時点が現時点tpから徐々に離れるにつれて初期の確率p(Eito|Hj,tp)とp(Eito|not(Hj),tp)がどのように変化するかを表す。これらの確率はある時点でp(not(Ei)|Hj,tp)とp(not(Ei)|not(Hj),tp)に収束し、またtp=toの時点の初期可能性比は後者の確率の比に収束する。したがって、前記関数は、確率または可能性比をtp=toの時点の初期可能性比からイベントが存在しない場合の可能性比へと減少させるものと評価できる。
【００６６】
確率は、（ｔ＿０の時点における）初期確率と、発見がないことに関連する確率と、現時点ｔpの時間とを引数として扱い、常にこれらの確率の整合性を確保する関数として演算できる。すなわち、
p(Eito|Hj,tp)=f[p(Eito|Hj,tp),p(not(Ei)|Hj,tp)tp]
また、
p(Eito|not(Hj),tp)=f[p(Eito|not(Hj),tp),p(not(Ei)|not(Hj),tp)tp] 
【００６７】
モデル化イベントの定義化に使用する演算子は、結果として発生するモデル化イベントの持続期間情報に影響を及ぼすであろう。論理積を求めると最も新しい従属イベント発生時間が記憶され、論理和を求めると最初の真の従属イベントの時間が記憶される。
【００６８】
モデル化イベントの中間結果のValueフィールドは、前記式の結果の通りに設定される。算術比較は全て１（論理TRUE）か０（論理FALSE）のいずれかの結果をとる。算術演算の引数がイベントの場合、イベントが発生すればその引数は１と評価され、一方イベントが発生しない場合は０と評価される。単純な数宇に関連するタイムスタンプを、現在のスパンに設定する。つまり、開始時刻は前回のサイクルの時間であり、終了時刻は現在の時間である。
【００６９】
構文は回帰を許諾するため、無限回帰が発生しないように注意しなくてはならない。これらのステートメントは、イベント指定モジュールとして知られているテキストファイルに入れられる。
【００７０】
次に、イベント定義言語翻訳プログラム１１６はイベント指定モジュール１１４を処理する。イベント定義言語翻訳プログラム１１６はイベント指定モジュール１１４をＣ＋＋コードへ変換し、このコードはさらに機械言語にコンパイルされてイベントプロセッサシステムライブラリ、インテリジェントユーザー支援機能ライブラリ、オペレーティングシステムライブラリ、あるいはその他の実装ライブラリへ直接リンクされる。高レベルイベントの仕様を翻訳した結果がモデル化イベントコンポーザー１０４であり、このコンポーザーがモデル化イベントを生成する。推論サイクル中にモデル化イベントコンポーザー１０４が呼び出された場合、このコンポーザーは現在有効な一組のモデル化イベントを生成した後、呼び出したプログラムへと処理を戻す。すると、それらのモデル化イベントの組が示す適当な動作を推論コードが実行する。
【００７１】
ユーザープロファイルシステム
推論システム７６はユーザープロファイルシステム７８にアクセスしてユーザーの能力をチェックし、その能力に基づいて行われる支援を変化させる。ユーザーの経歴、正しいキー操作、特定分野における能力を表すタスク、前回ユーザーが参照したヘルプなどは変数として持続ファイルに記憶され時間とともに更新される。こうしたユーザーの経歴、経験、能力に関する持続的情報を「プロファイル情報」と称す。
【００７２】
第９図はユーザープロファイルシステム７８のブロック図である。このユーザープロファイルシステム７８は、ユーザープロファイルデータベース１２０、ユーザープロファイルアクセスルーチン１２２、イベント状態更新ルーチン１２４、経歴能力ダイアログルーチン１２６、カスタム指導ルーチン１２８から構成されている。
【００７３】
ユーザープロファイルデータベース１２０には、モデル化イベントデータベース１０６内のレコードとフォーマットが同じレコードがもうけられており、モデル化イベントデータベースレコードとユーザープロファイルデータベースレコードのフォーマットは共通している。このように共通のフォーマットを用いているため、モデル化イベントでユーザープロファイルデータベースを更新する場合も、推論分析のため推論エンジンがこれらのデータベースにアクセスしてレコードを解釈する場合にも都合がよい。ユーザープロファイルデータベースレコードは持続的に記憶されているため、特定のソフトウェアアプリケーションにおける特定のユーザーの能力の履歴レコードが作成される。こうしたデータベースをユーザー単位及びアプリケーション単位に保存する。ユーザーの能力を表す持続的に記憶されるモデル化イベントの例としては、あるタスクを完了したかどうか、特定機能を正しく使用できるかどうか、過去に支援を受けたかあるいはヘルプ情報を参照したかといったものを挙げることができる。
【００７４】
第１０図は、特定のアプリケーションプログラムと対話するユーザーのイベント状態によってユーザープロファイルデータベース１２０が更新される様子を示したフローチャートである。ステップ１３０において、イベント状態更新ルーチン１２４はモデル化イベントデータベース内の第一モデル化イベントレコードを検索する。ステップ１３２では、そのレコードが持続レコードとして記録されているかどうかを判断する。持続レコードとして記録されている場合、ステップ１３４でそのレコードをユーザープロファイルデータベースに迫加する。一方、持続レコードとして記録されていない場合は、ユーザープロファイルデータベースには追加しない。モデル化イベントレコードデータベース内においてそのレコードに続く各レコードを順次取り出し(ステップ１３６，１３８)、そのレコードが持続レコードしてい記録されているかどうかを確認し(ステップ１３２)、持続レコードとして記録されている場合はユーザープロファイルデータベースに追加する(ステップ１３４)。
【００７５】
「持続的イベント」の情報を備えた標準的な内蔵式ユーザープロファイルが利用できるため、ローカルエリアネットワークやインターネットなどのどの場所にユーザーがいても、ユーザーを追従してユーザーソフトウェアをカスタム化できる。ソフトウェアアプリケーションが有効な状態では、新規ユーザーがシステムに接続してそのソフトウェアアプリケーションを利用することもできる。第１１図は、新規ユーザーがシステムまたはアプリケーションに接続した場合のユーザープロファイルへのアクセスの様子を示したフローチャートである。ユーザーがシステムまたはアプリケーションに接続すると(ステップ１４０)、ユーザープロファイルアクセスルーチン１２２はそのユーザーのプロファイルをローカルユーザープロファイルデータベースから探し出す(ステップ１４１)。プロファイルが見つかった場合は、そのユーザープロファイルへのパスを推論システム７６に渡す(ステップ１４２)。一方、もしユーザーが遠隔地でアプリケーションを使用しているためそのユーザーのプロファイルが発見できない場合は、ユーザープロファイルアクセスルーチンは利用可能なネットワークを介してユーザーのプロファイルを格納している別のユーザープロファイルデータベースを検索する(ステップ１４３)。ユーザープロファイルデータベースが見つからない場合またはアクセスしたユーザープロファイルデータベースにそのユーザーのプロファイルがなかった場合は、ユーザープロファイルアクセスルーテンはユーザーに対してユーザー能力ダイアログへ入る許可を求め(ステップ１４４)、そのユーザーのプロファイルを作成する(ステップ１４５)。このユーザープロファイルへのパスを推論システム７６へ渡す(ステップ１４２)。もしダイアログが完了していない場合は、デフォルトプロファイル情報へのパスを推論システム７６に渡して(ステップ１４６)、そのパスを使用する。
【００７６】
リアルタイム推論中は持続性ユーザープロファイルを保持するのに加え、閾値を越える一または複数のセッション中にユーザーの支援要求の繰り返しパターンを継続的にバックグラウンド分析することにより、そのプログラムについてのセッションの終わりにユーザーに提供されるヘルプ情報のチュートリアルをカスタム化してもよい。第２２図は、カスタム化したチュートリアルを発生するためのルーチンのフローチャートである。特定のアプリケーションプログラムについてのセッション中に、推論システム７６は関連する確率閾値を越えるヘルプトピックの度数分布を記録する(ステップ１５０)。ユーザーがアプリケーションプログラムについてのセッションの終了を要求すると、ユーザープロファイルはその度数分布図を格納し(ステップ１５２)、度数分布に記録されているヘルプトピックに関する、カスタム化したヘルプ情報のチュートリアルを準備する(ステップ１５４)。アプリケーションプログラムが終了されると、オンラインでの参照またはマニュアルとしての印字出力ができるようカスタム化したチュートリアルの準備ができたことをユーザープロファイルシステムはユーザーに通知する(ステップ１５６)。
【００７７】
推論システム
推論分析サイクルが開始されると、推論システム７６はモデル化イベントデータベース１０６にアクセスし、前回の推論サイクル以降に発生した各モデル化イベントについてのモデル化イベントレコードを抽出する。推論システムの機能ブロック図を第１３図に示す。推論システム７６は一または複数の知識ベース１６０と推論エンジン１６５からなる。知識ベース１６０は、ユーザーの動作や単語といった観測可能な世界の状態を表す変数の情報や、直接的には観測されないか、又は観測することがコスト的にむずかしい、ユーザーのゴールや支援に対するニーズについての仮説を表す変数の情報等から構成されている。例えば、ユーザーのゴールは必ずしも直接調べることはできないが、コンピュータのコマンド列は記録することができる。ユーザーのゴールを積極的に質問することは可能だが、そのような質問はユーザーの気を散らす原因になるかもしれない。
【００７８】
相互に関連のある一連の論理ルールからなる決定的知識ベースは、観測結果と隠れた仮説とを結びつけることができる。しかしながら、観測結果とユーザーのニーズに関する仮説の可能性との間の不明確な関係を確率として処理するほうがより好ましい場合もある。例えば、人間の生理機能のように複雑なシステムの動きを理解したり予測しようとする場合、通常システムの全ての構成要素を決定的関係を用いて完全にモデル化し、決定的モデルにアクセスして一連の症状をもとに診断や治療を行うことは不可能である。複雑なシステムの診断や判断の場合、不確かな状態で推論を立てたり、理解が不完全であることを明確に取り扱わざるをえない場合がある。重要と思われる観測可能な変数や隠れ変数の一連の関係の知識さえあれば、確率により複雑なシステムの動作を診断したり予測できる。確率論的手法を用いれば、患者の症状といった観測結果と患者の疾患といった変数との間で不確実で強弱のある依存性を表したり推論したりできる。複雑なシステムの好適な例としては、コンピュータソフトウェアアプリケーションまたはシステムと対話しながらユーザーがタスクを行おうとするような場合が挙げられる。ユーザーのゴールや意図とその動作とをリンクさせるような決定的モデルを作成するのは大変困難である。ユーザーのニーズを診断する最善の方法は、様々な種類のユーザーのゴールと動作の関係を理解し、それに基づいて適切な抽象概念（abstraction）を展開し、それらの関係を確率を用いて表わすとともに推論することである。確率論的方法を用いれば、ユーザーとその動作の理解が不完全であるいう観点からみて妥当と思えるような抽象レベルのモデルを作成することができる。
【００７９】
一または複数のユーザーの動作のように観測可能な情報があれば、ベイズネットワークまたは影響図（influence diagram）と呼ばれているベイズネットワークを一般化したものを用いてユーザーのゴール、意図、ニーズといった重要だが隠れている状態やユーザーの動作などの特定または不確定の関係を表すことができる。ベイズネットワークは非輪型有向グラフであり、このグラフではノードがランダム変数を表し、ノード間を結ぶ弧がランダム変数間の確率論的依存性を表している。ベイズネットワークの変数は確率変数または決定的変数である。ベイズネットワークはその一連の変数の結合確率分布を表している。確率変数値全体の確率分布は、ノードの親にあたる直接の祖先すなわち親変数の値によって異なる。決定的変数の値はすぐ前の決定的関数に相当する。影響図とは、ベイズネットワークを一般化したもので、予想される動作や結果の有用性を表す追加ノードを示す。
【００８０】
推論エンジン１６５は、知識ベース１６０で動作する推論手順１６６を含む。また、知識ベース１６０はベイズネットワータ１６２を含む。知識ベースは、推論エンジンの推論手順のような論理連鎖手順を備えた決定的知識ベースでもよいことは当業者には分かるであろう。あるいは、前記知識ベースは推論エンジンの推論手順のようなベイズネットワークで実行される推論手順を備えたベイズ影響図でもよい。また、時間推論手順１６７と情報値手順１６８は推論エンジン１６５の一部に組み込まれている。さらに、その他の専用手順も組み込まれている。
【００８１】
観測可能な状態、証拠または変数を観測結果にもとづいて特定の状態に設定する場合、ベイズ推論手順がベイズネットワークで実行されてネットワークの変数の値全体にわたって一定な事後確率分布が演算される。無観測仮説Ｈl...Ｈm全体の確率分布を対象とし、観測結果やプロファイル情報El...Emにアクセスすると仮定する。観測結果をP<H|El...En>と記述すると、ベイズネットワーク推論アルゴリズムによりＨ全体の確率分布が演算される。影響図については、決定理論的推論を行って他の動作の期待有用性を判別する。期待有用性が最も高い動作が最善の動作である。
【００８２】
一般に、インテリジェントユーザー支援機能の推論設計作業は、決定理論すなわち不確実な値を反映した確立理論の延長の視点で行うのが最もよい。影響図を用いることにより、不確実性、動作、動作の結果、それら結果の値についての基本的関係を表すことができる。こうして表すことは、インテリジェントユーザー支援システムの設計、理解、そして多くの場合実際に用いる上で役立つ。しかしながら、決定、結果、その有用性を明確に表現することなく簡単なシステムを構築し、確率論的関係を表すベイズネットワークを用いるかわりに、確率論的推論を手順制御や閾値と組み合わせをより複雑な影響図モデルに近似するものとして用いる場合もある。
【００８３】
第１４図は、ユーザーのモデル化やソフトウェアユーザーの支援動作に関する一般的な影響図を知識ベースのようにベイズ影響図の例として図示している。図示されているように、ユーザーの経歴１７０は、ソフトウェア使用時のユーザーの全体的な目標１７１や知識１７２に不確実な影響を与える。ユーザーの知識１７２はユーザーが前回参照したヘルプ１７３にも影響される。ユーザーの経歴１７０と前回のヘルプ１７３は、持続ファイルに記憶され、時間とともに更新される変数である。ユーザーの経歴、経験、能力に関するこうした持続的な情報を「プロファイル情報」と称す。影響図に示されているように、ユーザーのゴール１７１と知識１７２は、次にユーザーの情報ニーズ１７４にも不確実な影響を与える。同様に、目標１７１とニーズ１７４は、検出動作１７５やソフトウェアあるいはソフトウェアのヘルプシステムへの質問１７６に使用する単語にも影響を及ぼす。ユーザーのユーティリティー機能１７７は菱形で表す。このユーティリティー１７７は、ユーザーの情報ニーズ１７４、自律的動作１７８に伴う不利益（cost）(例えば、現在のユーザーの注意をそぐなど)、ユーザの動作などによる影響を直接受ける。システムでは、アドバイスまたはヘルプ１７９の提供、様々な種類のソフトウェア処理１８０の実行、前回観測されなかった追加情報１８１をシステムまたは直接ユーザーから入手する等さまざまなクラスの動作が利用できる。第１４図に示すように、支援による不利益の変数１７８についてのスケールにより、支援に伴う不利益をユーザーが直接変化させてシステムの自立性の程度を流動的に制御するのが望ましい。
【００８４】
推論システムの全体目標は、ユーザーのニーズと自立的動作に伴う不利益が与えられると、ユーザーが期待するユーティリティーを最適化する動作を判別することにある。ユーザーの経歴や動作に関する一連の証拠Eが与えられると、対象になっているユーザーのニーズHの仮説全体の確率分布を演算する。第１４図に示すベイズ影響図の場合、ユーザーの支援に対しての全体についての確率分布を演算する。可能な全ての動作Aの期待値を考慮しなくてはならない。このため、ユーティリティーモデル（菱形ノード）が示す結果全体のユーティリティーを考慮する。ユーティリティーモデルには結果の値またはユーティリティーに関する情報が含まれている。結果（A,H）は、ユーザーの動作Aと実際のユーザーのニーズHの状態からなる２ビットバイトの情報と定義する。ユーティリティーモデルは、各結果u(A,H)に対応するユーティリティーを知らせる。最善の動作A*とは不確実ながらも期待ユーティリティーを最大化する動作のことであり、以下のように求められる。
【００８５】
【数１】
2008084321.tif 000004
【００８６】
影響図は動作の明確なモデルを示しているが、ベイズネットワークの方がより簡単に構築でき、判断と動作に利用できることも多い。この場合、動作の好みを表す状態をはじめとする様々な状態に割り当てた確信の程度にもとづいて、動作を行うべき時期を示すために、ネットワーク変数全体の確率に関する閾値またはルールを用いることによって行われる。第１４図に示す影響図のような図を用いれば、ベイズネットワークに使用している近似値を明確にできる。
【００８７】
時間推論と動特性
推論システム７６は、知識ベース１６０内に設けられている特別時間推論知識１６４と、さらに過去の時点で観測を行った場合にモデル内の他の変数に対する観測結果の関係の変化を推論する手順１６７とから構成されている。一般に、ベイズ手順や知識ベースを経時的観測パターンの推論に適用するには、同一時間で及び異なる時間における変数とそれらの相互依存を考慮する必要がある。別々の時間に変数や依存性の複製を含むベイズネットワークを構築して推論を行うと、複雑な演算推論問題が発生したり、プログラムと対話しているユーザーへの応答時間が許容範囲を越えてしまうといった問題が生じてしまう。このように、いくつかの近似は価値があるものである。ある種の近似値では、最も重要であると考えられる特定の依存性のみを経時的に考慮する。
【００８８】
別々の時間における一連の変数と確率論的依存性を備えたベイズネットワークの一部を第１５図に示す。第１５図のベイズネットワークは、別々の時点での確率変数や、同一時における変数の確率論的依存性、別々の時点での変数の確率論的依存性を明確に示している。依存性のない変数は独立していると推定される。
現時点でユーザーに提供される一次の関連する支援が、前回あるいは次回ユーザーに提供される最も関連する支援に影響を及ぼす可能性を図示している。さらに、この図では過去と未来での観測を伴う現時点での観測（EiとEj）状態の間の依存可能性を強調している。また、現時点での一次の関連する支援と過去の観測結果との関係も図示されている。一般に、このように互いに接続された複数のネットワークはモデルの生成中に解決したり評価するのが困難である。
【００８９】
次に、解決と評価が容易な、経時的支援の推論方法について説明する。この方法では、独立という想定をさらに付加し、現在の目標または支援の必要性と観測結果との確率論的関係の強度を定めるパラメータ化関数を用いて、次第に遡る過去の証拠と対象となる仮説との間の関連性を表す。実施例で近似値を使用する場合には単一陽的（explicit）ベイズネットワークに使用するが、経時的に複数の陰的ベイズネットワークに使用することもできる。この方法では、ベイズネットワーク内の観測変数とその他の変数との確率論的関係の動特性を適切に規定する関数をモデリング時に直接評価できるという利点がある。モデリング時には観測変数Ei毎に範囲と動特性を評価し、変数にその情報の注釈が付される。実行時に範囲と動特性について前記情報を使用する手順１６７が推論エンジン１６５には設けられている。イベントの範囲には時間幅があり、仮説Ｈjとの確率論的関係はなにも変化せずp<Ei,to|Hj,to>とp<Ei,to|not(Hj),to>のままである。前述のように、動特性は現時点における時間依存的確率の変化である。
【００９０】
イベントの範囲を定義する発見的方法では、特に指示がない限りはシステムが考慮する観測可能な全てのイベントのデフォルトの範囲と、有限長のイベント待ち行列ｋを使用する。但し、分析で用いるのは最後のモデル化イベントｋのみである。このアプローチは上に述べた動特性を組み合わせることができる。
【００９１】
情報の価値 
推論エンジン１６５には、ユーザーから情報を得ることについての予測される価値を演算する情報予測価値(EVI)手順１６８も備えている。このEVI手順や確率論的モデルに利用可能な情報理論的近似値は決定理論の分野の当業者には周知のことであろう。EVIはまだ観測されていない変数の情報を得ることについての予測される価値を算出する手段である。この情報は、目標やニーズについてコンピュータシステムが行った質問に対するユーザーからの回答で構成されている。情報の純価値（NEVI）とは、情報収集に要した損失をも含めた、情報を収集することについての純価値である。情報のもつ利益がその収集に伴う損失を越えた場合にはじめて推論システム７６は質問を行ったり、自立的に情報を収集する。Exが前回観測されなかったが質問可能な変数であり、OkがExの観測可能な値、Aは変数の評価時に観測されると思われる値と仮定した場合に、各変数のNEVIは以下のように定義できる。
【００９２】
【数２】
2008084321.tif 000005
【００９３】
ここでC(Ex)は証拠Exの評価時の損失である。EVIは影響図に直接適用できる。エントロピー演算にもとづくアルゴリズムをはじめとする周知な情報理論的アルゴリズムがあるが、これらのアルゴリズムはベイズネットワークのような確率論的モデルで情報収集する際の判断では同じように機能する。通常、これらのアルゴリズムは影響図でNEVIを演算するよりも追随しやすい。このアルゴリズムでは明示的にユーティリティーを操作することはない。にもかかわらず、情報のコストと情報の価値の測定値との均衡をはかる発見的手法と一緒に使用することが可能である。
【００９４】
第１６図は情報価値コンポーネントにおける情報価値手順のフローチャートである。情報価値コンポーネントには、前回観測されなかった情報が全てを代替情報として価値の順に列挙する(ステップ１９０)、情報収集の利益と情報の収集によりユーザーの注意をそぐといった不利益とを比較する(ステップ１９２)。ユーザーが設定した不利益を利益が上回った場合は、最も値の高い情報をユーザーに提供するようIUAFが要求する(ステップ１９４)。ユーザーからの回答があると、情報収集の利益を不利益が上回るかユーザーからの回答がなくなるまで情報価値コンポーネントは最初の２つのステップを繰り返し実行する(ステップ１９６)。
【００９５】
IUAFのスクリーン出力の例
第１７から２３図は、スプレッドシートアプリケーションの場合のインテリジェントユーザー支援機能のスクリーン出力を図示したものである。このシステムにはユーザープロファイルやユーザー指定閾値情報を考慮し、単語とユーザーの動作を組み合わせてユーザーにインテリジェント支援を提供する。また、このシステムは支援要求に応えたり自立的に支援を行うことができる。第１７図の支援インターフェース２００はユーザーが明示的にヘルプを要求したときに発生される。ユーザーに役立つと思われる支援項目は左上隅のリストボックス２０１に表示される。左下隅の現在のシステム設定を示すボックス２０２の表示にはユーザーが熟練者であると記るされている。この情報はユーザープロファイルシステムから提供されたものである。また、現在のシステム設定を示すボックス２０２には、推論分析サイクルで推論エンジンがユーザーの動作とフリーテキスト質問の両方を使用していることも表示されている。休みながらテキストレイアウトと対話し、ヘルプを要求する直前まで行や列を変えていたことを示す最近の動作とプロファイル情報とが与えられると、システムはフォント、上級フォーマットガイド、スプレッドシート文書のサイズ変更方法などの情報を提供するのが最善であると判断する。このスクリーン出力図の右側には推論グラフ２０３が図示されている。このグラフは推論システム７６が生成した一連のタスク領域全体にわたっての確率分布を示している。本来、この表示はエンジニアリングの目的で作成されたものではあるが、ユーザーに表示してもよい。各タスク領域の隣に記されている棒グラフはその領域の確率を表している。値が高い２つの確率領域（棒グラフが長い領域）が、フォント作業と上級フォーマットガイドのトピックについての作業のタスクについてのものである。
【００９６】
第１８図ではプロファイル情報が初心者用プロファイルに変更されている。現在のシステム設定を示すボックス２０２の習熟度の項目にはユーザーが初心者レベルであることが表示されている。その他の処理イベントはそのままである。初心者用プロファイルが使用された。プロファイル情報を用いてベイズネットワーク内の確率論的関係を修正する。関連する支援全体の確率分布を表示する推論グラフ２０３は、プロファイル情報に応じて変更された確率分布を示している。最良推測リストボックス２０１からも分かるように、このシステムはスプレッドシートの行列処理、位置合わせの変更、グラフの基本的書式設定といった基本的作業に関する支援を提供するのが最善であると判断している。
【００９７】
第１９図はユーザーの上記と同様の一連の動作を分析したものであるが、この分析ではユーザーの質問文の単語が考慮されている。ユーザーは、例えば「これの見栄えをよくするにはどうしたらよいか」といったようにシステムに対する質問事項を通常の文章の形で質問入力ボックス２０４に入力する。この質問の単語とユーザーの動作を組み合わせながら分析して推論表示２０３に示すような新しい確率分布を作成するとともにそれに対応する新しい推薦トピックを最良推測リストボックス２０１内に一覧表示する。このリストは、自動書式設定支援が、最も関連性の高い支援として推薦されているものとして再ソートされ更新されるが、リストにはいぜんとして位置合わせの変更、輸郭、フォントといったその他の書式設定トピックも含まれている。
【００９８】
第２０図は文書のグラフを処理中にグラフコマンドの入力が中断しその後再度ヘルプを要求した時のプログラムを図示している。推論グラフ２０３には推論システム７６が算出した確率分布が表示されている。ここで、最良推測リストボックス２０１の推薦トピックは、主に情報図表化の分野で可能性の高い領域に関するものである。第２１図には質問入力ボックス２０４に質問文の形で入力された追加情報が示されている。ユーザーが通常の文章で入力した質問文は「別のアプリケーションからデータにアクセスする必要がある」というものである。これらの単語は現在のイベントと一緒に分析される。推論システム７６は推論グラフ２０３に修正した確率分布と表示し、また最良推測リストボックス２０１には修正した推薦トピックのリストが表示される。この結果、主にデータベースからのデータの取り出しとグラフに表示するデータを主とするものである。
【００９９】
第２２図は、推論システム７６がユーザーに自立的にヘルプを提供する場合のスクリーン出力である。スプレッドシートプログラム２０５とユーザーが対話している時は、ユーザーが支援を必要とする確率を支援監視エージェントが算出し、ユーザーが支援を要求する時に別の種類のヘルプを提供する確率を推論システム７６では算出している。支援監視エージェントは、ユーザーが支援を必要とする確率の推論結果を支援監視エージェントウィンドウ２０６に表示する。上述の推論グラフ２０３と同様に、支援監視エージェントウィンドウ２０６はエンジニアリング用に作成されたものだがユーザーに表示してもよい。スプレッドシートプログラム２０５と対話していたユーザーは、次にシート全体を選択して作業を一時中断する。支援監視エージェントウィンドウ２０６に示すように、ユーザーが支援を必要とする確率の演算値は２６％から８９％へと上昇し、ついには閾値に達する。すると、小さな時限ウィンドウすなわち自律支援ウィンドウ２０７が自立的に提供され、演算の結果最も可能性が高いと判断された領域のトピックが表示される。この場合、最も可能性が高いトピックとは、セルの書式設定、スペルチェック、演算処理、文書全体の分析または修正に関わるトピックなどである。
自律支援ウィンドウ２０７は控えめにヘルプを表示する。この時、ユーザーは閾値をリセットして自律支援ウィンドウ２０７の表示前にヘルプを必要とする可能性に関する確率を増減するこもできる。ユーザーが自律支援ウィンドウ２０７と対話する前にタイムアウトになった場合は、ユーザーの邪魔をしたことを謝罪した後にウィンドウを閉じる。
【０１００】
第２３図のディスプレイ２０８には、ソフトウェアプログラムと対話を続けていくうちにユーザーが遭遇した問題について行ったバックグランド推論の記録または概要をもとにしてユーザーに役立つと判断されたトピックを表示する。この中には、ユーザーの経歴、能力、過去に受けるか参照した支援についてのプロファイル情報も含まれている。これらのトピックを印字出力すれば、特注のマニュアルとなり後々の参考にできる。
【０１０１】
時間推論注釈付きベイズネットワーク 
第２４図はユーザーとその最近の動作に関するプロファイル情報の関数として他形式の支援が行われる確率を算出するベイズネットワークの例である。様々な種類の観測やタスク固有の支援ニーズなどについて上記ネットワークを繰り返し用いることができることが分かるように、複数のノードに変数ｘ、ｙ、ｚ、Aを使用した。
【０１０２】
このモデルでは、二つの異なるソフトウェア機能領域ｘ、ｙにおけるユーザーの能力状態にそれぞれユーザー能力x210とユーザー能力y210の変数を付している。ユーザーの各能力は変数の影響を受けるが、その変数とは（１）観測されたユーザー特有の動作、（２）ユーザーが過去に参照したヘルプトピックの履歴、（３）不明確またはユーザーとの対話で設定されたユーザーの経歴２１２全体を表すものである。ベイズネットワークでは、一次支援必要変数２１３の状態が表すようなユーザーに関連する別の支援に関する過去の確率は、ユーザーの能力に直接影響される。この変数２１３は、例えば現在のバージョンのアプリケーションに特定のデータ構造が存在していたといったプログラム状態の情報を表すコンテキスト変数２１４にも影響される。このモデルでは、単一一次支援変数や別の形の支援を表す状態などを用いて問題を明確に表現できる。このモデルは、特定の時間にユーザーが必要とするのは一状態の一次支援だけであるという仮定にもとづいている。複数の支援変数を用いれば、複数種類の支援全てが同時に適切であるといった概念を表すこともできる。
【０１０３】
ベイズネットワークに示すように一次支援必要ノード２１３は、図形オブジェクトＺを選択した後所定期間作業が中断する（Sel Z Pause 215）やオブジェクトを修正した後にアンドゥを行う（Z Cmd Undo 216）といった一連のモデル化イベントが観測された場合にそれらのイベントに影響を与える。実行時には、これらのモデル化イベントは検出されたあとイベントプロセッサ７４により推論システム７６へ送られる。これらのモデル化イベントに対応する観測可能な変数を更新し、ベイズ推論を行って一次支援必要変数２１３をはじめとするシステム内の非観測変数の全体の確率を更新する。イベントの時刻は記録する。イベント発生から時間が経過すると、時間推論手順１６７を実行してネットワーク内の確率論的関係を更新する。
【０１０４】
第２５図は、Microsoft Excelのようなスプレッドシートからの情報をグラフ化することに関しての、ユーザーの動作とプロファイル情報との関係の推論に関連する区別を有する変数ｘ、ｙ付きノードを例示したものである。プロファイルに記憶され持続的な変数には近接してＰの符号を付けられている。モデル化イベントとして観測される変数にはＭの符号を付けられている。一以上のノードは図表作成に関する様々な種類の能力を表している。この場合、単一変数であるユーザー能力図表作成２２０は、ユーザーの図表作成能力の全体的なレベルに関する情報を含む変数として表示されている。この変数の状態の全体の確率分布には、Ｈｘヘルプ図表作成２２１、Ｈｘ活動図表作成２２２、ユーザー経歴２１２が影響を及ぼす。Ｈｘヘルプ図表作成２２１は、ユーザーが成功した一または複数の図表作成作業に関する持続的プロファイルに記憶されている観測結果やユーザーがオンラインマニュアルで参照した図表作成のヘルプ情報に関する情報などで設定される。図表作成能力やその他のソフトウェア機能領域での能力は一次支援必要変数２１３に影響を及ぼす。この一次支援必要変数２１３は、ユーザーが別の行動をとる可能性に影響を及ぼす。例えば、特定の種類の図表作成作業で支援を必要とすると、ユーザーが文書中の図表を選択しその図表のところで数秒間作業を中断する（Sel Chart Pause 223）可能性に影響が及ぶ。付表１にはスプレッドシートアプリケーション例としたより完全なベイズネットワークが図示されている。
【０１０５】
第２６図は時間的な知識や推論を例示したものである。観測可能なモデル化イベントのそれぞれに、ベイズネットワーク内のその他の変数とイベントとの確率論的関係への経時的影響に関する情報の注釈が付いている。この場合、各ノードには範囲と衰退に関する時間的動的情報が付されており、この情報は確率または他のデータ構造の一覧として実現できる。各変数の時間的動特性の期間は秒単位で表示するが、イベントが真になった時点を開始点とする。
【０１０６】
第２６図の知識ベースのコンポーネントをもとにした例を次に説明する。
次のようなプロファイル情報があると仮定する。
【０１０７】
【表２】
2008084321.tif 000006
【０１０８】
時刻t=50秒では、次のモデル化イベントに注目する。
【０１０９】
【表３】
2008084321.tif 000007
【表４】
2008084321.tif 000008
【表５】
2008084321.tif 000009
【表６】
2008084321.tif 000010
【０１１０】
分析サイクルをt=50秒の時点で開始する。このサイクルは、原子イベントローカル記憶装置１０２からモデル化イベントを生成する工程、推論システム７６ヘイベントを転送する工程、新規観測結果を用いて推論を行う工程とからなる。ユーザーが必要としている一次支援項目は図表作成情報のヘルプであるという現在の確率p(Charting_Assistance|E)を調べる。ユーザーの経歴、能力、ヘルプ参照履歴といった条件において、この領域でヘルプを必要とする前回の確率は.001である。コンテキスト情報はこの確率を.04まで増加させる。一次支援についてのその他の仮説にもそれまでの全ての証拠（この例では明示されていない）の関数として確率が割り当てられる。
【０１１１】
t=52秒の時点でユーザーは図表を選択する。図表の選択という原子イベントが検出され、その検出結果は原子イベントローカル記憶装置１０２に記憶される。次に、ユーザーは３秒間のあいだ作業を中断する。この３秒間の中断はイベントローカル記憶装置１０２で検出される。分析サイクルをt=60秒の時点で呼び出す。イベントプロセッサ７４はモデル化イベントSel_Chart_Pause 223を生成し、そのイベントはｔ＝５５秒の時点で真になり、推論システム７６に送られる。
【０１１２】
推論システムは、時間的動的情報の注釈付きベイズネットワークにアクセスする。Sel_Chart_Pause 230の確率表に示されているように、５秒間の範囲があり、確率は１５秒の時点で無の確率へと線形に収束する。
【０１１３】
ｔ＝６３秒の時点でユーザーは図表作成ダイアログを選択し、ｔ＝６６秒の時点で失敗してダイアログを取り消す。７０秒の時点で分析サイクルが呼び出され、モデル化イベントChart_Dialog_Unsucc 227が生成され、推論エンジン７６へ送られるタイムスタンプ６６秒で記録される。Chart_Dialog_Unsucc 231の確率表で示すように、期間は２０秒間あり、時間的動特性はない。
【０１１４】
このユーザーは自動支援がＰ=.12で発生するよう閾値を設定している。このように、トピックが関連するという確率がｐ＝.14まで増加すると図表作成にかんする支援が行われる。
【０１１５】
【表７】
2008084321.tif 000011
【表８】
2008084321.tif 000012
【表９】
2008084321.tif 000013
【表１０】
2008084321.tif 000014
【表１１】
2008084321.tif 000015
【表１２】
2008084321.tif 000016
【表１３】
2008084321.tif 000017
【表１４】
2008084321.tif 000018
【表１５】
2008084321.tif 000019
【表１６】
2008084321.tif 000020
【０１１６】
マルチアプリケーションの場合のシステムレベルIUAF
上述の方法は個々のアプリケーションに適用できるだけでなく、オペレーティングシステムレベルで用いれば複数のアプリケーションが走っているシステムでの支援を推論させることもできる。システム支援を行う実施例において、ベイズネットワークを用いてユーザーが作業を完了したことあるいはまもなく作業を完了することを推論させてアプリケーションを終了する。
【０１１７】
この作業を支援するベイズネットワーク知識ベースを第２７図に示す。プロファイル情報には、すでにユーザーがヘルプを参照したことがあるかどうか(Reviewed_Help_in_Past 240)、終了したことがあるかどうか(User_Exited_Before 241)、ユーザーはダブルクリック操作を実行できることを見せたかどうか（Successful_Double_Click 242）といった情報が含まれている。ベイズネットワークで観測として示されているモデル化イベントには、動作後の一時休止(Dwell after Activity 243)、無関係な一連の図形アイコンのクリック操作(Click on Seq of Unrelated 244)、意味のないマウス操作(Mouse Meandering 245)、文書を最近印字出力したかどうか（Print Doc 246）またはメッセージを送信したかどうか(Send Msg 247)、アプリケーションの立上げ時間（Duration of Time with App 248）が含まれている。変数は最も望ましい操作全体の確率分布を示しており、このため確率論的推論を行って別の最適な操作の可能性を推論することができる。
【０１１８】
実施例では、ユーザーに関する推論についての監視イベントの影響が示されている。この例は次のような概要からなる。ユーザーはいままで自分でアプリケーションを終了できなかった、ユーザーはダブルクリック操作を正しく行うことができなかった、アプリケーション終了に関するヘルプトピックを参照したがその項目で一時休止することはなかった。次に、システムでは、略１０分間ものあいだ電子メールを操作を行っていたことや、無関係な一連の図形アイコンをクリックしていたことを検出したものとする。第２８図は各確率変数の状態を示している。状態の隣に設けられているグラフの長さは各確率変数の様々な状態の確率を表している。棒グラフが示すように、推論システム７６ではユーザーが終了方法を知らない確率（User Ignorant about Exit 249）は高く、主要なタスクを完了したかあるいはすぐに完了するという確率（Major Task Completed 250）は低いと計算している。
【０１１９】
第２９図は新規モデル化イベントを考慮に入れた後の推論結果を示している。
この場合、ユーザーは電子メールを送信し終わっており(Send Msg 247)、操作後に３秒以上一時休止状態が続いている(Dwell after Activity 243)。ユーザーにヒントを与えるのが終了関連操作として最も望ましいと判断する(Most Desired Exit Action 251)。第３０図も同様の例を示しているが、ユーザーが過去２分以内にヘルプトピックを参照したかまたは援助を受けた点が異なる(Recent rec Exit Hel 252)。最も望ましい操作は何もせずユーザーにアプリケーションを終了するかどうかを確認することである(Most Desired Exit Action 251)。
【０１２０】
IUAFコントローラー 
一般に、インテリジェントユーザー支援機能のコンポーネントはその全体の制御を行う必要がある。つまり、イベントプロセッサ７４と推論システム７６を呼び出すかどうかといった判断や、自立的に支援を行うかどうかといった判断では制御が必要である。第３１図は個別にまたは組み合わせて使用されるインテリジェントユーザーインターフェースコントローラの協働制御モード全体を図式化したものである。第１協働制御モードはタイマーモード２６０で、このモードでは反復システムタイマがタイムアップしてIUAFコントローラに別の監視サイクルや推論分析サイクルの開始することを通知する(ステップ２６１)。するとIUAFコントローラは推論システムを呼び出す(ステップ２６２)。推論分析が終了すると、再度タイマがタイムアップするまでコントローラは待機状態となる(ステップ２６３)。何らかの制約を受けた場合には、タイマーモードの期間を延長して次のサイクルの開始を遅らせることもできる。例えば、イベント監視や推論の処理中に複雑な推論が発生した場合には、演算資源の利用が可能かどうかを評価する（例えば、アイドルタイムがあるかどうかの判別）条件を付加することもできる。このように、タイマが起動し、演算資源の利用可能条件があるとイベント処理サイクルや推論サイクルが実行される。
【０１２１】
第二モードは要求モード２６５である。このモードは、ユーザーが支援を要求した時だけ推論分析を行う。インストールされているアプリケーションがヘルプ情報に関する質問を受けると(ステップ２６６)、IUAFコントローラへ通知する(ステップ２６７)。通知を受けると、IUAFコントローラは推論システムを呼び出す(ステップ２６８)。推論分析が終了すると、次の通知があるまでコントローラは待機する(ステップ２６９)。
第三モードは特別イベントトリガモード２７０である。このモードでは、推論分析サイクルを開始する特別イベントの一覧がある。特別イベントの発生をイベントプロセッサが検出すると(ステップ２７１)、イベントプロセッサはIUAFコントローラへ通知を送る(ステップ２７２)。通知を受領すると、IUAFコントローラは推論システムを呼び出す(ステップ２７３)。推論分析が完了すると、コントローラは次の通知があるまで待機する(ステップ２７４)。
【０１２２】
これら３つの制御モードのうちいずれか２つのモードまたは全てのモードが同時に有効となってもよい。３つの制御モード全てが有効になる場合、下記のように動作する。もし、タイマーが動作期間中にユーザーからの支援要求がなく、ユーザーが特別イベントへ翻訳される動作を行わなかった時は、タイマーの期限が終了した後に推論分析のサイクルが実行される。又、ユーザーが支援を要求したときまたは特別イベントに翻訳される動作を行った場合には、タイマーの動作期間中であっても推論分析サイクルが実行される。
【０１２３】
フリーテキスト質問の分析とイベントとの一体化 
すでに説明したように、支援要求のフリーテキスト質問で使用される単語をモデル化イベントの資源として使用できる。Microsoft Office 95の製品系列に含まれる全てのアプリケーションにはMicrosoft Answer Wizardが組み込まれており、このウィザードでは確率論的モデルを用いてフリーテキスト質問中の単語をこれに関連するヘルプトピックの確率に関連づけている。このモデルは米国特許出願08,400,797に開示されており、本願出願においてその全文を援用するものである。一実施例では、単語と動作の確率論的関連性を推論するシステムにおいて単語と動作をモデル化イベントとして、共に一律に取り扱うことができる。
【０１２４】
また他の実施例では、単語と動作を別々に取り扱う分離したサブシステムが設けられている。この分離したサブシステムにおける確率論的分析が終了した後にこれらの分析結果を組み合わせる。第３２図は別々の確率論的分析を組み合わせる方法のフローチャートである。まず、与えられたフリーテキスト質問に最も関連性のあるヘルプトピックをベイズ分析により演算する(ステップ２８０)。この後米国特許08,400,797に開示されている方法を行う。次のステップでは、関連性の確率が最も高い順から配列したヘルプトピックの一覧を出力する(ステップ２８１)。最も関連性の高いヘルプトピックの第二ベイズ分析を、所定プログラム状態、ユーザープロファイル、ユーザーの一連の動作に対して算出により行う(ステップ２８２)。関連性の確率が最も高い順から配列したヘルプトピックの第２一覧を出力する(ステップ２８３)。各リストのヘルプトピックに重み付けを行った後、両方のリストに記載されているヘルプトピックは関連性があるという確率を演算して両方のリストのヘルプトピックを組合せる(ステップ２８４)。最後に、関連性の確率が最も高い順番に配列したヘルプトピックの組合せリストを出力する(ステップ２８５)。この実施例では、単語または動作分析から求めた仮説（例えば、ヘルプトピックの関連性）の確率に割り当てた可能性の乗算に使用する実数パラメータの値を変えることにより、あるイベントの組の結果に対する重み付けを別の組の結果に対する重み付けよりも大きくしてシステムパフォーマンスを調整できる。
【０１２５】
フリーテキスト質問の単語とユーザーの動作を分析するシステムを別々に設ければ、各クラスのイベントの特定の性質にもとづいて二つのサブシステムを個別に最適化できる。同じことは、検出機能を付加してイベント監視機能を拡張したシステムにおいて視覚や音声イベントといった別の動作の組にも当てはまる。
別々に分析を行うことで結果の合成、結果の分離、結果の配列といった処理のときにそれぞれに固有の方針を適用するのが簡単になる。例えば、実施例では、動作を監視して得た推論をもとに推測した支援を最初に表示するが、単語が付加された時には単語を用いた分析だけをもとに支援表示を行う。これは単語分析システムと動作分析システムの性能によるものである。その他の方法としては、単語と動作の分析結果を比較し、その結果をもとにそれぞれのサブシステムでの推論を組み合わせたり、分離したりする方法もある。
【０１２６】
対話と支援実施に関する制御 
協働制御機能の他に、IUAFコントローラはいつユーザーに自立的に支援を行うかあるいはユーザーのゴールについての情報（情報価値演算に基づく）に関する質問を行うかを判断する。実施例では、推論システム７６に常駐する特別なベイズネットワークすなわちネットワークコンポーネントが、ユーザーは今支援を求めているという確率を演算する。IUAFコントローラは常に変化しているこの確率を用いて自立的にヘルプを提供する時期を制御する。ユーザーが支援を求めるという確率の算出結果が、ユーザーによる変更が可能な閾値を越えた時にIUAFは自立的にヘルプを提供する。ユーザーは自立的支援を行うための閾値を閾値コントローラを用いて変更する。例えば、この閾値コントローラーをスライド式閾値コントローラの形で自律ヘルプウィンドウに表示すると、ヘルプを求めることによる利益とヘルプ表示により気が散るといった不利益との比較に基づいて閾値を変えることができる。第２２図には閾値スライダー付き付き動的支援ウィンドウのスクリーン出力の例が示されている。
【０１２７】
第３３図は上記実施例おいて自立的支援を行う方法のフローチャートである。
推論分析サイクル中は、推論システム７６が関連性の確率が高い順番にヘルプトピックを配列して一覧表として出力する(ステップ２９０)。この処理は推論システムの説明で述べた通りである。次のステップでは、ユーザーがヘルプを必要とする確率がユーザーが設定した自律支援用閾値を越えたかどうかを判断する(ステップ２９２)。ユーザーがヘルプを必要とする確率が閾値を越えた場合は、推論システム７６は確率の高い順番にヘルプトピックを配列して一覧表示する(ステップ２９４)。この一覧には最も可能性の高いトピックまたは最も可能性の高いと思われる幾つかのトピックだけが表示されるが、必要であればウィンドウ内でリスト全体のスクロール検索を行うこともできる。次に、所定時間内に関連トピックの一覧の中で前回のリストにも現れた重複ヘルプトピックがないかどうかを調べる(ステップ２９６)。重複ヘルプトピックがなければ、ユーザーにその一覧を表示する(ステップ２９８)。もし自立的ヘルプの提供に対するユーザーからの回答があれば、応答タイマーがタイムアップする前にユーザーが応答しなくなるまでステップ２９０から２９８までの処理を繰り返す。応答タイマーがタイムアップする前に応答しなかった場合、ウィンドウのタイトルの部分に謝罪メッセージが表示され(ステップ２９９)、ウィンドウは消える。
【０１２８】
例えば、インテリジェント支援機能の図形アイコンをクリックするなどユーザーからの直接の要求があった場合にのみ自律的支援を行うようにする例も可能であることは当業者も気づくであろう。予測有用性についての測定値の演算結果やその近似値を利用して自律的支援を行うこともできる。さらに、支援の際に提供されるトピックの各項目の関連性の確率を個々に算出し、それらの合計値がある定数を越えた場合にのみシステムが自律的支援を行うようにすることも可能である。
【０１２９】
実施例において、上位５つのトピックの確率値の合計が.40を越えない時はたとえユーザーから支援要求があってもヘルプトピックに関する推測を表示しない。その他の実施例において、ユーザーが作業を中断しない限りは自律的支援を行わないようにすることで、作業中にユーザーを支援することが重要であると思われない場合は作業に従事しているユーザーの邪魔をしない。
【０１３０】
社会的な会話や暗喩を用いるのも効果的である。例えば、推論結果を用いて社会的図形アニメーションキャラクタの動作や態度を制御することができる。第３４図にこの種のインターフェース例を示す。ユーザーが直面すると思われる問題や潜在的に価値のある支援に関するIUAF推論結果を、キャラクターの頭の上の「雲」の形で表してあたかも考え込んでいるように表示することも可能である。フリーテキスト質問は図形テキスト入力ボックスにタイプ入力させて、キャラクターがその質問を見たり聞いたりしているようにできる。
【０１３１】
IUAFコンポーネントの組込みによる音声認識機能の拡張 
音声認識の専門家であれば、確率で音素を特徴づけるのに用いる音声言語モデルを演算により求めたコンピュータユーザーのゴール、意図、ニーズ等の情報により動的な影響を受けるようにすればパワーを得ることが可能であることは知っていることであろう。第１２図の影響図に図示しているように、ユーザーの経歴やゴールは、インターフェースでの動作、フリーテキスト質問に使っている単語、ソフトウェアシステムまたはアプリケーションと対話しようとしているユーザー発話に影響を及ぼす。つぶやいているときのユーザーのゴールや意図の可能性が分かれば、自動音声認識能力を向上させることができる。こうしたシステムがあれば、発話についての確率を調整し、コンピュータソフトウェアユーザーが発した単語や音素の確率を調整することができる。
【０１３２】
音声認識では、発話を類似の音素に分解したり、音素を類似の単語に処理したりして音声信号を生成する。音声認識用の確率的システムでは、音声信号から音素の確率を算出したり、同じ信号から別の単語が導き出される確率を演算することができる。本願明細書では、「音声(speech)」とう単語は話されたことばを音声信号や音素に分解して得られた証拠をさすものとする。
ベイズ音声認識システムでは話されたことばの中の単語または単語列の確率を以下のように算出する。
【０１３３】
【数３】
2008084321.tif 000021
【０１３４】
モデル化イベント（注視に基づくものを含む）によって表わされるユーザーの動作を条件としてユーザーのニーズやゴールの確率を計算し、ユーザーが発話した単語の確率精度を以下のように向上できる。
【０１３５】
すなわち、特定のゴールのコンテキストに使用すると思われる単語または単語列の確率を求めることによりゴールのコンテキストに単語または単語列が使用される確率を更新でき、また、一般的なリアルタイムの言語モデルに含まれている単語が使用されることを示す基本確率p(words)を更新できる。つまり、p(words)の静的データベースを用いる代わりに単語の確率を以下のように更新する。
【０１３６】
【数４】
2008084321.tif 000022
【０１３７】
コンテキスト固有言語モデルの知識ベースを利用している。
実行時には、イベント監視システムが動作を分析し、その結果は推論システムへ送られ、そこで上述のようにユーザーのニーズ全体の確率分布p(user needs|events)を継続的に再計算する。例としてヘルプトピックの推論への適用があり、コンテキスト固有言語モデルは形式p(words|relevant help topic)の情報を含む。
音声認識用の上記式の変形を表すより一般的なステートメントでは、動的イベントを以下のように入力する。
【０１３８】
【数５】
2008084321.tif 000023
【０１３９】
この式は、次のように変形できる。
【０１４０】
【数６】
2008084321.tif 000024
【０１４１】
第２３図は、主要コンポーネント、単語や発話された音素の確率を動的に変化させて音声認識を向上させるインテリジェントユーザー支援機能の主要コンポーネントを用いた分析フローを示している。図示されているように、ユーザーの動作はインストール済プログラム７２が追従し、イベントプロセッサ７４が原子イベントをモデル化イベントに合成し、こうして生成されたモデル化イベントは推論システム７６へ送られる。この推論システムではユーザーのニーズの確率分布を算出し、重み付けされたニーズのリストは動的言語モデルジェネレーター３００へと送られる。
【０１４２】
動的言語モデルジェネレーター３００では別のニーズと発話または単語の確率との間のマッピングを有する。このコンポーネントは、形式p(words|user need)の確率情報を含む言語モデルを含む言語モデルデータベース３０１からの情報と、ユーザーが別の単語または単語列を発話している確率の情報を含む。これはユーザーニーズを条件として行われる。これらの言語モデルは、別のユーザーニーズコンテキストに記録されている単語列のコーパスから統計的データを用いトレーニングにより構成できる。実行時には推論システムはユーザーニーズに関しての確率分布を提供する。この確率分布は、別のコンテキストから求めた言語モデルへの重み付けに基づいて、更新された言語モデルを作成する時の制御に用いる。更新言語モデル３０２は、確率論的推論の結果に基づき、異なるニーズの確率の観点で一連の単語に重み付けして作成した形式p(words|events)の情報を含む。
【０１４３】
全体としては、コンテキストを聞き取ることにより、可能性の低い発話の確率を下げ、可能性の高い発話の確率を高めてユーザーのモデル毎に音声認識システム３０３の精度を向上できるという利点がある。
【０１４４】
ソフトウェアにおける支援のための使用以外に、動的音声認識機能を様々な音声認識作業に利用できる。例えば、ソフトウェアの制御や機能の操作などのコマンドやコントロールとのインターフェースへの利用がある。ユーザーのゴールをモデル化する場合は、ユーザーの次の動作を反映するよう適当に重み付けされた文法を作成することができ、その結果エラーをおこし難くなる。
【０１４５】
これらの方法は、ユーザーのゴールが分かっている場合に次のソフトウェアコマンドの確率を演算するモデルと一緒に使用できる。この場合、特別なユーザーニーズ、すなわち、動作要求に注目する。ユーザーの動作要求は、１以上のヘルプトピックへのアクセスをはじめとする音声による１以上のソフトウェア制御の実現と称す。上記の式のp(user needs|events)の代わりにp(desired action|events)を用い、p(words|user needs)の代わりにp(words|desired action)情報を含む言語モデルを使用する。このモデルで考慮するイベントは、有効なウィンドウ情報や発話中にユーザーに表示されるテキスト、ボタン、制御などの情報からなるコンテキストを有している。
【０１４６】
例えば、コマンドや制御用の動的言語モデルは、機能の一部として確率論的結果を生成し表示するシステムに適用できる。具体的には、一連の症状から医者の診断を支援するベイズネットワークや影響図を具備した確率論的推論システムがある。医療用ベイズ推論システムには診断推論の結果を表示する複数のウィンドを設けてもよい。あるウィンドウに計算した確率の順で疾病の一覧を表示し、別のウィンドウに情報の値をもとに次に診断すべき症状や次に評価すべき試験の一覧を表示する。表示オブジェクトに割り当てた、算出された確率や予測有用性の関数などの表示情報のコンテキストに基づき、ユーザーの動作の確率モデルを構築したり評価することにより、p(words events)を動的に再演算して音声認識に使用できる。
【０１４７】
実施例を参照しながら本発明を説明してきたが、添付の請求項で定義した本発明の範囲から逸脱することなく形式や詳細を変更することが可能であることは当業者には分かるであろう。例えば、一般イベント生成推論システムをオペレーティングシステムに使用してインテリジェントユーザーシェルを生成したり、より一般的にはコンピュータシステムやソフトウェアの機能を最適化することも可能である。本発明で説明してきた実施例は変更が可能であるため、本発明は添付の請求項のみを参照して定義するものである。
【図面の簡単な説明】
【０１４８】
【図１】コンピュータシステムのブロック図である。
【図２】ソフトウェアプログラム用インテリジェントユーザー支援機能を構築するためのフローチャートである。
【図３】簡易型２変数ベイズネットワークを表す図である。
【図４】はインテリジェントユーザー支援機能のブロック図である。
【図５】インストール済みアプリケーションプログラムのブロック図である。
【図６】インテリジェントユーザー支援機能とともに作用するインストール済みスプレッドシートアプリケーションプログラムのブロック図である。
【図７】イベントプロセッサのブロック図である。
【図８】モデル化イベントコンポーザーを生成するイベントシステム指定ツールのブロック図である。
【図９】ユーザープロファイルシステムのブロック図である。
【図１０】第９図のユーザープロファイルシステムのイベント状態更新ルーチンのフローチャートである。
【図１１】第９図のユーザープロファイルシステムのユーザープロファイルアクセスルーチンのフローチャートである。
【図１２】第９図のユーザープロファイルシステムのカスタムチュートリアルルーチンのフローチャートである。
【図１３】本発明の推論システムのブロック図である。
【図１４】本発明のインテリジェントユーザー支援機能を用いてユーザーを支援するソフトウェアプログラム全体における影響関係を示したベイズネットワーク図である。
【図１５】時間の経過に伴う確率論的依存性を表したベイズネットワークの一部を示す図である。
【図１６】本発明におけるユーザー情報収集用情報値手順のフローチャートである。
【図１７】スプレッドシートアプリケーションの例における本発明のインテリジェントユーザー支援機能のスクリーン出力図である。
【図１８】スプレッドシートアプリケーションの例における本発明のインテリジェントユーザー支援機能のスクリーン出力図である。
【図１９】スプレッドシートアプリケーションの例における本発明のインテリジェントユーザー支援機能のスクリーン出力図である。
【図２０】スプレッドシートアプリケーションの例における本発明のインテリジェントユーザー支援機能のスクリーン出力図である。
【図２１】スプレッドシートアプリケーションの例における本発明のインテリジェントユーザー支援機能のスクリーン出力図である。
【図２２】スプレッドシートアプリケーションの例における本発明のインテリジェントユーザー支援機能のスクリーン出力図である。
【図２３】スプレッドシートアプリケーションの実施例における本発明のインテリジェントユーザー支援機能のカスタム化チュートリアルの概要を表すスクリーン出力図である。
【図２４】本発明のインテリジェントユーザー支援機能用ベイズネットワークの一部を示す図である。
【図２５】モデル化及びプロファイル化されたスプレッドシートデータ図化用イベントを示すスプレッドシートアプリケーション用ベイズネットワークの一部を示す図である。
【図２６】スプレッドシートアプリケーションの実施例における、本発明の原理により作られた時間的ダイナミック情報が注釈として付されたベイズネットワークを示す図である。
【図２７】複数のアプリケーションの設定時に終了支援をするための本発明によるモデルを表すベイズネットワークの一部を示す図である。
【図２８】複数のアプリケーションの設定時に終了支援をする推論を表すベイズネットワークの一部を示す図である。
【図２９】複数のアプリケーションの設定時に終了支援をする推論を表すベイズネットワークの一部を示す図である。
【図３０】複数のアプリケーションの設定時に終了支援をする推論を表すベイズネットワークの一部を示す図である。
【図３１】インテリジェントユーザー支援機能コントローラの制御モードを表す図である。
【図３２】ユーザーの動作及びプログラム状態の推論分析とフリーテキスト質問の推論分析を組み合わせるための本発明の方法を示す図である。
【図３３】本発明の自立支援手順のフロー図である。
【図３４】スプレッドシートプログラム用インテリジェントユーザー支援を行うソシアルインターフェースを示す図である。
【図３５】音声認識システムを備えたインテリジェントユーザー支援機能のブロック図であり、推論結果を用いて音声認識の精度を向上させる様子を示した図である。
【図１】
2008084321.tif 000025
【図２】
2008084321.tif 000026
【図３】
2008084321.tif 000027
【図４】
2008084321.tif 000028
【図５】
2008084321.tif 000029
【図６】
2008084321.tif 000030
【図７】
2008084321.tif 000031
【図８】
2008084321.tif 000032
【図９】
2008084321.tif 000033
【図１０】
2008084321.tif 000034
【図１１】
2008084321.tif 000035
【図１２】
2008084321.tif 000036
【図１３】
2008084321.tif 000037
【図１４】
2008084321.tif 000038
【図１５】
2008084321.tif 000039
【図１６】
2008084321.tif 000040
【図１７】
2008084321.tif 000041
【図１８】
2008084321.tif 000042
【図１９】
2008084321.tif 000043
【図２０】
2008084321.tif 000044
【図２１】
2008084321.tif 000045
【図２２】
2008084321.tif 000046
【図２３】
2008084321.tif 000047
【図２４】
2008084321.tif 000048
【図２５】
2008084321.tif 000049
【図２６】
2008084321.tif 000050
【図２７】
2008084321.tif 000051
【図２８】
2008084321.tif 000052
【図２９】
2008084321.tif 000053
【図３０】
2008084321.tif 000054
【図３１】
2008084321.tif 000055
【図３２】
2008084321.tif 000056
【図３３】
2008084321.tif 000057
【図３４】
2008084321.tif 000058
【図３５】
2008084321.tif 000059