(57)【要約】      （修正有）【課題】アプリケーションのコンパイラにおいて、宣言型言語コードと手続き型言語コードの間を統合できるようにする。【解決手段】少なくとも１つの意味スロットを有する意味オブジェクトを定義するように適合された宣言型論理モジュール２２６内の意味オブジェクトにアクセスが行われて、宣言型論理モジュール２２６を参照して前記１つの意味オブジェクトに対して実行されるアクションを定義するように適合された手続き型論理モジュール２２４内でアクションが実行される。【選択図】図３
2005209176.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で実施されたとき、前記コンピュータに情報を処理させる命令群を有するコンピュータ可読媒体であって、前記命令群は、
少なくとも１つの意味スロットを有する意味オブジェクトを定義するように適合された宣言型論理モジュールと、
前記宣言型論理モジュールを参照して前記意味オブジェクトに対して実行されるアクションを定義するように適合された手続き型論理モジュールと
を備えたことを特徴とするコンピュータ可読媒体。
【請求項２】
前記宣言型論理モジュールは、ＸＭＬ、ＬＩＳＰ、およびＰｒｏｌｏｇの少なくとも１つを使用して実装されることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記手続き型論理モジュールは、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、およびＣ＃の少なくとも１つを使用して実装されることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項４】
前記命令群は、前記宣言型論理モジュールを参照して前記意味オブジェクトに対して実行されるアクションを定義するように適合された第２の手続き型論理モジュールをさらに含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項５】
前記宣言型論理モジュールは、階層構造で関連する意味オブジェクトのスキーマを定義するように適合されることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項６】
前記意味オブジェクトは、複数のスロットを含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項７】
前記宣言型論理モジュールおよび前記手続き型論理モジュールを、プロセッサが読み取ることができる機械語に変換するように適合されたコンパイラをさらに含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項８】
ユーザから自然言語入力を受け取るためのインタフェースをさらに備えたことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項９】
前記宣言型論理モジュールの前記少なくとも１つのスロットは、前記自然言語入力の少なくとも一部分で占有されるように適合されることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記手続き型論理モジュールは、占有されている前記少なくとも１つのスロットに対してアクションを実行することを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１１】
前記インタフェースは、占有された前記少なくとも１つのスロットに基づいて知識ベースにアクセスするように適合されることを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１２】
アプリケーションをコンパイルするための方法であって、
宣言型論理モジュールに対応する手続き型論理モジュール内の指定を識別するステップと、
前記宣言型論理モジュール内の意味オブジェクトにアクセスして、前記手続き型論理モジュール内でアクションを実行するステップと
を備えることを特徴とする方法。
【請求項１３】
前記手続き型論理モジュールおよび前記宣言型論理モジュールを、プロセッサが読み取ることができる機械語に変換するステップ
をさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
複数の手続き型論理モジュールは、前記宣言型論理モジュールに対応する前記指定を含むことを特徴とする請求項１２に記載の方法。
【請求項１５】
複数の関連する意味オブジェクトを階層構造で宣言するステップ
をさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１６】
前記指定は、部分クラス指定であることを特徴とする請求項１２に記載の方法。
【請求項１７】
自然言語入力を処理するための手続き型論理モジュールであって、
少なくとも１つのスロットを有する意味オブジェクトを定義する宣言型論理モジュールに対応する指定と、
前記意味オブジェクトを使用して前記宣言型論理モジュールに対してアクションを実行するように適合された手続き型コードと
を備えたことを特徴とするモジュール。
【請求項１８】
前記意味オブジェクトおよび前記少なくとも１つのスロットを使用して知識ベースにアクセスするようにさらに適合されることを特徴とする請求項１７に記載の論理モジュール。
【請求項１９】
前記指定は、前記意味オブジェクトを参照する部分クラス指定であることを特徴とする請求項１７に記載の論理モジュール。
【請求項２０】
前記意味オブジェクトは、複数のスロットを定義することを特徴とする請求項１７に記載の論理モジュール。
【請求項２１】
前記指定は、階層構造に構成された複数の意味オブジェクトに対応することを特徴とする請求項１７に記載の論理モジュール。
【請求項２２】
自然言語入力を処理するためのコンピュータ可読媒体であって、
階層構造に構成された複数の意味オブジェクトを定義する宣言型論理モジュールに対応する指定をそれぞれが含む複数の手続き型論理モジュールを含み、該意味オブジェクトはそれぞれ、前記自然言語入力で占有することができる複数のスロットを含むことを特徴とする媒体。
【請求項２３】
各指定は、部分クラス指定であることを特徴とする請求項２２に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションをコンパイルするための方法に関する。より詳細には、本発明は、ユーザ／コンピュータ対話を定義し、扱うための方法およびシステムに関連し、分散意味スキーマを利用して、ユーザ入力をコマンドまたはエンティティに分析する（resolve）システムに関する。
【背景技術】
【０００２】
通常のコンピュータシステムでは、ユーザ入力は、固定されたフォーマットを有する厳格な１組のユーザ応答に制限されている。例えば、コマンドラインインタフェースでは、ユーザ入力は、単一のコマンドと、限られた特定の可能な引数の定義域から選択された引数とを一意に識別する特定の形態でなければならない。同様に、グラフィカルユーザインタフェースでは、限られたオプションセットだけがユーザに提示され、開発者が、限られたユーザ入力セットの中のそれぞれの特定のユーザ入力について限られたコマンドセットまたはエンティティセットから成るユーザ入力ドメインを定義することが、比較的簡単である。
【０００３】
ユーザを許される入力または応答の厳格なセットに制限することにより、コンピュータシステムは、ユーザまたは操作者に相当なレベルの技能を要求している。実行すべき所望のタスクを、コンピュータシステム上で動作するアプリケーション群によって認識される特定の入力に頭の中で変換することは、従来、ユーザの責任であった。コンピュータシステムの使いやすさを拡張するため、アプリケーション群に自然言語（ＮＬ）インタフェースを備えようとする進行中の取り組みが存在する。自然言語インタフェースは、アプリケーション群の機能を限られた入力セットを超えて拡張し、自然言語フォーマットの入力に対してコンピュータシステムを開放する。自然言語インタフェースは、比較的あいまいで、コンテキストに依拠する度合いの高い（ｈｉｇｈｌｙ  ｃｏｎｔｅｘｔ  ｂａｓｅｄ）領域の自然言語をコンピュータアプリケーションによって要求される正確で厳格な入力セットに変換することを実行することを担う。
【０００４】
自然言語インタフェースは、意味オブジェクトおよび様々なアクションを利用して、自然言語入力をアプリケーションによって使用される情報に変換する。自然言語インタフェースと対話するアプリケーション群を作成する場合、アプリケーション開発者は、手続き型プログラミング言語および宣言型プログラミング言語を使用して意味オブジェクトおよびアクションを実装することができる。Ｃ、Ｃ＋＋、Ｃ＃、およびＦｏｒｔｒａｎのような手続き型プログラミング言語は、アプリケーションの動作中にデータオブジェクトに対して実行される様々なアクションを定義することができる。ＸＭＬ（Extensible Markup Language）、ＬＩＳＰ（list processor）、およびＰｒｏｌｏｇのような宣言型プログラミング言語は、アプリケーションの意味オブジェクトを定義することができる。
【０００５】
しかし、宣言型言語コードと手続き型言語コードの間の統合を作成者が開発するのは困難であった。１つのアプローチでは、意味オブジェクトが宣言型言語によって表されるが、作成者は、その意味オブジェクトを使用する各アクションについて意味オブジェクト宣言を複製することを要求される。別のアプローチでは、意味オブジェクトの隠蔽された（ｏｂｓｃｕｒｅｄ）宣言が手続き型言語において使用され、これにより、作成者が、意味オブジェクト群の関係を追跡し、保持することが要求される。このため、手続き型論理モジュール群と宣言型論理モジュール群を統合する作成ツールが有用である。
【０００６】
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている（例えば、非特許文献１参照）。
【０００７】
【非特許文献１】Microsoft Corporation, ”Common Language Runtime Overview”, The .Net Framework Developer's Guide, 2000.
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
【０００９】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、宣言型言語コードと手続き型言語コードの間の統合を実現するアプリケーションをコンパイルするための方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、コンピュータ上で実施されたとき、コンピュータに情報を処理させる命令群を有するコンピュータ可読媒体に関する。命令群は、少なくとも１つの意味スロットを有する意味オブジェクトを定義するように適合された宣言型論理モジュール、および宣言型論理モジュールを参照して前記１つの意味オブジェクトに対して実行されるアクションを定義するように適合された手続き型論理モジュールを含む。
【００１１】
本発明の別の態様は、アプリケーションをコンパイルするための方法に関する。方法は、宣言型論理モジュールに対応する手続き型論理モジュール内の指定を識別することを含む。宣言型論理モジュール内の意味オブジェクトにアクセスが行われて、手続き型論理モジュール内でアクションが実行される。
【００１２】
さらに別の態様は、自然言語入力を処理するための手続き型論理モジュールに関する。モジュールは、少なくとも１つのスロットを有する意味オブジェクトを定義する宣言型論理モジュールに対応する指定、および意味オブジェクトを使用して宣言型論理モジュールに対してアクションを実行するように適合された手続き型コードを含む。
【００１３】
ユーザからの自然言語入力を処理するためのコンピュータ可読媒体が、本発明の別の態様を含む。コンピュータ可読媒体は、複数の手続き型論理モジュールを含む。各手続き型論理モジュールは、階層構造に構成された複数の意味オブジェクトを定義する宣言型論理モジュールに対応する指定を含む。さらに、各意味オブジェクトは、自然言語入力が入ることが可能な複数のスロットを含む。
【発明の効果】
【００１４】
本発明によれば、宣言型言語コードと手続き型言語コードの間の統合を実現できる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。図１は、本発明を実施することができる適切なコンピューティングシステム環境１００の例を示している。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、本発明の用途または機能の範囲について何ら限定を示唆するものではない。また、コンピューティングシステム環境１００が、典型的な動作環境であるコンピューティングシステム環境１００に例示するコンポーネントのいずれか１つ、または組み合わせに関連するどんな依存関係または要件をも有するものと解釈すべきでない。
【００１６】
本発明は、他の多数の汎用または専用のコンピューティングシステム環境またはコンピューティングシステム構成で機能する。本発明で使用するのに適している可能性がある周知のコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ（personal computer）、ミニコンピュータ、メインフレームコンピュータ、電話システム、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、以上には限定されない。
【００１７】
本発明は、コンピュータによって実行されている、プログラムモジュール群などのコンピュータ実行可能命令群の一般的な状況で説明することができる。一般に、プログラムモジュール群には、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。また、本発明は、通信ネットワークを介してリンクされたリモート処理デバイス群によってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュール群は、メモリ記憶装置を含むローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体の両方の中に配置することができる。プログラム群およびモジュール群によって実行されるタスクを以下に、図の助けを借りて説明する。当業者は、以下の説明および図を、任意の形態のコンピュータ可読媒体上に書き込むことができるプロセッサ実行可能命令群として実装することができる。
【００１８】
図１を参照すると、本発明を実施するための典型的なシステムが、コンピュータ１１０の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネント群には、プロセッサ１２０、システムメモリ１３０、ならびにシステムメモリからプロセッサ１２０までを含む様々なシステムコンポーネントを結合するシステムバス１２１が含まれることが可能であるが、以上には限定されない。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺機器バス、およびローカルバスを含め、いくつかのタイプのバス構造のどれであってもよい。例として、限定としてではなく、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００１９】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる任意の利用可能な媒体とすることが可能であり、揮発性媒体と不揮発性媒体、リムーバブル媒体とノンリムーバブル媒体がともに含まれる。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性媒体と不揮発性媒体、リムーバブル媒体とノンリムーバブル媒体がともに含まれる。コンピュータ記憶媒体には、ＲＡＭ（random access memory）、ＲＯＭ（read only memory）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、フラッシュメモリまたは他のメモリ技術、ＣＤ（compact disc）−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータ１１０がアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波、またはその他の移送機構などの変調されたデータ信号にコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実体化し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号に情報を符号化するような形でその特性の１つまたは複数が設定されている、または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ（radio frequency）媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、以上の媒体のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含めるべきである。
【００２０】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２のような揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内部の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（Basic Input/Output System）１３３が、通常、ＲＯＭ１３１の中に格納される。ＲＡＭ１３２は、通常、プロセッサ１２０が即時にアクセスすることができ、かつ／またはプロセッサ１２０によって現在、処理されているデータおよび／またはプログラムモジュール群を含む。例として、限定としてではなく、図１は、オペレーティングシステム１３４、アプリケーションプログラム群１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００２１】
コンピュータ１１０は、その他のリムーバブル／ノンリムーバブル、揮発性／不揮発性のコンピュータ記憶媒体も含むことが可能である。単に例として、図１は、ノンリムーバブル不揮発性の磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ１４１、リムーバブル不揮発性の磁気ディスク１５２に対して読み取りまたは書き込みを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭまたは他の光媒体などのリムーバブル不揮発性の光ディスク１５６に対して読み取りまたは書き込みを行う光ディスクドライブ１５５を示している。典型的な動作環境において使用することができるその他のリムーバブル／ノンリムーバブル、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、以上には限定されない。ハードディスクドライブ１４１は、通常、インタフェース１４０のようなノンリムーバブルメモリのインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インタフェース１５０のようなリムーバブルメモリのインタフェースでシステムバス１２１に接続される。
【００２２】
前述し、図１に示す以上のドライブ群、および関連するコンピュータ記憶媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージがコンピュータ１１０に提供される。図１では、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム群１４５、その他のプログラムモジュール群１４６、およびプログラムデータ１４７を格納していることが示されている。以上のコンポーネント群は、オペレーティングシステム１３４、アプリケーションプログラム群１３５、その他のプログラムモジュール群１３６、およびプログラムデータ１３７と同一であることも、異なることも可能であることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム群１４５、その他のプログラムモジュール群１４６、およびプログラムデータ１４７に、ここでは、少なくともこれらが異なるコピーであることを示すために異なる符号を与えている。
【００２３】
ユーザは、キーボード１６２、マイク１６３、ならびにマウス、トラックボール、またはタッチパッドなどのポインティングデバイス１６１を介してコマンドおよび情報をコンピュータ１１０に入力することができる。その他の入力デバイス群（図示せず）には、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることが可能である。自然ユーザインタフェースアプリケーション群に関して、ユーザは、音声、手書き、注視（ｇａｚｅ）（目の動き）、およびその他のジェスチャを使用してコンピュータとさらに対話する（ｃｏｍｍｕｎｉｃａｔｅ）ことができる。自然ユーザインタフェースを円滑にするため、コンピュータは、マイク、手書きパッド（ｗｒｉｔｉｎｇ  ｐａｄ）、カメラ、モーションセンサ群（ｍｏｔｉｏｎ  ｓｅｎｓｏｒｓ）、およびユーザのジェスチャをキャプチャするための他のデバイス群も含むことが可能である。以上の入力デバイス群、およびその他の入力デバイス群は、しばしば、システムバスに結合されたユーザ入力インタフェース１６０を介してプロセッサ１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースおよびバス構造で接続してもよい。モニタ１９１、またはその他のタイプのディスプレイデバイスも、ビデオインタフェース１９０のようなインタフェースを介してシステムバス１２１に接続される。モニタに加え、コンピュータは、出力周辺インタフェース１９５を介して接続することができるスピーカ１９７やプリンタ１９６のような他の周辺出力デバイス群も含むことが可能である。
【００２４】
コンピュータ１１０は、リモートコンピュータ１８０のような１つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境において動作することもできる。リモートコンピュータ１８０は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードであることが可能であり、通常、コンピュータ１１０に関連して前述した諸要素の多く、またはすべてを含む。図１に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、その他のネットワークも含まれることが可能である。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【００２５】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、ネットワークインタフェースまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。内部にあることも、外部にあることも可能なモデム１７２は、ユーザ入力インタフェース１６０、またはその他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１０に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモートメモリ記憶装置の中に格納することができる。例として、限定としてではなく、図１は、リモートアプリケーションプログラム群１８５が、リモートコンピュータ１８０上に存在していることを示している。図示したネットワーク接続群は、典型的であり、コンピュータ間で通信リンクを確立するその他の手段も使用できることが認められよう。
【００２６】
通常、アプリケーションプログラム群１３５は、ユーザ入力インタフェース１６０によりコマンドラインまたはグラフィカルユーザインタフェース（ＧＵＩ）を介してユーザと対話している。しかし、コンピュータシステムの使用を簡単にし、拡張しようとする取り組みにおいて、ユーザから自然言語入力を受け取ることができる入力が開発されている。自然言語または音声と対比して、グラフィカルユーザインタフェースは、正確である。うまく設計されたグラフィカルユーザインタフェースは、通常、あいまいな参照を生成することはなく、または基礎のアプリケーションに、インタフェース１６０を介して受け取られた入力の特定の解釈を確認することを要求することはない。例えば、インタフェースが正確であるため、入力に関するさらなる照会、例えば、「貴方は「ＯＫ」ボタンをクリックしましたか」という照会をユーザに行う要件は、通常、全く存在しない。通常、グラフィカルユーザインタフェース用に設計されたオブジェクトモデルは、実装が非常に機械的であり、厳格である。
【００２７】
グラフィカルユーザインタフェースからの入力とは対照的に、自然言語の照会またはコマンドは、しばしば、入力オブジェクトモデルに対する１回の関数呼び出しだけにではなく、一連の関数呼び出しに変換される。従来のライン入力またはグラフィカルユーザインタフェースの厳格で機械的な制限とは対照的に、自然言語は、人間の対話者が、しばしば無意識に、互いの知能に依拠してあいまいさを解決するコミュニケーション手段である。実際、自然言語は、まさに機械的でないという理由で「自然」であると見なされる。人間の対話者は、文脈上の情報、ならびに発話をとりまくいくつもの分野に関する手がかりに基づいてあいまいさを解決する。「Ｆｏｒｗａｒｄ  ｔｈｅ  ｍｉｎｕｔｅｓ  ｔｏ  ｔｈｏｓｅ  ｉｎ  ｔｈｅ  ｒｅｖｉｅｗ  ｍｅｅｔｉｎｇ  ｏｎ  Ｆｒｉｄａｙ（金曜日の審査会議の参加者に議事録を回せ）」という文は、全くさらなる説明なしに完全に理解可能な文である。しかし、マシンの機械的な観点からは、正確にはどのような文書のこと、およびどの会議のことを言っているのか、正確には誰にその文書が送られなければならないのかなどの特定の詳細を指定しなければならない。
【００２８】
図２は、論理モジュール群２０２を使用する様々なアプリケーションのための自然理解インタフェース２００を示す簡略ブロック図である。自然理解インタフェース２００は、例えば、キーボード、ハンド認識（ｈａｎｄ  ｒｅｃｏｇｎｉｔｉｏｎ）デバイスまたはジェスチャ認識デバイス、光学スキャナ、マイク、またはその他の入力デバイスを介して、ユーザ入力を受け取る。認識エンジンを使用し、ユーザ入力内の特徴を識別することができる。音声に関する認識特徴は、普通、話し言葉における語であり、手書きに関する認識特徴は、普通、ユーザの手書きにおけるストローク（ｓｔｒｏｋｅ）に対応する。１つの特定の例では、文法を使用して、音声の発話内のテキストを認識することができる。周知のとおり、認識は、視覚的入力に関しても提供することができる。認識特徴は、１つまたは複数の論理モジュール２０２を利用してインタフェース２００によって処理される。
【００２９】
論理モジュール群２０２は、インタフェース２００内部のアプリケーション群を駆動する手続き型プログラミングコードおよび宣言型プログラミングコードを含む。例えば、コードは、ＸＭＬ、ＬＩＳＰ、Ｐｒｏｌｏｇ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、および／またはＦｏｒｔｒａｎを使用して書くことができる。このアプリケーション群は、論理モジュール群２０２内部の意味オブジェクトを使用して、知識ベース２０４の中の情報にアクセスする。本明細書で使用する「意味（semantic）」とは、自然言語表現の意味を指す。意味オブジェクトは、自然言語表現に対応するプロパティ、メソッド、およびイベントハンドラを定義することができる。本発明の一実施形態では、意味オブジェクトは、論理モジュール２０２の１つまたは複数が利用することができるエンティティを参照する１つの方法を提供する。特定のドメインアプリケーションに関連する特定のドメインエンティティは、異なる言い回しの同一のドメインエンティティをそれぞれが表す、いくつもの異なる意味オブジェクトによって識別することができる。特定のエンティティを複数の意味オブジェクトによって識別することができることを意味するのに、意味多形性（ｓｅｍａｎｔｉｃ  ｐｏｌｙｍｏｒｐｈｉｓｍ）という用語を使用することができる。意味オブジェクトの豊かさ、つまり、意味オブジェクトの数、意味オブジェクトの相互関係および複雑さは、アプリケーションが自然言語インタフェースにおいて有効にするユーザの表現力のレベルに対応する。多形性の例として、「Ｊｏｈｎ  Ｄｏｅ（ジョンドウ）」、「ＶＰ  ｏｆ  ＮＩＳＤ（ＮＩＳＤのＶＰ）」、および「Ｊｉｍ’ｓ  ｍａｎａｇｅｒ（ジムの管理者）」がすべて、同一人物（ジョンドウ）を指し、それぞれ、異なる意味オブジェクト、ＰｅｒｓｏｎＢｙＮａｍｅ、ＰｅｒｓｏｎＢｙＪｏｂ、およびＰｅｒｓｏｎＢｙＲｅｌａｔｉｏｎｓｈｉｐによって捕捉される。
【００３０】
また、意味オブジェクトは、入れ子にして、再帰的な相互関係も含め、互いに関係付けることができる。つまり、意味オブジェクトは、それ自体が意味オブジェクトである構成要素を有することが可能である。例えば、「Ｊｉｍ’ｓ  ｍａｎａｇｅｒ」は、２つの構成要素、すなわち、「Ｐｅｒｓｏｎ」意味オブジェクトである「Ｊｉｍ」と、「ＰｅｒｓｏｎＢｙＲｅｌａｔｉｏｎｓｈｉｐ」意味オブジェクトである「Ｊｉｍ’ｓ  Ｍａｎａｇｅｒ」を有する意味オブジェクトに相当する。以上の関係は、意味オブジェクト間の関係を宣言する意味スキーマによって定義される。一実施形態では、スキーマは、親子階層ツリー構造として表される。例えば、「ＳｅｎｄＭａｉｌ」意味オブジェクトは、知識ベース２０４の中に格納されている可能のある特定の人物を指す「ｒｅｃｉｐｉｅｎｔ（受信者）」プロパティを有する親オブジェクトとすることが可能である。２つの典型的な子オブジェクトを、知識ベース２０４からメールメッセージの受信者を識別するのに使用される「ＰｅｒｓｏｎＢｙＮａｍｅ」オブジェクトおよび「ＰｅｒｓｏｎＢｙＲｅｌａｔｉｏｎｓｈｉｐ」オブジェクトとして表すことができる。
【００３１】
論理モジュール群２０２を使用して、実行されるアクション、および／または論理モジュール群２０２の意味オブジェクトに基づいて知識ベース２０４にアクセスすることができる。当業者には理解されるとおり、知識ベース２０４は、リレーショナルデータベースまたはオブジェクト指向データベース、Ｗｅｂサービス、ローカルの、または分散型のプログラミングモジュール群またはオブジェクト群、ＸＭＬドキュメント、あるいは注釈を伴う、または伴わないその他のデータ表現機構などの、ただし、以上には限定されないいくつかの形で現れる様々なタイプおよび様々な構造のデータを含むことが可能である。具体的な例には、連絡先、予定、オーディオファイル、ビデオファイル、テキストファイル、データベースなどが含まれる。次に、自然理解インタフェース２００が、知識ベース２０４の中のデータ、および１つまたは複数の論理モジュール２０２に従って実行されるアクションに基づいて、出力をユーザに提供することができる。
【００３２】
本発明の１つの態様は、手続き型言語と宣言型言語の両方を含め、様々な言語を使用して、論理モジュール群２０２を書くことができるようにすることである。このため、アプリケーション開発者は、異なる言語を利用するソースファイルを書いて、実行される特定のタスクを最もよく表現することができ、各言語によって提供される特徴を活用することができる。例えば、ＸＭＬソースファイルが、意味オブジェクト宣言を含むことが可能であり、Ｃ＃ソースファイルが、ＸＭＬソースファイルの中で宣言された意味オブジェクトに対して実行されるアクションを含むことが可能である。このため、クラス定義は、異なる言語で作成されたいくつかのソースファイルにわたって「分散される」（すなわち、アクセス可能である）ことが可能である。一実施形態では、ソースファイルは、共通言語ランタイム（ＣＬＲ）などの共有ランタイム環境で実装することができる。
【００３３】
図３は、手続き型言語および宣言型言語を使用して書かれた論理モジュール群をコンパイルするためのフレームワークを示している。コンパイラ２２２が、少なくとも１つの手続き型論理モジュール２２４、および少なくとも１つ宣言型論理モジュール２２６からのコードを解釈する。一実施形態では、コンパイラ２２２は、モジュールのそれぞれ２２４および２２６の中のコードを、プロセッサが読み取ることができる機械語に変換する。さらなる実施形態では、複数の手続き型モジュールおよび宣言型モジュールが使用され、コンパイラ２２２によってコンパイルされることも可能である。例えば、手続き型論理モジュール２２４が、宣言型論理モジュール２２６内で定義された意味オブジェクトに対して実行されるアクションのためのコーディングを含むことが可能である。例えば、アクションをＣ＃のような手続き型言語でコーディングすることができ、意味オブジェクトを、ＸＭＬのような宣言型言語を使用して定義することができる。
【００３４】
本発明の一実施形態では、手続き型論理モジュール２２４は、「部分クラス（ｐａｒｔｉａｌ  ｃｌａｓｓ）」指定を含む。部分クラス指定、または部分クラス参照は、特定のクラスが複数のソースファイルにわたっていることをコンパイラ２２２に通知する。その結果、宣言型論理モジュール２２６内で宣言されているプロパティ、メソッド、および／またはイベントハンドラを手続き型論理モジュール２２４内で繰り返す必要がなく、このため、コンパイラ２２２は、そのようなプロパティ、メソッド、イベントハンドラなどが手続き型論理モジュール２２４内に存在しないという理由でコンパイルを中断することがない。
【００３５】
ＸＭＬで書かれた以下のプログラミングコードは、タイプ「ｆｏｏ２」の少なくとも１つのスロット「Ｓｌｏｔ１」を含むタイプ「ｆｏｏ１」のクラス「Ｃｌａｓｓ１」を宣言している。その他のスロットおよび宣言も、「Ｃｌａｓｓ１」を使用する特定のアプリケーションに応じて、下記のコードにおいて適用することができる。
<Class1 type="foo1">
<Slot1 type="foo2" max="10"/>
...
</Class1>
【００３６】
「Ｃｌａｓｓ１」が以上に宣言されていることから、以下に与えるようなコードを含む手続き型プログラミングモジュールを書いて「Ｃｌａｓｓ１」の中のスロットにアクセスすることができる。例えば、以下のコードは、別のソースファイルが「Ｃｌａｓｓ１」に関する宣言を含むことをコンパイラ２２２に通知する部分クラス「Ｃｌａｓｓ１」のインスタンスを作成する。以下のコードは、「Ｃｌａｓｓ１」手続きによって使用されるデータを保持するためのプレースホルダ（ｐｌａｃｅ  ｈｏｌｄｅｒ）「ｎｏＤｏｕｂｔ」を含む。例として、「Ｃｌａｓｓ１」の中の「Ｓｌｏｔ１」が、以下に与える「Ｓｌｏｔ１．Ｃｏｕｎｔ（）」によってアクセスされる。
public partial class Class1: SemObj{
public SemObj noDoubt; //明らかにプレースホルダであり、スロットではない
public void Evaluate(){
int size=Slot1.Count(); //ＸＭＬで定義されたＳｌｏｔ１にアクセスする
...//ここではドメイン論理を実装することに重点を置く
noDoubt=Slot1[0];
}
}
【００３７】
図４は、手続き型論理モジュール内で意味オブジェクトが宣言されることなしに、手続き型論理モジュールが意味オブジェクトに対してアクションを実行する典型的なアプリケーションを図示している。この例では、手続き型論理モジュールは、航空券予約モジュール２５０、ホテル予約モジュール２５２、およびレンタカー予約モジュール２５４を含む。手続き型論理モジュールのそれぞれ２５０、２５２、および２５４は、例えば、別個の「宣言」ＸＭＬソースファイルの中で宣言することが可能な意味オブジェクト２５６を参照する部分クラス指定を含む。意味オブジェクト２５６は、移動手段、出発の都市、到着の都市、開始日および／または終了日を含め、モジュール２５０、２５２、および２５４によって使用される旅行データを含む。
【００３８】
意味オブジェクト２５６は、部分クラス指定を使用することにより、手続き型論理モジュール２５０、２５２、および２５４のそれぞれによってアクセスすることが可能である。このため、アプリケーション開発者は、旅行意味オブジェクト２５６の１つのインスタンスを開発するだけでよい。航空券予約モジュール２５０内、ホテル予約モジュール２５２内、およびレンタカー予約モジュール２５４内に書かれたコードを実行して、旅行意味オブジェクト２５６の中のデータ要素のいずれか、またはすべてに対してアクションを実行することができる。その結果、冗長な宣言を減らすことができ、それによって手続き型論理と宣言型論理の統合がもたらす誤りを防止することができる時間効率の良いやり方でアプリケーション群を作成することができる。
【００３９】
図２に示したシステムをさらに関連する典型的な実施形態では、ユーザは、「Ｓｃｈｅｄｕｌｅ  ａ  ｆｌｉｇｈｔ  ｆｒｏｍ  Ｓｅａｔｔｌｅ  ｔｏ  Ｍｉｎｎｅａｐｏｌｉｓ  ｎｅｘｔ  Ｔｕｅｓｄａｙ（来週火曜日にシアトルからミネアポリスへのフライトを予定する）」という自然言語入力をインタフェース２００に与えることができる。この事例では、ワシントン州レッドモンド所在のマイクロソフトコーポレーションによって提供されるＳＡＰＩ（Speech API）５．２のような音声アプリケーションプログラムインタフェースを使用して、自然言語入力内の意味オブジェクトを識別することができる。入力は、意味タグに関連付けて（シリアル化して）、図４の旅行意味オブジェクト２５６に入れる意味マークアップ言語などの言語に対応するフォーマットにすることができる。例えば、音声アプリケーションプログラムインタフェース（ＳＡＰＩ）は、以下のような出力を提供することができる。
<sml text="Schedule a flight from Seattle to Minneapolis next Tuesday" confidence="90">
<TravelSemanticObject text="flight">
<TravelMeans type="airline">
<DepartureCity type="airport code"> SEA
</DepartureCity>
<ArrivalCity type="airport code"> MSP
</ArrivalCity>
<StartDate type="date"> April 27
</StartDate>
</TravelMeans>
</TravelSemanticObject>
</sml>
【００４０】
旅行意味オブジェクト２５６のスロットは、自然言語入力からの情報で少なくとも部分的に占有される。次に、所望される場合、旅行意味オブジェクト２５６に関連する規則群および／または意味スキーマを利用して、上記の場合の旅行の終了日など、残りの未知の情報をユーザに求めることができる。旅行意味オブジェクト２５６のスロットの中の情報を使用して、航空券予約モジュール２５０のインスタンスを作成して知識ベース２０４にアクセスし、フライトの価格設定、予約状況（ａｖａｉｌａｂｉｌｉｔｙ）などを提供することができる。さらに、ホテル予約モジュール２５２およびレンタカー予約モジュール２５４のインスタンスを作成して、それぞれの手続き型コーディングモジュール内で旅行意味オブジェクト２５６のさらなる宣言なしに、旅行意味オブジェクト２５６に基づいて可能なホテル予約およびレンタカー予約を提供することができる。したがって、旅行意味オブジェクト２５６は、単一の宣言で複数の手続き型プログラミングモジュールによってアクセスされることが可能である。
【００４１】
以上に提供した典型的な実施形態は、極めて単純化した性質のものであり、本発明の動作を例示するために提供している。以上の実施形態は、はるかに複雑なオブジェクト階層に拡張することができる本発明の動作を例示している。自然言語表現がトリビアル（ｔｒｉｖｉａｌ）ではない場合、意味オブジェクトのツリーを使用して、適切な形態で論理モジュール群２０２に伝えることができる形で発話の意味を十分に捕捉することができる。
【００４２】
したがって、本発明は、例えば、ＸＭＬのような宣言型コーディング言語を使用して、またはＣ＃またはＣ＋＋のような手続き型コーディング言語を使用して、意味オブジェクトを多数のプログラミング構文で宣言することができるようにする強力な操作ツール（ｏｐｅｒａｔｉｎｇ  ｔｏｏｌ）を提供する。このため、このフレームワークは、複数の手続き型プログラミングモジュールが、意味オブジェクトの複数の宣言を必要とせずに宣言型モジュールを利用するのによく適し、その逆の場合にもよく適している。オブジェクトの属性、プロパティ、メソッド、およびイベントハンドラが手続き型モジュールによって利用されて、単一の場所における手続き型モジュールのより簡単な作成が可能になる。
【００４３】
本発明について特定の実施形態に関連して説明してきたが、本発明の趣旨および範囲を逸脱することなく形態および詳細の変更を行うことができることが、当業者には理解されよう。
【図面の簡単な説明】
【００４４】
【図１】コンピューティングシステム環境を示すブロック図である。
【図２】自然理解インタフェースを使用する環境を示すブロック図である。
【図３】コンパイラと手続き型論理モジュールと宣言型論理モジュールの間の対話を示す簡略ブロック図である。
【図４】手続き型論理モジュールおよび宣言型論理モジュールを使用する典型的な実施形態を示すブロック図である。
【符号の説明】
【００４５】
２００  自然理解インタフェース
２０２  論理モジュール群
２０４  知識ベース
【図１】
2005209176.tif 000003
【図２】
2005209176.tif 000004
【図３】
2005209176.tif 000005
【図４】
2005209176.tif 000006