(57)【要約】【課題】  特定の意味カテゴリに属するものとして認識されたテキストストリングまたはデータストリングに対して、または関連して自動的にアクションを実行する。【解決手段】  ユーザによって入力されたテキストをレコグナイザアプリケーションに渡す（５２０）。所与のテキストストリングまたはデータストリングが所与の意味カテゴリに属するものとして認識されると、レコグナイザアプリケーションは認識されたストリングに対応するデータをホストアプリケーションに返す（５４０）。認識されたテキストまたはデータに応答して、ホストアプリケーションのオブジェクトモデルを指すポインタをレコグナイザアプリケーションに渡して、レコグナイザアプリケーションが、認識されたストリングに応答してホストアプリケーションの任意の機能を実行できるようにする。【選択図】  図５
2005235212.tif 000002
【特許請求の範囲】
【請求項１】
認識されたテキストストリングに対して、または関連してアクションを自動的に実行する方法であって、
コンピュータ生成文書からテキストストリングを受け取るステップ、
前記テキストストリングをレコグナイザアプリケーションに渡すステップ、
前記テキストストリングを所与の意味カテゴリに属するものとして認識するステップ、
前記レコグナイザアプリケーションに、前記テキストストリングをそこから受け取ったホストアプリケーションのオブジェクトモデルを指すポインタを渡すステップ、および、
前記ホストアプリケーションの前記オブジェクトモデルを使用して、前記コンピュータ生成文書中の認識された前記テキストストリングに対して１つまたは複数のアクションを実行するステップ
を有することを特徴とする方法。
【請求項２】
コンピュータ生成文書から前記テキストストリングを受け取る前記ステップは、前記テキストストリングを前記ホストアプリケーションにおいて受け取ることを含み、
前記テキストストリングをレコグナイザアプリケーションに渡す前記ステップは、前記テキストストリングを前記ホストアプリケーションから前記レコグナイザアプリケーションに渡すことを含む
ことを特徴とする請求項１に記載の方法。
【請求項３】
認識された前記テキストストリングに対して１つまたは複数のアクションを実行する前記ステップの前に、前記レコグナイザアプリケーションが前記オブジェクトモデルを指す前記ポインタを介して前記ホストアプリケーションの前記オブジェクトモデルにアクセスするステップをさらに有することを特徴とする請求項１に記載の方法。
【請求項４】
認識された前記テキストストリングに対して１つまたは複数のアクションを実行する前記ステップは、前記テキストストリングに関連付けられたコンテキスト情報を求めて前記テキストストリングを含む前記コンピュータ生成文書を解析すること、および、前記レコグナイザアプリケーションが前記コンテキスト情報を使用して、前記テキストストリングに対して追加の認識を行うことを含むことを特徴とする請求項１に記載の方法。
【請求項５】
認識された前記テキストストリングに対して１つまたは複数のアクションを実行する前記ステップは、認識された前記テキストストリングに対して１つまたは複数のアクションをユーザアクションなしに実行することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
認識されたテキストストリングまたはデータストリングに対して、または関連してアクションを自動的に実行する方法であって、
コンピュータ生成文書からテキストストリングを受け取るステップ、
前記テキストストリングをレコグナイザアプリケーションに渡すステップ、
前記テキストストリングを所与の意味カテゴリに属するものとして認識するステップ、
前記テキストストリングをそこから受け取ったホストアプリケーションに、前記テキストストリングを前記所与の意味カテゴリに属するものとして識別する情報を前記レコグナイザアプリケーションから渡すステップ、
前記ホストアプリケーションにおいて、前記テキストストリングに対して所望のアクションを実行するようにプログラムされたアクションアプリケーションに関連付けられたイベントを起動するステップ、および、
起動された前記イベントに応答して、前記アクションアプリケーションに前記コンピュータ生成文書中の認識された前記テキストストリングに対して前記所望のアクションを実行させるステップ
を含むことを特徴とする方法。
【請求項７】
コンピュータ生成文書から前記テキストストリングを受け取る前記ステップは、前記テキストストリングを前記ホストアプリケーションから受け取ることを含み、
前記方法は、
前記テキストストリングを前記ホストアプリケーションから前記レコグナイザアプリケーションに渡すステップをさらに有することを特徴とする請求項６に記載の方法。
【請求項８】
情報を前記レコグナイザアプリケーションから前記ホストアプリケーションに渡す前記ステップは、前記テキストストリングをそこから受け取った前記コンピュータ生成文書内の前記テキストストリングの場所を渡すことを含むことを特徴とする請求項６に記載の方法。
【請求項９】
前記テキストストリングに対して所望のアクションを実行するようにプログラムされたアクションアプリケーションに関連付けられたイベントを起動する前記ステップは、文書レベルのイベントを起動することを含むことを特徴とする請求項６に記載の方法。
【請求項１０】
前記テキストストリングに対して所望のアクションを実行するようにプログラムされたアクションアプリケーションに関連付けられたイベントを起動する前記ステップは、アプリケーションレベルのイベントを起動することを含むことを特徴とする請求項６に記載の方法。
【請求項１１】
前記アクションアプリケーションに前記コンピュータ生成文書中の認識された前記テキストストリングに対して前記所望のアクションを実行させる前記ステップの前に、前記ホストアプリケーションから起動された前記イベントを前記アクションアプリケーションにトラップさせるステップをさらに有することを特徴とする請求項６に記載の方法。
【請求項１２】
認識されたテキストストリングまたはデータストリングに対して、または関連してアクションを自動的に実行する方法であって、
コンピュータ生成文書に入力されたテキストストリングをホストアプリケーションから受け取るステップ、
前記テキストストリングをレコグナイザアプリケーションに渡すステップ、
前記テキストストリングを所与の意味カテゴリに属するものとして認識するステップ、
前記レコグナイザアプリケーションから前記ホストアプリケーションに、前記テキストストリングを前記所与の意味カテゴリに属するものとして識別する情報を渡すステップ、
前記レコグナイザアプリケーションにおいて、前記テキストストリングに対して実行する所望のアクションを識別するプロパティ値を設定するステップ、
前記ホストアプリケーションにおいて、前記プロパティ値によって識別され、前記テキストストリングに対して前記所望のアクションを実行するようにプログラムされたアクションアプリケーションを呼び出すステップ、および、
前記アクションアプリケーションに、前記テキストストリングに対して前記所望のアクションを実行させるステップ
を含むことを特徴とする方法。
【請求項１３】
前記コンピュータ生成文書から前記テキストストリングを受け取る前記ステップは、前記テキストストリングを前記ホストアプリケーションにおいて受け取ることを含み、
前記テキストストリングをレコグナイザアプリケーションに渡す前記ステップは、前記テキストストリングを前記ホストアプリケーションから前記レコグナイザアプリケーションに渡すことを含む
ことを特徴とする請求項１２に記載の方法。
【請求項１４】
情報を前記レコグナイザアプリケーションから前記ホストアプリケーションに渡す前記ステップは、前記テキストストリングをそこから受け取った前記コンピュータ生成文書内の前記テキストストリングの場所を渡すことを含むことを特徴とする請求項１２に記載の方法。
【請求項１５】
前記テキストストリングに対して実行する所望のアクションを識別するプロパティ値を設定する前記ステップは、前記レコグナイザアプリケーションにおいて、前記プロパティ値をプロパティ値データ構造に格納すること、および、前記プロパティ値データ構造内の前記プロパティ値を指すポインタを前記ホストアプリケーションに渡すことを含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記ホストアプリケーションにおいて、前記プロパティ値を指す前記ポインタを受け取るステップ、および、
前記ホストアプリケーションにおいて、前記プロパティ値を指す前記ポインタを使用して、前記コンピュータ生成文書内の前記テキストストリングに対して実行する前記所望のアクションを識別するステップ
をさらに有することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記コンピュータ生成文書内の前記テキストストリングに対して前記所望のアクションを行った後に、前記プロパティ値データ構造から前記プロパティ値を削除することを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、コンピュータ生成文書におけるテキストおよびデータの認識に関する。より詳細には、本発明の実施形態は、コンピュータ生成文書において認識されたテキストストリングおよびデータストリングに対して、または関連して自動アクションを行う方法およびシステムに関する。
【背景技術】
【０００２】
コンピュータとソフトウェアの時代の到来以来、ソフトウェア開発者は、ソフトウェアユーザにコンテキスト対応性を持つ有用な機能を提供しようと努めてきた。例えば、ユーザが日付を入力しているとき、ユーザがコンピュータ生成文書に日付を入力していることを検出するソフトウェアが開発されている。このソフトウェアアプリケーションは、ユーザが日付の入力を完了する前に、ユーザに代わって日付を自動的に完成させることを提示する。また、ユーザによって入力された特定のデータに応答して、有用なアクションをユーザに提示する他のソフトウェアも開発されている。例えば、ユーザのワードプロセッサアプリケーションがユーザが日付を入力したことを認識した場合、ユーザの電子カレンダを起動して、ユーザがアポイントメントを確認したり、入力された日付がユーザのカレンダ内の情報にあるか確認することができるようにするアクションをユーザに提示する。
【０００３】
名称、日付、アドレスなどのテキストまたはデータのストリングを認識し、ラベル付けするシステムも開発されている。ストリングが認識され、特定の意味カテゴリに属するものとしてラベル付けされた後、ユーザは、認識されたストリングに対して何らかの種類のアクションを選択し、始動することができる。例えば、テキストのストリングが認識され、「名前」という意味カテゴリに属するものとしてラベル付けされた場合、ユーザはその名前をユーザの連絡先データベースに登録するアクションを始動することができる。
【０００４】
【特許文献１】米国特許出願第０９／５８８，４１１号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
残念ながら、このようなシステムは、テキストまたはデータのストリングを所定の意味カテゴリに属すると認識したとき、アクションを自動的に起こさせることはできない。すなわち、このようなシステムによれば、所定のテキストストリングが認識され、所定の意味カテゴリに属するものとしてラベル付けされた後、その認識され、ラベル付けされたストリングに対して、または関連して行うことが可能なアクションをユーザに提示することはできるが、ユーザは、提示されたアクションの中から選択し、選択したアクションを始動しなければならない。
【０００６】
本発明は、これらおよびその他の事情を考慮してなされたものである。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、特定の意味カテゴリに属するものとして認識されたテキストストリングまたはデータストリングに対して、またはそれに関連してアクションを自動的に行う方法およびシステムを提供する。一般には、本発明の一態様によれば、ユーザが、ワードプロセッサアプリケーション、表計算アプリケーション、連絡先データベースアプリケーション、カレンダアプリケーション、スライドプレゼンテーションなどのホストソフトウェアアプリケーションを使用して、コンピュータ生成文書にテキストまたはデータを入力する。ユーザによって入力されたテキストは、レコグナイザアプリケーションに渡される。レコグナイザアプリケーションは、ダイナミックリンクライブラリアプリケーションであってよい。レコグナイザアプリケーションでは、テキストまたはデータを特定の意味カテゴリに属するものとして認識する処理を行う１つまたは複数の他のレコグナイザアプリケーションにテキストを渡すことができる。例えば、１つのレコグナイザアプリケーションには、「名前」という意味カテゴリに属するテキストまたはデータを認識する処理を行うことができる。他のレコグナイザアプリケーションには、テキストストリングまたはデータストリングが「日付」などの異なる意味カテゴリに属するものとして認識する処理を行わせることができる。所与のテキストストリングまたはデータストリングが所与の意味カテゴリに属すると認識された場合、レコグナイザアプリケーションは、認識されたストリングに対応するデータをホストアプリケーションに返す。
【０００８】
本発明の一態様によれば、所与のストリングが所与の意味カテゴリに属すると認識されると、ホストアプリケーションのオブジェクトモデルを指すポインタがレコグナイザアプリケーションに渡される。レコグナイザアプリケーションがホストアプリケーションのオブジェクトモデルを指すポインタを受け取った後、レコグナイザアプリケーションは認識されたストリングに応答してホストアプリケーションの機能を実行できる。例えば、レコグナイザアプリケーションは、認識されたストリングの書式設定を行え。または、レコグナイザアプリケーションは、文書の他の部分を解析して、認識されたストリングに関連付けられたコンテキスト情報（contextual information）を得ることによって、そのストリングについてさらに認識を行うことができる。レコグナイザアプリケーションは、ホストアプリケーションのオブジェクトモデルにアクセスできるため、レコグナイザアプリケーションは、ホストアプリケーションのオブジェクトモデルが備える機能に応じて、認識されたストリングまたは文書の任意の他の部分に対して任意のアクションを行える。
【０００９】
本発明の他の態様によれば、レコグナイザアプリケーションが認識されたストリングに対応するデータをホストアプリケーションに返した後、ホストアプリケーションはアプリケーションレベルまたは文書レベルのイベントを起動(fire)する。レコグナイザアプリケーションによって認識された種類の認識されたストリングに対してアクションを行うように指定されたアクションコンポーネントが、このイベントを検出またはトラップし、次に、当該アクションコンポーネントが実行するようにプログラムされているどんな機能も自動的に実行する。例えば、アクションコンポーネントが認識されたストリングに対して太字体化などの書式設定処理を行うソフトウェアプログラミングを含む場合、当該アクションコンポーネントは、ホストアプリケーションによって起動されたイベントの検出時またはトラップ時に、当該テキストストリングに対して、定義された書式設定を自動的に適用する。
【００１０】
本発明の他の態様によれば、レコグナイザアプリケーションによってストリングが認識された後、レコグナイザアプリケーションは、認識されたストリングに対して、または関連して行う所望のアクションに関連付けられたプロパティを設定する。レコグナイザアプリケーションは、ホストアプリケーションに情報を渡して、認識されたストリングを識別させる。また、レコグナイザアプリケーションは、認識されたストリングに対して、またはそれに関連して実行すべき特定のアクションをホストアプリケーションに識別させるために、レコグナイザアプリケーションが設定したプロパティをホストアプリケーションに渡す。ホストアプリケーションは、レコグナイザアプリケーションによって設定されたプロパティによって識別されたアクションコンポーネントを呼び出し、呼び出されたアクションコンポーネントは、そのコンポーネントのプログラムされたアクションを、認識されたストリングに対して、または関連して自動的に実行する。例えば、呼び出されたアクションコンポーネントが、著者名として認識されたストリングに関連付けられた書誌ファイル（bibliography file）を作成するようにプログラムされている場合、当該アクションコンポーネントは、書誌ファイルを開くことができる。上記の例は、当然ながら例示的なものに過ぎず、特許請求の範囲に記載されている本発明の範囲を限定するものではない。
【００１１】
本発明を特徴付ける上記およびその他の特徴および利点は、以下の詳細な説明を読み、添付図面を参照すれば明らかになるであろう。上記の概説および以下の詳細な説明は、例示および説明のためのものに過ぎず、特許請求の範囲に記載の本発明を限定するものではないことを理解されたい。
【発明を実施するための最良の形態】
【００１２】
以上に簡単に述べたように、本発明の実施形態は、特定の意味カテゴリに属するものと認識されたテキストまたはデータのストリングに対してアクションを自動的に実行する方法およびシステムに関する。以下の詳細な説明では、本明細書の一部を成す添付図面を参照するが、添付図面には、特定の実施形態すなわち実施例が例示されている。これらの実施形態は組み合わせることができ、他の実施形態を使用することもでき、本発明の主旨および範囲から逸脱することなく、構造的変更を加えることができる。したがって、以下の詳細な説明は限定的なものとみなすべきではなく、本発明の範囲は特許請求の範囲とその均等物によって定義される。
【００１３】
次に、図面を参照しながら、本発明の態様および例示の動作環境について説明する。図面中のいくつかの図を通じで、同様の参照符号は同様の要素を示す。図１および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単な概要を示すことを意図したものである。本発明について、パーソナルコンピュータ上のオペレーティングシステム上で実行されるアプリケーションプログラムと共に実行されるプログラムモジュールという一般的コンテキストで説明するが、本発明は、他のプログラムモジュールと組み合わせて実施することもできることが、当業者ならわかるであろう。本発明の様々な実施形態を実施するための例示の動作環境およびソフトウェアアーキテクチャの他の態様については、参照により本明細書に明示的に組み込まれる「Method and System for Semantically Labeling Strings and Providing Actions Based on Semantically Labeled Strings」という名称の米国特許出願（例えば、特許文献１参照）に記載されている。
【００１４】
一般に、プログラムモジュールは、特定のタスクを実行、または特定の抽象データタイプを実現する、ルーチン、プログラム、コンポーネント、データ構造、およびその他の種類の構造を含む。さらに、本発明は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成でも実施可能であることが、当業者ならわかるであろう。また、本発明は、通信ネットワークを介して接続されたリモートの処理装置によってタスクが実行される分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールをローカルとリモートの両方のメモリ記憶装置に配置することができる。
【００１５】
次に、図１を参照しながら、本発明の様々な実施形態を実施するためのパーソナルコンピュータ２の例示のコンピュータアーキテクチャについて説明する。図１に示すコンピュータアーキテクチャは、中央処理装置（ＣＰＵ）４と、ランダムアクセスメモリ８（ＲＡＭ）および読取り専用メモリ（ＲＯＭ）１０を含むシステムメモリ６と、メモリをＣＰＵ４に接続するシステムバス１２とを含む、従来のパーソナルコンピュータを示している。起動時などにコンピュータ内の要素間で情報の転送を容易にする基本ルーチンを含む基本入出力システムが、ＲＯＭ１０に記憶されている。パーソナルコンピュータ２は、オペレーティングシステム１６、アプリケーションプログラム２０５などのアプリケーションプログラム、およびデータを記憶する大容量記憶装置１４をさらに含む。
【００１６】
大容量記憶装置１４は、バス１２に接続された大容量記憶装置コントローラ（図示せず）を介してＣＰＵ４に接続されている。大容量記憶装置１４とそれに付随するコンピュータ可読媒体とは、パーソナルコンピュータ２の不揮発性記憶を実現する。本明細書に記載のコンピュータ可読媒体の記述は、ハードディスクドライブやＣＤ−ＲＯＭドライブなどの大容量記憶装置を指すが、コンピュータ可読媒体は、パーソナルコンピュータ２がアクセス可能な任意の利用可能な媒体であってよいことが、当業者ならわかるであろう。
【００１７】
例えば、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含むが、これらには限定されない。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法または技術で実施された、揮発性および不揮発性、取外し可能および取外し不能媒体が含まれる。コンピュータ記憶媒体としては、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、またはその他の固体メモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ、またはその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶装置、または所望の情報を記憶するために使用することができ、コンピュータがアクセスすることが可能なその他の媒体があるが、これらには限定されない。
【００１８】
本発明の様々な実施形態によれば、パーソナルコンピュータ２は、インターネットなどのＴＣＰ／ＩＰネットワーク１８を使用したリモートコンピュータとの論理接続を使用したネットワーク環境で動作することができる。パーソナルコンピュータ２は、バス１２に接続されたネットワークインターフェース部２０を介してＴＣＰ／ＩＰネットワーク１８に接続することができる。なお、ネットワークインターフェース部２０を使用して、他の種類のネットワークやリモートコンピュータシステムにも接続することができることを理解されたい。パーソナルコンピュータ２は、キーボードやマウス（図示せず）を含む、複数の装置からの入力を受けて処理する入出力コントローラ２２も含むことができる。同様に、入出力コントローラ２２は、ディスプレイ画面、プリンタ、またはその他の種類の出力装置に出力を供給することができる。
【００１９】
上記で簡単に述べたように、パーソナルコンピュータ２の大容量記憶装置１４およびＲＡＭ８には、米国ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなど、ネットワーク接続されたパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム１６を含む、複数のプログラムモジュールおよびデータファイルを記憶することができる。大容量記憶装置１４およびＲＡＭ８には、１つまたは複数のアプリケーションプログラムも記憶することができる。具体的には、大容量記憶装置１４およびＲＡＭ８は、電子文書２３０の作成と編集を行うアプリケーションプログラム２０５を記憶することができる。例えば、アプリケーションプログラム２０５は、ワードプロセッシングアプリケーションプログラム、表計算アプリケーション、コンタクトアプリケーションなどを含むことができる。他の種類の電子文書の作成と編集を行うアプリケーションプログラムも、本発明の様々な実施形態と共に使用することができる。
【００２０】
次に、図２を参照しながら、本発明の様々な実施形態と共に使用するソフトウェアアプリケーションの例について説明する。図２に示すアーキテクチャは、ワードプロセッサアプリケーションプログラム、表計算アプリケーションプログラム、または電子文書の作成と編集を行う他のタイプのアプリケーションプログラムなどの、アプリケーションプログラム２０５を含む。アプリケーションプログラム２０５は、Ｗｅｂブラウザも含むことができる。本発明の実施形態は、テキストストリングとデータを認識し、認識されたテキストストリングおよびデータに対して有用なアクションを行うアプリケーションプログラム２０５と共に使用するプログラムモジュールを備える。具体的には、本発明の実施形態は、レコグナイザプラグイン２２０とアクションプラグイン２２５とを備える。以下で詳述するように、レコグナイザプラグイン２２０は、電子文書２３０中のテキストストリングおよびデータを認識し、そのストリングおよびデータに意味情報をラベル付けする。
【００２１】
アプリケーションプログラム２０５は、レコグナイザのダイナミックリンクライブラリ（ＤＬＬ）２１０およびアクションＤＬＬ２１５と通信することができる。一実施形態によれば、レコグナイザＤＬＬとアクションＤＬＬとは、認識と１つまたは複数のアクションの両方を行うことができる単一のＤＬＬとすることもできる。以下で詳述するように、レコグナイザＤＬＬ２１０は、１つまたは複数のレコグナイザプラグイン２２０Ａ〜２２０Ｎを制御することができ、アクションＤＬＬ２１５は、１つまたは複数のアクションプラグイン２２５Ａ〜２２５Ｎを制御することができる。
【００２２】
本発明の一実施形態によれば、レコグナイザプラグイン２２０Ａ〜２２０Ｎおよびアクションプラグイン２２５Ａ〜２２５Ｎは、オートメーションサーバである。オートメーションサーバは、プログラムとして編成されるか、または米国ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステム上で動作する既存のプログラムに機能を追加する、周知のソフトウェアコンポーネントである。オートメーションサーバは、様々なコンピューティング言語で書くことができ、ホストプログラムをリコンパイルする必要なしに、実行時にプラグインおよびアンプラグすることができる。
【００２３】
レコグナイザＤＬＬ２１０は、アプリケーションプログラム２０５によって編集されている電子文書から、各レコグナイザプラグイン２２０Ａ〜２２０Ｎにテキストストリングを配布する処理をする。レコグナイザプラグイン２２０Ａ〜２２０Ｎは、ワードプロセッシング文書や表計算文書などの電子文書内の特定のストリングを認識する。レコグナイザプラグイン２２０Ａ〜２２０Ｎは、アプリケーションプログラムモジュール２０５と共にパッケージ化するか、または、特定の対象ストリングを認識するように第三者(third partie)が作成することができる。一般には、レコグナイザＤＬＬ２１０は、ストリングを単一パラグラフ単位またはセル値増分(cell value increments)としてレコグナイザプラグイン２２０Ａ〜２２０Ｎに渡す。しかし、ストリングは他のサイズまたは形態でレコグナイザプラグイン２２０Ａ〜２２０Ｎに渡すこともできる。
【００２４】
特定のストリングを意味情報を含むものとして認識する処理の一部として、レコグナイザプラグイン２２０Ａ〜２２０Ｎは、どのストリングにラベル付けし、どのようにラベル付けすべきか判断する。レコグナイザＤＬＬ２１０は様々なレコグナイザプラグイン２２０からこれらの結果を受け取った後、アプリケーションプログラムモジュール２０５に意味カテゴリを送る。例えば、ストリングを名前を含むものとして認識するネームレコグナイザプラグイン２２０Ａを備えることができる。さらに、レコグナイザプラグイン２２０は、ストリングの長さを含めて、ストリングの場所を識別する情報を返すことができる。
【００２５】
各レコグナイザプラグイン２２０Ａ〜２２０Ｎは別々に実行されることに留意されたい。レコグナイザＤＬＬ２１０は、異なるレコグナイザプラグイン２２０Ａ〜２２０Ｎが異なる時点で結果を返すことによって生じる非同期性（asynchronicity）を処理する役割を持つ。このようにして、テキストストリング内で様々なタイプのデータを認識することができ、意味的にラベル付けされた各ストリングに対して異なるアクションを行うことができる。
【００２６】
レコグナイザプラグイン２２０Ａ〜２２０Ｎによってストリングが認識された後、認識されたストリングに対して所望のアクションを実行することができる。アクションＤＬＬ２１５は、アクションを行うために実行されるアクションプラグイン２２５Ａ〜２２５Ｎを管理する。レコグナイザプラグイン２２０Ａ〜２２０Ｎと同様に、アクションプラグイン２２５Ａ〜２２５Ｎも、アプリケーションプログラムモジュール２０５と共にパッケージ化するか、または特定の対象アクションを行うように第三者が作成することができる。簡単に上述したように、ストリングが認識され、所与のアクションコンポーネントと関連付けられた後で、ホストアプリケーション２０５によって起動されたイベントをトラップすることによって、所与のアクションコンポーネントを実行することができる。あるいは、所与のアクションコンポーネントが、所望のアクションに関連付けられたアクションコンポーネントを識別するレコグナイザアプリケーションによって、ホストアプリケーションに渡されるプロパティに応答して、ホストアプリケーションが呼び出すこともできる。実行されるアクションコンポーネントは、１つまたは複数のアクションＤＬＬおよびそれに付随するアクションプラグインから成ることができる。
【００２７】
以上、意味カテゴリによってテキストストリングを認識し、ラベル付けする際、および、認識されたストリングに対して、または関連してアクションを実行する際の、ホストアプリケーションと、例示のレコグナイザアプリケーションと、アクションアプリケーションとの間の相互動作について述べた。図３、図４、および図５は、本発明の実施形態による認識されたテキストまたはデータのストリングに対して自動的にアクションを行うルーチンの例を示す流れ図である。図３を参照すると、本発明の一実施形態により、簡単に上述したように、ホストアプリケーション２０５のオブジェクトモデルを指すポインタをレコグナイザアプリケーション２１０に渡して、レコグナイザアプリケーション２１０がアプリケーションプログラム２０５の機能を使用して文書２３０に対して、または文書２０３に関連して自動的にアクションを行うことができるようにすることによって、認識されたテキストストリングまたはデータストリングに対し、または関連して自動アクションを行うことができる。
【００２８】
図３に例示するルーチン３００は、開始ブロック３０５で開始し、ブロック３１０に進み、ホストアプリケーション２０５を使用してテキストまたはデータが文書２３０に入力される。図２を参照して上述したように、ブロック３２０でテキストまたはデータの一部がアプリケーション２０５からレコグナイザアプリケーション２１０に渡され、それによって、レコグナイザアプリケーション２１０または他のレコグナイザアプリケーション２２０Ａ〜２２０Ｎがレコグナイザアプリケーション２１０に渡されたテキストまたはデータの当該一部の認識を行うことができる。ブロック３３０で、レコグナイザアプリケーション２１０に、ホストアプリケーション２０５のオブジェクトモデルを指すポインタが渡される。本発明の一実施形態によれば、テキストおよびホストアプリケーションオブジェクトモデルを指すポインタは、１つの方法で同時にレコグナイザアプリケーションに渡すことができる。ブロック３４０で、レコグナイザアプリケーション２１０は、ホストアプリケーション２０５によって渡されたテキストまたはデータの認識を行う。図２を参照して上述したように、レコグナイザアプリケーションは、認識の支援のために、ホストアプリケーションから受け取ったテキストまたはデータを１つまたは複数のレコグナイザプラグイン２２０Ａ〜２２０Ｎに渡すことができる。レコグナイザプラグイン２２０Ａは、例えば、所与のテキストセレクションに含まれる名前を認識するプログラムであってよい。
【００２９】
ブロック３５０で、必要なら、レコグナイザアプリケーション２１０、または個々のレコグナイザプラグイン２２０Ａ〜２２０Ｎのうちのいずれかが、ホストアプリケーションのオブジェクトモデルを指すポインタを使用して、さらに認識を行うのを支援することができる。例えば、レコグナイザアプリケーション２１０、または個々のレコグナイザプラグイン２２０Ａ〜２２０Ｎのうちの１つが、所与のテキストストリングをアドレスストリング中の州名(the name of a state)として認識した場合、レコグナイザアプリケーションは、ホストアプリケーションオブジェクトモデルを使用して、文書２３０の他の部分を解析し、レコグナイザアプリケーションによって認識されているテキストストリングに関連付けられたコンテキスト情報を得ることができる。例えば、レコグナイザアプリケーションが文書２３０を解析し、以前に州名として認識されたテキストストリングの後に続く５桁の数字（例えば郵便番号）を検出した場合、レコグナイザアプリケーションは、その情報を使用して、州名として認識されたテキストストリングが実際に州名であることを検証し、または認識プロセスの信頼度を向上させるのを支援することができる。
【００３０】
ブロック３６０で、レコグナイザアプリケーションは、ホストアプリケーションオブジェクトモデルを使用して、認識されたストリングに対して、または関連して所望のアクションを実行する。例えば文書が新聞記事であって、新聞編集者がすべての人名を太字にするように指示している場合、本発明の本実施形態によれば、レコグナイザアプリケーションは、ホストアプリケーション２０５のオブジェクトモデルを使用して、その新聞記事文書に含まれる認識された人名に対し、太字にする処理を適用する。すなわち、ホストアプリケーションオブジェクトモデルを指すポインタを介してホストアプリケーションのオブジェクトモデルにアクセスすることで、レコグナイザアプリケーションは人名として認識された文書２３０中のテキストストリングに対し、太字化など、ホストアプリケーションの書式設定を適用できる。したがって、文書にテキストを入力するユーザは名前として認識されたテキスト項目を手作業で太字化する必要がないだけでなく、認識された名前をユーザに代わって太字化するというホストアプリケーションによる提示を選択したり受諾したりする必要すらない。文書中の認識された名前は、ホストアプリケーションのオブジェクトモデルを使用して、レコグナイザアプリケーションによって自動的に太字化される。当業者ならわかるように、レコグナイザアプリケーション２１０はホストアプリケーションのオブジェクトモデルにアクセスすることができるため、レコグナイザアプリケーションは、認識された所与のテキストストリングまたはデータストリングに対して、または関連してホストアプリケーションにとって利用可能ないかなる機能も自動的に実行できる。認識された所与のテキストストリングまたはデータストリングに対して、または関連して所望のアクションが実行された後、このルーチンはブロック３９５で終了する。
【００３１】
本発明の他の実施形態によれば、上記で簡単に述べたように、レコグナイザアプリケーションがテキストストリングまたはデータストリングを特定の意味カテゴリに該当するものと認識した後、レコグナイザアプリケーションは、ホストアプリケーションに認識したストリングを通知し、ホストアプリケーションは、アプリケーションレベルまたは文書レベルのイベントを起動する。このイベントは、アクションアプリケーションまたはアクションコンポーネントによって検出またはトラップされ、そのアクションアプリケーションまたはコンポーネントが、認識されたストリングに対して、または関連してアクションを自動的に実行する。図４を参照すると、例示のルーチン４００が、開始ブロック４０５で開始し、ブロック４１０に進み、ホストアプリケーション２０５を介して文書２３０にテキストまたはデータが入力される。ブロック４２０で、入力されたテキストまたはデータの一部が、必要に応じてレコグナイザアプリケーション２１０および／または個別のレコグナイザプラグインアプリケーション２２０Ａ〜２２０Ｎに渡される。ブロック４３０で、図２および図３を参照しながら上述したように、テキストまたはデータのセレクションに対して認識が行われる。ブロック４４０で、所与のテキストストリングまたはデータストリングが所与の意味カテゴリ、例えば名前、アドレス、日付、書誌情報（bibliography information）などに属するものとして認識されたことを識別する情報が、レコグナイザアプリケーション２１０からホストアプリケーション２０５に渡される。
【００３２】
ブロック４５０で、ホストアプリケーション２０５がレコグナイザアプリケーション２１０から、所与のテキストストリングまたはデータストリングが所与の意味カテゴリに属すると識別する情報を受け取る。それに応答してホストアプリケーションは、アプリケーションレベルまたは文書レベルのイベントを起動して、アクションアプリケーション２１５または他のアクションアプリケーションプラグイン２２５Ａ〜２２５Ｎに、認識されたテキストストリングまたはデータストリングに対して、または関連して自動アクションを実行させる。当業者ならわかるように、本実施形態によれば、アクションアプリケーション２１５、２２５Ａ、２２５Ｎは、アクションアプリケーションに所望の機能を実行させるためにホストアプリケーション２０５によって起動されたイベントを検出またはトラップすることができるイベントハンドラとして登録可能なアクションハンドラまたはその他のコンポーネントであってよい。ソフトウェアプログラムの当業者、例えばコンポーネントオブジェクトモデリングの当業者なら、ホストアプリケーション２０５などの他のコンポーネントによって起動されたイベントを受け取ることができるアクションハンドラとしてコンポーネントを登録し、そのアクションハンドラコンポーネントに所望の何らかの機能を実行させるようにすることがわかるであろう。例えば、アクションアプリケーション２１５は、文書２３０中の特定のテキストストリングの書式設定などの何らかの機能を実行するアクションハンドラとして登録可能なソフトウェアコンポーネントであってよい。同様に、アクションアプリケーション２１５は、レコグナイザアプリケーション２１０によって書誌情報と認識されたテキストセレクションから、書誌文書を作成する機能など、その他の何らかの機能を実行するようにプログラム可能なコンポーネントであってよい。
【００３３】
ブロック４６０で、アクションアプリケーション２１５、２２５Ａ、２２５Ｎのうちの１つなどのアクションコンポーネントが、ホストアプリケーション２０５によって起動されたイベントを検出またはトラップする。ブロック４７０で、イベントが起動されたアクションコンポーネントが、ホストアプリケーション２０５によって起動されて、検出またはトラップされたイベントに応答して、認識されたテキストストリングまたはデータストリングに対して、または関連して自動的にアクションを行う。上述の例で言えば、レコグナイザアプリケーション２１５が所与のテキストストリングを著者名などの書誌情報として認識した場合、ブロック４４０を参照して前述したように、当該テキストストリングを書誌情報として識別する情報がホストアプリケーション２０５に渡される。次に、ホストアプリケーション２０５は、文書２３０から認識された書誌情報を含む書誌文書を作成するようにプログラムされたアクションアプリケーション２１５に対して、イベントを起動する。アクションアプリケーション２１５がホストアプリケーション２０５によって起動されたイベントをトラップすると、アクションアプリケーション２１５は書誌文書を開くかまたは作成し、その書誌文書に、レコグナイザアプリケーション２１０によって書誌情報として認識された文書２３０からテキストストリングを投入（populate）する。ホストアプリケーション２０５によって起動されたイベントを受け取るとアクションアプリケーション２１５によって自動的に書誌文書が作成されるため、ユーザの介入もアクションも不要である。このルーチンはブロック４９０で終了する。
【００３４】
本発明の他の実施形態によれば、簡単に前述したように、レコグナイザアプリケーションがテキストストリングまたはデータストリングを所与の意味カテゴリに該当するとして認識した後、レコグナイザアプリケーションは認識されたテキストストリングまたはデータストリングを識別する情報をホストアプリケーション２０５に渡し、かつレコグナイザアプリケーションは、認識されたテキストストリングまたはデータストリングに応答してホストアプリケーション２０５に特定のアクションコンポーネントまたはアクションアプリケーションを実行させる設定プロパティの形態のショートメッセージもまたホストアプリケーション２０５に渡す。
【００３５】
次に、図５を参照すると、ルーチン５００が開始ブロック５０５で開始し、ブロック５１０に進み、ホストアプリケーション２０５を介して文書２３０にテキストまたはデータが入力される。ブロック５２０で、図２、図３、および図４を参照しながら前述したように、テキストまたはデータの一部がホストアプリケーション２０５によって１つまたは複数のレコグナイザアプリケーション２１０、２２０Ａ、２２０Ｎに渡される。ブロック５３０で、レコグナイザアプリケーションは、１つまたは複数のテキストストリングまたはデータストリングを所与の意味カテゴリに属するものとして認識する。ブロック５４０で、所与のテキストストリングまたはデータストリングを所与の意味カテゴリに属するものとして識別する情報が、レコグナイザアプリケーション２１０によってホストアプリケーション２０５に渡される。レコグナイザアプリケーション２１０からホストアプリケーションに渡される情報には、文書２３０内で認識されたテキストストリングが位置する正確な場所の範囲を、認識されたテキストストリングを特定の意味カテゴリに属するものとして識別する情報と共に含めることができることがわかるであろう。
【００３６】
ブロック５５０で、レコグナイザアプリケーションは、認識されたテキストストリングまたはデータストリングに対して、または関連して自動的に実行すべきアクションの名前に相当するプロパティを設定する。例えば、所与のテキストストリングがレコグナイザアプリケーション２１０によってアドレスとして認識されたとする。さらに、レコグナイザアプリケーション２１０は、認識されたアドレスを認識時にユーザの連絡先データベースに格納することを求めるようにプログラムされているとする。本発明の実施形態によれば、ブロック５５０で、レコグナイザプログラム２１０は、ユーザの連絡先データベースに認識されたアドレスを格納するようにプログラムされたアクションコンポーネントまたはアクションアプリケーション２１５の名前に相当するプロパティを設定する。例えば、レコグナイザアプリケーション２１０は、「ｏ：ｒｕｎａｃｔｉｏｎ＝ｐｏｐｕｌａｔｅｃｏｎｔａｃｔｓｄａｔａｂａｓｅｗｉｔｈａｄｄｒｅｓｓ」というプロパティを設定することができる。ただし「ｏ」は、ホストアプリケーションの拡張マークアップ言語（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ＸＭＬ）ネームスペース、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ  ＸＭＬネームスペースを示し、「ｒｕｎａｃｔｉｏｎ」はプロパティ名であり、プロパティ「ｐｏｐｕｌａｔｅｃｏｎｔａｃｔｓｄａｔａｂａｓｅｗｉｔｈａｄｄｒｅｓｓｅｓ」は、ホストアプリケーション２０５が、ユーザの連絡先データベースに認識されたアドレスを格納するために、識別されているアクションアプリケーション２１５を呼び出すのに使用する。本発明の一実施形態によれば、この識別情報（ブロック５４０）と設定プロパティ（ブロック５５０）とは、１つの方法によって同時にホストアプリケーションに渡すことができる。
【００３７】
本発明の実施形態によれば、レコグナイザアプリケーション２１０によって設定されるプロパティは、レコグナイザアプリケーション２１０が、レコグナイザアプリケーション２１０によって設定されたプロパティ値を格納するためのデータ構造に格納できる。このデータ構造は「プロパティバッグ」とも呼ばれ、レコグナイザアプリケーション２１０によって設定されたプロパティ値を、後述するようにホストアプリケーション２０５によって後で削除されるまで格納しておける。レコグナイザアプリケーション２１０がホストアプリケーション２０５に認識されたテキストストリングまたはデータストリングを識別する情報を渡すとき、レコグナイザアプリケーション２１０は、レコグナイザアプリケーション２１０によって設定され、プロパティデータ構造またはプロパティバッグに格納されたプロパティ値を指すポインタもホストアプリケーション２０５に渡す。したがって、ホストアプリケーション２０５がレコグナイザアプリケーション２１０からこの情報を受け取ると、ホストアプリケーション２０５はプロパティバッグ内を指すポインタを使用して、レコグナイザアプリケーション２１０によって設定された、ホストアプリケーション２０５に特定のアクションアプリケーション２１５を指示するプロパティ値を取り出す。
【００３８】
ブロック５６０で、ホストアプリケーション５６０はレコグナイザアプリケーション２１０によって設定されたプロパティ値を取り出し、レコグナイザアプリケーション２１０によって設定されたプロパティ値によって指定された特定のアクションアプリケーション２１５、２２５Ａ、２２５Ｎを呼び出す。前述の例で言えば、レコグナイザアプリケーション２１０によって設定されたプロパティ値がユーザの連絡先データベースに認識されたアドレス情報を格納するアクションアプリケーション２１５を識別している場合、ホストアプリケーションはそのアクションアプリケーションを呼び出し、ブロック５７０で、アクションアプリケーションが、認識されたテキストストリングに対して、または関連してそのアクションを自動的に実行する。例えば、前述の例では、アクションアプリケーション２１５は、ユーザの連絡先データベースアプリケーションのインスタンスを起動し、ユーザの連絡先データベースアプリケーションに、レコグナイザアプリケーション２１０によって文書２３０から認識されたアドレス情報を格納することができる。したがって、本発明の実施形態によれば、文書２３０に入力された認識されたアドレスはユーザの連絡先データベースに自動的に格納されるため、ユーザのアクションは不要である。
【００３９】
ブロック５８０で、所望のアクションが自動的に実行された後、ホストアプリケーション２０５は、レコグナイザアプリケーション２１０によって設定されたプロパティ値を削除し、ホストアプリケーションが後で、そのアクションが必要のないとき、そのアクションアプリケーション２１５を誤って呼び出すことのないようにする。このルーチンはブロック５９０で終了する。
【００４０】
以上、本明細書で説明したように、コンピュータ生成文書中で特定の意味カテゴリに属するものとして認識されたテキストまたはデータに対して、または関連して自動的アクションを行う方法およびシステムが提供される。本発明の範囲または主旨から逸脱することなく、本発明の様々な修正または変形態様も可能であることが、当業者にはわかるであろう。当業者なら、本明細書で開示されている本発明の明細および実施を検討すれば、本発明のその他の実施形態もわかるであろう。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施形態のための例示的な動作環境を提供するパーソナルコンピュータのアーキテクチャを示すブロック図である。
【図２】本発明の様々な実施形態による、テキストまたはデータのストリングを認識し、ラベル付けし、アクションを行うソフトウェアアーキテクチャを例示するブロック図である。
【図３】本発明の実施形態による、認識されたテキストまたはデータのストリングに対してアクションを自動的に実行する例示のルーチンを示す流れ図である。
【図４】本発明の実施形態による、テキストまたはデータの認識されたストリングに対してアクションを自動的に実行する例示のルーチンを示す流れ図である。
【図５】本発明の実施形態による、テキストまたはデータの認識されたストリングに対してアクションを自動的に実行する例示のルーチンを示す流れ図である。
【符号の説明】
【００４２】
２  パーソナルコンピュータ
４  ＣＰＵ
６  システムメモリ
８  ランダムアクセスメモリ（ＲＡＭ）
１０  読取り専用メモリ（ＲＯＭ）
１２  システムバス
１４  大容量記憶装置
１６  オペレーティングシステム
１８  ＴＣＰ／ＩＰネットワーク
２０  ネットワークインターフェース部
２２  入出力コントローラ
２０５  アプリケーションプログラム
２１０  レコグナイザダイナミックリンクライブラリ（ＤＬＬ）
２１５  アクションダイナミックリンクライブラリ（ＤＬＬ）
２２０Ａ〜Ｎ  レコグナイザプラグイン
２２５Ａ〜Ｎ  アクションプラグイン
２３０  電子文書
【図１】
2005235212.tif 000003
【図２】
2005235212.tif 000004
【図３】
2005235212.tif 000005
【図４】
2005235212.tif 000006
【図５】
2005235212.tif 000007