JP4413286B2 - エッジデータ構造を統一する方法 - Google Patents
エッジデータ構造を統一する方法 Download PDFInfo
- Publication number
- JP4413286B2 JP4413286B2 JP16436997A JP16436997A JP4413286B2 JP 4413286 B2 JP4413286 B2 JP 4413286B2 JP 16436997 A JP16436997 A JP 16436997A JP 16436997 A JP16436997 A JP 16436997A JP 4413286 B2 JP4413286 B2 JP 4413286B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- link
- copy
- data structure
- memory
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
- G06F8/3135—Unification or backtracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99936—Pattern matching access
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Machine Translation (AREA)
Description
【発明の属する技術分野】
本発明はコンピュータを用いる自然言語処理に関する。より詳細には、本発明は、マシンの使用する特徴データ構造を単一化して、指数関数的な時間をかけずに自然言語の部分を表現する方法に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】
情報の急激な増加により、まだ実現されていない自然言語文書の自動処理に対する要求が生まれた。このようなことができれば、自然言語インタフェースにより、データベース、自然言語テキストの抜粋及び要約の自動作成、並びに自然言語の自動翻訳及び解釈を行うことができる。これらの技術の開発は、現代文法の形式の処理に必要な時間により妨げられている。
【0003】
多くの現代文法の形式は、回帰的な特徴構造を使用して自然言語表現の文法構造を述べる。特徴構造は、プロログ等の統一ベースのプログラミング言語があれば、理解及び実行が容易であるという利点を有する。しかし特徴構造は、結局は文法上の形式により理論的にも実際的にも有効に解析されることが困難であり、不利である。実際、形式によって指数関数的な時間がかかる現象の整列はまれであるが、一般に単一化ベースのパーサーが不調和であれば、適度に複雑な文を分解するのに数分かかる。
【0004】
レジー(lazy)コピーリンクは、単一化に関する処理時間を減少する別の方法である。レジーコピーリンクは、単一化ベースのチャートパーサーにより必要なコピーの量を減少することにより処理時間を減少する。
【0005】
文脈単一化は、単一化に必要な処理時間を減少する別の方法である。文脈単一化は、由来する選言肢を示す命題変数を用いて種々の選言肢を注釈することにより選択的特徴構造を統合する方法である。
【0006】
単一化に必要な処理時間を減少する全てのこれらの異なるアプローチにもかかわらず、まだ特徴構造の単一化にかかる全体的な時間を減少する必要がある。
【0007】
【課題を解決するための手段】
コンテキストレジーコピーリンクとプロセッサを用いて2つのエッジデータ構造を単一化する方法を詳細に述べる。第1エッジデータ構造に関連するコンテキストレジーコピーリンクが単一化中に作動されるときにはいつも、コンテキストレジーコピーリンクが拡張される。まずプロセッサは、作動されたコンテキストレジーコピーリンクのターゲット属性値ペアを識別する。プロセッサは次に、ターゲット属性値ペアの属性を第1エッジデータ構造にコピーする。最後に、プロセッサは第1エッジデータ構造にコピーされた属性からのコンテキストレジーコピーリンクをターゲット属性値ペアの値に追加する。
【0008】
本発明の一態様は、プロセッサを用いてエッジデータ構造を統一する方法であって、該プロセッサがメモリ中に格納された命令を実行することによりこの方法を実行し、前記エッジデータ構造を統一する方法が、a)第1エッジデータ構造を作成するステップを含み、第1エッジデータ構造が複数の関連するサブツリーを有し、第1エッジデータ構造が第1グラフデータ構造を含み、第1グラフデータ構造が空であると共に複数のコンテキストレジーコピーリンクを有し、各コンテキストレジーコピーリンクがサブツリーグラフデータ構造をポイントし、各サブツリーグラフデータ構造が複数の関連するサブツリーのうちの1つと関連し、b)第1エッジデータ構造を第2エッジデータ構造と統一するステップを含み、c)第1エッジデータ構造と第2エッジデータ構造との統一中に第1グラフデータ構造と関連するコンテキストレジーコピーリンクのうちの1つが作動されると、第2特徴構造に関連するコンテキストレジーコピーリンクを拡大することにより、第1グラフデータ構造を拡大するステップを含み、この第1グラフデータ構造を拡大するステップが、1)第1グラフデータ構造に関連するコンテキストレジーコピーリンクの中から選択コンテキストレジーコピーリンクを選択するステップを含み、2)選択コンテキストレジーコピーリンクによりポイントされるサブツリー特徴構造から選択属性を選択するステップを含み、選択された属性が選択属性値を有し、3)選択属性のコピーを作成し、第1グラフデータ構造において選択属性のコピーを第1属性として格納するステップを含み、4)第1属性からのコンテキストレジーコピーリンクを選択属性値に追加するステップを含む、ことを特徴とする。
【0009】
【発明の実施の形態】
本発明を詳細に説明する前に、コンピュータシステム30について考える。図1を参照すると、コンピュータシステム30は、コンピュータのユーザに情報を視覚的にディスプレイするためのモニタ32を含む。コンピュータシステム30はまた、プリンタ33を介してコンピュータユーザに情報を出力する。コンピュータシステム30は、データを入力するための複数の方法をユーザに提供する。キーボード34はマウス35と同様に、コンピュータユーザがデータをマニュアル入力することを可能にする。コンピュータユーザはまた、ペン38を用いて電子タブレット36に書き込むことにより情報を入力することもできる。あるいは、コンピュータユーザは、ディスクをフロッピーディスクドライブ42に挿入することにより、フロッピーディスク等の機械可読形式の媒体に格納されたデータを入力することができる。光学文字認識ユニット(OCRユニット)44により、ユーザはハードコピー自然言語文書46を入力することができ、自然言語文書46はコード化された電子表現に変換され、この電子表現は情報交換用米国標準コード(ASCII )であるのが典型的である。
【0010】
プロセッサ48は、コンピュータシステム30のオペレーションを制御、調整して、コンピュータユーザのコマンドを実行する。プロセッサ48は、メモリ50又はディスクドライブ42内のフロッピーディスク40のいずれかのメモリ内に電子的に格納された命令を実行することにより、各コマンドに応答して適切な動作を決定し、実行する。典型的には、プロセッサ48の動作命令は、ソリッドステートメモリ中に格納されており、命令に頻繁且つ迅速にアクセスする。メモリ50はまた、節及び制限解を格納するためのキャッシュメモリを含む。メモリ50を実行するために使用されることのできる半導体メモリデバイスは、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、プログラマブル読取り専用メモリ(PROM)、消去可能なプログラマブル読取り専用メモリ(EPROM)、電子的に消去可能なプログラマブル読取り専用メモリ(EEPROM)(フラッシュメモリ等)を含む。
【0011】
本発明のコンテキストレジーコピー方法は、単一化ベースで文法を解析する標準的なアプローチでは、モデル化される言語現象が文脈自由となる力を有する場合でさえ、指数関数的な時間がかかるという観察結果を利用する。即ち、単純なフレーズ構造の規則を用いて言語現象を表現することができることにより、フレーズ構造のパーサーが文を解析するのにせいぜいO(n3 )時間(ここでO(f(n))又はOf(n)は語数nの関数f(n)に比例した時間を表す)しかかからないのに、標準的な単一化ベースの特徴構造パーサーが同じ文をモデル化するにはO(2n )時間が必要である。特徴構造を追加することにより、なぜ解析時間があまりにも過激に増大するのかを理解することには、チャートを用いて文脈自由文法を語数の3乗に比例した時間で如何に解析できるかということと、標準的なアプローチを使用した場合に特徴構造の追加により結果としてシステムがなぜ指数関数的になるのかということを理解することが必要である。
【0012】
単純にはチャートは、パーサーによりすでに構成された要素を格納するためのデータ構造である。チャートを有する主な利点は、パーサーが種々の方法で文を解析しようとする時に既存の要素を再使用できることである。文法が文脈自由であれば、パーサーは要素がどのように構成されるかを知る必要もなく、要素を構成することができる。例えば、パーサーは5番目のワードから10番目のワードにいたるNPが存在するかどうかを知る必要はあるが、NPがその中にPPを有するかどうかを知る必要はない。このため、長さnの文に対しては、構成され得るO(Cn2 )個の異なる要素があるのみである(ここで、Cは文法により可能となる異なるカテゴリーの数である)。n2 は、全ての可能なワードの位置のクロスプロダクトに由来する。概念上、チャートはまさに、左位置から始まって右位置で終わるカテゴリータイプの要素があるかどうかを示す(カテゴリー、左位置、右位置の)3次元アレイである。文の始まりで始まり、文の終わりで終了するSカテゴリーがある場合には、文はフレーズを有する。チャートを充填する1つの方法は、全ての1つの単語の要素から始めて、2つの単語の要素の全てを構築し、次いで3つの単語、というように前のレベルの結果の上に各レベルでの構築を行うことである。これは、CKYアルゴリズムと呼ばれる。アルゴリズムがOn2 ではなくOn3 である理由は、各要素が複数の方法で構築されることができるからである。最悪のケースでは、大きさがOnである要素は、On個の異なる方法で構築されるおそれがある。On2 の要素をOnの方法で構築するには、On3 の時間が必要である。CKYアルゴリズムは、小さいものから大きいものへと特定の順序で要素が構築されることを必要とする。チャートを構成する、よりフレキシブルな方法は、処理された要素のアジェンダを維持することである。要素は一度に一つずつアジェンダから得られ、以下のように処理される。各要素は、結合できる要素に対して左と右を見る。結合される要素を見出せば、チャートをチェックして、得られた要素がチャート中に存在しているかどうかを調べる。結合される要素が見出されなければ、要素はチャートに追加され、アジェンダに置かれる。次いでプロセスは、アジェンダが空になるまで継続する。要素が任意の順序でアジェンダから得られることができるので、アジェンダにより物事がよりフレキシブルになる。このパーサーの種類は、「アクティブチャートパーサー」と呼ばれる。
【0013】
上記アルゴリズムは、文章が解析可能か否かを決定するだけであり、妥当な解析ツリー(解析木)が何であるかを決定することはしない。しかし、この情報はこれらのアルゴリズムに単純に追加することにより得られることができる。要素がサブ要素から構成される時にはいつも、構成は、構成された要素におけるローカルサブツリーとして記録される。このようなサブツリーにより注釈されるチャートは、「解析フォレスト」と呼ばれる。パーサーが実行されると、全体の文章にスパンするS要素から開始し、1つのサブツリーをランダムに取り出すことにより特定の解析ツリーが読み出される。次いで、各子要素に対して、1つのサブツリーがランダムに取得される。このプロセスは、ツリーが完全に特定されるまで続けられる。一般に、このように完全に特定されるツリーは指数関数的に多く存在するおそれがあるが、それらはコンパクトな表現で格納されるので、それらに対する解析フォレストは語数の3乗に比例した時間で生成されることができる。
【0014】
多くの文法の規則は、文脈自由フレーズ構造の規則のバックボーンに特徴構造を追加する。文法に依存して、文脈自由規則は明示的であり得る。
【0015】
文脈自由のルールが明示的であるか暗示的であるかにかかわらず、特徴構造を解析する標準的なアプローチは、まず文脈自由フレーズ構造チャートを構築し、次いでチャートデータ構造において第2のパスをなし、特徴構造のボトム−アップを構築することである。まず、与えられた特徴に従って語彙の項から特徴構造が例示される。次いで、子要素に属する特徴構造のクロスプロダクトを得ることにより、親要素の特徴構造が構成される。一貫し得ない任意の組合せを取り除くために、クロスプロダクトが得られる。得られるのは、このポイントに対して一貫した特徴構造の集合である。子要素から親要素を構成する方法が1つより多く存在すれば、全ての解析から生成された特徴構造の集合が単一化される。このプロセスは、全ての要素の特徴構造が構成されるまで、ボトム−アップを継続する。
【0016】
このプロセスは、各レベルにおいてクロスプロダクトが発生するために最悪のケースでは指数関数的である。例えば、各語彙のアイテムが2つの曖昧な方法である場合に、フレーズ構造の文法が曖昧でなくても、トップの要素に対してO(2n )の異なる特徴構造が存在し得る。有限の値の特徴のみが使用される場合には、パーサーは、語数の3乗に比例した時間で実行するように作成されることができる。なぜなら、有限数の特徴構造のみが可能であり、各レベルにおいて、得られた方法の全てを列挙することなくどれが可能であるかを追跡するだけでよいからである。可能な特徴構造の数の上限まで到達すると、各レベルにおける特徴構造の数は成長を停止する。特徴値の全てがバイナリであれば、トップレベルの要素は、せいぜいO(2k )個の異なる特徴構造を有することができる(kは異なる特徴の数である)。故に、有限特徴グラフのみを用いることにより、文章の長さにおける指数関数を指数関数的な文法の定数に変えることができる。不具合なことに、無限の特徴構造を解析するのに必要な時間は、同じ方法では減少されることができない。
【0017】
ここで述べる方法は、コンテキストレジーコピーリンクを導入することにより、解析及び生成中に特徴構造を単一化するのに必要な時間を減少する。この新たなタイプのレジーコピーリンクでは、複数の選択値が複数のコンテキストレジーコピーリンクにより表現されることができ、複数のコンテキストレジーコピーリンクの各々は、それが妥当であるコンテキストにより注釈されたものである。これらのコンテキストレジーコピーリンクにより表現されるデータは、関連を持つようになり次第に拡張されて必要分のみの情報がコピーされることを保証されるまで、グラフデータ構造にコピーされない。コンテキスト単一化及び不透明なコンテキストと共に使用されると、コンテキストレジーコピーリンクは、特徴構造を単一化するのにかかる時間を減少する。従って、語数の3乗に比例した時間で文脈自由特徴構造を単一化する方法の一部として、図8及び図9を参照してこの方法を詳細に述べる。
【0018】
図2は、言語記号列を解析又は生成する間の特徴構造のレジーコンテキスト単一化に対する命令60を概略的に示している。命令60は、ソリッドステートメモリ50又はフロッピーディスクドライブ40内に置かれるフロッピーディスク42中で機械可読形式で格納され得る。命令60は、任意のコンピュータ言語で行われ得る。
【0019】
命令60は、サブルーチン100、102、104、106、108、110、112、114及び116の階級的なセットとして組織化される。
【0020】
命令60は、チャートデータ構造、グラフデータ構造、節データ構造及び解データ構造の4つのクラスのデータ構造を使用する。チャートデータ構造は、エッジデータ構造とサブツリーデータ構造を含む。各エッジデータ構造は、エッジを表すと共に、以下の情報を含む。
【0021】
Edge(エッジ)[
id:このエッジを独特に識別する整数
right :エッジの最も右のワードを識別する整数
left:エッジの最も左のワードを識別する整数
category(カテゴリー):エッジの文法上のカテゴリーを示す;例えばNP、S、VP等
subtrees(サブツリー):このエッジを作成する種々の方法のリスト
graph (グラフ):このエッジのグラフデータ構造に対するポインタ
]
【0022】
各サブツリーデータ構造は、チョムスキー標準形でのサブツリーを示し、以下の情報を含む。
【0023】
Subtree (サブツリー)[
partial (部分的):ルールの左の子をポイントし、partial は、エッジの最も左のワードで始まり中央のどこかで終了する
complete(完全):ルールの右の子をポイントし、completeは、エッジの中央のどこかで始まりエッジの最も右のワードで終了する
constraint(制約):サブツリーを生成するためにpartial とcopmplete を如何に組み合わせるべきかを定義する
graph (グラフ):このサブツリーのグラフデータ構造に対するポインタ
]
【0024】
なお、各サブツリーデータ構造は、概念的に文脈自由規則がサブツリー1つ当り任意の数の子を有することができるとしても、2つのみの子、partial 及びcompleteを含む。標準的な変換を文法に適用することにより、全ての規則がバイナリである新たな文法が生成される。例えば、ルールS→NP VP ADVにこの変換を適用することにより、S→S1 ADVとS1→NP VPという2つの規則が生成される。
【0025】
グラフデータ構造のクラスは、Graph 、AVPair及びCVPairという3つのタイプを含む。各グラフデータ構造は特徴構造及び関連情報を示し、以下の情報を含む。
【0026】
Graph (グラフ)[
attrs :このグラフデータ構造に関連するAVPairへのポインタのリスト
context (コンテキスト):このグラフが存在するコンテキストを示し、同一のエッジに関連する他の妥当なサブツリーとそれを見分けるためにサブツリーに割り当てられた変数を対応させる
nogood:この特徴データ構造が良くないかどうかを示すブール演算値
nogoods :nogoodであり、このグラフに関連する節のリスト
edge(エッジ):このグラフに関連するエッジに対するポインタ
disjunctive (論理和):グラフがORグラフ、即ち多くの選択的なグラフを示す単一のグラフであるか否かを示すブール演算値
clauses (節):このグラフに割り当てられた節のリスト
disjunctions(論理和):局所的に例示された論理和のリスト
solutions (解):限定セットとそれらの解に対するポインタのリスト
]
【0027】
各AVPairデータ構造は属性コンテキスト値のペアを示し、以下の情報を含む。
【0028】
AVPair[
attr:属性のタイプの名前
attrs :このAVPairが示す特徴構造に含まれる属性に対するポインタのリスト
equals:この属性に対する値を格納するCVPairデータ構造に対するポインタのリスト;例えば、attrがNUMであれば、このフィールド内の値は値コンテキスト内のSGと別のコンテキスト内のPLにより格納され得る
copies(コピー):このAVPairにコピーされた、又はこのAVPairからコピーされた値に対するコピーリンクを格納するCVPairデータ構造に対するポインタのリスト
contexts(コンテキスト):このAVPairが既に制約を有するコンテキスト
prefix(接頭辞):このAVPairを含むAVPairに対するポインタである。例えば、LFG項(↑SUBJ NUM)では、NUM AVPairは、その接頭辞として(↑SUBJ)AVPairを有する
graph (グラフ):このAVPairが属する特徴データ構造へのポインタ
expanded:このAVPairに関連するコンテキストレジーリンクが拡張されたかどうかを示すブール演算値
]
【0029】
各CVPairデータ構造はコンテキスト値ペアを示し、以下の情報を含む。
【0030】
CVPair[
contexts(コンテキスト):規則的なコピーリンクに対してこの値に関連するコンテキスト又は節が真であれば、任意の他の値はコンテキスト値を示す
value (値):このCVPairに対するポインタがAVPairの等しいフィールド又はコピーに格納されているかどうかに依存して、別のAVPairデータ構造へのポインタ又は値を含む。
lazy(レジー):value フィールドが配付先の正方向をポイントする正方向コピーリンクであるのか、又はソースの逆方向をポイントするレジーコピーリンクであるのかを示すブール演算変数
]
【0031】
節及び論理和の2つのタイプの節データ構造がある。各節データ構造は節を示し、キャッシュアイテムのリストである、その独自の節キャッシュを有する。節データ構造は、以下の情報を含む。
【0032】
Clause(節):[
type(タイプ):節のタイプ−AND 、OR、CHOICE、OPAQUE、nogood、TRUE
body(ボデー):以下のAND 、OR、NOT 、CHOICE、OPAQUEを合併したものである
AND {--このタイプの節は、コンテキストの論理積である--
first :論理積の第1節へのポインタ
rest:結合された節の残りに対するポインタ}
OR{--このタイプの節は、コンテキストの論理和である--
first :論理和の第1節へのポインタ
rest:分解された節の残りに対するポインタ}
NOT {--このタイプの節は、コンテキストの否定である--
negated :否定された節}
CHOICE(選択){--論理和の一次選択である
論理和:CHOICEを含む論理和データ構造に対するポインタ}
OPAQUE{--コンテキストを移入する
imported:包まれている移入節
graph (グラフ):節の移入元のグラフデータ構造に対するポインタ}
graph (グラフ):この節が関連するグラフデータ構造に対するポインタ
cache (キャッシュ):この節に関連する節キャッシュの領域に対するポインタ。節キャッシュのこの領域は、この節を用いて以前に実行されたオペレーションの結果を格納する
exported:この節が別のグラフデータ構造に移入されたかどうかを示すブール演算変数である
nogood:この節がnogoodであることを決定されたかどうかを示すブール演算変数である
]
【0033】
各論理和データ構造は論理和を示し、以下の情報を含む。
【0034】
disjunction 論理和[
count :この論理和における選言肢の数を示す整数
context (コンテキスト):この論理和が関連するコンテキスト
arm1−第1選択コンテキスト(1つのみの場合)
disj1 −第1選択論理和(1つより多い場合)
arm2−第2選択コンテキスト(1つのみの場合)
disj2 −第2選択論理和(1つより多い場合)
]
【0035】
限定セットデータ構造、限定解データ構造及び内部解データ構造の3つのタイプの論理和データ構造が存在する。各グラフは、グラフの3つの解データ構造を格納するメモリ50内の解キャッシュを有する。
【0036】
各限定セットデータ構造は、解が探索される節の集合を示し、以下の情報を含む。
【0037】
Restriction Set (限定セット)[
restriction set (限定セット):解に対するエッジの解の獲得に与えられた節のリスト
solutions (解):限定セットに対する限定された解のデータ構造に対するポインタのリスト
]
【0038】
各限定解データ構造は、限定セットに対する解を示し、以下の情報を含む。
【0039】
Restricted Solution (限定解)[
clauses (節):解を構成する節のグループである。例えば、限定セットがa:1,b:0及び(a:0&b:0)である場合には、解はb:0及び(a:0&b:0)であり得る。これは限定セットのサブセットであるべきである。このフィールドにない限定セットに節がある場合には、その値は擬であると仮定される。
map (マップ):節フィールドにおいて解に対する数値を求める内部解データ構造に対するポインタのリストである。特定の限定セットに対しては、内部解の全てが正確に1つの限定解のマップのメンバーでなければならない。各内部解は、各限定セット中に一度表れる。
]
【0040】
各内部解データ構造は、Restricted Setに対する内部解を示し、以下の情報を含む。
【0041】
Internal Solution (内部解)[
graph (グラフ)−この内部解が得られたグラフに対するポインタ
choices (選択)−局所論理和の局所選択のリスト
partial (部分的)−部分的なエッジ、すなわち左の子に対する解
complete(完全)−完全なエッジに対する解
]
【0042】
図3はメインの命令100をフローチャート形式で示す。
【0043】
機械可読形式の自然言語記号列を受け取ると、プロセッサ48はステップ120で命令100を実行する。プロセッサ48は、自然言語記号列に対して文脈自由解析フォレスト、チャートを構築する。当業者に知られている標準的な技術を用いて、チャートが構築される。チャートが構築されると、プロセッサ48はステップ120を出る。
【0044】
プロセッサ48はステップ122において、全体の自然言語記号列をスパンする記号列Sをチャートが規定するかどうかを決定する。チャートが規定しなければ、チャートは解を有さず、プロセッサ48はステップ124に分岐する。一方、全体の自然言語記号列をスパンするSをチャートが規定すれば、チャートは解を有し得る。それに応じてプロセッサ48はステップ126に進む。プロセッサ48は、使用されている文法に関連する語彙及び文法上の制約をチャートに追加する。チャートを装飾する標準的な方法が使用される。その後、プロセッサ48はステップ128に進む。
【0045】
プロセッサ48は、回帰的にエッジ制約の処理102により、及びチャートに対するグラフデータ構造を構築することにより、チャートのルートスパンエッジに対する解を見出す。これらの回帰的な呼出しにより、プロセッサ48は、リーフに到達するまでチャートを下り、そのポイントでプロセッサ48はグラフデータ構造を構築し、チャートを逆進し始める。チャートに対するグラフデータ構造が生成されると、プロセッサ48はステップ130に進み、チャートに対する解を見出すプロセスを開始する。プロセッサ48はエッジの解の獲得104によりそれを実行する。プロセッサ48はチャートを下り、対象とする不透明な(曖昧な)コンテキスト(opaque context)を通過することにより、葉に到達するまでルートスパンエッジに対する解を見出す。そのポイントで、プロセッサ48は、移入された不透明なコンテキストに対する局所的な解を決定し、それらの解をもってチャートを逆進し始める。これは、チャートのルートスパンエッジに対する解が見出されるまで継続する。
【0046】
命令104によるエッジ解の処理は、文法の文脈自由部分に対して語数の3乗に比例した時間で発生する。文脈自由により、局所的なnogoods がよく因子分解される。故に、解計算時間が不透明な変数の数Kにおいて指数関数的であっても、経験により、実際に生成される解の数は小さい傾向があることが示された。命令104を実行した後、プロセッサ48はステップ124に進み、自然言語記号列の完全な処理を行う。
【0047】
図4、図5及び図6(これらの3つの図で本実施形態のエッジ制約処理の全容を示す)で示されるように、エッジ制約処理102は、プロセッサ48が、関連のあるエッジに対するポインタを与えられたエッジのグラフデータ構造を生成することを可能にする。
【0048】
図4を参照すると、選択されたエッジに対するポインタの受領に応答して、プロセッサ48はステップ140で命令102を実行し始める。プロセッサ48は、今受け取ったポインタを調査することによりグラフデータ構造を構成する必要があるかどうかを決定する。ヌルポインタは、選択されたエッジが存在しないことを示すが、それはおそらく、ヌルポインタが部分的なエッジを有さないサブツリーに由来するからである。ヌルエッジポインタに応答して、プロセッサ48はステップ142に分岐する。プロセッサ48は、選択されたエッジが真(TRUE)であることを示す;即ち、選択されたエッジデータ構造のグラフフィールド中に格納されたポインタをヌルの値にセットすることにより、任意の他のエッジと結合されることができる。その後、プロセッサ48は呼出しルーチンに戻る。
【0049】
エッジポインタがヌルでなければ、プロセッサ48はステップ150に進む。プロセッサ48は、選択されたエッジのグラフデータ構造を構築することに注目する。そうするために、プロセッサ48はまず、選択されたエッジに関連する各サブツリーのグラフデータ構造を生成する。故に、プロセッサ48はグラフデータ構造が生成されるべきサブツリーがあるかどうかを決定する。かかるサブツリーが存在すれば、プロセッサ48はステップ152に進む。
【0050】
プロセッサ48は、ステップ152において選択されるサブツリーとして、残りのサブツリーの1つを選択し、ステップ154に進む。プロセッサ48は、まず左の子と右の子の両方に対するグラフデータ構造を作成することにより、選択されたサブツリーに対するグラフデータ構造を生成する。故にプロセッサ48は、エッジ制約処理102に対する回帰的な呼出しと、選択されたエッジとして左の子を示すことにより、選択されたサブツリーの左の子に対するグラフデータ構造を作成する。選択されたサブツリーの左の子に対するグラフデータ構造が生成されると、プロセッサ48はステップ156に進む。
【0051】
プロセッサ48は、左の子に対するグラフデータ構造のnogoodフィールドを調査することにより、又はグラフに対するポインタがNOGOOD値1であるかどうかを調査することにより、左の子に対するグラフがnogoodであるかどうかを決定する。グラフがnogoodである場合には、選択されたサブツリーのグラフはnogoodである。この場合には、プロセッサ48はステップ160に進み、選択されたサブツリーに対するnogoodグラフデータ構造を生成する。それを実行すると、プロセッサ48はステップ150に戻る。一方、左の子に対するグラフがnogoodでなければ、プロセッサ48は図5のステップ162に進む。
【0052】
図5を参照すると、プロセッサ48は、ステップ162において、選択されたサブツリーの右の子に対するグラフデータ構造を生成することに注目する。プロセッサ48はエッジ制約処理102を呼び出し、左の子が選択されたエッジであることを示すことにより、この作業を実行する。その後プロセッサ48は、ステップ164においてグラフデータ構造がnogoodであるか否かを決定する。nogoodであれば、プロセッサ48は図4のステップ160に戻る。そうでなれば、プロセッサ48はステップ166に進行する。
【0053】
選択されたサブツリーの左の子と右の子の両方に対してグラフデータ構造が生成されると、プロセッサ48は、ステップ166において選択されたサブツリーに対するグラフデータ構造を構成するプロセスを開始する。この試みでは、第1の作業は、選択されたサブツリーに関連する文法法上の制約をグラフデータ構造に変換することである。次にステップ168において、プロセッサ48は、選択されたサブツリーのサブツリーデータ構造のグラフフィールドに、今生成されたグラフデータ構造に対するポインタを格納する。プロセッサ48はステップ180に進行する。
【0054】
プロセッサ48は、その左の子により移入される制約を、選択されたサブツリーに導入し始める。プロセッサ48は、一度に1つのAVPairをコピーする(後ほど詳細に説明する)AVPairコピー106を呼び出すことによりそれを実行する。その後ステップ182において、プロセッサ48は、選択されたサブツリーのグラフデータ構造がこれによりnogoodとなるかどうかを決定する。nogoodであれば、プロセッサ48は図4のステップ160に戻る。そうでない場合には、プロセッサ48はステップ184に進行する。
【0055】
プロセッサ48は、右の子により移入された制約を、選択されたサブツリーに導入する。プロセッサ48は、AVPairコピー106を再び呼び出すことによりそれを実行する。次いでプロセッサ48はステップ186において、これらの制約により、選択されたサブツリーのグラフがnogoodとなるかどうかを決定する。nogoodである場合には、プロセッサ48は図4のステップ160に戻る。グラフがnogoodでない場合には、プロセッサ48はステップ186から図4のステップ150に戻る。
【0056】
プロセッサ48は、選択されたエッジに関連するサブツリーに対して生成されたグラフデータ構造が存在する限りは、ステップ150〜186をループする。すべてのサブツリーグラフデータ構造が生成されると、プロセッサ48は図4のステップ150を出て図6のステップ188に渡り、そのnogoodでないサブツリーの各々を示す選択されたエッジに対する単一のグラフデータ構造を作成するプロセスを開始する。プロセッサ48はまず、ステップ188においてnogoodでないグラフを有する選択エッジに関連するサブツリーの数をカウントする。次いで、ステップ190において、プロセッサ48は、nogoodでないグラフを有するサブツリーの数が2つ以上であるかどうかを決定する。その数が2つ未満であれば、プロセッサ48は、ステップ192においてnogoodでないグラフを有する少なくとも1つのサブツリーが存在するかどうかを決定する。nogoodグラフを有するサブツリーが1つ存在する場合には、プロセッサ48はステップ193に進み、選択されたエッジのエッジデータ構造のグラフフィールド中に、良好な(nogoodでない)サブツリーに対するグラフデータ構造に対するポインタを格納する。一方、良好なグラフを有するサブツリーが一つも存在しなければ、プロセッサ48はステップ192を出てステップ194に進む。プロセッサ48は選択されたエッジデータ構造のグラフフィールドを使用して、ポインタ値1を格納することによりエッジがnogoodであることを示す。ステップ194又は193において選択されたエッジのグラフデータ構造の制約が完了すると、プロセッサ48はステップ144に進行する。
【0057】
プロセッサ48は、nogoodでないグラフを有するサブツリーの数が2つ以上であれば、ステップ196に進行する。この場合には、選択されたエッジのグラフデータ構造は、複数の選択的なサブツリーを表すので、ORタイプである。故に、ステップ196においてプロセッサ48は、選択されたエッジデータ構造の論理和フィールドを適切にセットすることにより、グラフをORタイプとしてマークする。これを実行すると、プロセッサ48はステップ196を出てステップ198に進行する。
【0058】
ステップ198において、プロセッサ48はステップ196で生成されたOR節に対する論理和データ構造を構築する。プロセッサ48は論理和データ構造のカウントフィールドを、ステップ188においてカウントされた良好なグラフの数にセットする。プロセッサ48が論理和データ構造の構成を完了すると、選択されたエッジに関連する良好なサブツリーの各々を表すコンテキスト変数が生成される。その後、プロセッサ48はステップ200に進行する。
【0059】
プロセッサ48は、サブツリーからの情報を選択されたエッジのグラフデータ構造に導入し始める。プロセッサ48は、全ての良好なサブツリーからの情報が選択エッジデータ構造に導入されるまで、ステップ200、210及び212をループする。ステップ212では、プロセッサ48は、nogoodでないグラフを有するサブツリーのうちの1つを選択し、論理和データ構造によりサブツリーと関連するコンテキストを見出す。プロセッサ48は、AVPairコピー106を呼び出し、選択された節を示すことにより、選択されたサブツリーからのデータ構造情報を選択エッジにコピーする。その後、プロセッサ48はステップ200に戻る。選択されたエッジに対するグラフデータ構造に良好なグラフを有するサブツリーの全てからの情報がコピーされた後、プロセッサ48はステップ144に戻る。
【0060】
図7で示されるAVPairコピー106により、プロセッサ48はソースAVPiarデータ構造からの情報を配付先AVPairデータ構造にコピーすることができる。命令106を使用して、子からの情報が親にコピーされるばかりでなく、サブツリーからの情報が関連のあるエッジにコピーされる。
【0061】
プロセッサ48は、配付先AVPair、ソースAVPairに対するポインタ、及び選択された節に応答して命令106を実行し始める。ステップ230において、プロセッサ48は、選択された節に対する2つのAVPairの間にコンテキストコピーリンクがすでに存在しているかどうかを決定する。プロセッサ48は、ソースAVPair及び配付先AVPairの両方のコピーフィールドを調査することにより、この決定を行う。選択された節を有するコピーリンクがソースか配付先かのいずれかに見出されれば、さらなる実行の必要もなく、プロセッサ48はステップ244に分岐することにより応答する。他方、選択された節を有するコンテキストコピーリンクがソースAVPairと配付先AVPairの間に存在しない場合には、プロセッサ48はステップ232に分岐する。
【0062】
ステップ232においてプロセッサ48は、コンテキストレジーコピーリンクを介して配付先AVPairにおいてソースAVPairを表すことができるかどうかを決定する努力を始める。これは部分的に、配付先の他のレジーコピーリンクがすでに拡張されたかに依存する。プロセッサ48は、配付先AVPairの拡張されたビットを調査することにより、そうであるかどうか決定する。そのレジーコピーリンクが拡張されなかったことをビットが示す場合には、プロセッサ48は、オーバーラップしたコンテキストにおいてそのリンクが配付先AVPairだけのレジーコピーリンクであれば、コンテキストレジーコピーリンクを用いてソースAVPairを表現することができる。プロセッサ48はステップ234において、AVPairコピーフィールド中に存在するレジーコピーリンクを列挙して、各レジーコピーリンクに対して、そのコンテキストを選択されたコンテキストと結合することにより、AVPairコピーに対する引数として与えられたコンテキスト内の他のコンテキストレジーコピーリンクを配付先のAVPairがすでに含んでいるかどうかを決定する。論理積の全てがnogoodである場合には、プロセッサ48はステップ236に進行する。他方、結合されたコンテキストのいずれかがnogoodでない場合には、プロセッサ48は、ステップ238に進行する。
【0063】
プロセッサ48は、配付先のAVPairに関連する全てのレジーコピーリンクが拡張される必要がある場合には、ステップ234からステップ238に進む。プロセッサ48は、レジーリンクの拡張108を呼び出すことにより、ステップ238において、それらレジーコピーリンクを拡張する。その後、プロセッサ48はステップ240に進行する。
【0064】
プロセッサ48は、ソースAVPairがレジーコピーリンクにより配付先のAVPairで表されることができない場合に、ステップ240に進む。配付先にコピーされたことをソースAVPairにおいて示すために、プロセッサ48は配付先をポイントする正方向コピーリンクをソースAVpairのコピーフィールドに追加する。次いでプロセッサ48は、ファクトコピー110を呼び出すことにより、配付先のAVpairにソースAVpairの制約をコピーする。それを実行すると、プロセッサ48はステップ244に進行する。
【0065】
図8で示されるレジーリンクの拡張108により、プロセッサ48はコンテキストレジーコピーリンクを、より詳細な1つのレベルと、そして必要であれば、他のコンテキストレジーコピーリンクと取り替えることができる。ソース中の正方向コピーリンクを追加してレジーコピーリンクの拡張を記録した後、プロセッサ48はファクトコピー110を呼び出すことにより関連情報をコピーする。
【0066】
プロセッサ48は、拡張されるべきレジーコピーリンクを有する、選択されたAVPairへのポインタの受領に応答して、ステップ260で命令108を実行し始める。ステップ260において、プロセッサ48は、拡張ビットを調査することにより、選択されたAVPairのコンテキストレジーコピーリンクがすでに拡張されたかどうかを決定する。選択されたAVPairに関連するコンテキストレジーコピーリンクがすでに拡張されたことをそのビットが示せば、プロセッサ48はステップ276に進む。他方、コンテキストレジーコピーリンクが拡張されていない場合には、プロセッサ48はステップ262に分岐する。
【0067】
プロセッサ48は、拡張されたフィールドの値の拡張を示すようにセットすることにより、選択されたAVPairのコンテキストレジーコピーリンクを拡張し始める。その後、プロセッサ48はステップ264に進行して、一度に一つずつコンテキストレジーコピーリンクを拡張し始める。拡張されるべきコンテキストレジーコピーリンクが残っている限りは、プロセッサ48はステップ266に進行する。プロセッサは、コピーフィールド内の残りのコンテキストレジーコピーリンクを拡張するものとして選択する。次にプロセッサ48はステップ270に進行する。
【0068】
しばしば、選択されたコンテキストレジーコピーリンクによりポイントされるターゲットAVPairも、拡張される必要があるとしてレジーコピーリンクにより表される。かかる状況を見越して、ステップ270においてプロセッサ48はレジーリンク拡張108を呼び出して、選択されたコンテキストレジーコピーリンクによりポイントされるレジーコピーリンクを拡張する。ステップ272では、プロセッサ48は、選択されたAVPairをポイントするターゲットAVPairからの正方向コピーリンクを追加する。次にプロセッサ48はステップ274に進行する。
【0069】
ターゲットAVpairが拡張されると、プロセッサ48はターゲットAVPairからの情報の1つのレベルを選択されたAVPairにコピーすることにより、選択されたレジーコピーリンクを拡張することができる。プロセッサ48は、ファクトコピー110を呼び出すことにより、これを実行する。それを実行すると、プロセッサ48はステップ264に戻り、選択されたAVPairに関連する全てのコンテキストレジーコピーリンクが拡張されるまで、ステップ266、270、272、274及び264をループする。
【0070】
図9は、ファクトコピー110の命令をフローチャートで示す。
【0071】
プロセッサ48は、ソースAVPairと配付先AVPairに対するポインタと、配付先に関連する選択された節の受領に応答して、ステップ290において命令110を実行し始める。プロセッサ48は、任意のファクトがコピーされる必要があるかどうかを決定することにより、ステップ290で開始する。nogoodである節に関連すれば、ファクトはコピーされる必要がない。プロセッサ48は、節のnogoodフィールドを調査し、選択された節がnogoodである場合にはステップ292に進行する。
【0072】
プロセッサ48は、ソースAVPairに関連する属性を配付先AVPairにコピーする努力を始める。ステップ292においてコピーされるべき属性が残っていれば、プロセッサ48はステップ294で残りの属性の中の1つを選択する。次に、プロセッサ48はステップ296で、選択された節を、選択された属性に関連する節と結合する。プロセッサ48は、節の結合112を呼び出すことにより結合を実行し、得られた節を戻す。得られた節がnogoodでなければ、プロセッサ48はステップ300に分岐する。
【0073】
ステップ300において、配付先のAVPairデータ構造がもう存在しなければ、プロセッサ48は配付先のAVPairへと逆にポイントするものを作成し、配付先のAVPairのAttrs フィールドに、この新たなAVPairに対するポインタを追加する。情報がコピーされることのできるデータ構造が作成されると、プロセッサ48はステップ302に進行してAVPairコピーを呼び出す。AVPairコピーは、コンテキストレジーコピーリンク同士の間に相互作用があるかどうかに依存して、ソースAVPairからの情報をコピーしたりしなかったりする。その後、プロセッサ48はステップ292に戻る。
【0074】
プロセッサ48は、AVPairコピーがソースAVPairの関連のある属性全てに対して呼び出されるまで、ステップ292〜302をループする。全てに対して呼び出されると、プロセッサ48はステップ304に進行して、属性のコピーと略同じ形態でソースAVPairの値を配付先のAVPairにコピーし始める。ソースAVPairに関連する全てのコンテキスト値をコピーした後、プロセッサ48はステップ320に進む。プロセッサ48は、配付先のAVPairに課された新たな制約を調査し、可能であれば、新たなローカルnogoods を推論する。これを実行すると、プロセッサ48はステップ322にリターンする。
【0075】
命令60は2つの節を結合して新たな節を生成し、メモリ50の節キャッシュに格納する。
【0076】
命令60が節を結合する方法と標準的なアプローチとの間には2つの違いがある。まず、2つの節を結合し始める前に、プロセッサ48は同じ2つの節を含むエントリに対する節キャッシュを探索する。プロセッサ48は、より高いidを有する節データ構造のキャッシュフィールドを調査することにより、このような探索を開始して、所望のオペレーション及びオペランドを探索する。かかるエントリが見出されると、結合を行うことなく、以前に格納された結果を使用することができ、処理時間が削減される。
【0077】
節を結合することに対する標準的なアプローチとの第2の違いは、不透明な(曖昧な)節(opaque clause )の使用である。図10のフローチャートは、不透明な節を処理して単一化処理時間を減少する節の結合112の部分を示している。2つの不透明な節が同一グラフから移入されると、2つの不透明な節は解かれて、新たな節を生成するように結合され、この新たな節が包まれて、新たな不透明節が生成され、そしてこれが移入される。
【0078】
プロセッサ48はステップ360で命令112を実行し始める。プロセッサ48は、2つの不透明な節が同一のグラフデータ構造に関連する場合にグラフ同士の間に移入される命題変数の数を減少することができる。プロセッサ48は、結合されるべき2つの節データ構造である節1及び節2のグラフフィールドを調査することにより、ステップ360においてこの可能性をチェックする。両方の節が同一のグラフに関連する場合には、プロセッサ48はステップ360を出て、ステップ362に分岐する。
【0079】
2つの不透明な節の結合によって、真(TRUE)又はnogoodのようなより単純な節を生じ得ることができるので、プロセッサ48はステップ362において節1及び節2の両方を「解く」。プロセッサ48は、各不透明な節の移入フィールドを検索することにより、不透明な節を解く。その後、プロセッサ48はステップ364において、節の結合112を呼び出すことにより、2つの解かれた節を結合する。プロセッサ48は、ステップ366において得られた節を調査して、それがnogoodであるかどうかを決定する。nogoodである場合には、プロセッサ48はステップ368に進行して、得られた節がnogoodであることを示すポインタを戻す。一方、得られた節がnogoodでない場合には、プロセッサ48はステップ370に分岐する。
【0080】
プロセッサ48は得られた節を「包み」、ステップ370において節の移入116を呼び出すことにより新たな不透明な節を移入する。次いでプロセッサ48はステップ372に進む。
【0081】
節1及び節2を再び結合するさらなる処理時間を使用しないようにするために、ステップ372において、プロセッサ48は節1及び節2を結合したものをメモリ50の節キャッシュに格納する。好ましくは、節キャッシュ内の節は、idの高さに従ってインデックスされ、格納される情報は、オペレータ、オペランド及び得られた節のトリプルである。このケースでは、トリプルは、結合、節2、得られた節である。その後プロセッサ48は、より高いidを有する節に対して、節データ構造のキャッシュフィールドにおける節キャッシュに、このエントリに対するポインタを格納する。プロセッサ48は、2つの節が結合されたり分離されたりする場合にはいつも、それらが不透明であるか否かにはかかわらず、ステップ372を実行する。節に関する全てのオペレーションの結果を格納することにより、グラフデータ構造を単一化する処理時間が減少される。
【0082】
図11は、節をグラフに移入する命令116をフローチャートで示す。これを実行する際に、プロセッサ48は新たな不透明節データ構造を作成して、移入された節を「包む」。これにより、ルートスパンエッジに対して生成されたグラフが、文脈自由に等しくなることが保証され、これは複数の命題変数を単一の命題変数と取り替えることにより可能となる。
【0083】
プロセッサ48は、選択された節、即ち移入される節が選択されたグラフに既に移入されたかどうかをステップ400で決定することにより、命令116を実行し始める。プロセッサ48は、得られた節が選択された節に等しいエントリに対して節キャッシュを探索することにより、それを実行する。プロセッサ48がかかるエントリを見出せば、選択された節は選択されたグラフにすでに移出されており、これを実行する必要がなくなる。これに応答して、プロセッサ48はステップ402に分岐して、移入節をリターンする。一方、選択された節が移出されたことを節キャッシュが示さない場合には、プロセッサ48はステップ404に分岐する。
【0084】
ステップ404において、プロセッサ48は新たな不透明節データ構造を作成して、移入フィールドに選択された節を格納する。その後ステップ406において、プロセッサ48は不透明変数が移入フィールドに移出されたことを記録し、グラフフィールドにおいて選択グラフに対するポインタを格納することにより、どのグラフに移出されたのかを示す。最後に、ステップ408においてプロセッサ48は、選択された節、不透明節、新たな不透明節のトリプルを格納することにより、メモリ50の節キャッシュにこのオペレーションの結果を格納する。新たな不透明節が移入されると、プロセッサ11はステップ402に戻る。
【0085】
図12、図13及び図14(これら3つの図で本実施形態の解の獲得命令の全容を示す)は、選択されたエッジに関連する全ての節に対して解が探索されていない可能性があるために、限定セットと呼ばれる解が探索される節を与えられた選択エッジに対する解の獲得命令104をフローチャートで示している。限定セットが関連する選択エッジに対するポインタも、命令104に渡される。
【0086】
命令104の実行はステップ450で始まる。ステップ450においてプロセッサ48は、選択エッジに対する明白な解を探索し始める。3つのプロセスがある。まず、プロセッサ48は選択エッジに対するポインタを調査する。ポインタがヌルであれば、選択エッジが他の任意のエッジとうまく結合されることができることを意味する。このような発見に応答して、プロセッサ48はステップ452に進み、選択されたエッジに対する解が真(TRUE)であることを示す。プロセッサ48はステップ454に戻る。一方、選択されたエッジに対するポインタがヌルでなければ、プロセッサ48はステップ460に分岐して、選択されたエッジに対する別の明白な解を調査する。ステップ460において、プロセッサ48は選択されたエッジデータ構造のグラフのnogoodフィールドを調査して、選択されたエッジがnogoodであるかどうかを決定する。そうであれば、ステップ462においてプロセッサ48は選択されたエッジに対する解をヌルにセットし、ステップ454に戻る。選択されたエッジがnogoodのカテゴリーに分類されなければ、プロセッサ48はステップ460を出て、最後の明白な解を検索する。ステップ464において、プロセッサ48は、この限定セットがすでに解決されたかどうかを調べるために、グラフの解キャッシュを探索する。解決の場合には、プロセッサ48はステップ466において、もしあれば解に対するポインタをリターンする。
【0087】
明白で簡単な解を見出す試みが失敗すれば、プロセッサ48はステップ468に進む。プロセッサ48は、解キャッシュにおける選択された節に対する限定解データ構造を作成して、全てのフィールドをヌルにセットする。これを実行すると、プロセッサ48はステップ470に進み、選択された限定セットに対する解を求めて一度に1つのサブツリーずつ探索し始める。ステップ472において、プロセッサ48は、解を必要とするサブツリーの1つを選択する。次にプロセッサ48は、選択されたサブツリーのグラフデータ構造のnogoodフィールドを調査することにより、選択されたサブツリーがnogoodであるかどうかを決定する。選択されたサブツリーがnogoodである場合には、プロセッサ48はステップ470に戻ることにより、他のサブツリーに注意を向ける。一方、選択されたサブツリーのグラフがnogoodでなければ、プロセッサ48はステップ476に進行する。
【0088】
選択されたサブツリーの解を見出すことには、選択されたサブツリーの左と右の子に対する解をまず見出すことが必要である。これは図12のステップ476から図13のステップ486において発生する。まずプロセッサ48は、選択されたサブツリーの左の子からどのサブツリーグラフの節が移入されるかを決定し、新たな限定セットを定義する。プロセッサ48はステップ478でこの情報を用いて、エッジの解の獲得104を呼び出すことにより、左の子に対する解を見出す。左の子に対する解がない場合には、選択されたサブツリーに対する解は存在できない。プロセッサ48は、ステップ470に分岐することによりこの状況に対応し、別のサブツリーに注目する。他方、左の子が解を有する場合には、選択されたサブツリーは解を有し得る。それに応答して、プロセッサ48はステップ482に分岐して、選択されたサブツリーの右の子に対する解を識別する。プロセッサ48は、サブツリーグラフのどの節が右の子から移入されたかを識別することにより、開始する。これにより新たな限定セットが定義され、プロセッサ48は、ステップ484においてエッジ解の獲得104を呼び出す時にこの限定セットを用いる。プロセッサ48は、ステップ470に戻ることにより右の子が解を有さないという見解に応答する。一方、右の子が解を有すると、プロセッサ48はステップ490に分岐する。
【0089】
選択されたエッジの左及び右の子に対する解が得られると、ステップ490でプロセッサ48は選択されたエッジに対する解を識別しようとし始める。これらの解は、限定解データ構造により表される。ステップ490において、プロセッサ48は、局所的な制約が例示された時に導入された論理和に基づいて、局所的な解を作成する。プロセッサ48は、局所的な解と左及び右の子に対する解のクロスプロダクトをとって、選択されたエッジに対する幾らかの候補内部解を生成する。プロセッサ48は、その後のステップにおいて一度に一つずつこれら候補内部解を調査する。
【0090】
図14を参照すると、プロセッサ48は、ステップ502において評価のために候補の内部解の1つを選択し、ステップ504において局所的なnogood節を用いてそれを評価し、選択された候補内部解節の妥当性を決定する。プロセッサ48がステップ506において選択された候補の内部解が妥当でないと決定すれば、プロセッサ48は図13のステップ500に戻って、別の候補の内部解を評価し始める。一方、選択された候補の解が妥当であれば、プロセッサ48はステップ508に進む。このステップにおいて、選択された候補の内部解における節の各々は真であると仮定され、選択された限定セットの節が調査されて、それらのどれが真であるかを決定される。プロセッサ48は、ステップ510において真であると評価された限定セットの節に注目し、選択された限定セットに関連する限定された論理和データ構造の節フィールド中にリストされるものとそれらを比較する。限定セットに対する解に含まれていない場合には、ステップ514においてプロセッサ48は注目した節を用いて新たな限定解を作成し、限定セットに対する解にそれを追加する。最後にステップ516において、プロセッサ48は選択された候補の内部解に対するデータ構造に対するポインタを、限定解データ構造のマップフィールドに追加する。
【0091】
1つの候補の解の評価が完了すると、プロセッサ48は図13のステップ500に戻って、ステップ502〜516を参照して説明されたように候補の内部解の調査を継続して行う。選択されたサブツリーに対する候補の内部解を調査した後、プロセッサ48はステップ500から図12のステップ470に分岐する。選択されたエッジに関連するサブツリーの全てを処理した後、プロセッサ48はステップ454に戻り、任意の解を限定セットに戻す。
【図面の簡単な説明】
【図1】本発明の方法を用いるコンピュータシステムを示す。
【図2】本発明の方法を実行するソフトウェアルーチンの図である。
【図3】メインルーチンのフローチャートである。
【図4】エッジ制約処理ルーチンの一部を示すフローチャートである。
【図5】エッジ制約処理ルーチンの一部を示すフローチャートである。
【図6】エッジ制約処理ルーチンの一部を示すフローチャートである。
【図7】 AVPairコピールーチンのフローチャートである。
【図8】レジーリンクの拡張ルーチンのフローチャートである。
【図9】ファクトのコピールーチンのフローチャートである。
【図10】節の結合ルーチンのフローチャートである。
【図11】節の移入ルーチンのフローチャートである。
【図12】エッジの解の獲得ルーチンの一部を示すフローチャートである。
【図13】エッジの解の獲得ルーチンの一部を示すフローチャートである。
【図14】エッジの解の獲得ルーチンの一部を示すフローチャートである。
【符号の説明】
30 コンピュータシステム
44 光学文字認識ユニット
48 プロセッサ
Claims (1)
- 入力手段、メモリ、およびプロセッサを用いて自然言語テキストの特徴構造を統一するために使用する方法であって、
前記入力手段により自然言語テキストが入力されると、前記プロセッサがメモリ中に格納された命令を、該入力された自然言語テキストに対して実行することにより前記方法を実行し、
該方法が、
(a)前記プロセッサが、前記メモリ内のリンク元特徴構造を拡張し、
(b)前記プロセッサが、前記メモリ内のリンク元特徴構造において、所定のコンテキストが関係付けられた所定のレジーコピーリンクのリンク先特徴構造の属性を、該メモリ内のリンク元特徴構造へコピーし、
(c)前記プロセッサが、前記メモリ内のリンク元特徴構造において、所定のコンテキストが関係付けられた所定のレジーコピーリンクのリンク先属性値を、該メモリ内のリンク元特徴構造へコピーする、
ことを含み、
前記(a)は、
(a1)前記プロセッサが、前記メモリ内のリンク元特徴構造がすでに拡張されているか否か判定し、
(a2)前記メモリ内のリンク元特徴構造がすでに拡張されているならば、前記プロセッサが(a)の処理を終了し、
(a3)前記メモリ内のリンク元特徴構造が拡張されていないならば、前記プロセッサが、該メモリ内のリンク元特徴構造が有する複数のレジーコピーリンクの複数のリンク先特徴構造の各々に対して(a)を実行することにより該複数のリンク先特徴構造の各々を拡張し、
(a4)前記複数のリンク先特徴構造の各々に対して、前記プロセッサが(b)を実行し、
(a5)前記複数のリンク先特徴構造の各々に対して、前記プロセッサが(c)を実行する、
ことを含み、
前記(b)は、
(b1)前記所定のレジーコピーリンクのリンク先特徴構造内にコピーされていない属性が存在するならば、前記プロセッサが、前記コピーされていない属性を、前記メモリ内のリンク元特徴構造へコピーし、前記所定のレジーコピーリンクのリンク先特徴構造内にコピーされていない属性が存在しないならば(b)を終了し、
(b2)前記プロセッサが、コピーされた前記属性の各々に対して関係付けられた特徴構造から、コピーされた前記属性に対応する前記リンク先特徴構造内の属性値の各々へ、前記所定のコンテキストが関係付けられたレジーコピーリンクを追加する、
ことを含み、
前記(c)は、
(c1)前記所定のレジーコピーリンクのリンク先が属性値であるならば、前記属性値に関係付けられたコンテキストどうしを結合し、前記所定のレジーコピーリンクのリンク先が属性値でないならば(c)を終了し、
(c2)結合された前記コンテキストを、前記メモリ内のリンク元特徴構造へ追加し、
(c3)前記所定のレジーコピーリンクのリンク先属性値を、前記メモリ内のリンク元特徴構造へ追加し、前記結合されたコンテキストに関係付ける、
ことを含む、
方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US668988 | 1996-06-21 | ||
US08/668,988 US5819210A (en) | 1996-06-21 | 1996-06-21 | Method of lazy contexted copying during unification |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1078959A JPH1078959A (ja) | 1998-03-24 |
JP4413286B2 true JP4413286B2 (ja) | 2010-02-10 |
Family
ID=24684568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16436997A Expired - Lifetime JP4413286B2 (ja) | 1996-06-21 | 1997-06-20 | エッジデータ構造を統一する方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US5819210A (ja) |
EP (1) | EP0814418B1 (ja) |
JP (1) | JP4413286B2 (ja) |
DE (1) | DE69712411T2 (ja) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903860A (en) * | 1996-06-21 | 1999-05-11 | Xerox Corporation | Method of conjoining clauses during unification using opaque clauses |
US6498921B1 (en) * | 1999-09-01 | 2002-12-24 | Chi Fai Ho | Method and system to answer a natural-language question |
US5836771A (en) * | 1996-12-02 | 1998-11-17 | Ho; Chi Fai | Learning method and system based on questioning |
US6138098A (en) * | 1997-06-30 | 2000-10-24 | Lernout & Hauspie Speech Products N.V. | Command parsing and rewrite system |
US6330530B1 (en) * | 1999-10-18 | 2001-12-11 | Sony Corporation | Method and system for transforming a source language linguistic structure into a target language linguistic structure based on example linguistic feature structures |
DE19952070A1 (de) * | 1999-10-28 | 2001-06-28 | Kiwi Interaktive Medien Gmbh | Verfahren zur Erweiterung einer Datenbank |
US6704728B1 (en) * | 2000-05-02 | 2004-03-09 | Iphase.Com, Inc. | Accessing information from a collection of data |
US8478732B1 (en) | 2000-05-02 | 2013-07-02 | International Business Machines Corporation | Database aliasing in information access system |
US6714905B1 (en) * | 2000-05-02 | 2004-03-30 | Iphrase.Com, Inc. | Parsing ambiguous grammar |
US6711561B1 (en) | 2000-05-02 | 2004-03-23 | Iphrase.Com, Inc. | Prose feedback in information access system |
US8290768B1 (en) | 2000-06-21 | 2012-10-16 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
US6408277B1 (en) | 2000-06-21 | 2002-06-18 | Banter Limited | System and method for automatic task prioritization |
US9699129B1 (en) | 2000-06-21 | 2017-07-04 | International Business Machines Corporation | System and method for increasing email productivity |
US7644057B2 (en) | 2001-01-03 | 2010-01-05 | International Business Machines Corporation | System and method for electronic communication management |
US7136846B2 (en) | 2001-04-06 | 2006-11-14 | 2005 Keel Company, Inc. | Wireless information retrieval |
US7165055B2 (en) * | 2002-02-14 | 2007-01-16 | Xerox Corporation | Systems and methods for solving nogood databases |
US7302382B2 (en) * | 2002-02-20 | 2007-11-27 | Xerox Corporation | Generating with lexical functional grammars |
US7225121B2 (en) * | 2002-02-20 | 2007-05-29 | Palo Alto Research Center Incorporated | Generating with Lexical Functional Grammars |
US7343372B2 (en) * | 2002-02-22 | 2008-03-11 | International Business Machines Corporation | Direct navigation for information retrieval |
US20040167910A1 (en) * | 2002-12-06 | 2004-08-26 | Attensity Corporation | Integrated data products of processes of integrating mixed format data |
US7203668B2 (en) * | 2002-12-19 | 2007-04-10 | Xerox Corporation | Systems and methods for efficient ambiguous meaning assembly |
US7171403B2 (en) | 2003-01-09 | 2007-01-30 | Palo Alto Research Center Incorporated | Systems and methods for efficient conjunction of Boolean variables |
US20050187913A1 (en) | 2003-05-06 | 2005-08-25 | Yoram Nelken | Web-based customer service interface |
US8495002B2 (en) | 2003-05-06 | 2013-07-23 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
US20040230415A1 (en) * | 2003-05-12 | 2004-11-18 | Stefan Riezler | Systems and methods for grammatical text condensation |
US7657420B2 (en) * | 2003-12-19 | 2010-02-02 | Palo Alto Research Center Incorporated | Systems and methods for the generation of alternate phrases from packed meaning |
US7769579B2 (en) | 2005-05-31 | 2010-08-03 | Google Inc. | Learning facts from semi-structured text |
US8244689B2 (en) | 2006-02-17 | 2012-08-14 | Google Inc. | Attribute entropy as a signal in object normalization |
US7392258B2 (en) * | 2005-02-25 | 2008-06-24 | International Business Machines Corporation | Method and computer program product for dynamic weighting of an ontological data model |
US7809754B2 (en) * | 2005-02-28 | 2010-10-05 | International Business Machines Corporation | Method and computer program product for generating a lightweight ontological data model |
US7587387B2 (en) | 2005-03-31 | 2009-09-08 | Google Inc. | User interface for facts query engine with snippets from information sources that include query terms and answer terms |
US9208229B2 (en) | 2005-03-31 | 2015-12-08 | Google Inc. | Anchor text summarization for corroboration |
US8682913B1 (en) | 2005-03-31 | 2014-03-25 | Google Inc. | Corroborating facts extracted from multiple sources |
US7831545B1 (en) | 2005-05-31 | 2010-11-09 | Google Inc. | Identifying the unifying subject of a set of facts |
US8996470B1 (en) * | 2005-05-31 | 2015-03-31 | Google Inc. | System for ensuring the internal consistency of a fact repository |
US8046348B1 (en) * | 2005-06-10 | 2011-10-25 | NetBase Solutions, Inc. | Method and apparatus for concept-based searching of natural language discourse |
US7606776B1 (en) | 2005-09-28 | 2009-10-20 | Actenum Corporation | Flexible constraint propagation engine for combinatorial optimization applications |
US7991797B2 (en) | 2006-02-17 | 2011-08-02 | Google Inc. | ID persistence through normalization |
US8260785B2 (en) | 2006-02-17 | 2012-09-04 | Google Inc. | Automatic object reference identification and linking in a browseable fact repository |
US8700568B2 (en) | 2006-02-17 | 2014-04-15 | Google Inc. | Entity normalization via name normalization |
US20080213047A1 (en) * | 2006-08-21 | 2008-09-04 | Bryant Corwin J | Systems and methods for liner tensioning in pipeline rehabilitation |
US8122026B1 (en) | 2006-10-20 | 2012-02-21 | Google Inc. | Finding and disambiguating references to entities on web pages |
US8347202B1 (en) | 2007-03-14 | 2013-01-01 | Google Inc. | Determining geographic locations for place names in a fact repository |
US8239350B1 (en) | 2007-05-08 | 2012-08-07 | Google Inc. | Date ambiguity resolution |
US7966291B1 (en) | 2007-06-26 | 2011-06-21 | Google Inc. | Fact-based object merging |
US7970766B1 (en) | 2007-07-23 | 2011-06-28 | Google Inc. | Entity type assignment |
US8738643B1 (en) | 2007-08-02 | 2014-05-27 | Google Inc. | Learning synonymous object names from anchor texts |
US8812435B1 (en) | 2007-11-16 | 2014-08-19 | Google Inc. | Learning objects and facts from documents |
US8676737B2 (en) * | 2009-10-05 | 2014-03-18 | International Business Machines Corporation | Detecting missing cases in business rules |
US9317595B2 (en) * | 2010-12-06 | 2016-04-19 | Yahoo! Inc. | Fast title/summary extraction from long descriptions |
US8819078B2 (en) * | 2012-07-13 | 2014-08-26 | Hewlett-Packard Development Company, L. P. | Event processing for graph-structured data |
US10657180B2 (en) * | 2015-11-04 | 2020-05-19 | International Business Machines Corporation | Building and reusing solution cache for constraint satisfaction problems |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5438511A (en) * | 1988-10-19 | 1995-08-01 | Xerox Corporation | Disjunctive unification |
US5727222A (en) * | 1995-12-14 | 1998-03-10 | Xerox Corporation | Method of parsing unification based grammars using disjunctive lazy copy links |
-
1996
- 1996-06-21 US US08/668,988 patent/US5819210A/en not_active Expired - Lifetime
-
1997
- 1997-06-19 DE DE69712411T patent/DE69712411T2/de not_active Expired - Lifetime
- 1997-06-19 EP EP97304335A patent/EP0814418B1/en not_active Expired - Lifetime
- 1997-06-20 JP JP16436997A patent/JP4413286B2/ja not_active Expired - Lifetime
-
1998
- 1998-06-18 US US09/100,269 patent/US6064953A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69712411D1 (de) | 2002-06-13 |
DE69712411T2 (de) | 2002-08-29 |
JPH1078959A (ja) | 1998-03-24 |
EP0814418A1 (en) | 1997-12-29 |
US5819210A (en) | 1998-10-06 |
EP0814418B1 (en) | 2002-05-08 |
US6064953A (en) | 2000-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4413286B2 (ja) | エッジデータ構造を統一する方法 | |
Wang et al. | A system for approximate tree matching | |
US5878406A (en) | Method for representation of knowledge in a computer as a network database system | |
JP4140980B2 (ja) | プログラムツリーを表示するコンピュータプログラムの構文依存しない表示方法 | |
US5594837A (en) | Method for representation of knowledge in a computer as a network database system | |
US7499921B2 (en) | Streaming mechanism for efficient searching of a tree relative to a location in the tree | |
US5438511A (en) | Disjunctive unification | |
Carroll | Practical unification-based parsing of natural language | |
US7236925B2 (en) | Left-corner chart parsing | |
JP2005070911A (ja) | 構造化文書のデータを検索する装置および方法 | |
EP0814417B1 (en) | Method of and system for unifying data structures | |
US5452226A (en) | Rule structure for insertion of new elements in a circuit design synthesis procedure | |
US8122431B2 (en) | Device for processing formally defined data | |
US5727222A (en) | Method of parsing unification based grammars using disjunctive lazy copy links | |
JP3612914B2 (ja) | 構造化文書検索装置及び構造化文書検索方法 | |
KR100345277B1 (ko) | Xml 문서의 논리적인 구조정보 추출기 | |
Chen et al. | A new tree inclusion algorithm | |
Crouch et al. | Exploiting f-structure input for sentence condensation | |
US5628012A (en) | Method and apparatus for querying a database containing disjunctive information | |
JPH0727532B2 (ja) | 情報検索方法及びシステム | |
Marin-Castro et al. | VR-Tree: A novel tree-based approach for modeling Web Query Interfaces | |
Beckman-Davies | Finding program differences based on syntactic tree structure | |
Anton | A version space algorithm for inducing Wrappers in XPath | |
Costagliola et al. | Towards syntax-aware editors for visual languages | |
Li | Using inverted lists to match structured text |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040621 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060725 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061025 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061114 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070314 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070522 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20070601 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090518 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090521 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090917 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091118 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121127 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121127 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131127 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |