JP2005209176A - アプリケーションをコンパイルするための方法 - Google Patents

アプリケーションをコンパイルするための方法 Download PDF

Info

Publication number
JP2005209176A
JP2005209176A JP2004371582A JP2004371582A JP2005209176A JP 2005209176 A JP2005209176 A JP 2005209176A JP 2004371582 A JP2004371582 A JP 2004371582A JP 2004371582 A JP2004371582 A JP 2004371582A JP 2005209176 A JP2005209176 A JP 2005209176A
Authority
JP
Japan
Prior art keywords
logic module
computer
declarative
procedural
semantic
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.)
Pending
Application number
JP2004371582A
Other languages
English (en)
Inventor
Hsiao-Wuen Hon
ホン シャオ−ウェン
Kuansan Wang
ワン クアンサン
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005209176A publication Critical patent/JP2005209176A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Peptides Or Proteins (AREA)

Abstract

【課題】アプリケーションのコンパイラにおいて、宣言型言語コードと手続き型言語コードの間を統合できるようにする。
【解決手段】少なくとも1つの意味スロットを有する意味オブジェクトを定義するように適合された宣言型論理モジュール226内の意味オブジェクトにアクセスが行われて、宣言型論理モジュール226を参照して前記1つの意味オブジェクトに対して実行されるアクションを定義するように適合された手続き型論理モジュール224内でアクションが実行される。
【選択図】図3

Description

