JP3943543B2 - マルチモーダル環境における対話管理およびアービトレーションを提供するシステムおよび方法 - Google Patents

マルチモーダル環境における対話管理およびアービトレーションを提供するシステムおよび方法 Download PDF

Info

Publication number
JP3943543B2
JP3943543B2 JP2003509304A JP2003509304A JP3943543B2 JP 3943543 B2 JP3943543 B2 JP 3943543B2 JP 2003509304 A JP2003509304 A JP 2003509304A JP 2003509304 A JP2003509304 A JP 2003509304A JP 3943543 B2 JP3943543 B2 JP 3943543B2
Authority
JP
Japan
Prior art keywords
application
dma
adma
query
manager
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003509304A
Other languages
English (en)
Other versions
JP2005503609A (ja
Inventor
コフマン、ダニエル、エム
ホスン、ラファ、エー
クラインディーンスト、ヤン
マエス、ステファン、エイチ
ラマン、ティルヴィルワマライ、ヴィー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2005503609A publication Critical patent/JP2005503609A/ja
Application granted granted Critical
Publication of JP3943543B2 publication Critical patent/JP3943543B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • User Interface Of Digital Computer (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、一般には、会話型コンピューティングを提供するシステムおよび方法に関し、詳細には、複数の会話型(マルチモーダル)アプリケーション間の対話管理と自動アービトレーションとを提供するプロトコル、およびそのプロトコルをサポートするアーキテクチャに関する。
コンピューティングの分野は、何十億もの相互接続されたパーベイシブ・クライアントが高性能の情報サーバと通信する時代に向かって進化している。実際、今21世紀は、ユビキタス情報アクセスを紛れもない事実にする多数の情報装置が利用可能になることによって特徴づけられるであろう。この進化は、インターネット、無線ネットワーク、または自発ネットワーク(BluetoothやJiniなど)で相互接続された何十億ものパーベイシブ装置が、マン−マシン対話の基礎となる原理を大変革することになる。近い将来、パーソナル情報装置により、ユビキタス・アクセスが可能になり、現在の個人的ニーズや能力に最も適した対話モダリティを使用して、どのような情報でも、いつでもどこでも作成、操作、交換することができるようになる。このような装置としては、従来型電話、携帯電話、高度自動機能電話、電子手帳、PDA、パーソナル・コンピュータなどの身近なアクセス装置などがあるが、これらの装置は、装置がユーザと情報をやり取りするために使用するインタフェース機器に大きなばらつきがある。
各ユーザが情報を操作するために利用可能な情報伝達性能の向上と共に情報が入手しやすくなり、それに伴って、マン−マシン・コミュニケーションの処理能力も向上させる必要が生じる。個人のその時々の特定の必要と能力とに合わせて設計された多種多様な機器を介して情報にアクセスすることができるということは、それらの対話がすべての利用可能な入出力(I/O)モダリティを利用してマン−マシン・コミュニケーションの処理能力を最大限にしなければならないということを必然的に意味する。実際、ユーザは、ハンズフリー、アイフリー環境における情報装置との対話を最大限にするために、そのようなマルチモーダル対話を求めるようになる。
現在の基盤は、複数の従来型アプリケーションやフレームワーク間でシームレスなマルチモーダル・アクセスを提供するようには構成されていない。実際、アクセス装置を使用し、通信ネットワークを介してサーバから夥しい量の情報(たとえば、専用ネットワークで利用可能な個人情報や企業情報や、インターネットなどの世界規模のコンピュータ・ネットワークを介してアクセス可能な公開情報)にアクセスすることができるものの、そのような情報の利用可能度は、ユーザがそのような情報を入手するための対話に使用するクライアント/アクセス装置のモダリティやプラットフォーム固有のソフトウェア・アプリケーションによって制約される場合がある。
しかし、会話型システムの導入が増えるに伴い、新たな技術的課題と制約に対処しなければならない。たとえば、様々な会話型アプリケーションの共存に対応する現在のフレームワークにおいてさえも、あらゆるモダリティ間、特に発話などの多義的なモダリティ間で、1つのアプリケーションから他のアプリケーションに自然に移行することは、そのようなアプリケーションのプログラミング・モデルと、アプリケーションを実行するプラットフォームのプログラミング・モデルに大幅な変更を加えなければ不可能である。たとえば、音声アプリケーションが一方のアプリケーションから他方のアプリケーションに移行するには、明示的(または事前作成)文法を定義する必要がある。したがって、そのようなシステム内のアービトレーションは、プラットフォームにインストールされているアプリケーションの知識なしに自動的に実行することができない。
さらに、現在の技術を使用した会話型アプリケーションの開発には、アプリケーションの目的と、ユーザとの対話をどのように定義すべきかという知識だけでなく、当該アプリケーション外部の他の多様なインタフェースとモジュールの知識が必要である。たとえば、(i)入出力装置との接続(電話インタフェース、マイクロフォン、ウェブ・ブラウザ、パーム・パイロット・ディスプレイ)、(ii)様々なエンジンとの接続(音声認識、自然言語理解、音声合成、および、場合によっては言語生成)、(iii)資源およびネットワーク管理、(iv)マルチモーダル・アプリケーション用の様々なモダリティ間の同期などである。
したがって、複数の会話型(マルチモーダル)アプリケーション間の対話管理および自動アービトレーションを提供するシステムと、そのようなアーキテクチャをサポートするプロトコルとが必要である。
米国特許出願第09/544823号 国際特許出願PCT/US99/22927 国際特許出願PCT/US99/22925 米国特許出願第09/703574号 米国特許仮出願第60/251085号 米国特許出願第09/545078号
本発明は、複数の会話型アプリケーション間の自動対話管理およびアービトレーションのためのプロトコルを介した会話型コンピューティングを提供するシステムおよび方法と、そのプロトコルをサポートするフレームワークとを対象とする。
本発明の一態様では、DMA(dialog manager andarbitrator(対話マネージャおよびアービトレータ))インタフェースが、複数のアプリケーション間のアービトレーションを行って所与のユーザ入力イベントのためのアクティブ・アプリケーションを判断するルートDMAと、各アプリケーションに少なくとも1つのアプリケーションDMAが関連づけられ、アプリケーション内の複数の副対話間のアービトレーションを行ってユーザ入力に関連づけられた副対話を管理するターゲット・アプリケーションDMAを判断する複数のアプリケーションDMAとを含む。好ましくは、DMAインタフェースは階層ツリー構造を含み、DMAインタフェースがボトムアップ手法を使用してアービトレーションを行う。ルートDMAとアプリケーションDMAは、ツリーの根がルートDMAである階層ツリー・アーキテクチャ内で動作する。アプリケーションが起動されると、そのアプリケーションは、アプリケーションの主対話を管理するためにアプリケーションDMAを生成する。このアプリケーションDMAは、ルートDMAに登録し、その子となる。アプリケーションは、副対話を管理するためにアプリケーションDMAの1つまたは複数のインスタンスをインスタンス化する。これらのインスタンスは、アプリケーションが最初に起動されたときに生成されたaDMAの子となる。子アプリケーションDMAは、別個のスレッドで生成されることが好ましい。
本発明の他の態様では、1つまたは複数のアプリケーションの対話を管理する方法が、
ルートDMA(dialog manager and arbitrator(対話マネージャおよびアービトレータ))インタフェースと1つまたは複数のアプリケーションDMAとを含む階層ツリー構造を含むDMAインタフェースをインスタンス化するステップと、
該ルートDMAによってユーザ入力イベントの通知をアプリケーションDMAに送るステップと、
該アプリケーションDMAが該ユーザ入力イベントの記号表現を入手するステップと、
該アプリケーションDMAが該記号表現のコンテキスト解決を行うアプリケーション・メソッドを呼び出すステップと、
該アプリケーションDMAが、該アプリケーションから該コンテキスト解決の結果を含む照会を受け取るステップと、
該DMAインタフェースが、該アプリケーションDMAが受け取った該照会に基づいて該アプリケーションDMAが現在アクティブであるか否かを判断するステップと、
該アプリケーションDMAが現在アクティブであると判断された場合に、該アプリケーションDMAが該照会に関連づけられたコールバック関数を起動するステップとを含む。
本発明の他の態様では、マルチモーダル入出力管理を行うシステムおよび方法が提供される。メッセージ/応答をユーザに提示するとき、I/Oマネージャが1つまたは複数のモダリティでメッセージを生成する。I/Oマネージャは、タスク・マネージャを使用して出力生成を駆動し、抽象出力イベントを生成する。I/Oマネージャは、抽象出力イベントを、ユーザに提示するための1つまたは複数のモダリティに変換する。
本発明の上記およびその他の態様、特徴、および利点は、添付図面と共に以下の好ましい実施形態の詳細な説明を読めば明らかになるであろう。
本明細書で使用する「会話型」および「会話型コンピューティング」という用語は、アクセス装置/チャネルの入出力機能にかかわりなく、好ましくは、オープンな相互運用可能通信プロトコルと、アプリケーション・データ・コンテンツ(層3)およびビジネス・ロジック(層2)をユーザ対話およびユーザが操作するデータ・モデルから分離する会話型プログラミング・モデル(たとえば会話型ジェスチャ・ベース・マークアップ言語)とを使用した、ユーザと機械との間、および様々なモダリティ(入出力機能)の装置またはプラットフォーム間のシームレスなマルチモーダル対話(情報交換)を指す。会話型コンピューティングは、人間と機械とが人間対人間の対話のように自然に対話を行うことができるようにする。
さらに、「会話型アプリケーション」という用語は、好ましくは(事前入出力を含む)短期および長期コンテキストを使用してユーザの意図を一義化し、把握する、アプリケーション内、および別々に開発されたアプリケーション間におけるマルチモーダルのフリーフロー対話(たとえば双方主導対話)を指す。会話型アプリケーションは、NLU(自然言語理解)を使用することが好ましい。
マルチモーダル・インタラクティブ対話は、(たとえばVoiceXMLで作成された)音声、映像(GUI)(たとえばHTML(ハイパーテキスト・マークアップ言語(Hypertext markup language))、制約型GUI(たとえばWML(ワイヤレス・マークアップ言語(wirelessmarkup language))、CHTML(コンパクトHTML)、HDML(ハンドヘルド・デバイス・マークアップ言語(handheld devicemarkup language))、およびこのようなモダリティの組合せ(たとえば音声とGUI)などのモダリティを含む。さらに、各モダリティ(またはモダリティの組合せ)は、完全NL(自然言語)ユーザ・インタフェースとして実現することもでき、その場合、汎用会話型ユーザ・インタフェース(CUI)が得られる。上記の各例は宣言型であるが、本発明によると、いずれのモダリティも命令型にプログラムすることができ、宣言型と命令型のプログラミングの組合せによってもプログラム可能であることを理解されたい。
本発明は、複数の会話型アプリケーション間の自動対話管理およびアービトレーションのためのプロトコルと、そのプロトコルをサポートするフレームワークとを介した会話型コンピューティングを行うシステムおよび方法とを対象とする。図1は、本発明の一実施形態による会話型コンピューティングを提供するシステムの高水準ブロック図である。このシステムは、会話型アプリケーションの開発を可能にする1組の協調動作する構成要素を含む、会話型アプリケーション・フレームワーク(CAF:conversational application framework)11を含む。たとえば、CAF11は、様々なエンジンとインタフェースし、基礎にある機能を呈示する構成要素を含む。CAF11は、CAF11が配備された装置のための必要なI/O抽象化を提供する構成要素を含む。さらに、後述するように、本システムは、本発明による会話型アプリケーションとCAF11との間のインタフェースを提供するDMAF(dialogmanager and arbitrator facade(対話マネージャおよびアービトレータ・ファサード))を含む。
好ましくは、CAF11は、アプリケーション・コンテンツ(ビジネス・ロジックおよびバックエンド・アクセス)をユーザ対話から分離することにより、会話型コンピューティング・プログラミング・モデルをサポートする。対話ベースのプログラミング・モデルの好ましい実施形態については、たとえば、2000年4月6日出願の「Method and System For Multi-Modal Browsing and Implementation of Aconversational Markup Language」という名称の米国特許出願第09/544823号に記載されている。同出願は、本発明の譲受人に譲渡され、その全部が参照により本明細書に組み込まれる。
会話型アプリケーション・プラットフォーム(CAP)10は、CAF11に必要なシステム・サービス12を特定のネイティブ・オペレーティング・システムにバインドするCAF11の実施態様を含む。CAF11がJava(R)で実施されそのサービスがJava(R)バーチャル・マシン13(および場合によっては追加のネイティブOSサービス)にバインドされている好ましい実施形態では、CAF11のこの実施態様を本明細書では会話型バーチャル・マシン(CVM)と呼ぶ。本発明はJava(R)で実施するのが好ましいが、他のオペレーティング・システム、プラットフォーム、またはバーチャル・マシンを使用して、本発明の教示および範囲により本明細書に記載のシステムおよび方法を実施することもできることを理解されたい。
CVMおよび対応する会話型プロトコルの好ましい実施形態については、1999年10月1日出願の「Conversational Computing Via Conversational Virtual Machine」という名称の国際特許出願PCT/US99/22927(米国国内段階で出願され、米国出願番号第09/806565号が与えられている)に記載されている。同出願は、本発明の譲受人に譲渡され、参照により本発明に組み込まれる。組み込まれる前記国際出願PCT/US99/22927号には、会話型API(アプリケーション・プログラム・インタフェース)、会話型プロトコル、および会話型ファウンデーション・クラスをアプリケーション開発者に呈示し、異なる会話機能を有するプラットフォームおよび装置間における対話とコンテキスト、会話エンジンと資源、および会話型プロトコル/通信を管理して汎用CUI(会話型ユーザ・インタフェース)を提供することにより会話型コンピューティングを実施する機能を果たすカーネル層を提供する、CVM(会話型バーチャル/マシン)の様々なアーキテクチャが記載されている。CVMは、スタンドアロンOS(オペレーティング/システム)として、あるいは従来のOS上またはRTOS(リアルタイム・オペレーティング・システム)上で動作するプラットフォームまたはカーネルとして実施することができ、従来のプラットフォームおよびアプリケーションとの下位互換性をもたせることもできる。
本発明の好ましい実施形態では、CAP10およびCAF11は、上記の国際出願PCT/US99/22927号に記載されている構成要素、API、および機能を含む。具体的には、本発明の好ましい実施形態は、たとえば、会話型アプリケーションとCAF11との間の対話を仲介するDMAF(対話マネージャおよびアービトレータ・ファサード)を実施する好ましい構成要素およびプロトコルの点で、上記の組込み国際出願PCT/US99/22927号の拡張である。このDMAFは、基礎にあるCAF構成要素への単一の標準接続点をアプリケーション開発者に提供するAPIである。DMAFは、アプリケーションと他のCAF構成要素との間の橋渡しをし、それによって、(i)基礎にあるCAF構成要素、(ii)エンジン提供者がエンジンと装置をどのようにプラットフォームにフックするか、または(iii)CAF構成要素とエンジンがどこに配置されているかに関してアプリケーション開発者が知らなくても済むようにする。したがって、DMAFは、開発を容易にし、複数のエンジン間の相互運用性とアーキテクチャの分散可能性を向上させる。さらに、DMAFは、DMAF上に構築されるアプリケーションの数、ドメイン、およびモダリティについて条件を課さない。したがって、本発明によるDMAFは、どのような会話型アプリケーションにおいても再利用可能である。
図2を参照すると、高水準ブロック図に、本発明の一実施形態によるDMAFを使用する会話型コンピューティングを実現するシステムが示されている。このシステムは、複数の外部インタフェースを備えるCVM14を含む。外部インタフェースは、会話型アプリケーション15と会話型アプリケーション開発者とのインタフェースを提供するDMAF16を含む。さらに、I/Oインタフェース18は、たとえばキーボード、マウス、タッチ・スクリーン、キーパッド、音声入出力(音声入力/音声出力)を取り込む音声サブシステムなどを含む従来のI/O装置17とのインタフェースを提供する。I/O API18は、装置抽象化、I/O抽象化、およびUI抽象化を提供し、使用する1つまたは複数のI/Oモダリティに基づくモダリティ依存プレゼンテーションを提供する。I/Oマネージャの好ましい実施形態については後述する。
さらに、エンジン・インタフェース20が、コア会話エンジン19(たとえば音声認識、NL構文解析、NLU、NLG、TTS、音声圧縮/圧縮解除エンジンなど)とそれらを使用するアプリケーションとの間のインタフェースを提供する。エンジンAPI20は、コア・エンジンがローカルにあるかリモートにあるかを問わず、コア・エンジンと通信するプロトコルを提供する。エンジン・インタフェース20はJSAPI(Java(R)スピーチ(speech)API)21およびAPIの拡張版を使用することが好ましい。
前述のように、本発明はDMAF(対話マネージャおよびアービトレータ・ファサード)実装の好ましい実施形態およびプロトコルを対象とする。以下の好ましい実施形態の説明では、DMAFが会話型バーチャル・マシン(CVM)内に実装されるものとするが、本発明によるDMAFは、1つまた複数のアプリケーションの対話管理を行うどのようなプラットフォームにも実装することができる。さらに、CVMは(本明細書および前記の国際出願PCT/US99/22927号に記載の)様々な構成要素を含むが、以下では、DMAFを含み、I/O管理に関係するCVM構成要素のみについて詳述する。さらに、DMA構成要素がアプリケーションおよび様々な他のCVM構成要素との通信に使用するインタフェースについても説明する。
本発明によるDMAF16は、複数の会話機能を備える。このような機能には、
(i)会話型アプリケーションにCAP(CVM)にフックする標準方式を提供する機能、
(ii)プラットフォーム上にインストールされた複数の会話型アプリケーション間のアービトレーション、
(iii)同一アプリケーションに関連づけられた複数の副対話間のアービトレーション、および
(iv)アプリケーション情報の記憶と管理
が含まれる。
上記の機能を提供するために、DMAF16は、アプリケーション開発者が開発した会話型アプリケーションをCVMプラットフォーム14上にインストールし、起動することができるようにする1組のインタフェースを含むことが好ましい。さらに、DMAF16は、アプリケーション開発者が、フレームワークが備えるアービトレーション機能と対話管理機能にアクセスすることができるようにする1組のインタフェースを含む。
一般に、1つまたは複数の会話型アプリケーションを管理するために、CVMは、副対話マネージャ間の対話管理とアービトレーションを行う複合機能を実行する複数の対話マネージャおよびアービトレータ(DMA)をインスタンス化する。このような管理およびアービトレーション機能を実行するために、アプリケーション開発者はDMAハンドルを介してDMAFを使用する。会話型アプリケーションが初期設定され、起動されると、主対話のためのDMAインスタンスが作成され、アプリケーションと関連づけられる。アプリケーションの実行中は、この関連づけられたDMAがユーザ入力を管理し、ユーザ入力を適切な処理段階に渡し、最後に、そのような様々な処理段階か入手したユーザの意図の記号表現を処理する機会をアプリケーションに与える。
ユーザの意図を解釈するために、アプリケーションは、NLUによって返されるコマンド、トランザクション履歴、現在のコンテキストなどの追加情報を入手するようにDMAに要求することができる。この解釈の結果は、DMAに返される。アービトレーションが完了した後、アプリケーションのDMAがプラットフォーム上で動作しているすべてのアプリケーションのうちで最も確からしさの高い解釈を生成した場合、DMAはその解釈を処理するアプリケーション・メソッドを起動する。
DMAは、これらのメソッドの出力を処理のために適切な構成要素に渡すことによって管理し、(後述するように)入力の処理に使用するアルゴリズム・ストリングと同様のアルゴリズム・ストリングを使用して、適切なエンジンによる応答の処理と生成を制御する。処理後、アプリケーションの要件に従って出力応答が生成され、最終的にユーザに戻されて提示される。ユーザの意図を解釈するプロセスは、CVMまたはその目的のために設計された他の構成要素の対話管理機能によって行うこともできるものと理解されたい。さらに、このようなプロセスは、(アプリケーション提供者が提供するのではなく)プラットフォームまたは他のアプリケーションによって提供することもできる。
以下の説明では、本発明による対話管理およびアービトレーション・プロトコルを実施する、好ましい機構、構成要素、およびプロトコルについて概説する。総体的には、本発明は、(i)プラットフォームに対話アプリケーションをインストールし、(ii)アプリケーション開発者がDMAF構成要素を使用することができるようにし、(iii)DMAFが他のCVM構成要素と通信することができるようにする機構を提供する。
初期設定機構およびインストール機構
好ましい実施形態では、初期設定機構およびインストール機構は、CVMプラットフォームを初期設定し、様々な構成要素がインスタンス化されてプラットフォームがアプリケーションのインストールを行う準備が整うようにする機構を含む。さらに、CVM上に対話アプリケーションをインストールするための機構を備える。また、CVM上でアプリケーションを動作させ、それによって、アプリケーションを音声またはGUI/コマンド行を介して起動することができるようにする機構も備える。さらに、CVMに複数のアプリケーションをインストールして実行する機構も備える。これにより、必要に応じてプラットフォーム上で動作している複数のアプリケーション間のアービトレーションとそれらのアプリケーション間の一義化を行うことができる最上位DMAが生成される。このような初期設定機構およびインストール機構の詳細については後述する。
対話管理機構およびアービトレーション機構
次に、本発明は、対話管理およびアービトレーションを実施する複数の機構を提供する。好ましくは、新しいDMAインスタンスを作成し、それによって、所与のアプリケーションが最初に起動されたときにそのアプリケーションの主対話を管理する1つのDMAインスタンスが常に生成されるようにする機構を備える。さらに、その所与のアプリケーションが、そのアプリケーションに関連づけられた副対話を管理するための他のDMAインスタンスも生成することができる(ただし必須ではない)。
さらに、DMAFは、副対話がある場合にそれらの副対話間のアービトレーションを行う機構を備え、それによって、所与のユーザ入力について、アービトレーション機構が、関連づけられた副対話を管理する目的DMAインスタンスを判断し、必要に応じて一義化する。
さらに、DMAFは、DMAを介してCVMにアプリケーション・プロパティを伝える機構を備える。これらのアプリケーションは、ローカルにあってもよく、また異なる装置または端末に分散していてもよい。このようなプロパティとしては、エンジン資源(音声認識、NLUなど)データ・ファイル(NLUオブジェクトや文法オブジェクトなど)などのアプリケーションが必要とする資源や、入力処理のためのアルゴリズム・ストリング(すなわちユーザ入力を処理するのに必要なエンジンのセットと順序)が含まれる。たとえば、ユーザ入力が発話(音声コマンド)を含む場合、アルゴリズム・ストリングは、フロント・エンド+音声認識+NLUを含む。ユーザ入力がタイプ入力コマンドである場合、アルゴリズム・ストリングはNLUなどのみとなる。
1つまたは複数のアプリケーション・プロパティが変更された場合にDMA(および場合によっては他のCVM構成要素)にそれを通知する機構も備える。たとえば、アプリケーション・プロパティに加えられた変更は、(CVM構成要素である)タスク・マネージャに通知しなければならない。後述するように、タスク・マネージャは対話エンジンと通信するCVM構成要素であり、したがって、タスク・マネージャは、ユーザ入力を処理する適切なエンジンをインスタンス化して使用することができるようにユーザ入力のアルゴリズム・ストリングを知る必要があり、そのようなストリングが変更されたときにはそれを知る必要がある。
さらに、DMAFは、DMAにコマンド・レジストリを伝える機構を含むことが好ましい。コマンド・レジストリはコールバック関数に対する照会をマップする。アプリケーションは、所与のDMAからユーザ意図の記号表現を受け取る。コンテキスト解決後、アプリケーションは、ユーザ意図の解釈を生成する。この解釈を、本明細書では「照会」と呼ぶ。コールバック関数は、ユーザ意図の解釈に関連づけられたアプリケーション・メソッドを含む。したがって、照会を受け取るDMAは、それに関連づけられたメソッドを起動する。アプリケーション開発者は、コマンド・レジストリを随時更新することができる。
DMAFが提供する他の機能として、ユーザ入力のために生成されたイベントのリストの維持と更新の機構がある。このようなイベントとしては、たとえば、入力通知、NLUの結果、生成された照会、コールバック応答などがある。さらに、所与のセッション全体を通して実行されたタスクのリストの維持と更新を行う機構も備える。タスクは、特定のアクションを行うために必要な1つまたは複数のユーザ入力を含む。したがって、すべてのタスクについて、各ユーザ入力のために生成されたイベントのサブセットが維持される。
DMAFは、さらに、それぞれのアプリケーションで使用することができる情報を格納し、取り出すためのトランザクション履歴を、アプリケーション開発者に提供する機構を備える。この情報は、アプリケーション開発者の裁量に委ねられており、アプリケーション開発者がたとえばアクションの取消しや繰り返しの際に利用することができる、より意味論的レベルでイベントをグループ化するためのものである。好ましい実施形態では、どのような情報を格納し、取り出すかはアプリケーション開発者が指定するものとするが、本発明では、そのような決定を(たとえば、特別な履歴/コンテキスト/メタ情報マネージャ、CVMのサービス、または他のアプリケーションによって)自動的に行い、管理する適切な技法を実施することもできる。
さらに、DMAFは、期待履歴や現在の状態などに基づくNLUの結果の検証など、ユーザ入力イベントをアプリケーションと協同して一義化する機構も含む。一実施形態では、協同は、DMAによって維持されている様々な記帳コンテナへのアクセスを提供することによって行われる。その場合、アプリケーションは、コンテキスト解決を行い、その結果の照会をDMAインスタンスに返すことができる。この場合も、前述のように、例示の実施形態では、コンテキスト解決はアプリケーションによって行われる(アプリケーション開発者によってプログラムされる)。ただし、コンテキスト解決は、他のサービス、マネージャ、またはCVM、または他のアプリケーションによって包括的またはアプリケーション限定的に行うこともできる。
さらにDMAFは、(アービトレーション・ヒューリスティクスに基づいて)所与のDMAインスタンスが実際にユーザ入力の対象であると判断された後、最高得点の照会結果に基づいて適切なアプリケーション・メソッドを起動する機構を含む。
ディクテーション機構
DMAFは、ディクテーションを行う複数の機構を含むことが好ましい。ディクテーション・セッション中、(ディクテーション・アプリケーションを管理する)DMAが、上位DMAにすべてのユーザ入力通知を当該DMAにのみ送るように通知できるようにする機構を備える。このディクテーション機能を提供する機構は、以下の通りであることが好ましい。
DMAが、ディクテーションを開始することを最上位DMAに通知するために使用し、最上位DMAがすべてのユーザ入力通知を当該DMAにのみ送るための通知方法を設けることが好ましい。さらに、ディクテーションを終了し、すべてのDMAに対する入力通知を再開する通知機構を備えることが好ましい。一実施形態では、ユーザはGUI入力または音声コマンドを介してディクテーションを明確に停止する。ユーザがディクテーションを終了させると、ディクテーションを管理するDMAが、最上位DMAにその終了を通知し、最上位DMAはすべての登録アプリケーションへのユーザ入力を再開する。
ディクテーションに関する他の機構は、ユーザがディクテーションを停止するように要求すると、ディクテーション・モードのアプリケーションが確実に入力制御を解放するようにする方法を含む。これは、好ましくは貪欲なアプリケーションがプラットフォーム上の他のアプリケーションにユーザ入力を受け取らせようとしなくなるのを防ぐためである。
他の実施形態では、プラットフォーム(サービスまたは他のアプリケーション)が、ディクテーションの開始と終了を自動的に判断する追加の機構を備えることができる。本明細書に記載の教示には、この実施形態に付随するDMAおよびアプリケーションも含まれる。
コンテキスト解決機構
DMAFは、さらに、コンテキスト解決を行う複数の機構を含む。コンテキスト解決は、現在状態、履歴、およびフォーカスに基づいて行うことが好ましく、照会を一義化するために使用される。たとえば、「open her mail(彼女のメールを開く)」という形の入力で、代名詞herはユーザが最後に話題にした人物を指す場合、DMAに設けられた様々な履歴内のイベントを調べ、最後に使用された名前が「メアリ(Mary)」であることを検出することによって一義化することができる。このアソシエーションが見つかった場合、以前の多義的コマンドopen_mail(sender=her)が、一義的コマンドopen_mail(sender=Mary)になる。この一義的コマンドは、それ以上の一義化対話を行わなくても、バックエンド・アプリケーションに送ったり、処理したりすることができる。
ただし、このアソシエーション処理には、アプリケーションの情報を解釈する機能が必要である。しかし、DMAは可能な限り汎用的な状態に維持し、しかも、DMAがコンテキスト解決を行うのに十分な性能を持つことができるようにすることが好ましい。
このようなコンテキスト解決機能を提供するために、DMAFはDMAによって実施される様々な方法を備える。DMAが実施する1つの方法では、DMAは様々な履歴内にアプリケーション情報を維持、管理し、アプリケーション開発者がそのような履歴にアクセスすることができるようにする。他の方法は、所与のアプリケーションが、当該所与のアプリケーションにのみ関係するイベントに変更を加えたりアクセスするようにしてコンテナの整合性を確実に維持するために必要な、セキュリティ機構を実施する。したがって、ユーザまたはアプリケーション開発者は、他のアプリケーションと共用可能な情報と、特定のアプリケーションでのみ共用すべき情報とを指定することができる。所与の情報または情報のタイプについて、このような親和アプリケーション、公用アプリケーション、または私用アプリケーションと、それに応じて使用する必要があるセキュリティ・ポリシーまたは共用ポリシーとを特定するための方法も使用することができる。
他の方法では、アプリケーションのために1つまたは複数のコンテキスト解決プロトコルを設ける。好ましいコンテキスト解決方策については詳述しない。ただし、使用する方法にかかわらず、その結果のDMAFは本発明の教示に含まれる。この場合も、これらの方法は、CVM、アプリケーション開発者、または他のアプリケーションによって提供することができる。これらは、DMAの一部とみなすこともでき、DMAの外部にあるものとみなすことができる。アプリケーション開発者はDMAFが備える方法のいずれか1つを使用するか、または自分で実現することもできる。
DMAアーキテクチャ
本発明は、DMAインスタンスが互いに通信することができるようにする機構を提供する。実際に、好ましい実施形態では、複数のアプリケーション間、および同一アプリケーション内の様々な副対話間でアービトレーションを行うために、階層的DMAアーキテクチャを実装することが好ましい。
ロードされたアプリケーションのセキュリティ設定によって、様々なアプリケーションが、それぞれのDMA間で情報(コンテキストやユーザ入力など)を交換したりしなかったりする。アプリケーションが情報を共用することができない場合(たとえば異なる提供者によって提供されており、機密情報を含む場合など)、極端な場合には、アービトレーションを親和アプリケーションに限定する必要があることがある。1つの親和アプリケーション・クラスタ上にフォーカスがある状態から、別のクラスタに切り換えるには、プラットフォームにそのような切換えを行わせる明示的コマンドが必要になる。過去のコンテキストは失われる可能性がある。これは、後述のディクテーションに使用される機構でも同様である。
次に図3を参照すると、本発明の一実施形態によるDMAFによって実施される階層DMAストラクチャがブロック図で示されている。この実施形態では、最上位DMA30インスタンスが、CVMプラットフォームにインストールされている複数のアプリケーション31、32間のアービトレーションを行う。本明細書では、最上位DMAインスタンスを「ルートDMAインスタンス」または「rDMA」と呼ぶ。各アプリケーション31および32は、DMAのインスタンスを少なくとも1つ作成してその主対話を管理する。たとえば、アプリケーション31はDMAインスタンス33を作成し、アプリケーション32はDMAインスタンス34を作成する。これらのDMAインスタンス33および34は、最上位DMAインスタンス30の子である。本明細書では、特定のアプリケーションのために作成されたDMAインスタンスを「アプリケーションDMAインスタンス」または「aDMA」と呼ぶ。図3に階層アーキテクチャをさらに拡張して、(たとえばアプリケーションの副対話内に)所与のaDMAの新しいインスタンスを作成することができる。たとえば、副対話を管理するために、aDMA33の新しいaDMAインスタンス35および36を生成する。これらのaDMAインスタンス35および36は、アプリケーション31の主対話を管理するaDMA33の子である。
したがって、図3で、rDMA30はツリーの最上位にあり、プラットフォームにインストールされているすべてのアプリケーション間のアービトレーションを行う。所与のアプリケーションの主対話を管理するaDMAは、rDMAの子である。アプリケーションのために作成された後続のすべてのaDMAは、主対話を管理するaDMAの子孫になる。
対話管理サービスを受け取るためには、アプリケーションはrDMA30に登録してaDMAハンドルを入手しなければならない。登録は、アプリケーションの起動時に行うことが好ましい。図3のアーキテクチャにおけるrDMA30は、複数のサービスを提供する。たとえば、rDMA30は登録されているすべてのaDMAのリストを維持し、どの登録aDMAがアクティブになっているかを追跡する。アクティブaDMAは、現在「フォーカスがある」aDMAである。一実施形態では、1対話ターンについて最大で1つのアクティブaDMAがある。DMAFが1ユーザ入力当たり複数のアクションをサポートする他の実施形態では、1対話ターンについて複数のアクティブDMAがあってもよい。
さらに、rDMA30は、ユーザ入力にI/O通知イベントを関連づけ、履歴で追跡する。rDMA30は、フォーカスの切換えを追跡し、子によって履歴に格納されるイベントを追跡する。イベントは、aDMAによって通常の記帳の一環として格納されることが好ましい。さらに、rDMA30は、特定の子から要求された場合、履歴に格納されているイベントのために子を呼び出す。たとえば、一義化の場合、子aDMAはその親(この場合rDMA)に対して、一義化で使用する可能性のある何らかの情報のためにその子を呼び出すように依頼する。子、アプリケーション、または副対話のそれぞれによって設定されているセキュリティ設定に応じて、rDMAはこのような情報の提供を受け付けたり拒否したりする。このセキュリティ設定は、初期設定時に行うことも、時間の経過と共に動的に変化することもできる。これらのプロパティは、各対話型アプリケーションとのDMAFインタフェースを介して設定することができる。アプリケーションが共用を拒否する場合、ユーザからの明示的フォーカス切換えコマンドが必要である。
rDMAとaDMAとの間では様々な情報が交換される。このような情報には、たとえば、(i)aDMAをrDMAに登録/登録抹消するための情報、(ii)登録aDMAに送られるI/O通知イベント、(iii)aDMA間のアービトレーションを行ってどのaDMAが現在アクティブであるかを判断するためにrDMAがそのすべての子aDMAから受け取る最高得点照会、(iv)I/Oトランザクションの処理に移るようにアクティブaDMAに送られる通知(およびそれと並行して、非アクティブaDMAに対して処理に移らないように送られる通知)、(v)コンテキストまたはフォーカスの変更の確認、(vi)次のプロンプトを求める要求、またはrDMAがプロンプトを作成するためにNLG(自然言語生成)エンジンに送る属性をその子DMAに求めることができる要求、(vii)子の履歴に格納されている情報を求めるための子の呼出しなどがある。
DMAが分散されている場合、上記の情報を暗号化することができる。この種の情報はきわめて機密性が高いため、DMAクライアントを信用することができない可能性がある。この問題に対処するために、様々な解決策を提供することができる。たとえば、一実施形態では、情報を交換することができる親和アプリケーションと、情報を交換することができない非親和アプリケーションとを指定する機構を設けることができる。親和アプリケーションは、同じ提供者によって開発されたものとすることができる。親和アプリケーションを指定する1つの機構は、電子認証またはその他の認証機構による認証を含む。これは、対話管理はアプリケーション内で行うことができるが、アプリケーション間のアービトレーションは、親和アプリケーションに限定されることを意味する。前述のように、他の親和アプリケーション・グループへの切換えには、ユーザによる明示的コマンドが必要である。これは、たとえば、ユーザがCVMに対して明示的(「switch to ...(...に切り換えよ)など」)または暗示的(他のウィンドウのクリック)に出すコマンドである。どのアプリケーションが親和アプリケーションでどのアプリケーションが親和でないかという概念は、静的または動的な複数の基準(たとえば、現在のアプリケーションの機能、アプリケーションの状態、または、ユーザの選好を含めたその他の外部条件)を基にすることができる。
もう一つの解決策は、保全性を証明し、暗号化された情報を子または親と交換することができる「捺印済み」aDMAコードを使用することである。「捺印済み」という用語は、当該情報を、いかなるインタフェースを介してもその外部に明らかにせず、その情報をローカルで暗号化することを意味する。この「捺印済み」手法は、DMAが、解釈、対話管理、およびコンテキスト管理をすべて内部で(包括的またはアプリケーション固有に)行い、それによって情報を外部に渡す必要がない場合に適している。
他の解決策も実施可能であることを理解されたい。どのような解決策を実施した場合であっても、その結果のDMAは本発明により予測されているものと理解すべきである。
rDMAは、ボトムアップ手法を使用して複数のaDMA間のアービトレーションを行うことが好ましい。この手法では、ユーザ入力の通知がrDMAから登録されている各子aDMAに渡され、さらに、各子aDMAはそのユーザ入力を関連づけられた子に渡す。この手法の効率を向上させるために、枝刈り機構を備えることが好ましい。一実施形態では、ユーザ入力は、それまで「i」ターンの間アクティブであった(すなわちフォーカスがあった)すべての登録aDMAに渡される。ただし、「i」は、何らかの定義可能な数値である。どのような学習または最適化済み、またはヒューリスティックな(静的または動的)方法でも、DMAアーキテクチャおよび実行原理に変更を加えることなく使用することができる。以下の説明では枝刈りを行わず、すべての登録aDMAに実際に通知されるようにするものとする。
さらに、アービトレーションを実現するヒューリスティック、決定論的、または統計的アルゴリズムは、プラグ可能であることが好ましい。したがって、アービトレーション方策は、フレームワークの初期設定時に動的にロードされる。CAFをインストールする開発者は自分のアービトレーション方策をインストールすることができることが好ましい。この場合も、アービトレーション・アルゴリズムは、プラットフォーム、CVMサービス、または外部アプリケーションによって提供することができる。これらは、汎用的、またはロードされるアプリケーション固有のものとすることができる。これらは、DMAの一部とみなすこともDMAの外部にあるものとみなすこともできる。
図4は、対話管理およびアービトレーションを行う方法の一例を示すブロック図である。具体的には、図4は、カレンダー・アプリケーション40、投資信託アプリケーション41、航空座席予約システム・アプリケーション42の3つのアプリケーションの作成を示している。これらのアプリケーション40、41、および42はすべて、rDMA43によって管理されている。投資信託アプリケーション41のために、主対話を管理する1つのaDMA44が生成され、このaDMA44からユーザ・アクセス副対話と投資信託トランザクション副対話を処理する2つのaDMAがインスタンス化される。すなわち、ユーザ・アクセスを扱う副対話aDMA45と、投資信託トランザクションを扱う副対話aDMA46である。トランザクション対話はさらに細分され、2つの異なるaDMA47および48によって、それぞれ販売トランザクションと購入トランザクションが処理される。具体的には、投資信託の販売を扱うトランザクション対話下の副対話は、aDMA47によって管理され、投資信託の購入を扱うトランザクション対話下の副対話はaDMA46によって管理される。
さらに、図4の例示の実施形態では、カレンダ・アプリケーション40と航空座席予約アプリケーション42の両方がそれぞれ、1つのaDMAインスタンス48および50を生成し、対応するアプリケーションに関連づけられた主対話を扱う。
DMA構成要素
以下の説明では、記帳サービスを行うために使用する、DMAの好ましい構成要素を扱う。図5は、本発明の実施形態により、そのような目的のために使用されるrDMAおよびaDMAの好ましい構成要素を示す図である。本発明の他の実施形態では、DMAの原理に影響を与えることなく、これらの構成要素を除外したり、異なる方法で組み合わせたり、他の構成要素を組み込んだりすることができる。rDMA60は、登録された子aDMAを、aDMAが扱う対応アプリケーションにマップする登録テーブル61を含む。aDMA65は、子aDMAを、それらの子aDMAが扱う副対話に関連づけるために使用される登録テーブル66を含む。rDMA60は、さらに、所与のセッション全体を通してアクティブなaDMAのレコードを格納するフォーカス履歴62を含む。同様に、aDMA65は、所与のセッション全体を通してアクティブな子aDMAのレコードを格納するフォーカス履歴67を含む。
さらに、aDMA65は、アプリケーション開発者に、完了したトランザクションを格納することができるコンテナを提供するトランザクション履歴を含む。完了したトランザクションは、何らかの意味論的意味を共有する様々なタスクをグループ化することができる。好ましい実施形態では、トランザクション履歴68に格納される情報はすべてアプリケーション開発者の裁量に任されていることを理解されたい。このトランザクション履歴68は、アプリケーションが、たとえばアクションの「取消し」、「繰り返し」、記憶、要約などを行うために使用することができる。たとえば、「取消し」操作をコード化するには、アプリケーションは、トランザクション履歴を使用して、特定のトランザクションを遂行するために行うすべてのステップを記録することができる。ユーザが、最後に行ったトランザクションを「取消し」したい場合、アプリケーションは、そのトランザクションについて記録されたタスクのリストを取り出し、各タスクを逆順に取り消し、それによって、アプリケーションの状態をユーザがそのトランザクションを行う前の状態に回復させることができる。
さらに、rDMA60は以下の情報を維持する短期履歴ストア63を含む。すなわち、(i)I/O通知イベント、(ii)I/O通知を受け取ったaDMA(この場合も、すべての登録aDMAがI/O通知イベントを受け取るものとするが、枝刈り機構を使用する他の実施形態では登録aDMAのサブセットのみが通知を受け取り、そのサブセットは、何らかのヒューリスティック、学習、決定論的、または統計的最適化アルゴリズムなどによって決定することができる。ヒューリスティック・アルゴリズムの場合、I/O通知を受け取る登録aDMAのリストを維持する。)、(iii)「タスクの実行を開始せよ」という通知を受け取ったaDMA(すなわち現在アクティブaDMA)、(iv)出力要求通知およびそれを送ったaDMA、(v)タスクが実行されたときにaDMAが送ったタスク記述子(このタスク記述子は、所与のタスクのために生成されたイベントのサブセットを含む(aDMAにおけるLHTを参照))などである。
aDMA65は、対話において特定の状態を生成したすべてのイベントを格納する短期履歴ストア70を含む。このようなイベントには含まれるのは、(i)、入力通知イベント、(ii)タスク・マネージャ通知イベント、(iii)NLU結果(またはエンジンから戻される結果)、(iv)コンテキスト解決の結果(この結果はアプリケーションによって渡される。アプリケーションはLHT、STH、フォーカス履歴へのアクセスを入手し、実際の照会が何であるかを判断する。その結果、すでに記入された特徴/値の対のリストに変更が加えられることがある。aDMAは、アプリケーション・コンテキスト・オブジェクトを介してこの情報にアクセスすることができる)、(v)親DMA(これが主aDMAである場合は親aDMAまたはrDMAとすることができる)に返送された照会、および(vi)フォーカス計算後の親応答などである。
短期履歴は、コールバック関数が戻されるとフラッシュされる。その場合、短期履歴に格納されているもののサブセットは、後述のように記述子に入れられて長期履歴に格納される。
rDMA60は、さらに、非アクティブaDMAのタスク記述子を格納する長期履歴64を含む。すなわち、対話が終了すると、特定のaDMAのSTH内のタスク記述子がLTHに移動される。aDMA65は、タスクの実行を引き起こす主イベントを格納する長期履歴70を含む。短期履歴には、対話における各状態のレベルの情報が格納されるのに対し、長期履歴には、対話全体レベルの情報が格納される。したがって、タスクが完了し、対話が新しい状態になると、短期履歴内のイベントのサブセットが長期履歴にプッシュアウトされる。このイベントのサブセットは、記述子オブジェクトとしてグループ化することができ、それにI/OトランザクションIDが付与されて長期履歴にプッシュアウトされる。イベントのサブセットには、(i)I/O入力通知イベント、(ii)照会オブジェクト、および(iii)コールバック応答が含まれる。
DMAFとCAF構成要素との対話
DMAFは、CVMの他の構成要素と共に動作する。図6を参照すると、本発明の一実施形態による会話型コンピューティングを行うシステムがブロック図で示されている。具体的には、図6の実施形態は、DMAFと他のCAF構成要素との間のインタフェースを示している。このシステムは、会話型アプリケーション80と、アプリケーションDMA81と、ルートDMA82と、I/Oマネージャ83と、スレッドプール・マネージャ85およびエンジン・マネージャ86を含むタスク・マネージャ84と、資源マネージャ87と、複数の会話エンジン88とを含む。アプリケーションDMA81とルートDMA82、および関連インタフェースは、DMAFを含む。DMAFは、会話型アプリケーション80とその他のCAF構成要素83、84、85、86、87、および88との間のインタフェースをとる。
I/Oマネージャ83は、すべての入出力装置とインタフェースするCAF構成要素である。I/Oマネージャ83は、DMAFとの内部インタフェースを介して、rDMA82に入力通知イベントを送り、rDMA82を介して送られる出力要求をユーザに提示する。具体的には、I/Oマネージャ83は、以下の機能を実行する。すなわち、(i)rDMAにユーザ入力通知イベントを送り、(ii)rDMAから出力通知要求を受け取り、(iii)子が入力を消費するときにrDMAから肯定応答を受け取り、(iv)出力を提示した後でrDMAに肯定応答を送る。したがって、rDMA側から見ると、I/Oマネージャとの対話には、入力通知イベントを受け取るメソッドと、出力生成要求を送るメソッドとが必要である。本発明によるI/O管理を行う好ましい実施形態およびプロトコルについては以下で詳述する。
さらに、DMAFは、エンジンAPIを介してエンジン88(ASR、NLなど)とインタフェースするCAF構成要素であるタスク・マネージャ84と通信する。タスク・マネージャは、たとえばエンジン88の初期設定と構成、スレッドの登録、プロンプトの作成、出力の合成などを行う、アプリケーションDMA81からのコマンドを処理する。タスク・マネージャ88は、スレッドプール・マネージャ85とエンジン・マネージャ86の2つの構成要素を含む。スレッドプール・マネージャ85は、プラットフォームによって作成されたスレッドを追跡する役割を果たす。DMAFのコンテキストでは、スレッドプール・マネージャ85は、アプリケーション80の起動時に作成される(アプリケーションDMA81に関連づけられた)主アプリケーション・スレッドと、アプリケーション80の副対話を管理するために子aDMAが作成されるときに作成されるすべてのスレッドを管理する。エンジン・マネージャ86は、エンジンAPIとの一次インタフェースとして機能する。エンジン・マネージャ86は、CVMのもう一つの構成要素である資源マネージャ87と協同する。資源マネージャ87は、プラットフォーム上のすべての資源を管理するが、好ましい実施形態では、資源マネージャはDMAFとは直接対話せず、タスク・マネージャがアクセスする資源を指定するだけである。
タスク・マネージャ84の役割には以下のものが含まれる。すなわち、(i)aDMAからユーザ入力通知イベントを受け取ることと、(ii)エンジンの結果(たとえばNLU特徴値の対、NLU構文解析木、フリー・テキストなど)をDMAに送ることと、(iii)aDMAから出力要求生成を受け取ることと、(iv)aDMAに出力結果(たとえばプロンプト)を送ることと、(v)スレッドプール・マネージャを介してスレッドを管理することである。DMAが新しいスレッドを作成すると、スレッドはそれ自体をスレッドプール・マネージャ85に登録する。スレッドプール・マネージャ85は、CVM構成要素によって作成されたすべてのスレッドを管理する。
好ましい実施形態では、タスク・マネージャ84はXMLベースのコード化体系を使用してエンジン88と対話管理フレームワークとの間で情報を交換する。好ましいXMLコード化は、必要になったときに新しい情報を追加することができるように拡張可能な、XMLの単純な方言を定義することを理解されたい。XMLストリームを使用して対話管理フレームワークとエンジンとを通信させることによって、このアーキテクチャは自動的に分散可能になる。その場合、対話管理フレームワークとエンジンは、互いをXMLコード化ストリームの生成者/消費者とみなす。XMLコード化(たとえばSOAPなどのXMLプロトコル)において制御交換を交換することができ、その際、場合によっては、たとえば1999年10月1日出願の「System and Method For Providing Network Coordinated ConversationalServices」という名称の国際出願PCT/US99/22925号に記載されている機構と、2000年11月1日出願の「ConversationalNetworking Via Transport, Coding and Control Conversational Protocols」という名称の米国特許出願第09/703574号に記載の機構を使用して、制御交換を着信または発信音声またはマルチメディア・ストリームと同期させることができる。米国特許出願第09/703574号には、たとえば分散装置/アプリケーション間で制御情報のリアルタイム交換を行う、(RTP(リアルタイム・プロトコル)の拡張版である)新規なリアルタイム・ストリーミング・プロトコルについて記載されている。
DMAと会話型アプリケーションとのインタフェース
以下では、DMAFが会話型開発者に呈示する様々なインタフェースについて説明する。これらのインタフェースは、アプリケーション開発者側から見ると、DMAFとの(したがってCVMとの)完全な対話を可能にする。
好ましい実施形態では、CVMプラットフォームへのアクセスを提供するように、DMAFを使用して会話型シェル・アプリケーション(または「CVMshell」)を実現する。CVMshellアプリケーションは、所与のプラットフォームにCVMがインストールされるとインスタンス化される。CVMshellは、プラットフォームがホストする最初のアプリケーションであることが好ましい。
CVMshellは、複数の好ましい機能を提供する特殊アプリケーションである。たとえば、シェル・アプリケーションは、すべてのCVM構成要素をインスタンス化する。CVMshellは、アプリケーション開発者が、開発した会話型アプリケーションをCVMプラットフォームにインストールするために実装しなければならない「インストール・インタフェース」を提供する。CVMshellは、アプリケーション開発者が自分のアプリケーションをCVMにローカルまたはリモートからダウンロードするために使用する、単純なコマンド行インタプリタを備える。さらに、CVMshellは、ユーザが、コマンド行GUIまたは音声コマンドあるいはその両方を介してプラットフォーム上でアプリケーションを実行することができるようにするインタフェースも提供する。
さらに、CMVshellは、rDMA、I/Oマネージャ、タスク・マネージャ(これらはさらに、スレッドプール・マネージャ・モジュールやエンジン・マネージャ・モジュールをインスタンス化する)、資源マネージャなどの構成要素をインスタンス化する複数のメソッドを含む。好ましくは、これらすべてのクラスのインスタンスを生成するためのクラスのファクトリを備える。
CVMshellは、シェル・プロパティ・クラスをインスタンス化し、それにシェル、データ・ファイル、およびアルゴリズム・ストリングのすべての資源を格納する関数を備える。さらに、CVMshellは、コマンド・レジストリを作成する。コマンド・レジストリ・テーブルは、CVMにアプリケーションがインストールされていないときには空であるが、最終的には、所与のアプリケーションを起動するコマンドのリストと、そのアプリケーションへの対応する入口点がコマンド・レジストリに格納される。さらに、CVMshellは、新しいaDMAオブジェクトを生成し、シェルのプロパティ・クラスをそのコンストラクタに送る(コンストラクタはaDMAとタスク・マネージャを当該クラスのリスナとして付加する)。
CVMshellが初期設定されると、すべてのオブジェクトがインスタンス化される。CVMshellはさらに、これらのオブジェクトにハンドルを返す静的メソッドを含む。
CVMshellによって提供される「インストール・インタフェース」は、アプリケーション開発者がプラットフォームにアプリケーションをインストールすることができるようにするインタフェースである。インストール・インタフェースは、以下のメソッドを提供することが好ましい。すなわち、(i)アプリケーション名と、そのアプリケーション名を実現するクラスの指定、(ii)アプリケーションを起動するために使用することができるコマンドのリストの生成、(iii)それらのコマンドがエンジンによって把握されると起動するコールバック関数のリストの生成、(iv)アプリケーションの起動方式(GUI、コマンド行など)の指定、を行うメソッドである。
インストール・プログラムを実行すると、CVMshellのコマンド・レジストリに、アプリケーションによって提供されるコールバック関数とコマンドが格納される。新しいアプリケーションがインストールされるたびに、コマンド・レジストリに新しいコマンドとコールバック関数が追加される。2つのアプリケーションが1つまたは複数の同じ起動コマンドを使用する場合、インストール・インタフェースは、選択されたコマンドによって前のアプリケーションの起動コマンドが上書きされることを2番目のアプリケーションに警告するものと理解されたい。
DMAFはさらに、会話型アプリケーションとの対話を可能にする複数のメソッドを実装する。具体的には、DMAFは、アプリケーションが利用することができ、次のような機能を実現するために使用されるメソッドを実装することが好ましい。すなわち、(i)DMAを生成し、(タスク・マネージャに渡される)文法、言語モデル、入出力処理指定のためのアルゴリズム・ストリングなどのDMAアプリケーション・プロパティを渡す、(ii)コールバック関数とそれに付随する照会を含む(DMAで使用される)コマンド・レジストリに格納する、(iii)(DMAで使用する)対話状態終了条件を指定する、(iv)DMAにトランザクション・レコードを格納し、取り出す(この場合も、これらのレコードは、取消し、繰り返し、または要約アクション(アプリケーションでサポートされている場合)で使用することができ、各トランザクションを構成するイベントのグループ化はアプリケーション開発者の裁量に任されている)、(v)コンテキスト解決で使用するためにDMA履歴にアクセスする機能である。
さらに、会話型アプリケーションは、DMAFとの対話を可能にする複数のメソッドを実装する。好ましい実施形態では、DMAFは、DMAFがアプリケーションと通信することができるように、アプリケーション開発者が1つまたは複数のメソッドを少なくとも実装することを求める。たとえば、一実施形態では、会話型アプリケーションは、コンテキスト解決を行う適切なメソッドを実装する。そのような実施形態では、DMAFは、コンテキスト解決のために特定のプロトコルを強制しないが、DMAFはメソッドおよび戻り型に渡される関数は強制する。たとえば、好ましい一実施形態では、contextResolverメソッドがNLResultオブジェクトを受け付け、Queryオブジェクトを返す。
DMA情報の流れ
以下では、ユーザ入力が取り込まれてrDMAに送られた後でのDMA内部での情報の流れについて説明する。情報の流れについて説明する前に、DMAによって定義される好ましい内部クラスとその用法を以下に列挙する。
− 入力通知イベント・クラス:入力通知イベントは、I/Oマネージャによって生成され、rDMAコマンド・レジストリ・クラスに送られる。
− コマンド・レジストリ・クラス:照会とそれに関連づけられたコールバック関数とを格納するテーブルを生成する。
− 登録テーブル・クラス:DMAと、アプリケーション/管理する副対話に対する参照とを格納するテーブルを生成する。
− 入力キュー・クラス:入力通知イベントを入れるキューを生成する。各aDMAは、入力イベント通知を格納する入力キュー・クラスを含む。aDMAは、親から入力通知イベントを受け取ると、その入力通知イベントを、そのすべての子の入力キューに入れ、それによってそれらの子がそのユーザ入力の処理を開始することができるようにする。この通知は、そのユーザ入力イベントがすべてのDMAに通知されるまで、トップダウン方式で再帰的に行われる。
− NLU結果クラス:NL結果、信頼値、およびNLUプロセスに付随するその他のデータを格納する。
− 照会クラス:コンテキスト解決の結果を格納する。
− 照会ハッシュテーブル・クラス:照会を入れるハッシュテーブル。これは、DMAによってキー付けされたハッシュテーブルである。各DMA(キー)には、コンテキスト解決の結果として得られた照会(値)が関連づけられている。このハッシュテーブルは、DMAの結果照会を示す。
− 短期履歴(STH)クラス:単一ユーザの入力に関するイベントが格納されるスタックを生成する。
− 長期履歴(LTH)クラス:特定のタスクに関するイベントが格納されるスタックを生成する。
− トランザクション履歴(TRH)クラス:トランザクション・オブジェクトが格納されるスタックを生成する。これらのオブジェクトは、アプリケーション開発者によって定義された意味レベルでイベントをグループ化するものである。
− フォーカス履歴(FH)クラス:現在フォーカスを追跡するスタックを作成する。
図7ないし図10に、本発明の一態様による対話管理およびアービトレーションを行う方法を示す流れ図が示されている。具体的には、図7ないし図10は、DMA内の情報の流れを示し、DMAがユーザ入力をどのように扱い、それを処理のために様々な構成要素に渡し、ユーザの意図の記号表現をアプリケーションに返すかを説明する図である。以下に示すアルゴリズムでは、アプリケーションが照会をDMAに返した後で、DMAがコールバック関数の出力応答をどのように管理するかを詳述する。
図7を参照すると、ユーザは、たとえば発話またはGUIによる適切なコマンドを使用して1つまたは複数の会話型アプリケーションを起動する(ステップ100)。アプリケーションが起動されると、そのアプリケーションのために1つまたは複数のaDMAインスタンスが生成される(ステップ101)。前述のように、1つのアプリケーションによって、そのアプリケーションに関連づけられた主対話を管理する少なくとも1つのaDMAインスタンス(ルートDMAの子)が生成される。さらに、アプリケーションのプログラムの仕方によっては、副対話を管理するための他のaDMAインスタンス(主aDMAの子)を生成することもできる。アプリケーションはrDMAに登録されて、アプリケーションによって生成されたaDMAインスタンスのaDMAハンドルを入手する(ステップ102)。rDMAは、すべての登録aDMAのリストを維持する。この登録によって、アプリケーションはrDMAから対話管理サービスを受けることができるようになる。前述のように、対話マネージャおよびアービトレータ・アーキテクチャは、複数のアプリケーションをサポートする。したがって、以下の説明では、1つまたは複数のアプリケーションがアクティブであるものとする。
アプリケーションが初期設定されると、システムはユーザ入力イベント、たとえば音声コマンドまたはマウスのクリックを待つ(ステップ103)。ユーザ入力イベントを受け取ると(ステップ103の結果が肯定)、I/Oマネージャが対応するユーザ入力通知イベントをrDMAに送る(ステップ104)。次に、rDMAは、rDMAの入力キューから入力通知イベントを受け取る(ステップ105)。所与のアプリケーションの「終了」条件が満たされていない場合(ステップ106の判断が否定)で、しかも入力通知イベントが「END_OF_INPUT」イベントでない場合(ステップ107の判断が否定)、rDMAは入力通知イベントをそのSTH(短期履歴)に格納し(ステップ108)、次に、その入力通知イベントを登録されているすべての子の入力キューに入れる(109)。言い換えると、一実施形態では、rDMAは、rDMAに登録されている主aDMAのそれぞれに入力通知イベントを送る。各主aDMAは、トップダウン手法を使用して、子孫aDMAインスタンスがある場合はその子孫aDMAインスタンスの入力キューに入力通知イベントを入れる。このプロセスは、すべてのaDMAインスタンスが入力通知イベントを受け取るまで、階層ツリーを下方にたどって繰り返される。
他の方法を使用して入力通知イベントをツリー内のaDMAに送ることもできることを理解されたい。実際に、前述のように、好ましくはrDMAはどの登録aDMAがアクティブであるかを追跡するため、それまで所定数の対話ターンの間アクティブになっている(「フォーカスがある」)登録aDMAにのみユーザ入力が渡される枝刈り手法を使用することもできる。当業者なら、登録aDMAにユーザ入力を渡すための他のプロトコルも考えられるであろう。
次に図8を参照すると、各aDMAは、入力通知イベントをタスク・マネージャに送り、それ以降、現行通知イベントに対して応答を受け取るまでタスク・マネージャへの通知イベントの送信を遮断する(ステップ111)。タスク・マネージャは、タスク・マネージャが当該ユーザ入力通知イベントを受け取った各aDMAに、メッセージまたは結果セット(たとえば音声認識結果やNLU結果など)を返す(ステップ112)。エラー・メッセージが返された場合(ステップ113の結果が肯定)、そのエラーがしかるべく処理される(ステップ114)。たとえば、タスク・マネージャからエラー・メッセージが返された場合、aDMAは、アプリケーションにそのエラーを通知する。エラーには異なる重大度を付与することができ、重大度によっては、aDMAは、エラーを無視することに決め、アプリケーションにエラーを通知して次のユーザ入力に移行する(たとえばステップ103に戻る)か、または重大度が高い場合には、アプリケーションを終了することもできる。アプリケーションは、エラーを処理する機構を備えるか、あるいはプラットフォーム・サービス(CVM)または他のアプリケーションにエラー処理を頼ることができ、エラー回復機構またはエラー処理対話を備えることができる。これらは、アプリケーション固有であってもよいし、汎用的なものであってもよい。
一方、結果セットが返された場合(ステップ113の結果が否定)、各aDMAは、その結果を各aDMAに対応するSTHに格納する(ステップ115)。この結果セットは、エンジンによって生成されたユーザの意図の記号表現を含む。各aDMAは、結果セットを、コンテキスト解決のために各aDMAに対応するアプリケーションに送り、現行結果セットのために照会が返されるまで、アプリケーションに対するそれ以降の結果の転送を遮断する(ステップ116)。
アプリケーションは、関連づけられた1つまたは複数のaDMAが受け取った結果に基づいてコンテキスト解決を行い、照会(すなわちユーザの意図の解釈)を生成する。コンテキスト解決のプロセスは、アプリケーションごとに異なり、同じアプリケーション内でも副対話ごとに異なることを理解されたい。したがって、各aDMAが受け取るコンテキスト解決の結果(すなわち照会)は異なる。さらに、コンテキスト解決のプロセス中、アプリケーションは、aDMAと協同して、NLUによって返されたココマンド、トランザクション履歴、現行コンテキストなど、aDMAによって維持されている付加情報を入手して照会を一義化することができる。
コンテキスト解決後、アプリケーションは、各aDMAに結果の照会を返す。各aDMAは、アプリケーションから受け取った照会をそれぞれのSTHに格納する(ステップ116)。前述のように、対話管理、ユーザ意図の把握、およびコンテキスト解決の各機能は、モジュール(アプリケーション、CVMサービス)によって提供することもでき、各aDMAによって提供することもできる。
次に、ボトムアップ手法を使用して、階層ツリー内の各親aDMAによって任意の方法によるアービトレーションが行われる。好ましい実施形態では、適切なヒューリステック・アルゴリズムを使用して、「勝利照会」(すなわち最高得点照会結果)を決定する。具体的には、ツリー構造の最下位層から開始して、各親aDMAが、その各子aDMAがそれぞれの「勝利」照会を親の出力キューに入れるのを待つ(ステップ118)。ツリーの各枝の最下部にある子aDMAは、親ではないためアービトレーションを行わない(すなわち、(アプリケーションから受け取った)それぞれの照会を親に提供するだけである)ことに留意されたい。
アラーム・マネージャを使用して、所定時間後にタイムアウトをトリガし、親aDMAが各子から勝利照会を受け取るのを無限に待たないようにすることが好ましい。したがって、所定の待ち時間が経過した場合(ステップ119の結果が肯定)、タイムアウトが発生する(ステップ120)。その場合、親は所定期間内に勝利照会で応答しなかった各子aDMAを黙殺(無視)し、対応するアプリケーションにエラー・メッセージを送る(ステップ121)。他の実施形態では、子が特定の複雑な処理タスクについてタイムアウト延長を親に要求した場合、タイムアウトを延長することができることを理解されたい。
次に、親aDMAは、親がアプリケーションから受け取った照会と、(待ち時間中に子が受け取った)その出力キュー内のすべての勝利照会とについてアービトレーションを行い、親のレベルでの勝利照会を決定する(ステップ122)。図9を参照すると、次に親は勝利照会を対応するaDMAの識別情報と共にそのSTHに格納する(ステップ123)。次に、(別の親aDMAの子である)親が、勝利照会をその親のaDMAの出力キューに入れ、aDMAが親から対応するアービトレーション結果を受け取るまで、それ以降の勝利照会の転送を遮断する(ステップ124)。
このアービトレーション・プロセス(ステップ118ないしステップ124)は、ルートDMAがその子aDMAから勝利照会を受け取るまで、階層DMAツリーの最下部から最上部まで行われる。その後、ルートDMAは、(所定の待ち時間内に)その子から受け取ったすべての勝利照会間のアービトレーションを行い、総合勝利照会を決定する。rDMAは、総合勝利照会とその総合勝利照会を送った子aDMAとを含む、最終アービトレーション結果を生成する。
次に、トップダウン手法を使用して、最終アービトレーション結果が階層DMAツリーの下方に送られる。具体的には、ルートDMAは、登録されている各子aDMAに最終アービトレーション結果を送り、各aDMAはアービトレーション結果をそれぞれのSTHに格納する(ステップ125)。各親aDMAは、その親から返されたアービトレーション結果を調べ、(返されたアービトレーション結果に関連づけられた)ユーザ入力のための総合優勝照会が、親aDMAによるアービトレーションによって前に決定し(ステップ123)、それぞれのSTHに格納された(ステップ126)勝利照会と一致するか否かを判断する。
返されたアービトレーション結果に基づいて、親aDMAが、親aDMAとその子のaDMAのいずれも勝利者ではないと判断した場合(ステップ127の判断が否定)、親aDMAはそのSTHをクリアし(ステップ128)、そのすべての子aDMAに敗者である旨を通知する(ステップ129)。一方、親aDMAが、総合優勝照会が、その親によって管理されている枝内のaDMAに関連づけられており(ステップ127の判断が肯定)、親は勝者ではないがその子の1つが勝者であると判断した場合(ステップ130の判断が否定)、親aDMAは勝利した子aDMAに対して勝者である旨の通知を送り、他の子に対しては敗者である旨の通知を送る(ステップ131)。その後、親aDMAはそのSTHをクリアする(ステップ132)。
aDMAが勝者である(すなわち、総合優勝照会を出力した)と判断した場合(ステップ130の判断が肯定)、そのaDMAは、アプリケーションに関連づけられた、(照会をコールバック関数にマップする)コマンド・レジストリを使用して、総合優勝照会に関連づけられたコールバック関数を判断する(ステップ133)。次に、勝利aDMAは、コールバック関数を起動し、現行コールバックが戻されるまで、後続のコールバック関数の起動を遮断する(ステップ134)。
次に、図10を参照して、コールバックが、出力応答を生成する要求を返した場合(ステップ135の結果が肯定)、aDMAはタスク・マネージャにgenerateOutputRequestを送り、タスク・マネージャが現行要求の結果を返すまで、それ以上の要求の送信を遮断する(ステップ136)。タスク・マネージャが、「OUTPUT_REQUEST_GENERATED」メッセージではない結果を返した場合(ステップ137の結果が否定)、そのエラーは、たとえば入力処理エラーに関して前述したように、しかるべく処理される(ステップ138)。一方、タスク・マネージャが「OUTPUT_REQUEST_GENERATEE」メッセージを返した場合(ステップ137の結果が肯定)、勝利aDMAは出力バッファの場所を親aDMAに送り、親aDMAはそれをSTHに格納する(ステップ139)。出力バッファの場所は、その後、ツリーを遡ってルートDMAに送られ、ルートDMAは出力バッファ場所をI/Oマネージャに送る。
返されたコールバックが、(勝利aDMAに関連づけられた)アプリケーションがディクテーション・モードに入ることを示している場合、ディクテーション・プロセスがしかるべく処理される。ディクテーションのプロセスは、アプリケーションがどのようにプログラムされているかによって異なる。前述のように、アプリケーションの各aDMAがツリーを遡って通知を送り、ルートDMAに、すべてのユーザ入力通知を勝利aDMAのみに送るように通知することが好ましい。さらに、アプリケーションは、ディクテーションを終了してすべてのDMAに対する入力通知を再開する機構を備えることが好ましい。コールバック戻りが処理された後(ステップ139またはステップ142)、あるいはエラーが処理された後(ステップ138またはステップ141)、入力通知イベントに関連づけられたイベントのサブセットの記述を含むイベント記述が生成される(ステップ143)。前述のように、このイベントのサブセットは、たとえばI/O入力通知イベントと、照会オブジェクトと、親による応答とを含む。タスクが完了し、対話の新しい状態が開始すると、勝利aDMAのSTH内のイベントのサブセットが長期履歴(LTH)内にプッシュされる。イベントのサブセットは、記述子オブジェクトの形でグループ化することができ、これにI/OトランザクションIDをタグとして付与して、aDMAのLTHにプッシュし、その後、aDMAはそのSTHをクリアする(ステップ144)。このDMAプロセスは、次に続くユーザ入力について繰り返される(図7のステップ103に戻る)。
I/O管理
以下に、I/OマネージャおよびrDMAとの対話プロトコルの好ましい実施形態について詳述する。本発明の一実施形態では、I/Oはアプリケーション開発者が扱い、CAFはエンジン・アクセスとアービトレーションの制御のみを行うことを理解されたい。
他の実施形態では、I/OマネージャはCVM(CAF)の構成要素であり、アプリケーション開発者は会話型アプリケーションと対話するために使用可能な装置/周辺機器の詳細を知る必要がない。好ましくは、本発明によるI/Oマネージャは、以下のような様々な検討材料に基づいて構築される。
1.アウトソーシングの容易さ:CAF上のアプリケーションを作成するアプリケーション開発者に、アプリケーションの様々なモダリティをCAFにフックする機構を提供する必要がある。一実施形態では、CAFはすべてのモダリティのための入出力マネージャを含む。他の実施形態では、CAFが指定されたタスク(すなわちアービトレーション、イベント格納など)を実行するのに必要なすべての情報を(任意のモダリティ・マネージャから)取り出すことができるように、(フォーカス更新、テキスト・フィールド値などの)エレメントの共通セットと、共通対話言語とを設けることができる。
2.アービトレーション:曖昧なユーザ入力(たとえば発話、注視など)を、アービトレーションのためにrDMA階層に通す必要がある。本質的に曖昧でないユーザ入力モダリティ(たとえばGUI、Penなど)は、ユーザ入力を入力するためのフィールドが先験的に既知であるため、一般にはアービトレーションを必要としない。
3.ユーザ対話とすべてのI/Oイベントの記録:すべてのモダリティについてユーザ対話とI/Oイベントの記録を行い、ユーザ入出力のモダリティに関係なくすべてのアプリケーションにとってアクセス可能であることが好ましい。
4.基盤エンジンへのアクセス:ユーザ入力(出力生成も)がエンジン(音声認識、ペン認識、TTSなど)へのアクセスを必要とするモダリティの場合、ユーザ入力(または出力イベント)を適切なエンジンに送る機構が必要である。
5.同期:複数のモダリティを相補的に使用することができるようにする機構を備えることが好ましい。たとえば、ユーザがマウスをウィンドウに移動し、何かを発話してテキスト・フィールドに記入することがある。したがって、CAFを通る入力イベントにはタイムスタンプ(およびオリジンスタンプ)を付与し、反応を同期させる必要がある。
6.拡張性:本発明によるCAFは、拡張可能なフレームワークを含む。したがって、好ましくは、CAF(具体的にはI/O管理)は、フレームワークに新しいモダリティを容易に組み込むことができるようにする。
7.分散可能:CAF構成要素(たとえばI/Oマネージャ)を分散させることができる。したがって、I/Oマネージャは、様々な供給源や様々なドメインまたはネットワークから発せられるユーザ対話を処理し、出力イベントを様々な装置またはモダリティに送ることができる必要がある。
本発明の一実施形態によるマルチモーダルI/Oマネージャは、一般に、ユーザ入力に作用し、入力モダリティに関係なく抽象化し、それらの抽象入力イベントを、CAF DMAFまたはその他のCAF構成要素(あるいは、CAFとは関係がなくてもよい他のアプリケーション)によってさらに処理するために送る。前述のように、入力イベントにはその発生元を識別する標識を付けて、そのイベントに対して行うべき処理の性質(たとえばイベントを一義化すべきか否かなど)を判断することができる。さらに、I/Oマネージャは、CAF DMAF、他のCAF構成要素、または、CAFに関係のない他のアプリケーションから抽象出力イベントを受け取ることができる。I/Oマネージャは、抽象出力イベントを、1つまたは複数のチャネル(装置、モダリティなど)が認識可能かつ実行可能なコマンドに変換し、変換された抽象イベントを適切なチャネルに送る。
図11に、本発明の一実施形態によるマルチモーダルI/O管理を行うシステムおよび方法を示す。マルチモーダルI/Oマネージャは、中央I/Oマネージャ200と、中央I/Oマネージャ200と動作可能に通信する複数のI/Oエージェント201、202(または「モダリティ・エージェント」)を含む。2つのI/Oエージェントは例示のために示すものであり、マルチモーダルI/Oマネージャは3以上のI/Oエージェントを含むことができることを理解されたい。中央I/Oマネージャ200は、様々なモダリティI/Oエージェント201、202とCAF間の仲介役を果たす。各I/Oエージェント201、202は、中央I/Oマネージャ200とのインタフェースと、サポートしている特定の装置のインタフェースの両方を実現する。各I/Oエージェントは、特定のモダリティを扱い、当該モダリティが認識するAPIを介して当該モダリティからイベントを収集する機能を果たす。
具体的には、各I/Oエージェント201、202は、中央マネージャ200と通信するためのインタフェースと、それぞれのデバイス・ドライバ201b、202bと通信するためのインタフェース201a、202a(たとえば、GUI用のアクセシビリティ(Accessibility)API、ブラウザ用のDOM、通話用の電話API)とを含む。各装置201c、202cは、中央I/Oマネージャ200に登録されて中央I/Oマネージャ200と共通メッセージ交換プロトコルを使用して通信する、関連づけられたI/Oエージェント201、202を含む。中央I/Oマネージャ200は他のCVM構成要素とのすべての通信を処理し、したがってCVMプラットフォームは装置依存情報に対して保護されている。
各モダリティ・エージェントは、少なくとも、中央I/Oマネージャ200にフォーカスの更新を送ることができることが好ましい。他のすべての送信可能イベントは、モダリティ・エージェントまたはアプリケーション開発者の裁量に委ねられていることが好ましい。これは、各イベントに付与される送信IDタグについても同様である。IDタグに加えて、デバイスのソケットのIPアドレスまたはその他のアドレス、URIなど、その他の手段も使用することができる。さらに、CAFが中央I/Oマネージャ200に送る出力イベントは、宛先アドレス(たとえばフォーカスまたはIDタグ)を含む。
モダリティ・エージェントと中央I/Oマネージャ200との間の通信には共通交換プロトコルを使用することが好ましい。これにより、各モダリティ・エージェントは、好ましくは以下のものを送信することができる。すなわち、(i)フォーカスの更新、(ii)入力通知イベント(およびストリームの場所などの付随情報)、(iii)DMAのスタックに格納されるCAF履歴レコードにラップされたイベント、(iv)出力通知/制御(およびストリーム場所などの付随情報)である。
各I/Oエージェント201、202は、中央I/Oマネージャ200に登録する。通信中、中央マネージャ200に入力イベントを送信するI/Oエージェントは、中央I/Oマネージャ200に、当該入力イベントがエンジンのサポートを必要とすることを通知し、入力ストリームからデータを抽出する方法を指定することができる。さらに、出力イベントを受け取るI/Oエージェントは、エンジンのサポートを要求することができ、出力データをどのように供給する必要があるかを指定することができる。さらに、I/Oエージェントは、(発話の場合と同様)入力イベントのアービトレーションを要求することができ、それによって中央I/Oマネージャはアービトレーションのために入力通知イベントをrDMA階層に通す。さらに、I/Oエージェントは、入出力を履歴に入れるように指定することができ、その場合、中央I/Oマネージャ200は、対応するrDMAに特別なメッセージによって通知するか、または当該アプリケーションを扱うDMAに直接通知することができる。さらに、フォーカスの更新の場合、中央I/Oマネージャ200はrDMAに、フォーカスを更新して該当するDMAに送るための特別な通知を送る。
中央I/Oマネージャ200に送られるすべてのイベントにはタイムスタンプを付与して、複数のモダリティからのイベント間の同期をとることができるようにすることが好ましい。中央I/Oマネージャ200は、rDMAと通信し、様々なI/Oエージェントからメッセージを受け取る。新しいモダリティをサポートする必要がある場合、そのモダリティのためにモダリティ・エージェントを作成し、それ自体をCAF入出力マネージャに登録する必要がある。
さらに、I/Oエージェントはローカルとすることもでき、ネットワークに分散させることもできる。分散させた場合、通信と登録をサポートするために多くのプロトコルを使用することができる。たとえば、XMLプロトコル・スタックを実装することができる(たとえばSOAP(Simple Object Access Protocol:簡易オブジェクト・アクセス・プロトコル)、UDDI(UniversalDescription, Discovery, and Integration:汎用的記述・発見・統合)、WSDL(Web ServicesDescription Language:ウェブ・サービス記述言語)など)(たとえばhttp://www.w3.org/2000/xp/参照)。さらに、前述の国際特許出願PCT/US99/22925号に記載されている通信プロトコルを実施して、ローカル・アプリケーションとリモート・アプリケーションの間で通信と登録を行うことができる。
本発明によるI/Oエージェントの様々な実施形態を実施することができる。たとえば、図12は、本発明の一実施形態によるI/Oエージェントを示すブロック図である。図12の例示の実施形態では、DOM(ドキュメント・オブジェクト・モデル)(少なくともレベル2)インタフェースを呈示する既存のブラウザを使用してI/Oエージェントを実現している。DOMプロトコルは、当業界で周知である(http://www.w3.org/DOM/)。本発明で実施することができるモジュラDOMベースのブラウザの好ましい実施形態は、2000年12月4日出願の米国特許仮出願第60/251085号で開示されている。
具体的には、I/Oマネージャ200は、I/Oマネージャ・インタフェース203とDOMインタフェース204とを介して、I/Oエージェントとして機能する登録済みブラウザ205に関連づけられたI/Oイベントを受け取る。I/Oマネージャ200は、ブラウザ205の状態と提示を更新するDOMコマンドを介して、出力の変更と生成を行うことができる。この手法には、(少なくともDOMレベル2に準拠していることを条件として)既存のブラウザを実装することができるという利点がある。ブラウザ205は、関連づけられたI/Oデバイス・ドライバ206およびそれに対応する周辺装置207とのより高レベルのインタフェースも提供する。また、ブラウザ205は、入出力を容易に処理することができる機能を含めて、より高レベルの抽象化も行うことができる。たとえば、音声ブラウザは、ある程度の音声認識を行い、I/Oマネージャにのみイベントをより高い抽象化レベルのイベントを渡すこともできる。したがって、出力コマンドもより高い抽象化レベルで生成することができ、それによって、たとえば、画面またはウィンドウを実際に描画したりテキスト−音声変換エンジンを微調整する代わりに、表示テキストまたはプロンプトが提供される。
I/OエージェントがGUIモダリティ・エージェントを含むことを前提とすれば、I/Oエージェントはアプリケーションごとに1つの登録テーブルを維持することが好ましい。この場合、登録テーブルはアプリケーションがCAFに登録したい各構成要素を含む。登録テーブル内の各構成要素について、GUIエージェントは、アクセシビリティ・インタフェース(accessibility interface)を使用して必要なイベントを獲得することが好ましい。開発者のアプリケーション構成要素は、アクセシビリティ・インタフェースを実現することになる。
I/Oエージェントがマルチモーダル・ブラウザを含むことを前提とすれば、ブラウザ・モダリティ・エージェントは、DOMインタフェースを使用して特定のイベントが発生していないかどうか監視し、そのようなイベントが発生したときに入力マネージャに通知するモジュールとして実施することが好ましい。マルチモーダル・ブラウザの場合、ブラウザがフリーフロー対話をサポートしていなければCAFは不要である。そのような実施形態では、マルチモーダルI/Oマネージャを、モダリティ別のレガシー・ブラウザとマルチモーダル・シェルとの間に動作可能に接続される。CAFを使用する場合、マルチモーダルI/Oマネージャをマルチモーダル・シェルまたはDMAFに動作可能に接続することができる。I/Oエージェントを電話アプリケーション用に実施する場合は、電話モダリティI/Oエージェントが既存の電話APIとインタフェースする。
さらに、I/Oマネージャの同じ概念を使用して、従来のVoiceXMLブラウザからVoiceXML DOMブラウザを構築することができ、その場合、I/OマネージャはDOMインタフェースを提供し、従来のVoiceXMLブラウザはVoiceエージェントである。
ブラウザを使用して上述した各実施形態は、宣言型、命令型、スクリプト型、またはこれらのハイブリッドな組合せを使用して実施することができることを理解されたい。たとえば、当技術分野で周知のJava(R) Accessibilityクラス/ユーティリティ(たとえばhttp://java.sun.com/products/jfc/#download-access)を使用してアプリケーションまたはアプレットをコンパイルする、Java(R)を使用した命令型の場合が考えられる。DOMインタフェースの場合と同様、Java(R) Accessibility Utilityパッケージは、Java(R)バーチャル・マシン上で動作しているJava(R)アプリケーション内部のユーザ・インタフェース・オブジェクトの探索と照会を行う指示支援技術を提供する。また、これらのオブジェクトへの「イベント・リスナ」のインストールもサポートする。ユーティリティは、支援技術が、Swing構成要素に組み込まれたAccessibility APIサポートと対話することができるようにする方法をハイライトした例示ツールを提供する。イベントを獲得し、ユーザ・インタフェース要素を操作することによって、同種のI/O管理を行うことができる。同様のユーティリティを備えるActiveXやDCOMなどの他のパッケージも使用可能である。
その他のどのようなインタフェース(DOMまたはアクセシビリティ)でも、新しいチャネル・タイプ(たとえば音声、手書きなど)に拡張することができる。同様の機能または能力を備えるその他のインタフェースまたはユーティリティも考えることができる。分散させた場合、SOAPによってDOM(またはDOM同等物)の遠隔制御を実現することができる。SOAPには、プログラム呼出しが、ファイヤウォールやゲートウェイを通過する可能性がはるかに高いというという利点がある。当然ながら、これらのインタフェースの遠隔制御を可能にするその他のプロトコルも使用可能である。
本明細書に記載の特徴および機構の全部または一部を使用して、さまざまな方式でその他の実施形態を実現可能であることを理解されたい。たとえば、2000年4月7日出願の「A conversational Portal For Providing Conversational Browsing andMultimedia Broadcast on Demand」という名称の米国特許出願第09/545078号に記載されているポータルのような音声または会話ポータルが考えられる。本発明の一実施形態による音声または会話ポータルを図13に示す。この音声ポータルには、ポータル・ゲートウェイ300を介してアクセスする。このポータルは、中央I/Oマネージャ301と、ポータルCAF302(rDMAやタスク・マネージャなどのCAF構成要素を含む)と、ポータル・ブラウザ303と、複数のアプリケーションとを含み、各アプリケーションは、関連づけられたaDMA305、308とブラウザ306、309とを使用する。対応するアプリケーションに付随する会話サービスを提供する複数のエンジン304、307、310を使用する。
このポータルは、ユーザが対話したい各アプリケーションごとに1つのブラウザを含む。ポータル・アプリケーションへのアクセスは、電話番号(ポータルを介して提供される場合にアプリケーションにアクセスするための好適な番号)またはURL(ISPまたはワイヤレス(従来のマルチチャネルまたはマルチモーダル)アクセス・プロバイダのゲートウェイ300によってインタセプトされる)に基づくものとすることができる。ユーザは、たとえばユーザが購読しているアプリケーションのリスト、ユーザ参照またはユーザの過去の履歴、あるいは単にユーザとポータルとの対話の進展の結果に基づいてポータルによって提供される様々なアプリケーションと対話することができる。このような様々なアプリケーションおよびそれに対応するブラウザは、ポータル・サイト上のポータルによって提供されるのではなく、アプリケーション・プロバイダのサイトサイトに配置することができることを理解されたい。
アプリケーション・ブラウザ306、309がコンテキスト管理およびフリーフロー/主導権混在をサポートする場合、各ブラウザはaDMA305、308に動作可能に接続されるかまたはこれらを包含する。ブラウザが、(たとえば、現在、VoiceXML1.0(http://www.voiceXML.org)によってサポートされているような)文法ベースの対話のみをサポートする場合、アービトレーション・アルゴリズム(たとえばヒューリスティック)とaDMA機能を簡略化することができる。したがって、認識したテキストと、どの文法が高得点を挙げるかとに基づいて、ユーザ入力の宛先を判断することができる。文法が重なる場合は、何らかのヒューリスティクスを使用する必要がある(たとえばどのアプリケーションに現行フォーカスがあったかなど)。GUIチャネル(および、一般に、フォーカスが一義的なために別個の処理を必要としないチャネル)も、直接アービトレーション可能である。この場合、ユーザがクリックする場所がフォーカスのある可能性が最も高い場所である。入力が多義的な場合、ポータル・プロバイダはポータルrDMA302を使用することができ、場合によっては、ポータル・ブラウザ303とポータルCAF302のaDMAとを介して高レベルのサービスを提供することができる。
他の実施形態では、ユーザが(たとえば他方のアプリケーションへの明示的切換えコマンドを与えることによって)アプリケーション間の切換えをブラウザに明示的に指示しなければならないように、アプリケーション間の切換えを規制する。このコマンドは、ポータルaDMAと、そのような指示を認識する、関連づけられたアプリケーションとによって管理される。たとえば、このようなコマンドは、go to financeXXXまたはtravelXXX siteのような特定のコマンドまたはキーワードとすることができる。この機構は、前述のような所与のアプリケーション内でディクテーション・モードに入るための機構と基本的に類似している。
最終的に、セキュリティ上の理由から、ポータル、ユーザ、およびアプリケーション提供者は、前述のようなサポートされているアプリケーション間でのユーザI/O(着信発話、発信発話)およびコンテキスト(長期および短期履歴)の共用を受け入れるか拒否するかを決定することもできる。
この例示の実施形態では、米国特許第09/703574号に記載されているもののような適切な会話伝送プロトコルを使用して、音声(およびその他の可能なマルチモーダルまたはマルチモーダル・イベント)を各「アクティブ」ブラウザ(すべてのアクティブ・ブラウザまたは現在処理を共用しているアクティブ・ブラウザ)に転送することができる。
本明細書に記載のシステムおよび方法は、ハードウェア、ソフトウェア、ファームウェア、専用プロセッサ、またはこれらの組合せの様々な形態で実施可能であることを理解されたい。具体的には、本発明は、プログラム記憶装置(たとえば磁気フロッピィ・ディスク、RAM、ROM、CD ROMなど)上に具現化され、適合するアーキテクチャを含む任意の装置または機械によって実行可能なプログラム命令を含むアプリケーションとして実施することが好ましい。さらに、添付図面に図示したシステム構成要素およびプロセス・ステップの一部はソフトウェアで実施することが好ましいため、システム・モジュール間の接続および図示されている方法の論理の流れは、本発明をプログラムする方式によって異なる場合があることを理解されたい。本明細書に記載の教示があれば、当業者は本発明の上記または類似の実施態様または構成を企図することができるであろう。
本明細書では、例示の実施形態について添付図面を参照しながら説明したが、本システムおよび方法は、これらの厳密な実施形態には限定されず、当業者なら本発明の範囲または主旨から逸脱することなく他の様々な変更および修正を加えることができるものと理解されたい。そのような変更および修正はすべて、特許請求の範囲に定義されている本発明の範囲に含まれるものとする。
本発明の一実施形態による会話型コンピューティングを提供するシステムを示す高水準ブロック図である。 本発明の一実施形態による会話型コンピューティングを提供するシステムを示す高水準ブロック図である。 本発明の一実施形態による階層的DMA(対話マネージャおよびアービトレータ)を示すブロック図である。 本発明の一実施形態による、DMAストラクチャを使用して対話管理およびアービトレーションを行う方法の例を示すブロック図である。 本発明の一実施形態による、DMAによって維持される情報を示す図である。 本発明の一実施形態による、DMAを使用する会話型コンピューティング・システムを示す図である。 本発明の一態様による対話管理およびアービトレーションを行う方法を示す流れ図である。 本発明の一態様による対話管理およびアービトレーションを行う方法を示す流れ図である。 本発明の一態様による対話管理およびアービトレーションを行う方法を示す流れ図である。 本発明の一態様による対話管理およびアービトレーションを行う方法を示す流れ図である。 本発明の一実施形態によるマルチモーダル入出力管理を行うシステムおよび方法を示すブロック図である。 本発明の一実施形態によるマルチモーダル入出力マネージャの入出力エージェントを示すブロック図である。 本発明の一実施形態による音声ポータルを示すブロック図である。

Claims (20)

  1. 1つまたは複数のアプリケーションの対話を管理する方法であって、
    ルートDMA(対話マネージャおよびアービトレータ)インタフェースと1つまたは複数のアプリケーションDMAとを含む階層ツリー構造を含むDMAインタフェースをメモリ中に作成するステップと、
    前記ルートDMAによってユーザ入力イベントの通知をアプリケーションDMAに送るステップと、
    前記アプリケーションDMAが前記ユーザ入力イベントの記号表現を入手するステップと、
    前記アプリケーションDMAが前記記号表現のコンテキスト解決を行うアプリケーション・メソッドを呼び出すステップと、
    前記アプリケーションDMAが、前記アプリケーションから前記コンテキスト解決の結果を含む照会を受け取るステップと、
    前記DMAインタフェースが、前記アプリケーションDMAが受け取った前記照会に基づいて前記アプリケーションDMAが現在アクティブであるか否かを判断するステップであって、ボトムアップ・アービトレーション・プロトコルを使用して、前記照会が他のアプリケーションDMAが受け取ったすべての照会のうちで最高得点の照会であるか否かを判断するステップと、
    前記アプリケーションDMAが現在アクティブであると判断された場合に、前記アプリケーションDMAが前記照会に関連づけられたコールバック関数を起動するステップとを含む方法。
  2. DMAインタフェースをメモリ中に作成する前記ステップが、アプリケーションが前記ルートDMAに登録してアプリケーションDMAハンドルを入手する登録ステップを含む、請求項1に記載の方法。
  3. 前記登録ステップが、前記アプリケーションがユーザ入力を処理するために必要とするエンジンのセットと順序を含むアルゴリズム・ストリングを登録するステップを含む、請求項2に記載の方法。
  4. DMAインタフェースをメモリ中に作成する前記ステップが、アプリケーションの主対話を管理するためにルートDMAをメモリ中に作成するステップと、アプリケーション間または同一アプリケーション内の対話である前記アプリケーションの副対話を管理するために前記ルートDMAの複数の子インスタンスをメモリ中に作成するステップとを含む、請求項1に記載の方法。
  5. 前記アプリケーションが受け取ったセキュリティ設定に基づいて、親和アプリケーション間のアービトレーションを行う、請求項4に記載の方法。
  6. ボトムアップ・アービトレーション・プロトコルを使用する前記ステップが、
    前記階層ツリー内の階層構造で上位のアプリケーションDMAが、前記上位のアプリケーションDMAの子であるアプリケーションDMAから受け取った照会間のアービトレーションを行うステップと、
    前記ルートDMAが、前記ルートDMAの子であるアプリケーションDMAから受け取った照会間のアービトレーションを行って最高スコアの照会があるか否かを判断するステップとを含む、請求項4に記載の方法。
  7. 親DMAが、所定時間内に照会を供給しない子DMAを無視するステップと、
    子DMAからの要求に応じて前記所定の時間を延長するステップとをさらに含む、請求項6に記載の方法。
  8. 前記ルートDMAが前記最高スコアの照会と関連づけられたアプリケーションDMAとを含むアービトレーション結果を生成するステップと、階層構造で上位のアプリケーションDMAが、前記上位のアプリケーションDMAの子に前記アービトレーション結果の通知を送るステップとをさらに含む、請求項6に記載の方法。
  9. 前記コールバック関数を起動する前記ステップが、コマンド・レジストリを使用して、前記照会に関連づけられた前記コールバック関数を判断するステップを含む、請求項1に記載の方法。
  10. 前記記号表現が、音声認識結果と自然言語理解結果とこれらの組合せとのうちの1つを含む、請求項1に記載の方法。
  11. 前記DMAインタフェースがユーザ入力イベントに関連づけられたイベントを含む短期履歴を維持するステップをさらに含む、請求項1に記載の方法。
  12. 前記DMAインタフェースが実行済みタスクに関連づけられたイベントの長期履歴を維持するステップをさらに含む、請求項1に記載の方法。
  13. 前記DMAインタフェースが対話セッション中にアクティブなアプリケーションDMAを追跡するフォーカス履歴を維持するステップをさらに含む、請求項1に記載の方法。
  14. アプリケーションとアプリケーションDMAとが協同して、前記短期履歴と前記長期履歴と前記フォーカス履歴の照会を一義化するステップをさらに含む、請求項11〜13に記載の方法。
  15. 前記短期履歴と前記長期履歴と前記フォーカス履歴とこれらの組合せとのうちの1つを使用して、照会を一義化するステップをさらに含む、請求項14に記載の方法。
  16. ユーザにメッセージを提示しなければならない場合、適切なモダリティでメッセージを生成するステップをさらに含む、請求項1に記載の方法。
  17. 適切なモダリティでメッセージを生成する前記ステップが、モダリティ固有I/Oエージェントによってモダリティ独立出力イベントをモダリティ固有出力イベントに変換するステップを含む、請求項16に記載の方法。
  18. 前記コールバック関数がディクテーション・モードを含む場合、前記ルートDMAにすべての入力イベントを前記アプリケーションDMAに送るように通知する、請求項1に記載の方法。
  19. ユーザ入力コマンドに応答して前記ディクテーション・モードを終了させるステップをさらに含む、請求項18に記載の方法。
  20. アプリケーションの対話を管理するためのプログラムであって、該プログラムがコンピュータに、
    ルートDMA(対話マネージャおよびアービトレータ)インタフェースと1つまたは複数のアプリケーションDMAとを含む階層ツリー構造を含むDMAインタフェースをメモリ中に作成するステップと、
    前記ルートDMAによってユーザ入力イベントの通知をアプリケーションDMAに送るステップと、
    前記アプリケーションDMAが前記ユーザ入力イベントの記号表現を入手するステップと、
    前記アプリケーションDMAが前記記号表現のコンテキスト解決を行うアプリケーション・メソッドを呼び出すステップと、
    前記アプリケーションDMAが、前記アプリケーションから前記コンテキスト解決の結果を含む照会を受け取るステップと、
    前記DMAインタフェースが、前記アプリケーションDMAが受け取った前記照会に基づいて前記アプリケーションDMAが現在アクティブであるか否かを判断するステップであって、ボトムアップ・アービトレーション・プロトコルを使用して、前記照会が他のアプリケーションDMAが受け取ったすべての照会のうちで最高得点の照会であるか否かを判断するステップと、
    前記アプリケーションDMAが現在アクティブであると判断された場合に、前記アプリケーションDMAが前記照会に関連づけられたコールバック関数を起動するステップ、
    を実行させる、プログラム。
JP2003509304A 2001-06-29 2002-06-27 マルチモーダル環境における対話管理およびアービトレーションを提供するシステムおよび方法 Expired - Fee Related JP3943543B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/896,057 US6839896B2 (en) 2001-06-29 2001-06-29 System and method for providing dialog management and arbitration in a multi-modal environment
PCT/US2002/020510 WO2003003193A1 (en) 2001-06-29 2002-06-27 System and method for providing dialog management and arbitration in a multi-modal environment

Publications (2)

Publication Number Publication Date
JP2005503609A JP2005503609A (ja) 2005-02-03
JP3943543B2 true JP3943543B2 (ja) 2007-07-11

Family

ID=25405555

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003509304A Expired - Fee Related JP3943543B2 (ja) 2001-06-29 2002-06-27 マルチモーダル環境における対話管理およびアービトレーションを提供するシステムおよび方法

Country Status (8)

Country Link
US (1) US6839896B2 (ja)
EP (1) EP1410171B1 (ja)
JP (1) JP3943543B2 (ja)
CN (1) CN1224894C (ja)
AT (1) ATE483200T1 (ja)
DE (1) DE60237825D1 (ja)
IL (2) IL159565A0 (ja)
WO (1) WO2003003193A1 (ja)

Families Citing this family (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590224B1 (en) * 1995-09-15 2009-09-15 At&T Intellectual Property, Ii, L.P. Automated task classification system
WO2000021232A2 (en) * 1998-10-02 2000-04-13 International Business Machines Corporation Conversational browser and conversational systems
US7167830B2 (en) * 2000-03-10 2007-01-23 Entrieva, Inc. Multimodal information services
US8516054B2 (en) * 2000-12-20 2013-08-20 Aurea Software, Inc. Message handling
GB2378776A (en) * 2001-05-22 2003-02-19 Canon Kk Apparatus and method for managing a multi-modal interface in which the inputs feedback on each other
US6801604B2 (en) * 2001-06-25 2004-10-05 International Business Machines Corporation Universal IP-based and scalable architectures across conversational applications using web services for speech and audio processing resources
US20090144131A1 (en) * 2001-07-03 2009-06-04 Leo Chiu Advertising method and apparatus
US7711570B2 (en) 2001-10-21 2010-05-04 Microsoft Corporation Application abstraction with dialog purpose
US8229753B2 (en) * 2001-10-21 2012-07-24 Microsoft Corporation Web server controls for web enabled recognition and/or audible prompting
US7480799B2 (en) * 2001-12-11 2009-01-20 Actional Corporation Traffic manager for distributed computing environments
US7739328B1 (en) 2001-12-11 2010-06-15 Actional Corporation Traffic manager for distributed computing environments
US20030157959A1 (en) * 2002-01-11 2003-08-21 Jakke Makela Method, system, apparatus and computer program product for portable networking of multi-user applications
GB0201174D0 (en) * 2002-01-18 2002-03-06 British Telecomm Multi-mode interactive dialogue apparatus and method
US20030163595A1 (en) * 2002-02-26 2003-08-28 John Ta Task manager - method of forwarding messages among task blocks
US7415723B2 (en) * 2002-06-11 2008-08-19 Pandya Ashish A Distributed network security system and a hardware processor therefor
US20040010612A1 (en) 2002-06-11 2004-01-15 Pandya Ashish A. High performance IP processor using RDMA
GB0215118D0 (en) * 2002-06-28 2002-08-07 Hewlett Packard Co Dynamic resource allocation in a multimodal system
US8301800B1 (en) 2002-07-02 2012-10-30 Actional Corporation Message processing for distributed computing environments
US7005846B2 (en) * 2002-07-17 2006-02-28 Agilent Technologies, Inc. System and method for application control in measurement devices
US7047243B2 (en) * 2002-08-05 2006-05-16 Microsoft Corporation Coordinating transactional web services
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US7194482B2 (en) * 2002-09-26 2007-03-20 International Business Machines Corporation Web services data aggregation system and method
US7933891B2 (en) * 2002-09-26 2011-04-26 International Business Machines Corporation Web services data aggregation system and method
US7472272B2 (en) * 2003-01-23 2008-12-30 Verdasys, Inc. Digital asset usage accountability via event journaling
US7421393B1 (en) * 2004-03-01 2008-09-02 At&T Corp. System for developing a dialog manager using modular spoken-dialog components
US20040267823A1 (en) * 2003-06-24 2004-12-30 Microsoft Corporation Reconcilable and undoable file system
US7852856B2 (en) * 2003-08-29 2010-12-14 Broadcom Corp. System and method for providing pooling or dynamic allocation of connection context data
US7383302B2 (en) * 2003-09-15 2008-06-03 International Business Machines Corporation Method and system for providing a common collaboration framework accessible from within multiple applications
US7711832B1 (en) * 2003-09-22 2010-05-04 Actional Corporation Enabling existing desktop applications to access web services through the use of a web service proxy
US7793215B2 (en) * 2003-10-15 2010-09-07 International Business Machines Corporation Indicating focus in a portal environment
JP4462901B2 (ja) * 2003-11-11 2010-05-12 富士通株式会社 モーダル同期制御方法およびマルチモーダルインターフェイスシステム
US7441006B2 (en) * 2003-12-11 2008-10-21 International Business Machines Corporation Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter
US7823070B2 (en) * 2003-12-19 2010-10-26 Fuji Xerox Co., Ltd. Methods and systems for extending existing user interfaces
US7409690B2 (en) * 2003-12-19 2008-08-05 International Business Machines Corporation Application module for managing interactions of distributed modality components
KR100970729B1 (ko) * 2003-12-26 2010-07-16 삼성전자주식회사 입력 관리 장치 및 방법
US7386443B1 (en) 2004-01-09 2008-06-10 At&T Corp. System and method for mobile automatic speech recognition
US8160883B2 (en) * 2004-01-10 2012-04-17 Microsoft Corporation Focus tracking in dialogs
EP1615124A1 (en) * 2004-07-07 2006-01-11 Alcatel Alsthom Compagnie Generale D'electricite A method for handling a multi-modal dialog
US8942985B2 (en) 2004-11-16 2015-01-27 Microsoft Corporation Centralized method and system for clarifying voice commands
US7496575B2 (en) * 2004-11-22 2009-02-24 Verdasys, Inc. Application instrumentation and monitoring
US8191078B1 (en) 2005-03-22 2012-05-29 Progress Software Corporation Fault-tolerant messaging system and methods
US20060256937A1 (en) * 2005-05-12 2006-11-16 Foreman Paul E System and method for conversation analysis
JP4705406B2 (ja) * 2005-05-13 2011-06-22 富士通株式会社 マルチモーダル制御装置およびマルチモーダル制御方法
FR2886803B1 (fr) * 2005-06-07 2007-08-10 Alcatel Sa Terminal mobile multimodes a selection automatique d'interface de reseau d'acces radio pendant une session de service
JP4725955B2 (ja) * 2005-06-30 2011-07-13 株式会社リコー 情報処理装置、メッセージ管理方法、プログラムおよび記憶媒体
US8301720B1 (en) 2005-07-18 2012-10-30 Progress Software Corporation Method and system to collect and communicate problem context in XML-based distributed applications
US8265939B2 (en) * 2005-08-31 2012-09-11 Nuance Communications, Inc. Hierarchical methods and apparatus for extracting user intent from spoken utterances
US8667409B2 (en) * 2005-10-31 2014-03-04 Sap Ag Systems and methods for handling focus of application user interface elements
US20070106804A1 (en) * 2005-11-10 2007-05-10 Iona Technologies Inc. Method and system for using message stamps for efficient data exchange
US7710958B2 (en) 2006-01-20 2010-05-04 Iona Technologies Limited Method for recoverable message exchange independent of network protocols
US7925975B2 (en) 2006-03-10 2011-04-12 Microsoft Corporation Searching for commands to execute in applications
JP5045983B2 (ja) 2006-06-30 2012-10-10 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US7730269B2 (en) * 2006-08-29 2010-06-01 International Business Machines Corporation Load management to reduce communication signaling latency in a virtual machine environment
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8073681B2 (en) 2006-10-16 2011-12-06 Voicebox Technologies, Inc. System and method for a cooperative conversational voice user interface
US7917597B1 (en) 2006-11-02 2011-03-29 Netapp, Inc. RDMA network configuration using performance analysis
US7774544B1 (en) 2006-11-15 2010-08-10 Netapp, Inc. Reliable disk ownership changes
US9141557B2 (en) 2006-12-08 2015-09-22 Ashish A. Pandya Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine
US7996348B2 (en) 2006-12-08 2011-08-09 Pandya Ashish A 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters
US8000969B2 (en) * 2006-12-19 2011-08-16 Nuance Communications, Inc. Inferring switching conditions for switching between modalities in a speech application environment extended for interactive text exchanges
US9009234B2 (en) 2007-02-06 2015-04-14 Software Ag Complex event processing system having multiple redundant event processing engines
WO2008097912A2 (en) * 2007-02-06 2008-08-14 Progress Software Corporation Event-based process configuration
US7818176B2 (en) 2007-02-06 2010-10-19 Voicebox Technologies, Inc. System and method for selecting and presenting advertisements based on natural language processing of voice-based input
US8276115B2 (en) * 2007-02-06 2012-09-25 Progress Software Corporation Automated construction and deployment of complex event processing applications and business activity monitoring dashboards
US9323247B2 (en) * 2007-09-14 2016-04-26 Fisher-Rosemount Systems, Inc. Personalized plant asset data representation and search system
US9065911B2 (en) * 2007-09-28 2015-06-23 Nuance Communications, Inc. System, method and architecture for control and multi-modal synchronization of speech browsers
US8595642B1 (en) 2007-10-04 2013-11-26 Great Northern Research, LLC Multiple shell multi faceted graphical user interface
US8219407B1 (en) 2007-12-27 2012-07-10 Great Northern Research, LLC Method for processing the output of a speech recognizer
US7849067B2 (en) 2008-01-31 2010-12-07 Microsoft Corporation Extensible data provider querying and scheduling system
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
US20090260011A1 (en) * 2008-04-14 2009-10-15 Microsoft Corporation Command line transactions
US8539511B2 (en) * 2009-10-14 2013-09-17 International Business Machines Corporation Retrospective event processing pattern language and execution model extension
US8832580B2 (en) 2008-11-05 2014-09-09 Aurea Software, Inc. Software with improved view of a business process
US8688798B1 (en) * 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US9055151B2 (en) * 2009-06-22 2015-06-09 Avaya Inc. Method to set the flag as replied or forwarded to all replied or forwarded voice messages
US8442189B2 (en) * 2009-06-22 2013-05-14 Avaya Inc. Unified communications appliance
US8863152B2 (en) * 2009-07-13 2014-10-14 Hewlett-Packard Development Company, L.P. Communication bridge
US20110125733A1 (en) * 2009-11-25 2011-05-26 Fish Nathan J Quick access utility
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
AU2012101468B4 (en) * 2010-01-18 2013-05-16 Apple Inc. Disambiguation based on active input elicitation by intelligent automated assistant
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
US8700777B2 (en) 2010-05-28 2014-04-15 International Business Machines Corporation Extensible support system for service offerings
US8615585B2 (en) * 2010-05-28 2013-12-24 International Business Machines Corporation Ontology based resource provisioning and management for services
US8352908B2 (en) 2010-06-28 2013-01-08 International Business Machines Corporation Multi-modal conversion tool for form-type applications
US9542448B2 (en) * 2010-11-03 2017-01-10 Software Ag Systems and/or methods for tailoring event processing in accordance with boundary conditions
CN102571687B (zh) * 2010-12-10 2014-09-17 联芯科技有限公司 实时媒体流间同步状态信息构建方法、装置及sccas
US8780745B2 (en) 2011-01-31 2014-07-15 Intel Mobile Communications GmbH Communication terminal, communication device, method for measuring a signal and method for requesting a measurement
US9477536B2 (en) 2011-05-16 2016-10-25 Oracle International Corporation System and method for providing a messaging application program interface
US20130325483A1 (en) * 2012-05-29 2013-12-05 GM Global Technology Operations LLC Dialogue models for vehicle occupants
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
US9001216B2 (en) 2012-10-12 2015-04-07 Sony Corporation Method and apparatus for video streaming
US9477842B2 (en) * 2012-10-15 2016-10-25 Sap Se Business partner data deletion for privacy
US10403272B1 (en) * 2013-03-07 2019-09-03 Nuance Communications, Inc. Facilitating participation in a virtual meeting using an intelligent assistant
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
KR101772152B1 (ko) * 2013-06-09 2017-08-28 애플 인크. 디지털 어시스턴트의 둘 이상의 인스턴스들에 걸친 대화 지속성을 가능하게 하기 위한 디바이스, 방법 및 그래픽 사용자 인터페이스
US9495959B2 (en) * 2014-02-27 2016-11-15 Ford Global Technologies, Llc Disambiguation of dynamic commands
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9626703B2 (en) 2014-09-16 2017-04-18 Voicebox Technologies Corporation Voice commerce
US10210003B2 (en) * 2014-09-30 2019-02-19 Nuance Communications, Inc. Methods and apparatus for module arbitration
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10338959B2 (en) 2015-07-13 2019-07-02 Microsoft Technology Licensing, Llc Task state tracking in systems and services
US11250217B1 (en) * 2015-07-14 2022-02-15 Soundhound, Inc. Conditional responses to application commands in a client-server system
US10635281B2 (en) 2016-02-12 2020-04-28 Microsoft Technology Licensing, Llc Natural language task completion platform authoring for third party experiences
US9996531B1 (en) * 2016-03-29 2018-06-12 Facebook, Inc. Conversational understanding
CN113238707A (zh) * 2016-06-11 2021-08-10 苹果公司 具有数字助理的应用集成
DK201670540A1 (en) * 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US10089159B2 (en) * 2016-11-03 2018-10-02 Microsoft Technology Licensing, Llc Processing non-spatial input by multiple program elements of a computer program executed on a computer
CN106776815B (zh) * 2016-11-24 2020-07-14 上海交通大学 基于多模式切换的rdma友好的sparql查询方法
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US11204787B2 (en) * 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US10204098B2 (en) * 2017-02-13 2019-02-12 Antonio GONZALO VACA Method and system to communicate between devices through natural language using instant messaging applications and interoperable public identifiers
DK201770439A1 (en) 2017-05-11 2018-12-13 Apple Inc. Offline personal assistant
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
DK201770432A1 (en) 2017-05-15 2018-12-21 Apple Inc. Hierarchical belief states for digital assistants
DK179549B1 (en) 2017-05-16 2019-02-12 Apple Inc. FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES
US11056107B2 (en) * 2018-03-30 2021-07-06 International Business Machines Corporation Conversational framework
US10782986B2 (en) 2018-04-20 2020-09-22 Facebook, Inc. Assisting users with personalized and contextual communication content
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US20220374460A1 (en) * 2018-04-20 2022-11-24 Meta Platforms, Inc. Assisting Users with Efficient Information Sharing among Social Connections
US11307880B2 (en) 2018-04-20 2022-04-19 Meta Platforms, Inc. Assisting users with personalized and contextual communication content
US11676220B2 (en) 2018-04-20 2023-06-13 Meta Platforms, Inc. Processing multimodal user input for assistant systems
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US10477028B1 (en) 2018-07-13 2019-11-12 Bank Of America Corporation System for processing voice responses using a natural language processing engine
CN111128154B (zh) * 2019-12-03 2022-06-03 杭州蓦然认知科技有限公司 一种聚合形成交互引擎簇的方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2025142A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
US5577209A (en) * 1991-07-11 1996-11-19 Itt Corporation Apparatus and method for providing multi-level security for communication among computers and terminals on a network
US6192110B1 (en) * 1995-09-15 2001-02-20 At&T Corp. Method and apparatus for generating sematically consistent inputs to a dialog manager
US5774544A (en) * 1996-03-28 1998-06-30 Advanced Micro Devices, Inc. Method an apparatus for encrypting and decrypting microprocessor serial numbers
JP2000507021A (ja) * 1997-01-09 2000-06-06 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ モジュール式会話構造に基づくような両面音声の形態における人間―機械会話を実行する方法および装置
US6061059A (en) * 1998-02-06 2000-05-09 Adobe Systems Incorporated Providing a preview capability to a graphical user interface dialog
US6859451B1 (en) * 1998-04-21 2005-02-22 Nortel Networks Limited Server for handling multimodal information
WO2000021232A2 (en) * 1998-10-02 2000-04-13 International Business Machines Corporation Conversational browser and conversational systems
US6377913B1 (en) * 1999-08-13 2002-04-23 International Business Machines Corporation Method and system for multi-client access to a dialog system
US7685252B1 (en) * 1999-10-12 2010-03-23 International Business Machines Corporation Methods and systems for multi-modal browsing and implementation of a conversational markup language

Also Published As

Publication number Publication date
WO2003003193A1 (en) 2003-01-09
EP1410171A4 (en) 2008-04-02
IL159565A (en) 2010-06-16
US6839896B2 (en) 2005-01-04
US20030005174A1 (en) 2003-01-02
JP2005503609A (ja) 2005-02-03
EP1410171A1 (en) 2004-04-21
CN1491382A (zh) 2004-04-21
ATE483200T1 (de) 2010-10-15
DE60237825D1 (de) 2010-11-11
IL159565A0 (en) 2004-06-01
CN1224894C (zh) 2005-10-26
EP1410171B1 (en) 2010-09-29

Similar Documents

Publication Publication Date Title
JP3943543B2 (ja) マルチモーダル環境における対話管理およびアービトレーションを提供するシステムおよび方法
US7216351B1 (en) Systems and methods for synchronizing multi-modal interactions
KR100620826B1 (ko) 대화형 컴퓨팅 시스템 및 방법, 대화형 가상 머신, 프로그램 저장 장치 및 트랜잭션 수행 방법
US7496516B2 (en) Open architecture for a voice user interface
US7680816B2 (en) Method, system, and computer program product providing for multimodal content management
US6636831B1 (en) System and process for voice-controlled information retrieval
US7028306B2 (en) Systems and methods for implementing modular DOM (Document Object Model)-based multi-modal browsers
JP4750139B2 (ja) パーベイシブ装置用のウェブ・サービスへの動的拡張可能な軽量アクセス
US7036128B1 (en) Using a community of distributed electronic agents to support a highly mobile, ambient computing environment
US7487440B2 (en) Reusable voiceXML dialog components, subdialogs and beans
JP2009059378A (ja) ダイアログを目的とするアプリケーション抽象化のための記録媒体及び方法
US20100094635A1 (en) System for Voice-Based Interaction on Web Pages
JP2006099424A (ja) 音声情報サービスシステム及び音声情報サービス端末
AU2002315475A1 (en) System and method for providing dialog management and arbitration in a multi-modal environment
Di Fabbrizio et al. Unifying conversational multimedia interfaces for accessing network services across communication devices
Demesticha et al. Aspects of design and implementation of a multi-channel and multi-modal information system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060328

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060622

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060928

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070125

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070405

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110413

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110413

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120413

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130413

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130413

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140413

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees