(57)【要約】【解決手段】  自然言語パーサー（１０）は、ユーザーインタフェース（５０）で入力されたユーザーコマンド（１８）から、外部システム（６０）用の構文解析されたコマンド又は出力（１７）を作る。パーサー（１０）は、オブジェクト指向階層方式に並べられた記号（８０）と、文法情報及び状態表（２５、２５）を使用して、言語入力が外部システム（６０）の要件に合致するように言語入力を制約する。パーサー（１０）は、ユーザーインタフェース（５０）を介してユーザーにフィードバックし、外部システム（６０）への有効な出力（１７）の形成を支援し、ユーザーのために複雑さを少なくする。パーサー（１０）は、一般に制御システムの分野、並びに、航空機用の飛行制御システムに適用することができる。【選択図】          図１
2007514991.tif 000002
【特許請求の範囲】
【請求項１】
言語入力を受け取り、条件付の言語出力を作成するための自然言語パーサー（１０）において、
１つ又は複数の単語、部分的単語、数字、言語記号、及び送信コマンドを備えているユーザーインタフェース（５０）からのユーザー入力要素（１８）を受け取るように構成されている入力（１２）と、
完成した、構文的に正しく構文解析された出力ストリング（１７）を外部システム（６０）に出力するように構成されている出力（１７）と、
階層オブジェクトモデル（２０）に従って構成され、可能性のある有効なユーザー入力要素（１８）を表す複数の記号オブジェクト（８０）を備えている記号表（２０）であって、前記記号オブジェクト（８０）は、オブジェクト指向ベースの階層構造に基づいており、マップされる記号オブジェクト（８０）は、前記記号表（２０）の対応する記号オブジェクト（８０）と構文的規則に基づいて前記ユーザー入力要素（１８）にマップされる、記号表（２０）と、
文法情報及び状態表（２４、２５）であって、
前記外部システム（６０）と共に用いられる合法的なステートメントを表す複数の文法出力オブジェクト（８４）であって、前記文法情報及び状態表（２４、２５）は、前記完成した、構文解析された出力ストリング（１７）に厳格な制約のセットを提供し、構文的に正しくないストリングを認可せず、前記文法情報及び状態表（２４、２５）は、意味的規則に基づいて階層的に構造化された記号表（２０）の１つ又は複数のマップされた記号オブジェクト（８０）に基づいて、マップされた出力オブジェクト（８４）を作成するのに用いられ、前記文法情報及び状態表（２４、２５）は、構文的に正しくないユーザー入力要素（１８）を認可しないようにするため前記記号表（２０）と対話する、複数の文法出力オブジェクト（８４）と、
具体的な出力がユーザーによって累進的に入力されるにつれて、前記出力の状態を反映するよう構成されている状態表（２５）と、を備えている文法情報及び状態表（２４、２５）と、
出力オブジェクト（８４）対出力ストリング（１７）のマッピングを有する翻訳表（２８）を備えている翻訳機（７６）であって、前記翻訳表（２８）からの情報と前記出力オブジェクト（８４）を組み合わせて、前記構文解析された出力ストリング（１７）を作るように構成されている、翻訳機と、を備えているパーサー（１０）。
【請求項２】
前記外部システム（６０）は、乗物、機械及びシステムの内の少なくとも１つのための制御器である、請求項１に記載のパーサー（１０）。
【請求項３】
前記乗物制御器（６０）は航空機ＦＭＳ制御器であり、前記構文解析された出力ストリング（１７）はＦＭＳコマンドである、請求項２に記載のパーサー（１０）。
【請求項４】
前記文法情報及び状態表（２４、２５）は、動詞、前置詞及び形容詞の内の１つ又はそれ以上を含む単語型式を備えている、請求項１に記載のパーサー（１０）。
【請求項５】
前記複数の記号オブジェクトは、文法オブジェクト、汎用オブジェクト、制御クラス及びインタフェースを備えている、請求項１に記載のパーサー（１０）。
【請求項６】
前記インタフェースは、アプリケーション補助情報インタフェースと外部システムインタフェースを備えている、請求項５に記載のパーサー（１０）。
【請求項７】
前記アプリケーション補助情報インタフェースはナビデータベース情報インタフェースであり、前記外部システムインタフェースはＦＭＳインタフェースである、請求項６に記載のパーサー（１０）。
【請求項８】
前記制御クラスは、記号型式リストと、文法及び状態インタフェースと、状態ルックアップ表を備えており、
前記汎用オブジェクトは、記号オブジェクトと、数字オブジェクトと、オブジェクトリストと、一時的なオブジェクトを備えており、
前記文法オブジェクトは、動詞と、接続詞と、前置詞と、パラメタを備えている、請求項５に記載のパーサー（１０）。
【請求項９】
前記文法情報及び状態表（２４、２５）は、少なくとも２つの異なるユーザー入力要素（１８）を１つの同じマップされたコマンドオブジェクト（８４）にマップするように構成されている、請求項１に記載のパーサー（１０）。
【請求項１０】
マップされた記号オブジェクト（８０）とマップされたコマンドオブジェクト（８４）の少なくとも一方が形成されるまで、ユーザー入力要素（１８）を保持するように構成されている部分的ストリングのバッファ（２２）を更に備えている、請求項１に記載のパーサー（１０）。
【請求項１１】
前記入力（１２）は、２つ以上のユーザーインタフェース装置（５０）からの入力を受け取るように構成されており、
前記パーサーは、２つ又はそれ以上のユーザーインタフェース装置からのユーザー入力要素（１８）を、１つの構文解析された出力ストリング（１７）に組み合わせるように構成されている、請求項１に記載のパーサー（１０）。
【請求項１２】
ユーザー供給言語入力を構文解析し、構文解析された出力を外部システムに提供するための方法において、
ユーザーインタフェース（５０）を介してユーザーからのユーザー入力要素（１８）を受け取る、ユーザー入力（１２）を備えている自然言語パーサー（１０）を提供する段階であって、前記パーサー（１０）は、構文解析された出力ストリング（１７）を外部システム（６０）に出力する出力を更に備えている、自然言語パーサー（１０）を提供する段階と、
前記パーサー（１０）の一部分である記号表（２０）を、有効なユーザー入力要素（１６）に対応し、且つ記号オブジェクト型情報を含んでいる記号オブジェクト（８０）を前記記号表に入力することによって、階層オブジェクトモデル構造（２０）に従って構築する段階と、
文法情報及び状態表（２４、２５）を、前記外部システム（６０）の有効な構文解析された出力ストリング（１７）に対応する複数の文法出力オブジェクト（８４）を提供することによって、構築する段階と、
翻訳機（７６）を、前記コマンドオブジェクト（８４）に対応する出力ストリング（１７）を提供することによって、構築する段階と、
ユーザーがユーザー入力要素（１８）を前記ユーザー入力（１２）に入力する段階と、
前記ユーザー入力要素（１８）を、前記記号表（２０）と構文的規則を使って、前記ユーザー入力要素（１８）に対応するマップされた記号オブジェクト（８０）に変換する段階と、
前記マップされた記号オブジェクト（８０）の１つ又はそれ以上を、前記文法情報及び状態表（２４、２５）を使用し、意味的規則に基づいて、対応するマップされた出力オブジェクト（８４）に変換し、前記状態表（２５）内のマップされた出力オブジェクト（８４）の状態を更新する段階と、
ユーザー入力要素（１８）を、それが入力されるにつれて、前記文法情報及び状態表（２４、２５）、前記記号表（２０）、前記構文的規則、及び前記意味的規則で検査することによって、制約し、ユーザーが正しいユーザー入力要素（１８）を入力するのを支援するため、情報を提供する段階と、
送信コマンドをユーザー入力要素（１８）として受信する段階と、
前記送信コマンドを受信する段階に応じて、前記マップされた出力オブジェクト（８４）を、前記翻訳機（７６）を使って、対応する構文解析された出力ストリング（１７）に翻訳する段階と、
前記構文解析された出力ストリング（１７）を前記外部システム（５０）に送信する段階と、から成る方法。
【請求項１３】
前記ユーザー入力要素を制約する段階は、
前記ユーザーに、前記ユーザーインタフェース（５０）を介して、有効な次の入力のピックリスト、有効な次の入力の型式を定義するヘルプメッセージ、ユーザー入力に関する問題を示すエラーメッセージの内の少なくとも１つを提供する段階を含んでいる、請求項１２に記載の方法。
【請求項１４】
前記文法情報及び状態表（２４、２５）を構築する段階は、前記外部システム用の出力ストリングの包括的セットを識別する段階と、前記コマンドストリングを一般的な形態で規則ファイルに入力する段階と、パラメータ、可能性のある前置詞句のリスト、及び前記規則の可能性にある全ての順序への並べ替え、を備えている、請求項１２に記載の方法。
【請求項１５】
前記ユーザーに、文法オブジェクトの図形表示と、前記オブジェクトの、自動挿入又は作成のための、機能、意味的制約、及びデフォルト情報に関係する互いの関係とを提供する段階を更に含んでいる、請求項１２に記載の方法。
【請求項１６】
前記ユーザーが正しい文法に従っていないときは、前記ユーザーに代わって、ユーザー入力要素（５０）を入力する段階と、
前記ユーザーに、構文解析された出力ストリング（１７）に必要なユーザー入力要素（５０）を促す段階と、を更に含んでいる、請求項１２に記載の方法。
【請求項１７】
ユーザー供給言語入力を構文解析し、構文解析された出力を外部システムに提供するための方法において、
前処理されたストリングを未処理ストリング（１０６）として記憶することによって、ユーザー入力要素（５０）を入力ストリング（１０２）として前処理するか、又は、数字取扱（２０２）を実行するか、又は、次の合法的ストリング取扱（１５２）を実行することによってストリングを処理する、段階と、
前記未処理のストリングを、前記次の合法的ストリング取扱（１５２）によって、記号表（２０）の対応する記号オブジェクト（８０）に基づいて、マップされた記号オブジェクト（８０）に処理する段階と、
入力数字（２０２）を前記数字取扱によって前処理し、数字のプレースホルダーを、コマンドオブジェクト（８４）の現在の状態を表しているホールドオブジェクト（２１６）に追加する段階と、
結果的に、ａ）前記マップされた記号オブジェクト（８０）を前記ホールドオブジェクト（３５２）と組み合わせる段階、ｂ）エラーメッセージを前記ユーザーインタフェース（５０）に提供する段階、ｃ）接続詞又は動詞（２６４）を自動的に挿入する段階、ｄ）前記ユーザーに、可能性のある次の入力値（２７６）の選択リストを提供する段階、ｅ）欠落オブジェクトを突き止めて、前記コマンドオブジェクト（８４）の現在の状態に追加する段階、ｆ）前記マップされた記号オブジェクト（８０）を前記コマンドオブジェクト（８４）の現在の状態に追加する段階、の内の少なくとも１つになる、前記マップされた記号オブジェクト（８０）を処理する段階と、
ユーザーが入力した送信コマンド（４０２）を処理し、あらゆる未解決のマップされた記号オブジェクト（８０）を、前記コマンドオブジェクト（８４、４１０、４１２、４２０）の現在の状態と組み合わせ、完成した有効なコマンドオブジェクト（８４）を作る段階と、
前記完成した有効なコマンドオブジェクト（８４、４３４、４３６、４３８）を、構文解析された出力ストリング（１７）に翻訳する段階と、
前記構文解析された出力ストリング（１７）を前記外部システム（６０）に送信し、前記コマンドオブジェクト（８４）の現在の状態をリセットする段階と、から成る方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、言語インタープリターの分野に、より具体的には、階層オブジェクトモデルに基づく自然言語インタープリターに関する。そのような言語プロセッサは、自動車、機械の制御器、又は制御器を使用するあらゆる他の機構と人間のインタフェースを単純化するのに用いられる。
【背景技術】
【０００２】
最新の制御を必要とする複雑なシステムが、近年急増している。これらの制御と対話するため、従来型のユーザーインタフェース（例えば、キーボード、グラフィックディスプレイ）や関連するソフトウェアが用いられてきた。システム及び制御が複雑になってきたので、これらのシステムでは、一般的に、相当広範囲なトレーニングがユーザーに必要になり、技能を維持するために、ユーザーは常に使用する必要がある。
【０００３】
これは、特に航空機のコックピットに当てはまり、この場合、航空機の飛行管理システム（ＦＭＳ）を使いこなせるかについて相当な関心が持たれている。この分野の関心は、Ｗｉｅｎｅｒ，Ｅ．が「最新技術（「ガラスのコックピット」）の航空機の人間要素、モヘット分野：ＮＡＳＡ契約者報告１７７５２８」（１９８９年）で説明しているような、必要なトレーニング時間の量から、Ｓａｒｔｅｒ，Ｎ．とＷｏｏｄｓ，Ｄ．が「ユーザーのコックピット自動操縦装置との対話：飛行管理システム（ＦＭＳ）による操作経験、オハイオ州コロンバス、オハイオ州大学」（１９９１年）で説明しているような、エラー及びシステムを理解する難しさまで及んでいる。
【０００４】
複雑さに関係する問題を解決しようとする最近の仕事の多くは、グラフィックフォーマットの柔軟性が向上したのを利用して、ポップアップメニュー、ダイアログボックス及び他のツールを含む操作手順を通して今まで以上の支援を提供することの開発に焦点を絞っている。しかしながら、多くの状況において、複雑な制御器を使い辛くするのは、インタフェース自体ではなく、基を成す機能的論理の複雑さである。
【０００５】
分かり易い例として、航空機制御の分野では、ユーザーは、ＦＭＳの使い方を学習するとき、大量の手順と操作規則を記憶するよう学習し、成し遂げなければならない。これらの多くは、Ｓｈｅｒｒｙ，Ｌ．とＰｕｌｓｏｎ，Ｐ（１９９８年）の「航空電子工学的行動の状況−動作規則説明の含意」（ＨＣＬ−Ａｅｒｏ１９９８、ケベック州モントリオール）によって説明されているモード論理に関係しているが、この他にもＦＭＳ機能を実行するのに必要な基本段階に関係するものが沢山ある。例えば、隠れた中間地点の回りに待機経路を作るのに必要な段階は、一般的に直観では分からないので、ユーザーは、その手順を最近実行していなければ、対話論理を通じて正しい経路を発見するまで、数分間の試行錯誤を要することになりかねない。
【０００６】
航空機制御システムの関係では、この制御の複雑さに取り組むため、参考文献としてここに援用する米国特許第６，３４６，８９２号（‘８９２）は、ＦＭＳ対話論理のベースとして、ユーザーが既に慣れ親しんでいる操作論理（航空交通管制（ＡＴＣ）クリアランスの内容及び統語法）を使っているコックピット制御言語（ＣＣＬ）を採用している航空機システム管理の方法及び装置を開示している。これは、ユーザーが、複雑なシステムの作動を統率する、新しく明らかに専横的な一組の規則を学習しなくてもよいようにする。言い換えると、これは、システムが働くようにユーザーに考えさせるのではなく、ユーザーが考えるようにシステムを働かせる。
【０００７】
航空機制御のための、この原理に基づくインタフェース及びシステムは、Ｒｉｌｅｙ，Ｖ．（２０００年）の「ユーザー中心の自動飛行インタフェースの開発」（カリフォルニア州サンディエゴ、世界航空会議の議事録）に記載されており、これは、ユーザーが、約１５分でそのようなシステムの使い方を学習できると実証している。トレーニング時間の間に、ユーザーは、中間地点上の拘束点を横断して到着するのに必要な時間を入力し、最小の支援で隠れた中間地点の回りで待機するように訓練された。例えば、「アラモサの前２０マイルで待機せよ（Hold at twenty miles before Alamosa）」というクリアランスコマンドを実行するためにユーザーがしなければならないことは、「ＨＯＬＤ  ２０  ＢＥＦＯＲＥ  ＡＬＳ」と入力するだけである。この様に、Ｒｉｌｅｙが開示しているこの例では、ユーザー入力の重要な要素は、クリアランス内の同じ要素の順序を真似ている。
【０００８】
‘８９２号の特許は、ディスプレイと、入力装置と、入力された様々な代替表現を、構文解析されたコマンドを表示し、承認されると、構文解析されたコマンドをコンピューターに入力するように作動するコンピューターが理解できる所定のフォーマットに翻訳するようにプログラムされた言語パーサー／インタープリターと、を使用する。しかしながら、例えば‘８９２号特許に使用されている言語パーサーに関わる問題の１つは、新しいアプリケーション、言語などの更新又は適合が難しいことである。言語プログラミング用の従来型のモデルは、あまり柔軟性が無く、変化している環境に適合させるのが容易ではない。従来型のプログラミング設計で、複雑なルールを能率的に実行するのは難しい。
【特許文献１】米国特許第６，３４６，８９２号
【非特許文献１】Ｗｉｅｎｅｒ，Ｅ．「最新技術（「ガラスのコックピット」）の航空機の人間要素」（１９８９年）
【非特許文献２】Ｓａｒｔｅｒ，Ｎ．とＷｏｏｄｓ，Ｄ．「ユーザーのコックピット自動操縦装置との対話：飛行管理システム（ＦＭＳ）による操作経験」（１９９１年）
【非特許文献３】Ｓｈｅｒｒｙ，Ｌ．とＰｕｌｓｏｎ，Ｐ「航空電子工学的行動の状況−動作規則説明の含意」（１９９８年）
【非特許文献４】Ｒｉｌｅｙ，Ｖ．「ユーザー中心の自動飛行インタフェースの開発」（２０００年）
【非特許文献５】「ＡＴＣ双方向データリンク通信の最小限の操作性能標準」ＲＴＣＡ／ＤＯ−２１９、ＲＴＣＡ社発行
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明は、階層オブジェクトモデルを使用して、柔軟性を提供し、特定のシステムの複雑な規則と制約を単純化する自然言語パーサー／インタープリターを提供するという目的に基づいている。本発明のパーサーは、ユーザーインタフェースと、ユーザーインタフェースが通信する外部システムとの間のインタフェースであり、本発明のパーサーは、有効なストリング又はコマンドだけが提供されるように、外部システムに送られてくる言語を制約する。言語プロセッサは、更に、ユーザーインタフェースにフィードバックを行って、ユーザーが有効な情報を入力するのを支援する。
【００１０】
情報の入出力を容易に行えるようにするユーザーインタフェースの特徴が利用されるが、本発明のシステムでは、システムへのユーザーインタフェースと、アプリケーションが関係するレベルの支援に取り組むシステムに必要な対話論理とを区別することが重要であり、ユーザーインタフェースは、物理的ディスプレイと、ＣＲＴ、キーボード、マウス、音声認識及び他の入／出力装置、及び関連するドライバのようなユーザーが使用する制御とで作られており、一方、対話論理は、インタフェースと基になるシステムとがどのように働くかを統括している。
【００１１】
本発明の言語インタープリターは、上記の‘８９２号特許に記載されているコックピット制御システムのような複雑な制御を備えたどの様なシステムにでも用いることができる。しかしながら、本発明は、航空機又は乗物のアプリケーションに限定されず、どの様な型式の複雑な制御機構が使用されている場合でも、また、言語が１つの形態から別の形態に翻訳されるか、何かの方式で制約される場合にでも用いることができる。
【００１２】
最も重要な設計概念は、柔軟性のために、機能性を分離し、階層モデルを使用することである。機能性は、入力（そこで情報はオブジェクト又は記号に翻訳される）、構文的構文解析、意味的構文解析、及び制御器翻訳に分離され、コマンドと記号は別々にマップされる。構文的構文解析は、記号（又は単語）の順序だけに関係があり、一方、意味的構文解析は、各記号又は単語に関連する実際の論理値に言及する。
【００１３】
意味的検査は、各オブジェクトがコマンドオブジェクトに加えられた後、恐らく、コマンドオブジェクトが完了したと考えられ、インタープリターに送られる前に起こる。構文的及び意味的規則のセットは、階層内の各オブジェクトに特定のものであり、ＤｏＭＥモデル内に各オブジェクトと共に配置されているか、選定されたオブジェクトモデルにコード化され、即ちそれに固有のものとなる。
【００１４】
本発明の階層モデルは、文法作成、オブジェクトクラスコード生成、及びストリングの識別とオブジェクトへの翻訳を含んでいる。本発明の要素について、以下に更に詳しく説明する。本発明の特定の実施形態について、以下に、コックピット設定におけるＦＭＳとのユーザー対話に対する代表的なアプリケーションで説明するが、本発明は、先に示したように、もっと広範囲に解釈されるべきである。
【００１５】
このプラットフォームのインタフェースは、柔軟性が最大になるように設計されているが、本発明に関連する実際の作業負荷の低減は、関連するシステム規則及び手順を覚え、これに従おうとするときのユーザーの認識努力が低減することによる。このシステムは、特に、入力の懸念が機能的論理の複雑さに関係している場合は、最も複雑なコマンドストリングでも入力するのに申し分ない。このシステムは、異なる文法構造に対応できるように設計されているので、対話論理の構文法は、比較的簡単に異なる言語に対してカストマイズすることができる。
【００１６】
この原理は、どの様な型式の言語が、フィールドに関するユーザーの知識、例えば、数値制御マシンツールを制御するときの機械工用の高レベルのジオメトリ及びマシンツール制御ベースの言語に関する知識、又は工業プロセスの製造関係者用のプロセス制御言語の知識などの既存の本体を使用する場合にでも適用することができる。更に広範に、この原理は、或る形態の言語を別の形態の言語に簡単に変換する際に適用することができる。
【発明を実施するための最良の形態】
【００１７】
システムアーキテクチャ
図１は、本発明の言語インタープリター−パーサー１０の或る実施形態を示している。言語パーサー１０は、ユーザーインタフェース５０と、制御器、コンピューターシステム、ディスプレイ、或いはコマンド又は条件付テキストストリング１７を受け取ることのできる他の装置などの外部システム６０の両方とインタフェースしている。この関連で、「条件付テキストストリング」という用語は、外部システム６０が理解できる全ての出力を意味している。
【００１８】
本発明の言語パーサー１０は、文法情報２４及び状態表２５（これらは統合されており、以下各所に統合された形態で示されている）と、記号及び階層的オブジェクトモデル２０の２つの主要な半独立機構を使用する条件付自然言語パーサーである。これらの２つの主要な機構に加えて、パーサー１０は、追加の支持要素を含んでいてもよい。これらの要素には、部分的ストリングバッファ２２、補助アプリケーション情報２６、翻訳表２８、外部システム情報３０及び通信辞書３２の内の１つ又はそれ以上が含まれる。
【００１９】
一般的には、言語を外部システム６０が理解できるものに制限する、厳格な制約のセットを言語に提供するのに、文法情報及び状態表２４、２５が用いられる。オブジェクトモデル２０は、ユーザー入力要素１８が、正しく解釈されるオブジェクトに処理されるようにする。これらの２つの主要な機構は互いに依存しており、文法部分２４は、オブジェクトに付与されている階層的な定義とそのそれぞれの列挙に依存することによって、オブジェクトモデル２０を利用する。同様に、オブジェクトモデル２０は、構文的に正しくない多くのストリングを認可しないようにするため、文法情報２４に大きく依存している。パーサー１０でこのハイブリッド手法を使うと、コマンド／フレーズのオブジェクト指向性質の有用性と、言語ベースのインタープリターに必要な構文の柔軟性が最大となり、異なるシステムへの変更又は適用が、大幅に簡単になる。基本的な設計概念には、機能性を分離することと、柔軟性のために階層的なオブジェクトモデルを使用することが含まれる。
【００２０】
本発明の或る実施形態、即ち、外部システム６０が航空機用の飛行制御器であるＦＭＳアプリケーションでは、本発明は、ユーザーが、飛行制御のためのクリアランス要素を、合法的な英語構文及びＡＴＣの言葉遣いに従っている限り、殆どユーザーが望む任意の順序で入力できるようにする条件付自然言語パーサー１０を実行することによって、フライト制御器が使用するＣＣＬを使い易くする。ＣＣＬは、どの様なユーザーでも約１５分で使用法を修得できる自動飛行システム用の、ユーザー中心の対話概念である。
【００２１】
広い意味では、本発明は、言語を１つの形態から別の形態へ翻訳し易くし、制御又はどの様な他の型式の外部システム６０とでもインタフェースするのに用いることができる。本発明は、コマンド入力の柔軟性を提供し、情報を入力するための文脈的、構文的及び文法的な支援を提供することによって、特定のインタフェース用の特殊な操作規則を学習し覚える必要を無くし、ドメイン内で使用される操作論理に則った方式で、ユーザーがコマンドを入力し易いようにする。アプリケーションは、どの様なユーザー入力でも、外部システム６０が理解できる何らかの形態の言語で、条件付出力に適合させることができるほど一般的である。学習及び使用のこの容易さは、ユーザーが理解する言語（例えばＣＣＬ）が、外部システム６０を操作することに関する既存のユーザーの知識を対話論理の基礎として使用しているという事実によって、可能になる。つまり、システムの対話論理は、ドメインの操作論理を模倣している。従って、ユーザーは、外部システム６０に送る情報を入力するときに、何らかの型式の乗物又は機械の自動制御のような複雑なシステム用の新しい操作論理を学習し、或いは、システムのモード管理又は他の状態ベースの態様を取り扱う必要がない。
【００２２】
本発明の言語パーサー１０は、４つの主要な機能、即ち１）ユーザーが冗長単語を入力する必要がないように、コマンド又は入力ストリングに暗示単語を自動的に挿入することによって、ユーザーに近道を提供する、２）入力の際に存在する曖昧さの解決を容易にする、３）メッセージの論理的な有効性を確認し、無効のストリングに対し適切なエラーメッセージを作る、及び４）入力の間に、次に可能な単語、句又は単語の完了のリストを提供することによってユーザーを促す、という機能を有している。
【００２３】
言語パーサー１０は本発明の主要な焦点であるが、以下に、ユーザーインタフェース５０と、言語パーサー１０がインタフェースすることのできる外部システム６０について簡単に説明する。
【００２４】
ユーザーインタフェース５０には、ＣＲＴ、ＬＣＤ／プラズマパネル、キーボード、マウス、テキスト又は文字読み取り器、バーコード読み取り器、音声認識システム、スピーカーなどの様な既知のディスプレイユニットが含まれる。ＦＭＳ実施形態では、ユーザーインタフェース５０には、制御／表示ユニット、主要な飛行ディスプレイ、多機能ディスプレイ、航路表示エリア、英数字式キー又はキーパッドを有するキーボード、選択肢表示エリア、コマンド表示エリア、ライン選択キー、選択肢キー、カメラ及び／又はマイクロホンなど音声入力装置、が含まれる。ユーザーインタフェース５０は、ストリング／部分的ストリングとコマンド１８を言語パーサー１０に送るのに用いられる。ユーザーインタフェース５０は、パーサーユーザーインタフェース出力１４（ヘルプ、エラーメッセージ、完了）を受信するのにも、それらをユーザーに提供するのにも用いられる。
【００２５】
外部システム６０は、解析済み又は条件付テキストを入力として使用するのであれば、どの様なシステムでもよい。外部システムは、コンピューターシステム又はディスプレイ機構と広く解釈してもよく、そこで言語パーサー１０は、言語を或る形態から別の形態へ翻訳するだけである。言語パーサー１０は、特定の言語の規則と構文に基づいて制限と制約を提供する。しかしながら、或る広範に解釈される実施形態では、外部システム６０は、コマンドを受け取りそのコマンドに作用する或る種の制御である。言語パーサー１０は、ユーザーが、制御６０と通信するために使用を試みた全ての可能性のある言語の中から、受け入れ可能なコマンドだけを制御６０に提供する働きをする。狭義の代表的な実施形態では、外部システム６０は、 ‘８９２号特許に記載されている（先に述べたような）飛行制御システムである。外部システムは、言語パーサー１０から、外部システム６０が理解できる完成したコマンド又は他の出力１７を受け取る。
【００２６】
以下でエンティティに言及する場合、「表」という単語は、１つ又は複数のオブジェクトの集合について説明するのに用いる。従来型の表は、データが入っているだけで、データに作用する機能モジュールとは異なるデータベースと解釈されることが多い。しかしながら、好適な実施形態に関するこの説明では、「表」「オブジェクト」「データベース」「バッファ」又はデータを表す他の単語は、オブジェクト指向様式で実施されるので、これらのエンティティには、オブジェクトの各データに作用する機能性又はプログラムコードも入っていることを意味している。つまり、以下に使用する「表」には、表に記憶されているデータに作用するための機能コードも追加して含まれている。
【００２７】
先に説明したように、インタフェースパーサー１０自体の主要な構成要素は、２つの半独立機構、即ち１）記号及び階層的オブジェクト表２０と、２）文法情報と状態表２４、２５、である。基本的な意味で、記号と階層的オブジェクト表２０は、入力コマンドストリングを、意図通りに解釈することのできる記号オブジェクト８０に処理できるようにする。文法表２４、２５は、外部システム６０の言語にマップする厳格な制約のセットを言語に提供するのに用いられる。つまり、文法情報２４、２５には、外部システム６０が使用することのできる全ての合法的なコマンド又は単語が入っている。
【００２８】
図１に示すように、本発明の言語インタープリター−パーサー１０は、どの様な数のデータベース又は表を利用してもよく、それらはパーサー１０自体に統合されていてもいなくてもよいが、パーサー１０に統合されていないデータベースは、パーサー１０が容易にアクセスできるようになっている。部分的ストリングのバッファ２２が、ユーザーインタフェース５０を介して入力される部分的なストリングを一時的に保持するために設けられているので、部分的なストリングは、分析され、最終的に完成したオブジェクト又は出力１７になるような方式で組み合わされる。この部分的ストリングは、記号（又は複数の記号）が識別され、形成され、次の合法的なストリングに送られるまでの間にだけ、存在する。保持及び一時的ストリングは、１つ又は複数の記号を備えている。
【００２９】
言語パーサー１０が独占的に使用するのではなく、コマンド１７をフォーマットする際に言語パーサー１０を支援することのできる関連情報を含んでいる、補助的アプリケーション情報データベース２６が、提供されている。
【００３０】
例えば、ＦＭＳに用いられる代表的なシステムでは、補助的アプリケーション情報２６は、例えば、航空機名、空港オブジェクト及び中間地点オブジェクトような飛行中に用いられる特定のオブジェクトの場所、並びにこれらの要素の可能な完了、を備えた航行情報データベースである。ＦＭＳ−ＥＦＩＳ共有メモリ更新は、「航空計画から中間地点のオーダー番号を得る」「起点の空港を得る」「最も近い空港の中間地点のオーダー番号を得る」及び「目的地空港を得る」のような機能を含んでいる。航行データベースが、ＦＭＳ以外の多くの他のアプリケーションに情報を提供するのは明らかであり、従って、排他的にＦＭＳの一部ではない。ＦＭＳアプリケーション内の航行情報データベースを使用すると、ユーザーが制御器６０に完全なコマンド１７を作る助けになる。
【００３１】
特定の型式の制御又は外部システム６０に特有の情報を備えた制御情報データベース３０が、提供されている。これは、同じ基となるソフトウェアで様々な型式の制御を使用できるようにし、このデータベースだけは、異なる制御を利用するために更新が必要で、ＦＭＳアプリケーション用のＦＭＳ情報データベースシステムを構成することができる。
【００３２】
確実に信頼できるデータの配達を行えるように支援する通信辞書３２が、提供されている。この辞書は、低レベルの通信プロトコルデータ（例えば、ＴＣＰ／ＩＰ又は更に低プロトコルレベルの物理層情報に関係している）を含んでいてもよいが、主に、高レベルの信頼できる配達に関しており、即ち、有効なコマンドがそれを信頼できる方式で外部システム６０に確実に行えるようにしている。
【００３３】
通信辞書３２は、例えば、ＲＴＣＡ社が発行している仕様書「ＡＴＣ双方向データリンク通信の最小限の操作性能標準」ＲＴＣＡ／ＤＯ−２１９のような標準に基づくデータリンク通信用のデータリンク辞書３２として、ＦＭＳアプリケーションで実行されており、同仕様書を参考文献としてここに援用する。
【００３４】
ＦＭＳの実施形態において通信辞書３２がどのように作動するかを明らかにするため、以下の代表的な説明と対話を提供する。この具体的な例では、データリンクデータ辞書３２は、ＣＣＬコマンドストリングスの機能的サブセット（「データリンク」はＡＴＣコマンドのサブセットであり、ＣＣＬはどの様なＡＴＣコマンドでも取り扱うことができる）なので、ＣＣＬとデータリンクは完全に互換性がある。データリンクインタフェースをＣＣＬインタフェースに組み込めば、ユーザーは、ＣＣＬ環境内でデータリンクメッセージを編集できるようになる。これは、今度は、例えばクリアランスを完全にデータリンク上で折衝する能力をサポートする。
【００３５】
例えば、制御器が、重量のために可能な高度より高い高度にクリアランスを送れば、ユーザーは、クリアランスをＣＣＬコマンドストリングフィールドにコピーし、高度を実行可能な値に編集し、コマンドストリングを要求として制御器に送り返す。ＣＣＬ環境内で編集すると、制御器から確認が受信されたとき、どの様なデータリンクメッセージ又はＣＣＬコマンドストリングであっても、コマンドストリングを直接実行することができるように、オリジナルメッセージの実行可能な特性が保持される。ＦＭＳでは、ユーザーは、経路の修正を手動で入力しなければならないときに、経路データを入力する主要な機構としてデータリンクを使用すれば、伝統的なＣＤＵベースのＦＭＳ操作での熟練者であり続けることができなくなるので、ＣＣＬはデータリンクの世界に必要であり続け、従ってＦＭＳで使用が容易であることは、今日よりもっと重要になる。更に、ＣＣＬは、データリンクと同じ操作論理を使用する（両方がＡＴＣメッセージに基づいている）ので、データリンクメッセージは、実際に、ＣＣＬの対話論理を強化し、手動及び自動的な操作を本質的に同じにする。これは、間断ない実践を逸しても、ユーザーが、低レベルの自動化と手動データ入力での熟練者であり続けることを可能にする。
【００３６】
この原理は、そのような通信辞書データベース（内部又は外部）３２が言語パーサー１０と連結して用いられる場合、データベース内に含まれている情報は、正しい情報の入力を支援するために利用できるのみならず、適用可能な制御又は外部システム６０の論理に関する知識を強化する働きもする、ということを述べることによって一般化することができる。
文法情報及び状態表
【００３７】
文法情報２４と状態表２５は、一式のスクリプトと１つ先取り型辞書的インタープリターを使って実行時前に形成され、それには、制御器又は外部システム６０の視点から全ての可能性のある合法的なステートメントが含まれている（勿論、これらのステートメントは、表が大きくなりすぎるので、合法的なステートメントの、パラメタ表示されているか、分類されているか、又は数値の構成要素を含んでいない）。この表を作るために、代表的な実施形態では、殆どのコマンドに単一の動作及び目標（又はパラメタ変数）と、一式の前置詞が含まれていることを、リサーチは示した。リサーチは、更に、頻繁に用いられる形容詞、副詞、パラメタ及び接続詞を識別した（表１参照）。
【００３８】
言語パーサー１０は、最初はＦＭＳの文脈で開発された。（状態表２５を生成するのに用いられた）この文法の開発で、最初のコマンドストリングのセットは、普通のクリアランスの包括的なリストを備えており、それらのクリアランスから、ＣＣＬの語彙が識別された（即ち、どの単語が動作を示し、どの単語が目標を示しているか）。この語彙から、クリアランスの元のリスト、データリンク仕様書が、そして受け入れられたＡＴＣの言葉遣いから、可能なコマンドストリングのリストが、文法を形成するため推測された。
【００３９】
文法が定義されると、そのようなストリングからの文法情報２４は、一般化された意味で、各コマンドストリング（又は別の型式の出力ストリング、規則構成要素など）を、動詞、目標／パラメータ、及び可能性のある前置詞句として一般的な形態／型式で規則ファイルに入力することによって、作ることができる。次に、プログラムが実行され、規則を可能性のある全ての順序に並べ換える。各目標及び前置詞句は個々に定義され、等価な単語及び句を示すのに（可能な限り）列挙が用いられる。
【００４０】
状態表２５は、規則の並べ換え、名詞規則及び階層表示を使って作られる。文法は、オブジェクトマップと組み合わされ、あらゆる文法状態生成技法又はツール（Ｂｉｓｏｎのような）を使って、状態マシン２５に変換される。状態表２５は、具体的なコマンドラインが形成されると、コマンドが完了しているか否か、コマンドに欠けているのはどの情報か、どの選択肢が使用可能かなど、その具体的な状態を判定する。状態表は、先取り検査し、必要な情報を予想できるか否かを知るために使用できるので、柔軟性がある。従って、１つ先取りパーサー状態マシンであるにもかかわらす、パーサーは、２つ先取り、又は必要ならばｋ個先取りも実行することができる。
【００４１】
規則の並べ換えは、２００以上もの良好に定義されたコマンドを使用する。規則の並べ換えには、一緒に、挙げられた順序で出現しなければならない単語のグルーピングのリスト、並びに、単語の種類に従った、前置詞及び動詞のリストも含まれる。名詞の規則には、ユーザーが予測する単語又はオブジェクトの順序付けが含まれており、オブジェクトの各集合を何にマップするかを定義している。階層モデルは、階層オブジェクトの関係のリストを含んでいる。Ｂｉｓｏｎから状態マシンへの文法の処理は、Ｂｉｓｏｎ出力を、挿入後に一時的なファイルに変換し、次に最終的なパーサー読み取り文法表に変換することによって完了する。
【００４２】
これは、一連のスクリプト又は別のプログラムで行われ、第１のスクリプトは、単語のグルーピングをマークする。これによって、例えば「ＣＬＩＭＢ  ＡＴ  ２０ＮＭ」と「ＡＴ  ２０ＮＭ  ＣＬＩＭＢ」など、コマンド内の単語の順序が重要なとき、差異に対応できるようになる。別のスクリプトは、前置詞と動詞にフラッグを立て、別のスクリプトは、各フラッグの立ったグルーピングを使って、前置詞句を、動詞とその目的語の前後何れの順序にでも配置できるように、全ての可能性のある並べ換えを作る。それが完了した後で、所与の目標をどのように入力するかを定めている名詞の規則と、階層的なオブジェクトの関係とが、並べ換えられたコマンドリストと合体される。この合体情報は、次いでＢｉｓｏｎに送られ、Ｂｉｓｏｎに特有の出力フォーマットで状態マシンが作られる。このフォーマットは、Ｂｉｓｏｎ規則リストと共に状態情報を引き出すことによって、パーサーへの入力として修正することができる。
【００４３】
この構造では、置換も利用することができる。ＦＭＳの例では、同じ意味を持つコマンドストリングを作るため、「ｗｈｅｎ  ａｔ」「ｏｎ  ｒｅａｃｈｉｎｇ」及び「ｗｈｅｎ  ｒｅａｃｈｉｎｇ」を全て「ａｔ」に置換することができる。文法情報と状態表２４、２５は、入力されたストリングの正しさを保証し、ユーザーに可能性のある次の単語を促すという両方の目的で、実行時に用いられる。促すのは便利ではあるが、ユーザーが目標だけを入力したい場合、又はコマンドストリングの一部を省きたい場合は、欠落単語を定めるか、又はユーザーに適切な選択を促すのに、オブジェクトモデルが用いられる。
【００４４】
状態表２５は、文法表２４と密接な関係にあり、文法情報２４は、制御器で用いることのできる全ての有効なコマンドストオブジェクトを保持しているが、状態表２５は、特定のコマンドの状態を修正することもできるようにするため、この情報を検討する。文法情報２５は、最新の状態、最新の記号オブジェクト（コマンド、一時的又はホールドオブジェクト）、コマンド、一時的オブジェクト（文法によって処理されるが、コマンドに加えることはできないオブジェクト）及びホールドオブジェクト（コマンドに加えるのは合法的だが、文法によって処理されていないオブジェクト）を含んでいる。一時的オブジェクトとホールドオブジェクトの違いは、以下の様に表すことができる。コマンド「ＴＯ  ＦＬ３２０  ＡＴ  ＫＭＳＰ」では、文法は、ＴＯ＋ＦＬ＋数字を予測する。コマンドオブジェクトは、動詞＝ＴＯと予測し、ｃｃｌＴｏオブジェクトは、目標＝高度と予測し、ｃｃｌ高度オブジェクトは、高度単位＝列挙法（ＦＬ）値＝数字と予測する。そこで、「ＴＯ  ＦＬ」では、文法が良ければ、温度オブジェクトは「ＦＬ」を維持するが、「ＴＯ  ＦＬ３２０  ＫＭＳＰ」では、文法が良くなければ、ホールドオブジェクトは「ＫＭＳＰ」を維持する。
【００４５】
翻訳
ＦＭＳ翻訳は、以下を伴う。ＦＭＳ表は、ＦＭＳコマンドをＣＣＬ同義語にマップするために製作される。翻訳表は、開始時に、迅速探索に備え、ＣＣＬ同義語をｎ階層のツリーにロードするため作成される。継承物と属性のマッピングは、ＦＭＳ表から同義のＣＣＬコマンドを発見するのに用いられる。オブジェクトとしてのＣＣＬコマンドは非常に特殊なので、ＣＣＬコマンドの同義語は、階層モデルを登り、ｎ階層のツリーを歩き回ることによって発見することができる。各端末ノードには、ＣＣＬストリングと合致し、１つ又は複数のＦＭＳコマンドにマップするＦＭＳ数字がある。データ型式は、翻訳機オブジェクトで満たされており、追加の情報は、必要に応じてデータベースから入手される。
【００４６】
記号及び階層オブジェクトモデル表
記号表と階層オブジェクトのデータベース２０は、多くの一般的なオブジェクト指向プログラミング技法（例えば、カプセル化、継承及び抽象）を利用する。何れかのユーザー入力装置５０を介してシステムに入力される各単語、部分的単語、数字又は句は、トークン、列挙又は他の形態のオブジェクト表現のように考えられる簡単なオブジェクトに変換される。このデータベース２０には、これらの部分的単語、単語、数字及び句（テキスト要素）のトークン化された列挙を含むオブジェクトが入っている。各オブジェクトは、次に、オブジェクトモデルを使って組み合わせられ、１つのコマンドオブジェクト８４が作られる。ユーザー入力がオブジェクトフォーマットに変換されると、次に、これらの変換されたオブジェクトに、意味的検査、外部制御器又はシステムコマンドへの翻訳、又は他の型式のオペレーションが実行される。本発明のパーサー１０のインプリメンテーションは、自然言語の複雑さと、単語の順序の微妙な差異を捉えるために、正確で完全なオブジェクトモデルを作る。
【００４７】
オブジェクトモデルは階層的で、オブジェクト順の階層が、オブジェクトの構造に課せられる。例えば、低いレベルでは、オブジェクトは単語又は部分的単語を広くモデル化することができ、次のレベルでは、名詞、動詞、パラメタなどの更に特殊な子オブジェクト型式がモデル化され、子オブジェクトは、基になる親「単語」オブジェクトの特性の全部又は一部を継承する。更に高いレベルでは、例えば或る場所に向けられたオブジェクトは、基になる「名詞」オブジェクトの特性の全部又は一部を継承すると定義される。プログラミング方法論に向けられたオブジェクトのツールが全て使用され、利点が実現される。
【００４８】
実施形態のインプリメンテーションは、１）文法オブジェクト、２）一般的なオブジェクト、３）制御クラス、及び４）インタフェース、に従ってオブジェクト指向方式で編成されるファイルである。
文法オブジェクトは、動詞、接続詞、前置詞及びパラメタ（名詞）の様な種類に編成される。これらの文法オブジェクトの多くは、多数の異なるインプリメンテーションに関係している。ＦＭＳの実施形態では、これらの文法オブジェクトは以下の表を含んでいる。
【００４９】
【表１】
2007514991.tif 000003
【００５０】
これらのオブジェクトのインプリメンテーションは、実際には、ダイナミックに例示されたときに、開始時に作られたデータベースからそのオブジェクト特定の情報を読む、１つのクラス型式である。
【００５１】
一般的なオブジェクトには、記号オブジェクト、数字オブジェクト、オブジェクトリスト、及び、コマンドが連続して入力されないときにコマンドオブジェクトの部分を保存するのに用いられる一時的オブジェクトが含まれる。これらの一般的なオブジェクトは、コマンドオブジェクト（動詞と、前置詞のリストを含む）、複合コマンドオブジェクト（２つのコマンドオブジェクトと１つの接続詞を含む）、リターン型式（メッセージ又はエラー重大度を含む）、オブジェクトポインター、及び、他の型式の従来型オブジェクト指向のオブジェクト型式でもある。制御クラスは、記号表２０、文法情報２４及び状態ルックアップ表２５、及び、部分的ストリングとホールド又は一時的オブジェクトを含んでいる言語パーサーの要素、を含んでいる。インタフェースには、航行データベースインタフェース２６など補助アプリケーション情報２６とのインタフェース、ユーザーインタフェース５０とのインタフェース、ＦＭＳなど外部制御又はシステム６０とのインタフェース、が含まれる。これらのインタフェースは、システムへの外部変更が分離されるように、ベースクラスであるように設計されている。
【００５２】
ソフトウェアの構成と実行
図２は、記号ルックアップ及び送信モジュール７０と、文法適用及び追加モジュール７２と、単語型式又はデータ入手モジュール７４と、翻訳及び送信モジュール７６の４つの内部論理ブロック／モジュールを備えている本発明の言語パーサー１０の代表的な実施形態を示している。
【００５３】
これらのモジュールのオペレーションに関する議論は、例を挙げて行うと分かり易い。ＦＭＳの実施形態では、ユーザーは、交差する制約を反映するコマンドストリング「Ｃｒｏｓｓ  ＭＣＷ  ａｔ  ｏｒ  ａｂｏｖｅ  ＦＬ２１０」を入力のを欲するかもしれず、ここに、ＭＣＷは場所の記号であり、ＦＬ２１０は高度の記号であり、これが、ＦＭＳ制御６０に提供されることになるコマンドストリングである。ユーザーは、ユーザー入力装置５０を使用してこのコマンドを入力する。
【００５４】
ストリングを前処理する際は、ストリング又は部分的なストリングがユーザーによって提供される。上記コマンドストリングを開始するため、ユーザーは、英数字キーパッドで「Ｃ」を入力するか、何らかの適する入力機構５０から「ｃｒｏｓｓ」という単語全体を入力するか、の何れかで開始する。この入力１２は、最初は、記号ルックアップ及び送信モジュール７０によって取り扱われる。
【００５５】
入力装置５０によって部分的ストリング「Ｃ」が最初に入力されると、「Ｃ」は、言語パーサー１０に送られ、処理される。パーサー１０は、概括的には、スペースを加え／取り除き、数字を識別し、部分的ストリングを古い未処理ストリングと併合し、他のデータベースで検査する試みを行うストリングのフォーマットを実行する。この例では、記号ルックアップ及び送信モジュール７０は、部分的ストリングのバッファ２２を検査して、古い未処理のストリングがあるか否かを調べる。これは新しいコマンドなので、部分的ストリングバッファ２２は、前回送られたコマンドがこれをクリアしたため、又はこのバッファ２２の初期化の或る種の形態のため、の何れかのため、空である。
【００５６】
次に、記号ルックアップ及び送信モジュール７０は、記号表２０（図１及び図２）を使って入力を有効な記号オブジェクトと識別しようと試みる。一般に、ストリングの前処理は、フォーマットされた入力ストリングを未処理／部分的ストリングとして部分的ストリングのバッファ２２内に保存するか、それを更なる数字処理に送るか、或いはそれを更なるストリング処理に送る。この例では、「Ｃ」は、記号表２０を使って検査されるが、この表は、使用される可能性のある単語を備えており、合法的なこれらの単語（この例では、コマンドを開始する単語）を文法情報２４で検査する。「Ｃ」で始まる可能性のある単語のリストは、ユーザーがピックリストから単語の１つを選択できるように、ユーザーにユーザーインタフェース５０上で表示される。ユーザーは、呈示されたリストから単語を選択するか、残っている文字についてキーボードで入力を繰り返すことによって、「ｃｒｏｓｓ」という単語の入力を完了する。この実施形態では、ユーザー入力装置から言語パーサーへの通信は、制御抽象層のシミュレーションによって行われるが、一般的には、どの様な既知のプロトコルを使用してもよい。
【００５７】
ストリングを記号に翻訳する試み、例えば「ｃｒｏｓｓ」の記号を発見する試みが行われる。翻訳が失敗すれば、次に、オブジェクトを補助アプリケーション（ＦＭＳ）情報データベース２６内に配置する試みが行われる。ストリングは、データベース２６内に発見できなければ、未処理のストリングとして保存され、ユーザーには警告が発せられる。パーサー１０が入力「ｃｒｏｓｓ」を処理し、この入力を、その記号表２０を使って有効な記号オブジェクトとして識別すると、単語「ｃｒｏｓｓ」は、文法情報２４に基づき、単語型式又はデータ入手モジュール７４によって、特殊な記号型式８２と識別される。単語型式入手モジュール７４は、記号ルックアップ及び送信モジュール７０が提供するストリング１８を受信し、発見されれば、関係している記号型式８２（例えば、名詞、動詞、接続詞、前置詞、パラメータ、列挙）を送り返す。発見されなければ、ユーザーにエラーが戻されるか、又は何か別の形態のエラー操作が呼び出される。
【００５８】
記号ルックアップ及び送信モジュール７０が記号型式８２を受信すると、パーサー１０は、記号オブジェクト８０を作り、それを、文法適用及び追加モジュール７２に送り、そこで文法情報表２４と状態表２５に保存されている文法規則に対して記号オブジェクト８０を処理し、コマンドオブジェクト８４を作る。文法適用及び追加モジュール７２は、ホールドオブジェクトが待機しているかどうか検査する。あれば、記号オブジェクト８０はホールドオブジェクトに加えられ、この組み合わせオブジェクトは、エラーが起こらなければ、記号オブジェクト８０として処理される（そうでない場合は、適切なエラー取扱が呼び出される）。ホールドオブジェクトが待機していなければ、文法は、記号が合法的に次に入ることを保証するため検査される。文法検査が成功しなければ、接続詞又は動詞の自動差込を実行する試みが行われる。これが失敗すると、既存の記号を使ってホールドオブジェクトが作られるか、又は、ユーザーに、ユーザー選択を入力するよう促す。文法検査が成功すると、処理され、記号は文法に加えられる。
【００５９】
本例では、「ｃｒｏｓｓ」記号オブジェクトが、文法適用及び追加モジュール７２によって、文法規則及び状態表に対して処理され、コマンドオブジェクト８４が作られる。この時点で、パーサー１０は、「可能性のある次の」単語のリストを減らし、合法的に「ｃｒｏｓｓ」に続く単語だけにすることができ、随意的に、それらをユーザーに表示する。
【００６０】
次に、ユーザーは、ユーザー入力装置で、航行記号「ＭＣＷ」の一部として「Ｍ」を入力し、記号ルックアップ及び送信モジュール７０が起動する。先のように、パーサー１０は、入力を有効な記号オブジェクトとして識別しようとする。そうできなければ、入力を部分的ストリングとして部分的ストリングのバッファ２２内に保存し、追加の入力を待つか、エラーメッセージを発行する。ここでも、パーサー１０は、「可能性のある次の」単語のリストを「Ｍ」で始まる単語だけに減らし、それをユーザーに表示する。ユーザーは、続けてキーボードで「ＣＷ」を入力する。再び、パーサー１０は、入力を有効な記号オブジェクトとして識別しようとし、それを部分的ストリングとしてバッファ２２内に保存し、恐らく、この入力ストリングを部分的ストリングのバッファ２２の内容に加え、追加の入力を待つか、又はエラーメッセージを発行する。パーサー１０は、「可能性のある次の」単語のリストを「ＭＣＷ」で始まる単語だけに減らし、この代表的な例では、無いのでユーザーインタフェースは選択肢を表示しない。
【００６１】
次に、ユーザーは、スペース（「  」）を入力し、パーサー１０は、入力を有効な記号オブジェクトとして識別しようとする。この場合、「ＭＣＷ」は単語型式又はデータ入手モジュール７４に送られ、これは通常のコマンド単語の１つではないので、翻訳及び送信モジュール７６に伝えられ、そこで補助アプリケーション情報２６（この場合、航行データベース）に照会される。「ＭＣＷ」は、航行記号としてこのデータベース２６内で発見され、記号とその型式が戻される。パーサー１０は、記号オブジェクトを、文法適用及び追加モジュール７２内で文法規則２４と状態表２５に対して処理し、（「ＭＣＷ」としての）記号を先に作成したコマンドオブジェクト（「ｃｒｏｓｓ」）８４に追加する。パーサー１０は、「可能性のある次の」単語のリストを、出来上がった組み合わせコマンドオブジェクト（「ｃｒｏｓｓＭＣＷ」）に合法的に従うものだけに減らし、随意にそれをユーザーに表示する。
【００６２】
次に、提供している例では、ユーザーは、ユーザーインタフェースで、高度を表す「ＦＬ２１０」を入力する。パーサー１０は、記号オブジェクトを単語型式又はデータ入手モジュール７４内で文法規則２４と状態表に対して処理するが、この場合は、記号を、先に作成したコマンドオブジェクトに追加しない。次に、ユーザーはスペース（「  」）を入力し、パーサー１０は、記号オブジェクトを単語型式又はデータ入手モジュール７４内で文法規則２４と状態表に対して処理する。この時点では、曖昧さを排除するため（ユーザー選択入手ルーチン８６を呼び出す）「ユーザーの選択」が求められているので、システムは、「ＦＬ２１０」高度記号を、先に作成したコマンドオブジェクトに追加できない。
【００６３】
高度はまだコマンドオブジェクトに加えられていないので、パーサー１０は、文法適用及び追加モジュール７２内に「挿入」単語（例えば、ａｂｏｖｅ、ａｆｔｅｒ、ａｆｔｅｒ  ａｔ、ａｔ、ａｔ  ａｎｄ  ｍａｉｎｔａｉｎ、ａｔ  ｏｒ  ａｂｏｖｅ、ａｔ  ｏｒ  ａｆｔｅｒ、ａｔ  ｏｒ  ｂｅｆｏｒｅなど）のリストを作成する。これらの挿入単語は、ユーザーに表示される。ユーザーは、次に、これらの内の１つを選択するか、代わりに、できればキーボードを介して内容をクリアするために「削除」又は「クリア」を選択する。
【００６４】
呈示している例では、ユーザーは「ａｔ  ｏｒ  ａｂｏｖｅ」を入力する。パーサー１０は、記号オブジェクトを文法適用及び追加モジュール７２内で文法規則２４と状態表２５に対して処理し、先に作成したコマンドオブジェクトに記号を追加する。パーサーは、ここでも、「可能性のある次の」単語のリストを作成する。
【００６５】
これで完全なストリングが入力されたので、ユーザーは、「ＧＯ」を入力し、送信コマンド入力１２を介してコマンドストリングを呼び出す。パーサー１０は、コマンドオブジェクト８４を処理する。継承と属性のマッピングを使って、コマンドオブジェクト８４は、交差制約と識別され、パーサー１０によって、制御器６０が飛行変更プランとして実行できるフォ−マットに翻訳される。パーサー１０は、次に、「可能性のある次の」単語のリストを作成する。これがコマンドの終わりであれば、パーサーは、ユーザーインタフェース５０、コマンドストリングのバッファ、及び、システムの他の各バッファの表示エリアをクリアし、別のコマンドを受け取る準備をする。代わりに、ユーザーが、内容を削除又はクリアしてもよい。
【００６６】
本発明の方法
以上、本発明のシステム及び操作方法について２つの具体的な例に関連付けて説明してきた。以下、本発明の方法について手順方式で説明する。本発明の方法は、１）ストリングを前処理する段階、２）ストリングを処理する段階、３）数字を前処理する段階、４）文法を使って記号を処理する段階、５）記号を追加する段階、６）記号を一時的なオブジェクトに追加する段階、及び７）コマンド又は出力ストリングを送信する段階、のルーチンを含んでいる。これらのルーチンについては、以下に更に詳細に、具体的な例に言及しないで述べる。注記している場合を除き、ストリングの前処理と処理は、記号ルックアップ及び送信サブシステム７０によって実行され、一方、残りの処理機能は、文法適用及び追加サブシステム７２によって実行される。
【００６７】
ストリングを前処理する段階
図３に示しているように、ユーザー入力要素１８である入力ストリング１０２は、入力ストリング１０２の予備処理１００を提供する１つ又は複数の機能１０４によって処理される。これらの機能１０４には、スペースを適切な場所で追加及び／又は除去する機能、数字を識別する機能、古い未処理ストリングとの併合を実行する機能、データベース検査を実行する機能（補助アプリケーション情報データベース２６を使って単語型式又はデータ入手サブシステム７２によって実行される）、及び他の機能が含まれる。この結果、前処理されたストリングは、未処理ストリング１０６として保存されるか、数字２０２として翻訳されるか、次の合法的ストリング１５２として解釈されるようになる。
【００６８】
ストリングを処理する段階
前処理ルーチンによって次の合法的ストリング１５２の作成が完了すると、図４に依るストリングの処理ルーチン１５０は、次の合法的ストリングを取り１５２、それを記号に翻訳しよう１５４とする。この翻訳が失敗する１５８と、（補助アプリケーション情報データベース２６内で単語型式又はデータ入手サブユニット７４によって）検索が実行され１６０、記号オブジェクト１６２が突き止められる。このデータベース検索１６０は、記号翻訳１５４が成功した場合１５６は実行されない。記号オブジェクト１６２には、（後に更に詳細に定義するように）何らかの待機数字が追加され３０２ており、この組み合わせは、後に更に詳細に定義するように、処理記号によって、文法規則を使って処理される２５２。
【００６９】
数字を前処理する段階
図５に示すように、新しい数字２０２が数字の前処理ルーチン２００に提供されると、待機している数字があるか否かを知るために試験が行われる。待機している数字がある場合２１８、新しい数字は待機している数字に加えられる２２０。そうでない場合は、文法検査が実行される２０６。この文法検査が失敗する２０８と、エラー処理が実行され２１０、ユーザーへのエラーメッセージとなる。しかし、文法検査２０６が成功すると２１２、文法は処理され２１４、数字の位置ホルダーがホールドオブジェクトに追加される２１６。
【００７０】
文法を使って記号を処理する
図６は、文法２５０を使って記号を処理するためのルーチンを示している。ホールドオブジェクトが待機しているか否かを判断する２５２ために、試験が行われる。待機していれば２７８、記号をホールドオブジェクトに追加する３５２試みが行われる。このオペレーションは、成功する２８０こともあるが、失敗する２８２と、ホールドオブジェクトを処理する２８４試みが行われる。このオペレーションが失敗する２８８と、エラー取扱が実行される２９０。成功する２８６と、このルーチン２５０が繰り返される。
【００７１】
同様に、記号を処理するとき、待機しているホールドオブジェクトが無ければ２５４、文法検査が試みられる２５６。この検査が成功する２５８と、文法が処理され２６０、以下に説明するように記号が追加される３０２。文法検査が失敗する２６２と、接続詞又は動詞を自動挿入する試みが行われる２６４。このオペレーションは成功する２６６こともあるが、失敗する２６８と、オブジェクトを保持する試みが行われる２７０。ホールドオブジェクトの試みは成功する２７２こともあるが、失敗する２５２３と、ユーザーは、選択肢を入力する２７６ように求められ、その選択肢は、記号ルックアップ及び送信モジュール７０を介して受け取られる。
【００７２】
記号を追加する
記号の追加３００を図７に示している。先のルーチンと同様に、待機している一時的なオブジェクトがあるか否かを知るために試験が行われる３０２。待機している一時的なオブジェクトが無い３０４場合は、記号を最新のオブジェクトに追加する試みが行われる３０６。その試みが成功する３０８と、これが、コマンドオブジェクト又は一時的なオブジェクトに新しい記号が追加された後で意味的構文解析３１４が行われるきっかけとなる。記号を最新のオブジェクトに加えるのが成功しなかった３１０場合、一時的なオブジェクトが作られる３１２。
【００７３】
一時的なオブジェクトが待機している３２０場合は、記号を一時的なオブジェクトに追加する３５２試みが行われ、それは成功する３２２こともあるし、失敗する３２４こともある。失敗した３２４場合、一時的なオブジェクトを追加する３２６試みが行われる。この追加が成功した３２８場合、記号が追加され３３４、処理が繰り返される３００。
【００７４】
記号を一時的なオブジェクトに追加する
図８に示すように、記号を一時的なオブジェクトに追加するルーチン３５０に従って、記号をオブジェクトに追加する３５２試みが行われる。この試みは、成功する３５４こともあるし、失敗する３５６こともある。失敗した場合、記号は、（標準的なオブジェクト指向技法を使って）その親オブジェクトに変換され３５８、次に、変換された記号をオブジェクトに加える３５８試みが行われる。この試みは、成功する３６０こともあるし、失敗する３６２こともある。失敗した３６２場合は、新しい即ち変換された記号と一時的なオブジェクトの両方に追加できる「欠落」オブジェクトを求めて検索が行われる３６４。次に「欠落」オブジェクトを追加し、記号又は変換された記号を追加する試みが行われる３６５。この試みは、成功する３６６こともあるし、失敗する３６８こともある。失敗した３６８場合は、記号を一時的な記号にし、オブジェクトをそれに追加する３７０試みが行われ、それは成功する３７２こともあるし、失敗する３７４こともあり、失敗した場合は、エラー取扱が開始される。何れにしても、ルーチン３５０が繰り返される。
【００７５】
コマンドを送信する
送信コマンド取扱４００を図９Ａと図９Ｂに示している。図９Ａに示すように、送信コマンドを呼び出す４０２ことは、未処理ストリングの処理を試みる４０４ことを含んでいる。この試みが成功しなければ、エラー取扱が呼び出される４０８。成功すれば４０６、ホールドオブジェクトを処理する４１２ことのできるオペレーションで、ホールドオブジェクトの解決法が実行される４１０。何れの場合も、文法が検査され４１４、この検査が成功しなければエラー取扱が呼び出される４１６。成功した４１８場合は一時的オブジェクトの解決法が実行され４２０、適切であれば、一時的なオブジェクトが追加される４２２。何れにしても、送信することを受け入れられるか否かを知るために検査が実行され４２４、受け入れられない場合は、エラー取扱が呼び出される４２８。送信してよい４２６場合は、コマンドが翻訳され、外部システムに送信される４３０。
【００７６】
図９Ｂは、意味的構文解析３１４を受けるコマンドの処理４３２を示している。コマンドは、外部システムの数字に変換され４３４、次に、各オブジェクトが外部システムの値に翻訳される４３６。次に、対応する外部システムスクリプトが実行され４３８、問題がある場合はエラー取扱を呼び出し、成功した４４０場合は、文法情報をリセットする４４４。
【００７７】
本発明を、機能ブロック構成要素と様々な処理段階について説明する。そのような機能ブロックは、特定の機能を実行するように構成されているどの様な数のハードウェア及び／又はソフトウェア構成要素で実現することもできる。例えば、本発明は、１つ又は複数のマイクロプロセッサ又は他の制御装置の制御の下で様々な機能を実施することのできる、例えば、メモリ要素、処理要素、論理要素、ルックアップ表などの様々な集積回路構成要素を使用してもよい。同様に、本発明の要素がソフトウェアプログラミング又はソフトウェア要素を使って実施される場合、本発明は、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、アッセンブラなど、どの様なプログラミング又はスクリプティング言語を使って実施してもよく、様々なアルゴリズムを、データ構造、オブジェクト、プロセス、ルーチン又は他のプログラミング要素のどの様な組み合わせを使って実施してもよい。更に、本発明は、電子機器の構成、信号の処理及び／又は制御、データ処理などのため、どの様な数の従来の技法を採用してもよい。
【００７８】
ここに図示し、説明した具体的な実施形態は、本発明の分かり易い例であり、本発明の範囲を制限する意図は全くない。簡単にするために、従来型の電子機器、制御システム、ソフトウェアの開発、及び本システムのこの他の機能的態様（及び、システムの個々の作動構成要素の構成要素）については、詳しく説明していない。更に、呈示した様々な図面に示している接続線又はコネクタは、代表的な機能上の関係、及び／又は、様々な要素の間の物理的又は論理的結合を表すためのものである。実際の装置では、多くの代替案又は追加の機能的関係、物理的な接続又は論理的な接続があることを強調しておく。更に、本発明の実施にとって、要素が具体的に「不可欠」又は「重要」と記載されていなければ、その部品又は構成要素が不可欠なわけではない。当業者には自明のように、本発明の精神及び範囲から逸脱すること無く、多くの修正及び調整を施すことができる。
【図面の簡単な説明】
【００７９】
【図１】システム内の高レベルのデータの流れとデータの表を示すブロック図である。
【図２】パーサーの内部論理モジュールとそれらの互いとの対話のブロック図である。
【図３】ストリングの前処理を示す流れ図である。
【図４】ストリングの処理を示す流れ図である。
【図５】数字の前処理を示す流れ図である。
【図６】文法を使った記号の処理を示すブロック図である。
【図７】記号を加える段階を示す流れ図である。
【図８】一時的オブジェクトに記号を加える段階を示す流れ図である。
【図９Ａ】送信されたコマンドの実行を示す流れ図である。
【図９Ｂ】送信されたコマンドの実行を示す流れ図である。
【図１】
2007514991.tif 000004
【図２】
2007514991.tif 000005
【図３】
2007514991.tif 000006
【図４】
2007514991.tif 000007
【図５】
2007514991.tif 000008
【図６】
2007514991.tif 000009
【図７】
2007514991.tif 000010
【図８】
2007514991.tif 000011
【図９Ａ】
2007514991.tif 000012
【図９Ｂ】
2007514991.tif 000013
【手続補正書】
【提出日】平成18年7月4日(2006.7.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
言語入力を受け取り、条件付の言語出力を作成するための自然言語パーサー（１０）において、
１つ又は複数の単語、部分的単語、数字、言語記号、及び送信コマンドを備えているユーザーインタフェース（５０）からのユーザー入力要素（１８）を受け取るように構成されている入力（１２）と、
完成した、構文的に正しく構文解析された出力ストリング（１７）を外部システム（６０）に出力するように構成されている出力（１７）と、
階層オブジェクトモデル（２０）に従って構成され、可能性のある有効なユーザー入力要素（１８）を表す複数の記号オブジェクト（８０）を備えている記号表（２０）であって、前記記号オブジェクト（８０）は、オブジェクト指向ベースの階層構造に基づいており、マップされる記号オブジェクト（８０）は、前記記号表（２０）の対応する記号オブジェクト（８０）と構文的規則に基づいて前記ユーザー入力要素（１８）にマップされる、記号表（２０）と、
文法情報及び状態表（２４、２５）であって、
前記外部システム（６０）と共に用いられる合法的なステートメントを表す複数の文法出力オブジェクト（８４）であって、前記文法情報及び状態表（２４、２５）は、前記完成した、構文解析された出力ストリング（１７）に厳格な制約のセットを提供し、構文的に正しくないストリングを認可せず、前記文法情報及び状態表（２４、２５）は、意味的規則に基づいて階層的に構造化された記号表（２０）の１つ又は複数のマップされた記号オブジェクト（８０）に基づいて、マップされた出力オブジェクト（８４）を作成するのに用いられ、前記文法情報及び状態表（２４、２５）は、構文的に正しくないユーザー入力要素（１８）を認可しないようにするため前記記号表（２０）と対話する、複数の文法出力オブジェクト（８４）と、
具体的な出力がユーザーによって累進的に入力されるにつれて、前記出力の状態を反映するよう構成されている状態表（２５）と、を備えている文法情報及び状態表（２４、２５）と、
出力オブジェクト（８４）対出力ストリング（１７）のマッピングを有する翻訳表（２８）を備えている翻訳機（７６）であって、前記翻訳表（２８）からの情報と前記出力オブジェクト（８４）を組み合わせて、前記構文解析された出力ストリング（１７）を作るように構成されている、翻訳機と、を備えているパーサー（１０）。
【請求項２】
前記外部システム（６０）は、乗物、機械及びシステムの内の少なくとも１つのための制御器であり、前記乗物制御器（６０）は、航空機ＦＭＳ制御器であり、前記構文解析された出力ストリング（１７）は、ＦＭＳコマンドである、請求項１に記載のパーサー（１０）。
【請求項３】
前記複数の記号オブジェクトは、文法オブジェクト、汎用オブジェクト、制御クラス及びインタフェースを備えており、
前記制御クラスは、記号型式リストと、文法及び状態インタフェースと、状態ルックアップ表を備えており、
前記汎用オブジェクトは、記号オブジェクトと、数字オブジェクトと、オブジェクトリストと、一時的なオブジェクトを備えており、
前記文法オブジェクトは、動詞と、接続詞と、前置詞と、パラメタを備えている、請求項１に記載のパーサー（１０）。
【国際調査報告】
2007514991.tif 000014
2007514991.tif 000015
2007514991.tif 000016