本発明は、アプリケーションをコンパイルするための方法に関する。より詳細には、本発明は、ユーザ/コンピュータ対話を定義し、扱うための方法およびシステムに関連し、分散意味スキーマを利用して、ユーザ入力をコマンドまたはエンティティに分析する(resolve)システムに関する。
通常のコンピュータシステムでは、ユーザ入力は、固定されたフォーマットを有する厳格な1組のユーザ応答に制限されている。例えば、コマンドラインインタフェースでは、ユーザ入力は、単一のコマンドと、限られた特定の可能な引数の定義域から選択された引数とを一意に識別する特定の形態でなければならない。同様に、グラフィカルユーザインタフェースでは、限られたオプションセットだけがユーザに提示され、開発者が、限られたユーザ入力セットの中のそれぞれの特定のユーザ入力について限られたコマンドセットまたはエンティティセットから成るユーザ入力ドメインを定義することが、比較的簡単である。
ユーザを許される入力または応答の厳格なセットに制限することにより、コンピュータシステムは、ユーザまたは操作者に相当なレベルの技能を要求している。実行すべき所望のタスクを、コンピュータシステム上で動作するアプリケーション群によって認識される特定の入力に頭の中で変換することは、従来、ユーザの責任であった。コンピュータシステムの使いやすさを拡張するため、アプリケーション群に自然言語(NL)インタフェースを備えようとする進行中の取り組みが存在する。自然言語インタフェースは、アプリケーション群の機能を限られた入力セットを超えて拡張し、自然言語フォーマットの入力に対してコンピュータシステムを開放する。自然言語インタフェースは、比較的あいまいで、コンテキストに依拠する度合いの高い(highly context based)領域の自然言語をコンピュータアプリケーションによって要求される正確で厳格な入力セットに変換することを実行することを担う。
自然言語インタフェースは、意味オブジェクトおよび様々なアクションを利用して、自然言語入力をアプリケーションによって使用される情報に変換する。自然言語インタフェースと対話するアプリケーション群を作成する場合、アプリケーション開発者は、手続き型プログラミング言語および宣言型プログラミング言語を使用して意味オブジェクトおよびアクションを実装することができる。C、C++、C#、およびFortranのような手続き型プログラミング言語は、アプリケーションの動作中にデータオブジェクトに対して実行される様々なアクションを定義することができる。XML(Extensible Markup Language)、LISP(list processor)、およびPrologのような宣言型プログラミング言語は、アプリケーションの意味オブジェクトを定義することができる。
しかし、宣言型言語コードと手続き型言語コードの間の統合を作成者が開発するのは困難であった。1つのアプローチでは、意味オブジェクトが宣言型言語によって表されるが、作成者は、その意味オブジェクトを使用する各アクションについて意味オブジェクト宣言を複製することを要求される。別のアプローチでは、意味オブジェクトの隠蔽された(obscured)宣言が手続き型言語において使用され、これにより、作成者が、意味オブジェクト群の関係を追跡し、保持することが要求される。このため、手続き型論理モジュール群と宣言型論理モジュール群を統合する作成ツールが有用である。
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている(例えば、非特許文献1参照)。
Microsoft Corporation, "Common Language Runtime Overview", The .Net Framework Developer's Guide, 2000.
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、宣言型言語コードと手続き型言語コードの間の統合を実現するアプリケーションをコンパイルするための方法を提供することにある。
本発明は、コンピュータ上で実施されたとき、コンピュータに情報を処理させる命令群を有するコンピュータ可読媒体に関する。命令群は、少なくとも1つの意味スロットを有する意味オブジェクトを定義するように適合された宣言型論理モジュール、および宣言型論理モジュールを参照して前記1つの意味オブジェクトに対して実行されるアクションを定義するように適合された手続き型論理モジュールを含む。
本発明の別の態様は、アプリケーションをコンパイルするための方法に関する。方法は、宣言型論理モジュールに対応する手続き型論理モジュール内の指定を識別することを含む。宣言型論理モジュール内の意味オブジェクトにアクセスが行われて、手続き型論理モジュール内でアクションが実行される。
さらに別の態様は、自然言語入力を処理するための手続き型論理モジュールに関する。モジュールは、少なくとも1つのスロットを有する意味オブジェクトを定義する宣言型論理モジュールに対応する指定、および意味オブジェクトを使用して宣言型論理モジュールに対してアクションを実行するように適合された手続き型コードを含む。
ユーザからの自然言語入力を処理するためのコンピュータ可読媒体が、本発明の別の態様を含む。コンピュータ可読媒体は、複数の手続き型論理モジュールを含む。各手続き型論理モジュールは、階層構造に構成された複数の意味オブジェクトを定義する宣言型論理モジュールに対応する指定を含む。さらに、各意味オブジェクトは、自然言語入力が入ることが可能な複数のスロットを含む。
本発明によれば、宣言型言語コードと手続き型言語コードの間の統合を実現できる。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。図1は、本発明を実施することができる適切なコンピューティングシステム環境100の例を示している。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の用途または機能の範囲について何ら限定を示唆するものではない。また、コンピューティングシステム環境100が、典型的な動作環境であるコンピューティングシステム環境100に例示するコンポーネントのいずれか1つ、または組み合わせに関連するどんな依存関係または要件をも有するものと解釈すべきでない。
本発明は、他の多数の汎用または専用のコンピューティングシステム環境またはコンピューティングシステム構成で機能する。本発明で使用するのに適している可能性がある周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC(personal computer)、ミニコンピュータ、メインフレームコンピュータ、電話システム、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、以上には限定されない。
本発明は、コンピュータによって実行されている、プログラムモジュール群などのコンピュータ実行可能命令群の一般的な状況で説明することができる。一般に、プログラムモジュール群には、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。また、本発明は、通信ネットワークを介してリンクされたリモート処理デバイス群によってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュール群は、メモリ記憶装置を含むローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体の両方の中に配置することができる。プログラム群およびモジュール群によって実行されるタスクを以下に、図の助けを借りて説明する。当業者は、以下の説明および図を、任意の形態のコンピュータ可読媒体上に書き込むことができるプロセッサ実行可能命令群として実装することができる。
図1を参照すると、本発明を実施するための典型的なシステムが、コンピュータ110の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ110のコンポーネント群には、プロセッサ120、システムメモリ130、ならびにシステムメモリからプロセッサ120までを含む様々なシステムコンポーネントを結合するシステムバス121が含まれることが可能であるが、以上には限定されない。システムバス121は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺機器バス、およびローカルバスを含め、いくつかのタイプのバス構造のどれであってもよい。例として、限定としてではなく、そのようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニン(Mezzanine)バスとしても知られるPCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスすることができる任意の利用可能な媒体とすることが可能であり、揮発性媒体と不揮発性媒体、リムーバブル媒体とノンリムーバブル媒体がともに含まれる。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性媒体と不揮発性媒体、リムーバブル媒体とノンリムーバブル媒体がともに含まれる。コンピュータ記憶媒体には、RAM(random access memory)、ROM(read only memory)、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュメモリまたは他のメモリ技術、CD(compact disc)−ROM、DVD(Digital Versatile Disc)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータ110がアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波、またはその他の移送機構などの変調されたデータ信号にコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実体化し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号に情報を符号化するような形でその特性の1つまたは複数が設定されている、または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、RF(radio frequency)媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、以上の媒体のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含めるべきである。
システムメモリ130は、読み取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132のような揮発性メモリおよび/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ110内部の要素間で情報を転送するのを助ける基本ルーチンを含むBIOS(Basic Input/Output System)133が、通常、ROM131の中に格納される。RAM132は、通常、プロセッサ120が即時にアクセスすることができ、かつ/またはプロセッサ120によって現在、処理されているデータおよび/またはプログラムモジュール群を含む。例として、限定としてではなく、図1は、オペレーティングシステム134、アプリケーションプログラム群135、その他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、その他のリムーバブル/ノンリムーバブル、揮発性/不揮発性のコンピュータ記憶媒体も含むことが可能である。単に例として、図1は、ノンリムーバブル不揮発性の磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ141、リムーバブル不揮発性の磁気ディスク152に対して読み取りまたは書き込みを行う磁気ディスクドライブ151、およびCD−ROMまたは他の光媒体などのリムーバブル不揮発性の光ディスク156に対して読み取りまたは書き込みを行う光ディスクドライブ155を示している。典型的な動作環境において使用することができるその他のリムーバブル/ノンリムーバブル、揮発性/不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれるが、以上には限定されない。ハードディスクドライブ141は、通常、インタフェース140のようなノンリムーバブルメモリのインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インタフェース150のようなリムーバブルメモリのインタフェースでシステムバス121に接続される。
前述し、図1に示す以上のドライブ群、および関連するコンピュータ記憶媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージがコンピュータ110に提供される。図1では、例えば、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム群145、その他のプログラムモジュール群146、およびプログラムデータ147を格納していることが示されている。以上のコンポーネント群は、オペレーティングシステム134、アプリケーションプログラム群135、その他のプログラムモジュール群136、およびプログラムデータ137と同一であることも、異なることも可能であることに留意されたい。オペレーティングシステム144、アプリケーションプログラム群145、その他のプログラムモジュール群146、およびプログラムデータ147に、ここでは、少なくともこれらが異なるコピーであることを示すために異なる符号を与えている。
ユーザは、キーボード162、マイク163、ならびにマウス、トラックボール、またはタッチパッドなどのポインティングデバイス161を介してコマンドおよび情報をコンピュータ110に入力することができる。その他の入力デバイス群(図示せず)には、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることが可能である。自然ユーザインタフェースアプリケーション群に関して、ユーザは、音声、手書き、注視(gaze)(目の動き)、およびその他のジェスチャを使用してコンピュータとさらに対話する(communicate)ことができる。自然ユーザインタフェースを円滑にするため、コンピュータは、マイク、手書きパッド(writing pad)、カメラ、モーションセンサ群(motion sensors)、およびユーザのジェスチャをキャプチャするための他のデバイス群も含むことが可能である。以上の入力デバイス群、およびその他の入力デバイス群は、しばしば、システムバスに結合されたユーザ入力インタフェース160を介してプロセッサ120に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインタフェースおよびバス構造で接続してもよい。モニタ191、またはその他のタイプのディスプレイデバイスも、ビデオインタフェース190のようなインタフェースを介してシステムバス121に接続される。モニタに加え、コンピュータは、出力周辺インタフェース195を介して接続することができるスピーカ197やプリンタ196のような他の周辺出力デバイス群も含むことが可能である。
コンピュータ110は、リモートコンピュータ180のような1つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境において動作することもできる。リモートコンピュータ180は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードであることが可能であり、通常、コンピュータ110に関連して前述した諸要素の多く、またはすべてを含む。図1に示す論理接続には、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173が含まれるが、その他のネットワークも含まれることが可能である。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
LANネットワーキング環境で使用される場合、コンピュータ110は、ネットワークインタフェースまたはネットワークアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は、通常、インターネットなどのWAN173を介して通信を確立するためのモデム172または他の手段を含む。内部にあることも、外部にあることも可能なモデム172は、ユーザ入力インタフェース160、またはその他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモートメモリ記憶装置の中に格納することができる。例として、限定としてではなく、図1は、リモートアプリケーションプログラム群185が、リモートコンピュータ180上に存在していることを示している。図示したネットワーク接続群は、典型的であり、コンピュータ間で通信リンクを確立するその他の手段も使用できることが認められよう。
通常、アプリケーションプログラム群135は、ユーザ入力インタフェース160によりコマンドラインまたはグラフィカルユーザインタフェース(GUI)を介してユーザと対話している。しかし、コンピュータシステムの使用を簡単にし、拡張しようとする取り組みにおいて、ユーザから自然言語入力を受け取ることができる入力が開発されている。自然言語または音声と対比して、グラフィカルユーザインタフェースは、正確である。うまく設計されたグラフィカルユーザインタフェースは、通常、あいまいな参照を生成することはなく、または基礎のアプリケーションに、インタフェース160を介して受け取られた入力の特定の解釈を確認することを要求することはない。例えば、インタフェースが正確であるため、入力に関するさらなる照会、例えば、「貴方は「OK」ボタンをクリックしましたか」という照会をユーザに行う要件は、通常、全く存在しない。通常、グラフィカルユーザインタフェース用に設計されたオブジェクトモデルは、実装が非常に機械的であり、厳格である。
グラフィカルユーザインタフェースからの入力とは対照的に、自然言語の照会またはコマンドは、しばしば、入力オブジェクトモデルに対する1回の関数呼び出しだけにではなく、一連の関数呼び出しに変換される。従来のライン入力またはグラフィカルユーザインタフェースの厳格で機械的な制限とは対照的に、自然言語は、人間の対話者が、しばしば無意識に、互いの知能に依拠してあいまいさを解決するコミュニケーション手段である。実際、自然言語は、まさに機械的でないという理由で「自然」であると見なされる。人間の対話者は、文脈上の情報、ならびに発話をとりまくいくつもの分野に関する手がかりに基づいてあいまいさを解決する。「Forward the minutes to those in the review meeting on Friday(金曜日の審査会議の参加者に議事録を回せ)」という文は、全くさらなる説明なしに完全に理解可能な文である。しかし、マシンの機械的な観点からは、正確にはどのような文書のこと、およびどの会議のことを言っているのか、正確には誰にその文書が送られなければならないのかなどの特定の詳細を指定しなければならない。
図2は、論理モジュール群202を使用する様々なアプリケーションのための自然理解インタフェース200を示す簡略ブロック図である。自然理解インタフェース200は、例えば、キーボード、ハンド認識(hand recognition)デバイスまたはジェスチャ認識デバイス、光学スキャナ、マイク、またはその他の入力デバイスを介して、ユーザ入力を受け取る。認識エンジンを使用し、ユーザ入力内の特徴を識別することができる。音声に関する認識特徴は、普通、話し言葉における語であり、手書きに関する認識特徴は、普通、ユーザの手書きにおけるストローク(stroke)に対応する。1つの特定の例では、文法を使用して、音声の発話内のテキストを認識することができる。周知のとおり、認識は、視覚的入力に関しても提供することができる。認識特徴は、1つまたは複数の論理モジュール202を利用してインタフェース200によって処理される。
論理モジュール群202は、インタフェース200内部のアプリケーション群を駆動する手続き型プログラミングコードおよび宣言型プログラミングコードを含む。例えば、コードは、XML、LISP、Prolog、C、C++、C#、Java(登録商標)、および/またはFortranを使用して書くことができる。このアプリケーション群は、論理モジュール群202内部の意味オブジェクトを使用して、知識ベース204の中の情報にアクセスする。本明細書で使用する「意味(semantic)」とは、自然言語表現の意味を指す。意味オブジェクトは、自然言語表現に対応するプロパティ、メソッド、およびイベントハンドラを定義することができる。本発明の一実施形態では、意味オブジェクトは、論理モジュール202の1つまたは複数が利用することができるエンティティを参照する1つの方法を提供する。特定のドメインアプリケーションに関連する特定のドメインエンティティは、異なる言い回しの同一のドメインエンティティをそれぞれが表す、いくつもの異なる意味オブジェクトによって識別することができる。特定のエンティティを複数の意味オブジェクトによって識別することができることを意味するのに、意味多形性(semantic polymorphism)という用語を使用することができる。意味オブジェクトの豊かさ、つまり、意味オブジェクトの数、意味オブジェクトの相互関係および複雑さは、アプリケーションが自然言語インタフェースにおいて有効にするユーザの表現力のレベルに対応する。多形性の例として、「John Doe(ジョンドウ)」、「VP of NISD(NISDのVP)」、および「Jim’s manager(ジムの管理者)」がすべて、同一人物(ジョンドウ)を指し、それぞれ、異なる意味オブジェクト、PersonByName、PersonByJob、およびPersonByRelationshipによって捕捉される。
また、意味オブジェクトは、入れ子にして、再帰的な相互関係も含め、互いに関係付けることができる。つまり、意味オブジェクトは、それ自体が意味オブジェクトである構成要素を有することが可能である。例えば、「Jim’s manager」は、2つの構成要素、すなわち、「Person」意味オブジェクトである「Jim」と、「PersonByRelationship」意味オブジェクトである「Jim’s Manager」を有する意味オブジェクトに相当する。以上の関係は、意味オブジェクト間の関係を宣言する意味スキーマによって定義される。一実施形態では、スキーマは、親子階層ツリー構造として表される。例えば、「SendMail」意味オブジェクトは、知識ベース204の中に格納されている可能のある特定の人物を指す「recipient(受信者)」プロパティを有する親オブジェクトとすることが可能である。2つの典型的な子オブジェクトを、知識ベース204からメールメッセージの受信者を識別するのに使用される「PersonByName」オブジェクトおよび「PersonByRelationship」オブジェクトとして表すことができる。
論理モジュール群202を使用して、実行されるアクション、および/または論理モジュール群202の意味オブジェクトに基づいて知識ベース204にアクセスすることができる。当業者には理解されるとおり、知識ベース204は、リレーショナルデータベースまたはオブジェクト指向データベース、Webサービス、ローカルの、または分散型のプログラミングモジュール群またはオブジェクト群、XMLドキュメント、あるいは注釈を伴う、または伴わないその他のデータ表現機構などの、ただし、以上には限定されないいくつかの形で現れる様々なタイプおよび様々な構造のデータを含むことが可能である。具体的な例には、連絡先、予定、オーディオファイル、ビデオファイル、テキストファイル、データベースなどが含まれる。次に、自然理解インタフェース200が、知識ベース204の中のデータ、および1つまたは複数の論理モジュール202に従って実行されるアクションに基づいて、出力をユーザに提供することができる。
本発明の1つの態様は、手続き型言語と宣言型言語の両方を含め、様々な言語を使用して、論理モジュール群202を書くことができるようにすることである。このため、アプリケーション開発者は、異なる言語を利用するソースファイルを書いて、実行される特定のタスクを最もよく表現することができ、各言語によって提供される特徴を活用することができる。例えば、XMLソースファイルが、意味オブジェクト宣言を含むことが可能であり、C#ソースファイルが、XMLソースファイルの中で宣言された意味オブジェクトに対して実行されるアクションを含むことが可能である。このため、クラス定義は、異なる言語で作成されたいくつかのソースファイルにわたって「分散される」(すなわち、アクセス可能である)ことが可能である。一実施形態では、ソースファイルは、共通言語ランタイム(CLR)などの共有ランタイム環境で実装することができる。
図3は、手続き型言語および宣言型言語を使用して書かれた論理モジュール群をコンパイルするためのフレームワークを示している。コンパイラ222が、少なくとも1つの手続き型論理モジュール224、および少なくとも1つ宣言型論理モジュール226からのコードを解釈する。一実施形態では、コンパイラ222は、モジュールのそれぞれ224および226の中のコードを、プロセッサが読み取ることができる機械語に変換する。さらなる実施形態では、複数の手続き型モジュールおよび宣言型モジュールが使用され、コンパイラ222によってコンパイルされることも可能である。例えば、手続き型論理モジュール224が、宣言型論理モジュール226内で定義された意味オブジェクトに対して実行されるアクションのためのコーディングを含むことが可能である。例えば、アクションをC#のような手続き型言語でコーディングすることができ、意味オブジェクトを、XMLのような宣言型言語を使用して定義することができる。
本発明の一実施形態では、手続き型論理モジュール224は、「部分クラス(partial class)」指定を含む。部分クラス指定、または部分クラス参照は、特定のクラスが複数のソースファイルにわたっていることをコンパイラ222に通知する。その結果、宣言型論理モジュール226内で宣言されているプロパティ、メソッド、および/またはイベントハンドラを手続き型論理モジュール224内で繰り返す必要がなく、このため、コンパイラ222は、そのようなプロパティ、メソッド、イベントハンドラなどが手続き型論理モジュール224内に存在しないという理由でコンパイルを中断することがない。
XMLで書かれた以下のプログラミングコードは、タイプ「foo2」の少なくとも1つのスロット「Slot1」を含むタイプ「foo1」のクラス「Class1」を宣言している。その他のスロットおよび宣言も、「Class1」を使用する特定のアプリケーションに応じて、下記のコードにおいて適用することができる。
<Class1 type="foo1">
<Slot1 type="foo2" max="10"/>
...
</Class1>
「Class1」が以上に宣言されていることから、以下に与えるようなコードを含む手続き型プログラミングモジュールを書いて「Class1」の中のスロットにアクセスすることができる。例えば、以下のコードは、別のソースファイルが「Class1」に関する宣言を含むことをコンパイラ222に通知する部分クラス「Class1」のインスタンスを作成する。以下のコードは、「Class1」手続きによって使用されるデータを保持するためのプレースホルダ(place holder)「noDoubt」を含む。例として、「Class1」の中の「Slot1」が、以下に与える「Slot1.Count()」によってアクセスされる。
public partial class Class1: SemObj{
public SemObj noDoubt; //明らかにプレースホルダであり、スロットではない
public void Evaluate(){
int size=Slot1.Count(); //XMLで定義されたSlot1にアクセスする
...//ここではドメイン論理を実装することに重点を置く
noDoubt=Slot1[0];
}
}
図4は、手続き型論理モジュール内で意味オブジェクトが宣言されることなしに、手続き型論理モジュールが意味オブジェクトに対してアクションを実行する典型的なアプリケーションを図示している。この例では、手続き型論理モジュールは、航空券予約モジュール250、ホテル予約モジュール252、およびレンタカー予約モジュール254を含む。手続き型論理モジュールのそれぞれ250、252、および254は、例えば、別個の「宣言」XMLソースファイルの中で宣言することが可能な意味オブジェクト256を参照する部分クラス指定を含む。意味オブジェクト256は、移動手段、出発の都市、到着の都市、開始日および/または終了日を含め、モジュール250、252、および254によって使用される旅行データを含む。
意味オブジェクト256は、部分クラス指定を使用することにより、手続き型論理モジュール250、252、および254のそれぞれによってアクセスすることが可能である。このため、アプリケーション開発者は、旅行意味オブジェクト256の1つのインスタンスを開発するだけでよい。航空券予約モジュール250内、ホテル予約モジュール252内、およびレンタカー予約モジュール254内に書かれたコードを実行して、旅行意味オブジェクト256の中のデータ要素のいずれか、またはすべてに対してアクションを実行することができる。その結果、冗長な宣言を減らすことができ、それによって手続き型論理と宣言型論理の統合がもたらす誤りを防止することができる時間効率の良いやり方でアプリケーション群を作成することができる。
図2に示したシステムをさらに関連する典型的な実施形態では、ユーザは、「Schedule a flight from Seattle to Minneapolis next Tuesday(来週火曜日にシアトルからミネアポリスへのフライトを予定する)」という自然言語入力をインタフェース200に与えることができる。この事例では、ワシントン州レッドモンド所在のマイクロソフトコーポレーションによって提供されるSAPI(Speech API)5.2のような音声アプリケーションプログラムインタフェースを使用して、自然言語入力内の意味オブジェクトを識別することができる。入力は、意味タグに関連付けて(シリアル化して)、図4の旅行意味オブジェクト256に入れる意味マークアップ言語などの言語に対応するフォーマットにすることができる。例えば、音声アプリケーションプログラムインタフェース(SAPI)は、以下のような出力を提供することができる。
<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>
旅行意味オブジェクト256のスロットは、自然言語入力からの情報で少なくとも部分的に占有される。次に、所望される場合、旅行意味オブジェクト256に関連する規則群および/または意味スキーマを利用して、上記の場合の旅行の終了日など、残りの未知の情報をユーザに求めることができる。旅行意味オブジェクト256のスロットの中の情報を使用して、航空券予約モジュール250のインスタンスを作成して知識ベース204にアクセスし、フライトの価格設定、予約状況(availability)などを提供することができる。さらに、ホテル予約モジュール252およびレンタカー予約モジュール254のインスタンスを作成して、それぞれの手続き型コーディングモジュール内で旅行意味オブジェクト256のさらなる宣言なしに、旅行意味オブジェクト256に基づいて可能なホテル予約およびレンタカー予約を提供することができる。したがって、旅行意味オブジェクト256は、単一の宣言で複数の手続き型プログラミングモジュールによってアクセスされることが可能である。
以上に提供した典型的な実施形態は、極めて単純化した性質のものであり、本発明の動作を例示するために提供している。以上の実施形態は、はるかに複雑なオブジェクト階層に拡張することができる本発明の動作を例示している。自然言語表現がトリビアル(trivial)ではない場合、意味オブジェクトのツリーを使用して、適切な形態で論理モジュール群202に伝えることができる形で発話の意味を十分に捕捉することができる。
したがって、本発明は、例えば、XMLのような宣言型コーディング言語を使用して、またはC#またはC++のような手続き型コーディング言語を使用して、意味オブジェクトを多数のプログラミング構文で宣言することができるようにする強力な操作ツール(operating tool)を提供する。このため、このフレームワークは、複数の手続き型プログラミングモジュールが、意味オブジェクトの複数の宣言を必要とせずに宣言型モジュールを利用するのによく適し、その逆の場合にもよく適している。オブジェクトの属性、プロパティ、メソッド、およびイベントハンドラが手続き型モジュールによって利用されて、単一の場所における手続き型モジュールのより簡単な作成が可能になる。
本発明について特定の実施形態に関連して説明してきたが、本発明の趣旨および範囲を逸脱することなく形態および詳細の変更を行うことができることが、当業者には理解されよう。
コンピューティングシステム環境を示すブロック図である。 自然理解インタフェースを使用する環境を示すブロック図である。 コンパイラと手続き型論理モジュールと宣言型論理モジュールの間の対話を示す簡略ブロック図である。 手続き型論理モジュールおよび宣言型論理モジュールを使用する典型的な実施形態を示すブロック図である。
符号の説明
200 自然理解インタフェース
202 論理モジュール群
204 知識ベース

