(57)【要約】  一実施形態において、自然言語を使用可能なアプリケーションに対する自然言語入力を解釈するためのシステムは、文法、ソースファイル、および音声レコグナイザを有する。文法は、データ型のセットと、そのデータ型のセットに関するルールを定義するセマンティックなコードとを有する。ソースファイルは、データ型のセットのうちの選択されたデータ型をインスタンス化することにより、文法にアクセスするように構成されたコンピュータ読み取り可能コードを含む。音声レコグナイザは、自然言語入力を受け取り、その自然言語入力を、選択されたデータ型にマッピングするように構成されている。
2009500699.tif 000002
【特許請求の範囲】
【請求項１】
自然言語を使用可能なアプリケーションに対する自然言語入力を解釈するためのシステムであって、
データ型のセットと、該データ型のセットに関するルールを定義するセマンティックなコードとを含む文法と、
前記データ型のセットのうちの選択されたデータ型をインスタンス化することにより、前記文法にアクセスするように構成されたコンピュータ読み取り可能コードからなるソースファイルと、
自然言語入力を受け取り、該自然言語入力を前記選択されたデータ型にマッピングするように構成された音声レコグナイザと
を備えたことを特徴とするシステム。
【請求項２】
前記文法を受け取り、前記データ型のセットを前記セマンティックなコードから分離するように構成され、かつ前記文法から出力を生成するように構成された文法コンパイラ
をさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記出力はステートマシンを含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記選択されたデータ型は、実行時にパラメータとともにインスタンス化されることを特徴とする請求項１に記載のシステム。
【請求項５】
ソースコードと前記ソースファイルとを受け取り、該ソースコードと該ソースファイルとを中間言語コードにコンパイルするように構成されたコードコンパイラ
をさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項６】
前記中間言語コードは、コンピュータ読み取り可能コード、および関連デバッグ情報を含むことを特徴とする請求項５に記載のシステム。
【請求項７】
自然言語認識用のシステムであって、
自然言語入力を受け取るように構成された入力デバイスと、
自然言語入力の要素を表す型のセットを定義する強く型付けされた文法と、
該強く型付けされた文法を使用して、前記自然言語入力をテキストに変換し、該テキストに基づいて認識出力を生成するように構成された認識コンポーネントと、
前記認識出力に基づいて前記自然言語入力のセマンティックスを識別するように構成された解釈コンポーネントと
を備えたことを特徴とするシステム。
【請求項８】
前記文法内の型の意味を定義するセマンティックなコード
をさらに備えたことを特徴とする請求項７に記載のシステム。
【請求項９】
前記解釈コンポーネントは、前記セマンティックなコードを利用して、前記文法に基づいて前記自然言語入力のセマンティックスを識別することを特徴とする請求項８に記載のシステム。
【請求項１０】
前記認識コンポーネントは、前記自然言語入力を、前記文法において指定されたテキストに変換するように構成されることを特徴とする請求項７に記載のシステム。
【請求項１１】
前記解釈コンポーネントは、１つまたは複数の解釈コンポーネントを含み、各前記解釈コンポーネントは、前記自然言語入力の可能な解釈を生成するように構成され、前記システムは、
前記１つまたは複数の解釈コンポーネントが生成する、前記自然言語入力の１つまたは複数の可能な解釈のそれぞれを統合するように構成された統合コンポーネント
をさらに備えたことを特徴とする請求項７に記載のシステム。
【請求項１２】
前記自然言語入力は音声を含むことを特徴とする請求項７に記載のシステム。
【請求項１３】
前記自然言語入力は手書きを含むことを特徴とする請求項７に記載のシステム。
【請求項１４】
１つまたは複数の専用ソースコードファイル内、および前記強く型付けされた文法を有する文法ファイル内で定義されたアプリケーションコード
をさらに備えたことを特徴とする請求項７に記載のシステム。
【請求項１５】
自然言語アプリケーションの文法にアクセスする方法であって、
１つまたは複数の文法を提供するステップであって、各前記文法は自然言語を表す型のセットを含む、提供するステップと、
１つまたは複数のソースコードファイル内で、自然言語入力に対して操作するプロセスを定義するステップと、
実行時において、前記１つまたは複数の文法から、前記型のセットのうちの選択された型をインスタンス化するステップであって、前記選択された型は自然言語入力に対応する、インスタンス化するステップと
を備えることを特徴とする方法。
【請求項１６】
前記インスタンス化するステップは、
前記選択された型のうちの少なくとも１つのインスタンス化された型にパラメータを配置するステップ
をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記インスタンス化するステップは、
文法コンパイラを用いて、前記１つまたは複数の文法内の公開文法ルールごとに１つのクラスを作成するステップ
をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
各前記文法は、前記型のセットに関連付けられたセマンティックなコードをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記選択された型は、型の定義に基づいて、前記文法からプロパティを継承することを特徴とする請求項１５に記載の方法。
【請求項２０】
文法コンパイラを用いて、前記文法をステートマシンにコンパイルするステップと、
前記ステートマシン、および前記選択された型に関連付けられたセマンティックなコードを、音声レコグナイザに提供するステップと
をさらに備えること特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
以下の説明は、単に一般的な背景情報を提供するだけに過ぎず、特許請求する主題事項の範囲の決定に際して、補助として使用することを目的とするものではない。
【０００２】
自然言語ソフトウエアアプリケーションとは、口頭の発言、または人が話す方法と並行するテキスト入力を受け取るように構成されたアプリケーションを指す。しかし、音声認識を使用する従来のアプリケーションも、アプリケーションが聴取すべき単語を定義すること、それらの単語を結合することができる方法を定義すること、およびそれらの単語の任意の特定の組み合わせにおけるセマンティックな（semantic）意味を定義することにより、同様のことを行う。
【０００３】
一般的に、用語文法とは、所与の任意の言語の構造を定義するルール、および基礎をなす原理を指し、文法は、自然言語アプリケーションがそうした機能を果たすのに用いる機構として役立つことができる。実用において、自然言語プログラマは、文法をコード化し、次いで、音声レコグナイザが、コード化した文法を使用する。ユーザが自然言語プログラムにアクセスして、文法によって定義された単語およびルールのセットの範囲内にある何かを言うとき、音声レコグナイザは、これらの単語を文法内で定義された文字列または他の型にマッピングする。次いで、音声レコグナイザは、言われたことを、文法によって定義された任意の対応するセマンティックな情報とともに、アプリケーションに対して通知する。多くの場合、これは、さらなる処理のために、マッピングされたオブジェクトをアプリケーションに提供することによってなされる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このような従来のアプリケーションは、ソフトウエア開発者に対して、膨大なテキスト、および文字列テキスト操作のために、コード化することを要求する。効率的にコード化するため、開発者は、一般に文法を極めて良く理解するとともに、開発者が使用する特定の文法の内部構造に関しても良く理解する必要がある。残念ながら、このような文法的洞察力は、プログラマの知識ベースの一部ではないことが多い。
【０００５】
開発全体のサイクルを早めるため、開発者は、既存の文法を変更すること、および／または、既存の文法に対して追加を行うことにより、既存の文法における何らかの変形を使用しようとすることが多い。しかし、既存の文法を変更するには、開発者がソフトウエア強化の実装に費やすことができる時間を、構造の学習のために割くことが必要となる。在来の技術により、開発者は、他の文法から既存の文法を引用することができるが、その引用は、引用される文法のセマンティックス（semantics）を返す方法をもたらすので、呼び出し側プログラムに対して透過的ではない。
【課題を解決するための手段】
【０００６】
本要約は、下記の発明の詳細な説明において記述するいくつかの概念を簡略化した形式で紹介するために提供するものである。本要約は、特許請求する主題事項の重要な特徴または本質的な特徴を特定することを目的とするものでも、特許請求する主題事項の範囲の決定に際して、補助として使用することを目的とするものでもない。
【０００７】
一実施形態において、自然言語を使用可能なアプリケーションに対する自然言語入力を解釈するためのシステムは、文法、ソースファイル、および音声レコグナイザを有する。文法は、データ型のセットと、そのデータ型のセットに関するルールを定義するセマンティックなコードとを有する。ソースファイルは、データ型のセットのうちの選択されたデータ型をインスタンス化することにより、文法にアクセスするように構成されたコンピュータ読み取り可能コードを含む。音声レコグナイザは、自然言語入力を受け取り、その自然言語入力を、選択されたデータ型にマッピングするように構成されている。
【０００８】
別の実施形態において、自然言語入力認識用のシステムは、入力デバイス、強く型付けされた文法（strongly typed grammar）、認識コンポーネント、および解釈コンポーネントを有する。入力デバイスは、自然言語入力を受け取るように構成されている。強く型付けされた文法は、自然言語入力の要素を表す、型のセットを定義する。認識コンポーネントは、強く型付けされた文法を用いて自然言語入力をテキストに変換し、そのテキストに基づいて認識出力を生成するように構成されている。解釈コンポーネントは、認識出力に基づいて自然言語入力のセマンティックスを識別するように構成されている。
【０００９】
別の実施形態においては、自然言語アプリケーションの文法にアクセスする方法が提供される。１つまたは複数の文法が提供される。各文法は、自然言語を表す、型のセットを有する。自然言語入力に対して操作するプロセスが、１つまたは複数のソースコードファイル内で定義される。実行時において、１つまたは複数の文法から、型のセットのうちの選択された型がインスタンス化される。選択された型は自然言語入力に対応する。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の実施形態を実装することができる好適なコンピューティングシステム環境１００の一例を示している。コンピューティングシステム環境１００は、好適なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲についていかなる限定を示唆するようにも意図されてはいない。同様に、コンピューティング環境１００は、例示的な動作環境１００に示された任意の１つのコンポーネントまたはコンポーネントの組合せに関して、いかなる依存関係または要件を有するようにも解釈するべきではない。
【００１１】
本発明の実施形態は、他の多数の汎用もしくは専用コンピューティングシステム環境、または構成とともに動作可能である。そのような実施形態とともに使用するのに適した周知のコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、電話システム、前述した任意のシステムやデバイスを含む分散コンピューティング環境などが含まれるが、これらに限定されるものではない。
【００１２】
本発明の実施形態は、コンピュータ実行可能命令の一般的なコンテキストにおいて説明することができる。このようなコンピュータ実行可能命令には、コンピュータにより実行されるプログラムモジュールなどが含まれる。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体の両方に配置することができる。
【００１３】
図１を参照すると、本発明の実施形態を実装するための例示的なシステムは、コンピュータ１１０の形態の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、処理ユニット１２０と、システムメモリ１３０と、システムメモリ１３０を含む様々なシステムコンポーネントを処理ユニット１２０に接続するシステムバス１２１とを含めることができるが、これらに限定されるものではない。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数のタイプのいずれのバス構造であってもよい。そのようなアーキテクチャには、ＩＳＡバス、ＭＣＡバス、ＥＩＳＡバス、ＶＥＳＡローカルバス、および（メザニンバスとしても知られる）ＰＣＩバスが含まれるが、これらに限定されるものではない。
【００１４】
通常、コンピュータ１１０は、様々なコンピュータ読み取り可能な媒体を備える。コンピュータ読み取り可能な媒体は、コンピュータ１１０によってアクセスできる任意の入手可能な媒体とすることができ、コンピュータ読み取り可能な媒体には、揮発性媒体および不揮発性媒体、ならびに取り外し可能な媒体および取り外し不可能な媒体のいずれもが含まれる。例えば、コンピュータ読み取り可能な媒体には、コンピュータ記憶媒体および通信媒体を含めることができるが、これらに限定されるものではない。用語「コンピュータ記憶媒体」には、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術で実現された揮発性媒体および不揮発性媒体、ならびに取り外し可能な媒体および取り外し不可能な媒体のいずれもが含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ、もしくはその他の光ディスク記憶デバイス、磁気カセット、磁気テープ、磁気ディスク記憶デバイス、もしくはその他の磁気記憶デバイス、または所望の情報を記憶するために使用でき、かつコンピュータ１１０によってアクセスすることができる任意のその他の媒体が含まれるが、これらに限定されるものではない。通常、通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波やその他の搬送機構などの変調されたデータ信号として具現化したものであり、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、信号内の情報を符号化するような方法で、その信号の１つまたは複数の特徴が設定または変更された信号を意味する。通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、およびその他の無線媒体などの無線媒体とが含まれるが、これらに限定されるものではない。このような媒体の任意の組合せもコンピュータ読み取り可能な媒体の範囲に含まれるべきである。
【００１５】
システムメモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２などの揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内の要素間で情報を転送することに役立つ基本的なルーチンを含むＢＩＯＳ１３３は一般に、ＲＯＭ１３１に記憶される。通常、ＲＡＭ１３２には、処理ユニット１２０によって直ちにアクセスでき、かつ／または、処理ユニット１２０によって現在操作されているデータおよび／またはプログラムモジュールが含まれる。例えば、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が示されているが、これらに限定されるものではない。
【００１６】
コンピュータ１１０は、その他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体を備えてもよい。例として、図１には、取り外し不可能な不揮発性磁気媒体に対して読み書きを行うハードディスクドライブ１４１と、取り外し可能な不揮発性磁気ディスク１５２に対して読み書きを行う磁気ディスクドライブ１５１と、ＣＤ−ＲＯＭまたはその他の光媒体などの取り外し可能な不揮発性光ディスク１５６に対して読み書きを行う光ディスクドライブ１５５とが示されている。例示的な動作環境において使用することができるその他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は一般に、インターフェイス１４０などの取り外し不可能なメモリインターフェイスを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェイス１５０などの取り外し可能なメモリインターフェイスを介してシステムバス１２１に接続される。
【００１７】
図１に示して上述したドライブ群およびそれらドライブに関連するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、およびその他のデータの記憶領域をコンピュータ１１０に提供する。例えば、図１において、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであってもよいし、異なってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７は、少なくともそれらが別のコピーであることを示すために、ここでは異なる番号が付されている。
【００１８】
ユーザは、キーボード１６２、マイクロフォン１６３、および、一般的にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを介して、コンピュータ１１０に命令および情報を入力することができる。その他の入力デバイス（図示せず）としては、ジョイスティック、ゲームパッド、衛星通信用パラボラアンテナ、スキャナなどを挙げることができる。これらのおよびその他の入力デバイスは、システムバス１２１に接続されたユーザ入力インターフェイス１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、またはＵＳＢなどのその他のインターフェイスおよびバス構造を介して接続されてもよい。モニタ１９１またはその他のタイプのディスプレイデバイスも、ビデオインターフェイス１９０などのインターフェイスを介してシステムバス１２１に接続される。モニタ１９１に加えて、コンピュータは、出力周辺インターフェイス１９５を介して接続することができる、スピーカ１９７およびプリンタ１９６などのその他の出力周辺デバイスを備えることもできる。
【００１９】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードであってもよく、リモートコンピュータ１８０は通常、コンピュータ１１０に関して上述した要素の多くまたは全てを含む。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、その他のネットワークが含まれてもよい。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００２０】
ＬＡＮネットワーキング環境において使用される場合、コンピュータ１１０は、ネットワークインターフェイスまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用される場合、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２、またはその他の手段を備える。モデム１７２は、内蔵型でも外付け型でもよく、ユーザ入力インターフェイス１６０またはその他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境において、コンピュータ１１０に関連して示したプログラムモジュール、またはそのプログラムモジュールの一部は、リモートメモリ記憶デバイスに記憶することもできる。例えば、図１には、リモートコンピュータ１８０に存在するものとしてリモートアプリケーションプログラム１８５が示されているが、これに限定されるものではない。図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するその他の手段も使用できることが理解されよう。
【００２１】
一実施形態において、音声認識文法および結果は、（オブジェクト指向の専門用語における「クラス」などの）データ型として表現される。従来の自然言語プログラミングアプリケーションは、テキスト文字列またはバイナリデータ構造として文法を表現するが、強く型付けされた文法を代わりに使用して自然言語機能を実行することができる。一般的に、「強く型付けされた」という表現は、言語または文法がデータ型を扱う方法を指す。本明細書で使用される強く型付けされた文法または言語は、コンパイル時に全ての型をチェックできるものである。
【００２２】
一般的に、アプリケーション開発者は、一連のアプリケーションプログラムインターフェイス（ＡＰＩ）を呼び出して音声レコグナイザに単語およびルールを追加することによるか、または（例えば、拡張マークアップ言語すなわちＸＭＬファイルフォーマットなどの）テキストファイルを作成することによるかのいずれかによって、文法を定義する。このようなフォーマットは、ワールドワイドウェブコンソーシアム（Ｗ３Ｃ）の音声認識文法仕様（ＳＲＧＳ）である。テキストファイルは一般に文法を含み、これは、基礎をなす音声レコグナイザを用いてステートマシン（state machine）にコンパイルされる。
【００２３】
図２は、コンパイルプロセスの様々な段階の間における、強く型付けされた文法の一実施形態の要素２００の簡略化したブロック図である。要素２００は、文法要素およびセマンティックなコード２０２と、ソースコードファイル２０４とを含む。文法要素およびセマンティックなコード２０２は、データ型として音声認識文法と結果とを表現するための、型（または、「クラス」）のセットを定義する。ソースコードファイル２０４は、特定のアプリケーションに対する自然言語入力を処理するためのプロシージャのセットを定義する。文法要素およびセマンティックなコード２０２には、例えば、ＳＲＧＳ文法を含めることもできる。ソースコードファイル２０４には、例えば、１つまたは複数のＣ＃ソースコードファイルを含めることもできる。
【００２４】
セマンティックな情報は、特定の実装に応じて、ソースコードファイル２０４内か、または文法要素およびセマンティックなコード２０２内かのいずれかにおいてコード化することができる。コンパイルの間、セマンティックな情報が文法要素およびセマンティックなコード２０２においてコード化される場合、文法コンパイラが、ファイルを文法要素２０６とセマンティックなコード２０８とに分離する。次いで、ソースコードファイル２０４がコンパイラにロードされセマンティックなコード２０８と結合されて、中間言語コード２１４が作成される。文法要素はステートマシン２１２にコンパイルされる。中間言語コード２１４およびステートマシン２１２は、例えば、音声レコグナイザが使用できるバイナリファイルとすることもできる。
【００２５】
文法要素２０６（聴取する単語の順序）とセマンティックなコード２０８（単語が意味することに関するルール）とを分離することにより、ステートマシン２１２が全ての可能な遷移および置換を含み、かつ中間言語コード２１４がセマンティックな処理情報を含むように、バイナリファイルが単純化される。
【００２６】
一般的に、文法コンパイラは、ＣＦＧ（Compiled Form Grammar）ファイルまたはクラスライブラリを生成することができる。一般的に、ＣＦＧファイルは、ステートマシン２１２、中間言語コード２１４、および任意のデバッグ情報を含む。一般的に、ＣＦＧファイルは、例えば、セマンティックな値の辞書から、結果を割り当てる（cast）ことを必要とする。
【００２７】
クラスライブラリは、中間言語コード２１４とステートマシン２１２とを含む強く型付けされた文法を表す。デバッグ情報は、別個のファイル（図示せず）に記憶されてもよい。クラスライブラリは、様々な文化に関する全ての文法の言語バージョンを同一のファイルに記憶できるようにする。これにより、音声アプリケーション開発者は、自分が使用する話し言葉の文法知識を有する必要がなくなる。例えば、音声アプリケーション開発者は、スペイン語の知識を有することなく、英語およびスペイン語双方に関してコード化することができる。さらに、音声アプリケーションは、文法内で定義された型を共有することができるので、結果は、文法オブジェクトにおけるフィールドおよびプロパティとして返すことができる。
【００２８】
この場合、強く型付けされた文法は、アンチウィルスフィルタや電子メールフィルタなどにとって周知のファイルタイプであるダイナミックリンクライブラリ（ｄｌｌ）内にパッケージされる。強く型付けされた文法がＤＬＬ内にパッケージされると、．ＮＥＴのセマンティックなコードなどのアプリケーションコードは、音声アプリケーションがアクセスできる全てのリソースにアクセスできる。
【００２９】
この場合、開発者は、一般に文法に関する知識がほとんどなく、自分が使用する特定の文法の内部構造に関する知識を全く有していなくても、自然言語アプリケーションをプログラミングすることができる。さらに、開発者は、入力文字列を操作して出力文字列を構文解析することによってではなく、ネイティブのデータ型として、文法と対話する。
【００３０】
一実施形態においては、タグを用いてプロパティを作成する。例えば、年のある月に関連付けられたプロパティは、以下のようにコード化することができる：
<item>February<tag>“month”=2</tag></item>  
このコードの断片は、２という整数値を項目Ｆｅｂｒｕａｒｙのタグに関連付ける。したがって、例えば、ユーザがプルダウンリストから項目「Ｆｅｂｒｕａｒｙ」を選択すると、プロパティ「２」がタグ「ｍｏｎｔｈ」に割り当てられる。
【００３１】
プロパティを結合して強く型付けされた複合オブジェクトを作成することができる。例えば、中間結果から、ＤａｔｅＴｉｍｅオブジェクトを返すことができる。例えば、
return(new DateTime ( result[“year”], result[“month”], result[“day”])である。
オブジェクトおよびプロパティは、親ルールに基づいて再結合して、最終結果を構築することができる。一般的に、強く型付けされた複合オブジェクトは、セマンティックな処理の間に構築されて、音声アプリケーションに返される。
【００３２】
上述した説明は、主として自然言語アプリケーションの作者が実行するセマンティックな結果の処理（生成）に関するものである。ソースコードは、文法コンパイルプロセスの一部としてコンパイルされ、チェックされる。コード化エラーのほとんどをこの段階で発見し、エラーの正確な位置を識別することができる。さらに、デバッグ情報を記憶し、ブレークポイントをソースファイル内に直接設定し、任意の可変コンテンツを閲覧し、ＶＳ．ｎｅｔ、Ｒａｓｃａｌなどを含む任意のデバッガを使用することもできる。
【００３３】
図３は、自然言語アプリケーション設計時における自然言語システム３００の一実施形態を示す簡略化したブロック図である。システム３００は、クライアント入力デバイス３０４に接続される、自然言語認識コンポーネント３０２および解釈コンポーネント３０６を含む。クライアント入力デバイス３０４は、マイクロフォン、ペンベースの入力デバイス、キーボードおよびマウス、または任意の他の入力機構とすることができる。一般的に、自然言語認識コンポーネント３０２は、ユーザから自然言語入力を取り込み、その入力を、後の処理に使用することができる形式に翻訳する。自然言語認識コンポーネント３０２は、（ＸＭＬ、ＳＲＧＳなどの）文法マークアップ言語を用いて記述される、強く型付けされた文法３０８を使用する。自然言語認識コンポーネント３０２には、音声認識コンポーネント３１２Ａ、手書き認識コンポーネント３１２Ｂ、キーボードおよびマウスコンポーネント３１２Ｃ、（１つまたは複数の）その他の入力３１２Ｄ、およびシステムにより生成された入力３１２Ｅを含めることができる。自然言語音声レコグナイザ３０２の各認識コンポーネント３１２Ａ〜３１２Ｄは、強く型付けされた文法３０８を使用することにより自然言語入力をテキストに変換して、強く型付けされた文法内で定義された型に基づいてテキストをタグ付けする（またはカテゴリ化する）。
【００３４】
タグ付けまたはカテゴリ化された単語は、次いで、解釈コンポーネント３０６に渡される。さらに具体的には、各認識コンポーネント３１２Ａ〜３１２Ｄは、そのカテゴリ化された単語を、それぞれの解釈コンポーネント３１４Ａ〜３１４Ｄに渡す。各解釈コンポーネント３１４Ａ〜３１４Ｄは、セマンティックなコード３１０を利用して、それぞれの認識コンポーネント３０２（３１２Ａ〜３１２Ｄ）からのタグ付けされたユーザ入力に基づいて、ユーザが意図する「意味」または「セマンティックス」を識別する。この時点で、クライアントデバイス３０４からの入力データが、セマンティックなコード３１０内で定義されたルールに基づいて、強く型付けされた文法３０８内で定義された型にマッピングされる。解釈コンポーネント３０６は、セマンティックな結果のセット３１６（テキストから型へのマッピング）を統合コンポーネント３２０に提供する。統合コンポーネント３２０は、クライアントデバイス３０４が使用可能な型をセマンティックな結果のセット３１６から選択するために、スキーマや他のシステムにより生成された入力３１２に対してセマンティックな結果のセットを処理するように構成されたプロセッサ３２２を含む。したがって、クライアントデバイス３０４におけるクライアントアプリケーション内で定義された自然言語特徴にマッピングしない型マッピングは破棄されることになり、適切なマッピングを統合出力に結合することができる。次いで、統合出力は、クライアントアプリケーションが使用するために、クライアントデバイス３０４に返される。一実施形態において、統合出力は、関連フィールドおよびプロパティを有する１つまたは複数の文法オブジェクトを含む。関連フィールドおよびプロパティは自然言語入力を表すものである。
【００３５】
強く型付けされた文法を用いることにより、コンパイル時におけるより多くのエラーの発見、継承およびカプセル化による再利用、実装詳細の抽象化などの、型に基づくシステムの特徴が、自然言語プログラミングの開発者に利用可能である。これにより、開発者は、ネイティブのデータ型として文法と対話することができる。文法を使用するために、開発者は、文法型を宣言してインスタンス化し、型がエクスポーズするあらゆるプロパティも設定して、インスタンス化した型を音声レコグナイザに渡すことしか必要としない。開発者が文法ファイルを管理する必要はない。その代わりに、開発者が調整可能なあらゆる設定は、型の外部インターフェイスの一部として見ることができる。さらに、強く型付けされた文法により、開発者は、コンストラクタのオーバーロード、エクスポーズされたプロパティなどの標準的なプログラミング技術を通じて、実行時に文法をパラメータ化することができる。パラメータのセットを用いた文法のインスタンス化は、単一の簡単な文を用いて達成できる。すなわち、文法は、実行時パラメータのセットに基づいて、実行時に、すぐにパラメータ化して再構築することができる。また、強く型付けされた文法の使用により、開発者は、様々な言語の構造を定義するルール、および基礎をなす原理を習得する必要なく、多言語文法（multi-lingual grammars）を構築することができる。したがって、音声アプリケーション開発者は、１つの言語（例えば英語）に関してコード化することができ、透過的に、同一コードは、（例えば、スペイン語などの）別の言語の同一文法の変形に役立つ。
【００３６】
レコグナイザ３０２が、強く型付けされた文法３０８内で定義されたタグまたはカテゴリを使用して、認識入力にマーク付け、またはラベル付けすることができることが理解されよう。次いで、解釈コンポーネント３０６が、これらのマーク付けまたはラベル付けされた入力を、開発者が定義したセマンティックなコード３１０に対して処理して、セマンティックな結果のセット３１６を作成することができる。セマンティックな結果のセット３１６は、クライアントデバイス３０４のオペレータが意図する入力に対応することが好ましい。クライアントデバイス３０４が統合出力を使用して、ユーザが意図する動作を実行することができる。
【００３７】
図４は、強く型付けされた文法のプログラミング処理の一実施形態を示す簡略化したフロー図である。開発者は、文法オブジェクトを定義するタグ要素のプロパティを作成する（ステップ４００）。任意的に、プロパティを結合して、強く型付けされた複合オブジェクトを作成することができる（ステップ４０２）。任意的に、親ルールにしたがって、強く型付けされた複合オブジェクトを再結合して、最終結果を構築することができる（ステップ４０４）。文法コンパイラを用いて、ソースコードをコンパイルする（ステップ４０６）。文法コンパイル処理の一部として文法を検証する（ステップ４０８）。最後に、中間言語コード出力とともにデバッグ情報を記憶する（ステップ４１０）。
【００３８】
図５は、強く型付けされた文法を使用して、自然言語プログラムのプログラミングのためのコンパイル処理の一実施形態を示す簡略化したフロー図である。１つまたは複数の専用ソースコードファイルおよび／または文法ファイルにおいて、文法をセマンティックなコードとともに定義する（ステップ５００）。コンパイラが、文法をセマンティックなコードから分離する（ステップ５０２）。文法および関連するセマンティックなコードをコンパイルする（ステップ５０４）。文法コンパイラが、公開文法ルールごとに１つのクラスを自動的に作成する（ステップ５０６）。文法コンパイラが、文法に基づいてステートマシンを生成する（ステップ５０８）。最後に、文法コンパイラが、１つまたは複数の専用ソースコードファイル内および／または文法ファイル内のコードに基づいて、コンパイルした中間言語コードを生成する（ステップ５１０）。
【００３９】
図６は、自然言語ステートマシンおよび中間言語コードをコンパイルするように構成されたコンパイラシステム６００の一実施形態を示す簡略化したブロック図である。システム６００は、文法コンパイラ６０４およびコードコンパイラ６０６からなるコンパイラ６０２を含む。文法コンパイラ６０４は、文法およびセマンティックなコードの双方を含めることができるソース文法ファイル６０８を受け取るように構成されている。文法コンパイラ６０４は、セマンティックなコードを文法コードから分離し、文法コードをステートマシン６１２にコンパイルするように構成されている。文法コンパイラ６０４は、分離したセマンティックなコードをコードコンパイラ６０６に提供する。
【００４０】
コードコンパイラ６０６は、１つまたは複数のソースコードファイル６１０と、文法コンパイラ６０４からの分離されたセマンティックなコードを受け取るように構成されている。コードコンパイラ６０６は、１つまたは複数のソースコードファイル６１０を、分離されたセマンティックなコードとともに、中間言語コード６１４にコンパイルするように構成されている。中間言語コード６１４には、デバッグ情報６１６を含めることができる。場合によっては、デバッグ情報６１６を別個のファイルに記憶することもできる。
【００４１】
強く型付けされた文法により、開発者は、別の文法から既存の文法を引用することができる。開発者が型として文法をインスタンス化できることにより、開発者は、サブクラスおよび集約などの標準的なオブジェクト指向プログラミング技術または方法を用いて、既存の文法を容易に再利用または拡張することができる。
【００４２】
従来の技術は、日付を認識する簡単な方法、またはテキストファイルに基づいて日付範囲を制限する簡単な方法を提供しないが、強く型付けされた文法は、コンストラクタのオーバーロードやエクスポーズされたプロパティなどの標準的なプログラミング技術を通じて、実行時にパラメータを受け取ることができるように実装することができる。次いで、文法は、単一の単純なステートメント内のパラメータのセットとともにインスタンス化される。これにより、開発者は、例えば、日付範囲を制限することができる。
【００４３】
図７は、文法をインスタンス化するシステム７００の一実施形態を示す簡略化したブロック図である。システム７００は、文法７０２およびアプリケーションコード７０８を含む。文法７０２は、強く型付けされた型のセット７０４から構成されることが好ましい。文法７０２には、セマンティックなコード７０６を含めることができ、セマンティックなコード７０６には、１つまたは複数のコンストラクタ７１４を含めることができる。アプリケーションコード７０８は、パラメータ７１８を用いてコンストラクタ７１４を呼び出す。コンストラクタ７１４は、文法コンパイラ７１６を用い、パラメータのセット７１８に基づいて、そのステートマシンを再構築する。
【００４４】
文法コンパイラ７１６は、アプリケーションコード７０８から呼び出されたパラメータ７１８に基づいて、文法７０２をコンパイルするように構成されている。型のセット７０４からの特定の型のインスタンスは、コンストラクタ７１４またはアプリケーションコード７０８内の他のコードに基づいて、パラメータ７１８とともにインスタンス化することができる。パラメータ７１８には、特定のインスタンス化に固有の要件を課すことができる。さらに、結果として生じたインスタンス化された文法７２０（この文法は任意的にパラメータとともにインスタンス化される）は、その型がエクスポーズするプロパティを含む。次いで、このインスタンス化された文法７２０を音声レコグナイザ７２２に渡すことができる。音声レコグナイザ７２２は、自然言語入力７２４を受け取り、その自然言語入力７２４を、インスタント化された文法７２０内のインスタンス化された型にマッピングして、マッピングされたオブジェクト７２６を生成するように構成されている。
【００４５】
開発者は、文法７０２を管理する必要はない。その代わり、開発者が調整可能なあらゆる設定は、例えば、コンストラクタ７１４を介してアクセス可能な型の外部インターフェイスの一部として見ることができる。このような強く型付けされた文法により、開発者は、コンストラクタのオーバーロード、エクスポーズされたプロパティなどの標準的なプログラミング技術を通じて、実行時にアプリケーションをパラメータ化することができる。さらに、インスタンス化された型は、型のセット内の基本の型からプロパティを継承することができる。このように、本発明の実施形態は、自然言語アプリケーションをプログラミングするための、周知のオブジェクト指向の型のセット７０４またはクラスを提供するので、開発者は、文法の内部構造ではなく、プログラムの特徴に焦点を絞ることができる。
【００４６】
特定の実施形態を参照しながら、本発明について説明したが、当業者であれば、本発明の趣旨および範囲から逸脱することなく、形式および細部の変更が可能であることが理解されよう。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施形態を実装することができるコンピューティングシステム環境を示す概略図である。
【図２】本発明の実施形態にしたがう、自然言語文法のためのコンパイルプロセスを示す簡略化したブロック図である。
【図３】本発明の実施形態にしたがう、自然言語システムの入力コンポーネントを示す簡略化したブロック図である。
【図４】本発明の実施形態にしたがう、強く型付けされた文法のプログラミング処理を示す簡略化したフロー図である。
【図５】本発明の実施形態にしたがう、強く型付けされた文法を使用して、自然言語プログラムのプログラミングのためのコンパイル処理を示す簡略化したフロー図である。
【図６】本発明の実施形態にしたがう、自然言語ステートマシンおよび中間言語コードをコンパイルするように構成されたコンパイラシステムを示す簡略化したブロック図である。
【図７】本発明の実施形態にしたがう、文法のインスタンス化のための要素を示す簡略化したブロック図である。
【図１】
2009500699.tif 000003
【図２】
2009500699.tif 000004
【図３】
2009500699.tif 000005
【図４】
2009500699.tif 000006
【図５】
2009500699.tif 000007
【図６】
2009500699.tif 000008
【図７】
2009500699.tif 000009
【国際調査報告】
2009500699.tif 000010