Claims (23)

  1. コンピュータ上で実施されたとき、前記コンピュータに情報を処理させる命令群を有するコンピュータ可読媒体であって、前記命令群は、
    少なくとも1つの意味スロットを有する意味オブジェクトを定義するように適合された宣言型論理モジュールと、
    前記宣言型論理モジュールを参照して前記意味オブジェクトに対して実行されるアクションを定義するように適合された手続き型論理モジュールと
    を備えたことを特徴とするコンピュータ可読媒体。
  2. 前記宣言型論理モジュールは、XML、LISP、およびPrologの少なくとも1つを使用して実装されることを特徴とする請求項1に記載のコンピュータ可読媒体。
  3. 前記手続き型論理モジュールは、C、C++、Java(登録商標)、およびC#の少なくとも1つを使用して実装されることを特徴とする請求項1に記載のコンピュータ可読媒体。
  4. 前記命令群は、前記宣言型論理モジュールを参照して前記意味オブジェクトに対して実行されるアクションを定義するように適合された第2の手続き型論理モジュールをさらに含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  5. 前記宣言型論理モジュールは、階層構造で関連する意味オブジェクトのスキーマを定義するように適合されることを特徴とする請求項1に記載のコンピュータ可読媒体。
  6. 前記意味オブジェクトは、複数のスロットを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  7. 前記宣言型論理モジュールおよび前記手続き型論理モジュールを、プロセッサが読み取ることができる機械語に変換するように適合されたコンパイラをさらに含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  8. ユーザから自然言語入力を受け取るためのインタフェースをさらに備えたことを特徴とする請求項1に記載のコンピュータ可読媒体。
  9. 前記宣言型論理モジュールの前記少なくとも1つのスロットは、前記自然言語入力の少なくとも一部分で占有されるように適合されることを特徴とする請求項8に記載のコンピュータ可読媒体。
  10. 前記手続き型論理モジュールは、占有されている前記少なくとも1つのスロットに対してアクションを実行することを特徴とする請求項9に記載のコンピュータ可読媒体。
  11. 前記インタフェースは、占有された前記少なくとも1つのスロットに基づいて知識ベースにアクセスするように適合されることを特徴とする請求項9に記載のコンピュータ可読媒体。
  12. アプリケーションをコンパイルするための方法であって、
    宣言型論理モジュールに対応する手続き型論理モジュール内の指定を識別するステップと、
    前記宣言型論理モジュール内の意味オブジェクトにアクセスして、前記手続き型論理モジュール内でアクションを実行するステップと
    を備えることを特徴とする方法。
  13. 前記手続き型論理モジュールおよび前記宣言型論理モジュールを、プロセッサが読み取ることができる機械語に変換するステップ
    をさらに備えることを特徴とする請求項12に記載の方法。
  14. 複数の手続き型論理モジュールは、前記宣言型論理モジュールに対応する前記指定を含むことを特徴とする請求項12に記載の方法。
  15. 複数の関連する意味オブジェクトを階層構造で宣言するステップ
    をさらに備えることを特徴とする請求項12に記載の方法。
  16. 前記指定は、部分クラス指定であることを特徴とする請求項12に記載の方法。
  17. 自然言語入力を処理するための手続き型論理モジュールであって、
    少なくとも1つのスロットを有する意味オブジェクトを定義する宣言型論理モジュールに対応する指定と、
    前記意味オブジェクトを使用して前記宣言型論理モジュールに対してアクションを実行するように適合された手続き型コードと
    を備えたことを特徴とするモジュール。
  18. 前記意味オブジェクトおよび前記少なくとも1つのスロットを使用して知識ベースにアクセスするようにさらに適合されることを特徴とする請求項17に記載の論理モジュール。
  19. 前記指定は、前記意味オブジェクトを参照する部分クラス指定であることを特徴とする請求項17に記載の論理モジュール。
  20. 前記意味オブジェクトは、複数のスロットを定義することを特徴とする請求項17に記載の論理モジュール。
  21. 前記指定は、階層構造に構成された複数の意味オブジェクトに対応することを特徴とする請求項17に記載の論理モジュール。
  22. 自然言語入力を処理するためのコンピュータ可読媒体であって、
    階層構造に構成された複数の意味オブジェクトを定義する宣言型論理モジュールに対応する指定をそれぞれが含む複数の手続き型論理モジュールを含み、該意味オブジェクトはそれぞれ、前記自然言語入力で占有することができる複数のスロットを含むことを特徴とする媒体。
  23. 各指定は、部分クラス指定であることを特徴とする請求項22に記載のコンピュータ可読媒体。
JP2004371582A 2004-01-22 2004-12-22 アプリケーションをコンパイルするための方法 Pending JP2005209176A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US53830604P 2004-01-22 2004-01-22
US10/847,828 US20050166182A1 (en) 2004-01-22 2004-05-18 Distributed semantic schema

Publications (1)

Publication Number Publication Date
JP2005209176A true JP2005209176A (ja) 2005-08-04

Family

ID=34636696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004371582A Pending JP2005209176A (ja) 2004-01-22 2004-12-22 アプリケーションをコンパイルするための方法

Country Status (7)

Country Link
US (1) US20050166182A1 (ja)
EP (1) EP1557752B1 (ja)
JP (1) JP2005209176A (ja)
KR (1) KR101120758B1 (ja)
CN (1) CN1645318A (ja)
AT (1) ATE368887T1 (ja)
DE (1) DE602004007872T2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7561673B2 (en) 2004-09-30 2009-07-14 Microsoft Corporation Integration of speech services with telecommunications
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8918716B2 (en) * 2009-09-24 2014-12-23 Oracle International Corporation Context-based smart tags
US9600250B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Declarative programming model with a native programming language
US9600255B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Dynamic data and compute resource elasticity
US9658890B2 (en) 2010-10-08 2017-05-23 Microsoft Technology Licensing, Llc Runtime agnostic representation of user code for execution with selected execution runtime
US9760348B2 (en) 2010-11-29 2017-09-12 Microsoft Technology Licensing, Llc Verification of a dataflow representation of a program through static type-checking
US9851950B2 (en) * 2011-11-15 2017-12-26 Wolfram Alpha Llc Programming in a precise syntax using natural language
US20150293669A1 (en) * 2014-04-09 2015-10-15 Zulahoo, Inc. Apparatus, method, and computer system for generating contained, usable objects that are dynamically configurable
CN116820564B (zh) * 2023-07-06 2024-04-02 四川大学 程序语言的统一形式语义化方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0602263A1 (en) * 1992-12-15 1994-06-22 International Business Machines Corporation User interface program generator
EP0667586A3 (en) * 1994-02-14 1996-08-28 Digital Equipment Corp Database creation system.
US7146479B2 (en) * 2001-07-18 2006-12-05 City U Research Limited Method and apparatus of storage allocation/de-allocation in object-oriented programming environment
US6567778B1 (en) * 1995-12-21 2003-05-20 Nuance Communications Natural language speech recognition using slot semantic confidence scores related to their word recognition confidence scores
CA2165893C (en) * 1995-12-21 2001-03-13 Richard Denison Mcdonald Visual application partitioning for creating distributed object oriented applications
US6145120A (en) * 1998-03-24 2000-11-07 Lockheed Martin Corporation Declaration programming language extension for procedural programming languages
US6182277B1 (en) * 1998-04-15 2001-01-30 Oracle Corporation Methods and apparatus for declarative programming techniques in an object oriented environment
US6405368B1 (en) * 1999-04-16 2002-06-11 Brian Freyburger Method for separate compilation of templates
WO2001057720A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated Automated client-server data validation
US20030233219A1 (en) * 2002-05-23 2003-12-18 Geroge Landers Method and apparatus emulating read only memories with combinatorial logic networks, and methods and apparatus generating read only memory emulator combinatorial logic networks
AU2001295080A1 (en) * 2000-09-29 2002-04-08 Professorq, Inc. Natural-language voice-activated personal assistant
US6968541B1 (en) * 2000-10-04 2005-11-22 International Business Machines Corporation Apparatus and method for template instantiation with a cross compiler
US7047524B1 (en) * 2000-12-30 2006-05-16 Hyperformix Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language
US7246104B2 (en) * 2001-03-21 2007-07-17 Nokia Corporation Method and apparatus for information delivery with archive containing metadata in predetermined language and semantics
US7200627B2 (en) * 2001-03-21 2007-04-03 Nokia Corporation Method and apparatus for generating a directory structure
WO2002086864A1 (en) * 2001-04-18 2002-10-31 Rutgers, The State University Of New Jersey System and method for adaptive language understanding by computers
US7561673B2 (en) * 2004-09-30 2009-07-14 Microsoft Corporation Integration of speech services with telecommunications

Also Published As

Publication number Publication date
KR20050076733A (ko) 2005-07-27
ATE368887T1 (de) 2007-08-15
KR101120758B1 (ko) 2012-03-23
US20050166182A1 (en) 2005-07-28
DE602004007872T2 (de) 2007-12-20
EP1557752A2 (en) 2005-07-27
CN1645318A (zh) 2005-07-27
DE602004007872D1 (de) 2007-09-13
EP1557752B1 (en) 2007-08-01
EP1557752A3 (en) 2005-08-17

Similar Documents

Publication Publication Date Title
US8201139B2 (en) Semantic framework for natural language programming
US7689410B2 (en) Lexical semantic structure
RU2421784C2 (ru) Моделирование отношений
JP4901155B2 (ja) 音声認識装置が使用するのに適した文法を生成するための方法、媒体、およびシステム
KR101213890B1 (ko) 강한 데이터 유형을 이용하여 소프트웨어 프로그램에서음성 인식 문법을 나타내기 위한 방법
US20240036843A1 (en) Adapting existing source code snippets to new contexts
JP2005209176A (ja) アプリケーションをコンパイルするための方法
US20040122653A1 (en) Natural language interface semantic object module
Śmiałek et al. Complementary use case scenario representations based on domain vocabularies
US7752596B2 (en) Connecting alternative development environment to interpretive runtime engine
Soares et al. VoiceToModel: an approach to generate requirements models from speech recognition mechanisms
KR101130410B1 (ko) 의미 프로그래밍 언어 및 언어 객체 모델
Savic et al. Use case specification at different levels of abstraction
Melnik From “hand-written” to computationally implemented HPSG theories
John Leveraging traditional software engineering tools to ontology engineering under a new methodology
Baena-Perez et al. A framework to create conversational agents for the development of video games by end-users
JP5014584B2 (ja) 意味論的プログラミング言語および言語オブジェクトモデル
Imam et al. The Use of the Pre-Trained BERT and GPT-3 Models to Automate the Composing of Use Case Descriptions
Dorodnykh et al. Model transformations for intelligent systems engineering
CN110737431A (zh) 软件开发方法、开发平台、终端设备及存储介质
Wang Formal description of the UML architecture and extendibility
US20080222598A1 (en) Using a system of annotations to generate views and adapters
Heinroth et al. The OwlSpeak adaptive spoken dialogue manager
Ramon et al. The Guizmo Framework for Generating Final User Interfaces from Wireframes
Nguyen Natural Language Generation From Ontologies Using Grammatical Framework

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111005

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111025