(57)【要約】【課題】  音声可能化システムの開発者が、当該システムにおいて使用する文法およびコーパスを生成できるようにするコンピュータソフトウェアシステムを提供する。【解決手段】  この発明は、テーブルインタフェースを用い、文法における句をテーブルのセルに投入する。このテーブルはまた、各有効発話に対応するトークンデータを含む。文法が規定されたときに、コンピュータソフトウェアシステムは自動的にこのテーブルを探査して文法において可能なすべての有効発話を列挙する。この探査により有効発話およびそれらのトークンのリスト（コーパス）を生成する。次にこのリストを用いて音声可能化システムのために発話を解釈することができる。このコンピュータソフトウェアシステムはまた、テーブルにある文法規則を、市場で入手できる種々の音声認識装置と互換性のあるフォーマットに置換える。【選択図】        図２−１
2004258674.tif 000002
【特許請求の範囲】
【請求項１】
自動音声認識（ＡＳＲ）システムのＩＶＲシステムによって用いるための言語文法を自動的に作成するためのコンピュータシステムであって、
開発者は、セルの行列からなるメインテーブルを作成し、前記メインテーブル内における前記セルのいくつかは、前記言語文法において有効発話を形成するよう句として組合せられるべきデータを受け、前記メインテーブルの端部列のセルにはマークが付され、そこには有効発話の終わりを示すトークンデータが含まれ、
前記コンピュータシステムは、
前記メインテーブルの列の列挙探査を自動的に行なう手段を含み、前記列挙探査は前記言語文法における有効発話のリストを自動的に発生し、
前記有効発話を記憶するための手段と、
前記メインテーブルを分析し、文法規則の集合を前記メインテーブルの内容から抽出する手段と、
自動音声認識（ＡＳＲ）システムによって用いるため前記文法規則を出力ファイルに書込むための手段とを含み、
前記言語文法における有効発話は前記規則の組に従う、コンピュータシステム。
【請求項２】
前記列挙探査は前記メインテーブル中の前記セルの行列に対して所定の方向で行われ、
前記開発者は、前記メインテーブル内の前記セルのうちのいくつかにおいて、前記列挙探査中に横断されることのない可視境界を作成する、請求項１に記載のシステム。
【請求項３】
いくつかの前記セルは非終端セルをさらに含み、前記非終端セルの内容としては別のテーブルを参照する、請求項１に記載のシステム。
【請求項４】
前記セルは変数セルをさらに含み、前記変数セルの内容は、話される発話において前記対話型音声応答システム（ＩＶＲ）が変数を検出すると実行されるアルゴリズムを参照する、請求項３に記載のシステム。
【請求項５】
前記セルは任意選択セルをさらに含み、前記任意選択セルを含む有効発話は前記任意選択セルの内容を伴うおよび伴わないの両方において有効である、請求項１に記載のシステム。
【請求項６】
前記セルのいくつかは自動音声認識（ＡＳＲ）システム指示セルをさらに含み、前記ＡＳＲ指示セルの内容はＡＳＲシステムにとって特別な意味を有する、請求項１に記載のシステム。
【請求項７】
対話型音声応答システムにおいて用いるための言語文法を作成するためのコンピュータのシステムであって、
セルの行列からなるメインテーブルを開くための手段と、
前記セルにおいて句データを入力するための手段と、
列挙探索中に横断されることのない境界を前記メインテーブル内に作成するための手段と、
あるセルを非終端セルとして識別するための手段とを含み、前記非終端セルの内容は別のテーブルを参照し、
前記システムはさらに、
非終端セルを変数セルとしてさらに識別するための手段を含み、前記変数セルの内容も、話される発話において前記対話型音声応答システムが変数を検出すると実行されるアルゴリズムを参照し、
前記システムはさらに、
あるセルを任意選択セルとして識別するための手段を含み、前記任意選択セルを含む有効発話は、前記任意選択セルの内容を伴うと伴わないとの両方において有効であり、
前記システムはさらに、
あるセルを自動音声識別（ＡＳＲ）システム指示セルとして識別する手段を含み、前記ＡＳＲ指示セルの内容はＡＳＲシステムにとって特別な意味を有し、
前記システムはさらに、
前記セルの１つを前記言語文法において有効発話の終わりとしてマークするための手段と、
前記マークされるセルに関連付けられるセルにトークンデータを入力するための手段とを含み、前記トークンデータは、前記マークされたセルによって終わる前記有効発話の意味を表現し、
前記システムはさらに、
前記メインテーブルにおいて見出される有効発話を列挙するために、まず前記メインテーブルの前記列挙探査を行なうための手段と、
前記列挙探査の結果を第１の出力ファイルに書込むための手段と、
前記メインテーブルにおいて見出される有効発話を定義する規則の集合を抽出するために、前記メインテーブルを分析するための手段と、
前記分析の結果を前記出力ファイルに書込むための手段とを含む、システム。
【請求項８】
前記列挙探査を行なうための手段は、
ａ）  前記メインテーブルにおいて最も上側で最も左側の空白でないセルで始めるための手段と、
ｂ）  前記最も上側で最も左側の空白でないセルの内容を発話バッファにて記録するための手段と、
ｃ）  その右側の次の空白でないセルに移動して、前記セルの内容を前記発話バッファに付加するための手段と、
ｄ）  マークされた列に達するまで、前記手段ｃ）による処理を繰返すための手段と、
ｅ）  前記発話バッファの内容を前記第１の出力ファイルに書込むための手段と、
ｆ）  前記発話バッファにその内容がある先の空白でないセルに向かって左に移動し、前記先の空白でないセルの内容を発話バッファから消去するための手段と、
ｇ）現在のセルが、前記現在のセルの下にて縦方向に隣接する空白でないセルを、前記現在のセルと前記縦方向に隣接する空白でないセルとの間に太い線を全く伴わない状態で有するまで手段（ｆ）による処理を繰返すための手段と、
ｈ）  前記縦方向に隣接する空白でないセルに向かって下方に移動して、前記縦方向に隣接する空白でないセルの内容を前記発話バッファに付加するための手段と、
ｉ）  メインテーブル全体が探査されるまで手段（ｂ）〜（ｈ）による各処理を繰返すための手段とを含む、システム。
【請求項９】
前記分析するための手段はさらに、
ｊ）  論理ＯＲを伴う縦方向に隣接するセルの内容をグループ分けするための手段と、
ｋ）  横方向に隣接する前記グループ分けされた内容を論理ＡＮＤと組合せるための手段とを含む、請求項７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一般に、コンピュータ化された自然言語システムに関する。より特定的には、この発明は、文法を創出し、その文法における有効発話のコーパスと、その文法を定義する規則の集合を含むファイルとを発生させるコンピュータシステムおよび方法に関する。さらに、この発明は、そのようなコーパスにトークン情報を含むことにより、その文法を用いて音声可能化システムへの各発話の意味を表現することに関する。
【背景技術】
【０００２】
コンピュータは我々の日常生活において頼みの綱となっている。私たちの多くは１日に何時間も、仕事、家庭、およびさらには買物中もコンピュータを用いて過ごしている。コンピュータを用いることは、しかしながら、常にコンピュータ側の条件で行なわれてきた。マウス、プッシュボタン、およびキーボードは、コンピュータに我々が望むことを伝えるには常にいくらか不自然な方法であった。しかしながら、コンピュータ技術が進歩し続けるにつれ、コンピュータは我々の側の条件、つまり話し言葉で人間と通信する方向に少しずつ動かされつつある。
【０００３】
人間と話すことができるコンピュータを作り出すには、本質的に２つのステップがある。第１に、そのコンピュータは、話し言葉を検知してそれらを何らかの形式のコンピュータ読取可能データ、たとえば単純なテキストなどに変換するために、自動音声認識システムを必要とする。第２に、そのコンピュータは、そのコンピュータ読取可能データを分析して、それらの言葉がそれらが使われるとおりにおいて何を意味したのかを判断する何らかの方法を必要とする。
【０００４】
伝統的な音声認識装置は話し言葉を認識することにおいて非常に能率がよくなってきており、いくつかの優れた音声認識装置が市場にて入手可能となっている。Lernout & Hauspieにより製造されるASR-1500、AT&Tにより製造されるWatson 2.0、およびNuanceによるNuance 5.0は、効果的な連続音声・発話者非依存型音声認識装置である。音声認識装置は、発話者に対して語と語の間にポーズを入れることを要求しない場合、それは「連続的」であり、発話者の言葉を理解するためにこの発話者の声を事前に聞いておく必要がない場合、それは「発話者非依存型」である。たとえば、ある音声認識装置では、それが言葉を理解し得るようになる前に、まずユーザの声を学習しなければならない。ユーザの声を学習することとは、ユーザが鍵となる音声学上の言葉または言語音のリストを読み上げる間に、音声識別装置にそのユーザの声を記録させ記憶させることを意味する。
【０００５】
上記したASR-1500およびWatson 2.0のような認識装置は、通常は、それらが聞くように要求される文法の事前通知を必要とする。この事前通知は、その文法の規則および内容を記述する販売者特有ＡＳＲ文法ファイルの形式で入来する。しかしながら、このデータファイルを作成する容易な方法はない。上記の音声認識装置の製造業者らはデータファイルが書き込まれなければならないフォーマットをユーザに提供するが、そのデータファイルの実際の書込みはそのユーザ次第である。
【０００６】
欧州特許（ＥＰ）  ０６８１  ２８４  Ａ２には、汎用マイクロプロセッサに基づくコンピュータ上にて実行するソフトウェア上にて実時間で動作することができる音声理解インタプリタシステムが図示され記載されている。この特許には、公知の音声認識装置のための大量語彙音声認識文法と、多くの先行技術システムにおいて用いられる自然言語プロセッサのための別個の自然言語文法とを提供することの複雑さについて記載されている。自然言語文法を発生させるために用いられる同じコンパイラをさらに音声認識装置の文法
を準備するためにも用いる。両方の文法を発生させるために用いられるこの統合されたコンパイラは、音声認識装置（ＳＲ）がありそうにもない語または文章の連なりを、語のパターンを語または語の連なりの意味へと抽出する自然言語（ＮＬ）プロセッサに送るのを制限する。一旦コンパイラがＳＲおよびＮＬ文法ファイルを発生させると、それらは次いでＳＷＩＦＴＵＳ  ＮＬプロセッサにロードされ、次いでそれは動作可能となるが、それより前には動作可能とはならない。この引用例には、コンパイラの構造および動作モードは記載されてはいない。
【０００７】
ＰＣＴ  ＷＩＰＯ国際公開第ＷＯ  ９６／２６４８４号には、図形表示装置を用いてアプリケーションのプログラムモジュールを編集するための方法および手段が記載されている。この国際公開では、スプレッドシステムを用いることによって、複数の領域をセルの中に含む視覚的セルフォーマットにおいてモジュールを表示することにより、視覚的フォーマットではよりよく理解されしたがって図形エディターでより簡単に編集されるようなモジュールの内容を表現する文またはテキストを表示する。この図形エディターはコンパイラではないが、視覚表現ディスプレイによって補助される場合にソフトウェアに関連する判断をなすことができることの重要性を示す。
【０００８】
これら引例のいずれにも、対話型音声応答システムにおいて用いられる文法およびファイルを作成する方法および手段は考慮されてはいない。
【特許文献１】欧州特許（ＥＰ）  ０６８１  ２８４  Ａ２
【特許文献２】ＰＣＴ  ＷＩＰＯ国際公開第ＷＯ  ９６／２６４８４号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
このファイルを書込まなければならないユーザはいくつかの問題に直面する：１）このファイルフォーマットは通常その音声認識装置ソフトウェアにとってベストなものであり、したがって、あまり直観的または容易には理解されない；２）単純な文法であっても大きな文法ファイルをもたらす結果となり得、誤りに対する可能性を増大させる；３）ほどほどな大きさの文法ファイルでも数百（または数千）の規則を有し得、これらの規則における論理的誤りは犯しやすい一方で発見されにくい；４）そのファイルを書込み誤りを検査するのに長時間を要する。かくして、音声認識装置のユーザにとっては、文法を定義し、その音声認識措置と整合性がある文法ファイルを発生させるより単純な方法が求められる。
【００１０】
さらに、本出願は、その文法に対し注釈付きコーパスを用いる音声可能化システムを開示する。この注釈付きコーパスは、本質的には、その文法における有効発話（文）をリスト化したもの、および各有効発話の意味を表現するトークンデータ値である。このようなコーパスは何百万ものエントリを含み得、文法とならんでこの注釈付きコーパスを発生させるためのより単純化された方法が必要とされる。
【００１１】
この発明はこれらの要求を両方とも満足させるものである。
【００１２】
この発明の一般的な目的は、文脈自由文法を発生させるためのツールキットを提供することである。
【００１３】
この発明の別の目的は、文脈自由文法およびその文法における発話の注釈付きコーパスを発生させるタスクを単純化するためのツールキットを提供することである。
【００１４】
この発明のさらなる目的は、文法によってサポートされるコーパスであって、その中にある各項目の意味を表現するトークンデータを含むコーパスを作成するためのシステムを提供することである。
【課題を解決するための手段】
【００１５】
これらおよび他の目的は、対話型音声認識システム開発者に、文法コーパスを発生させる単純かつ直観的な方法、または言語を構成する語および句（発話）のリストを提供するこの発明によって達成される。セルの行列からなるテーブルをまず用いて文法を定義する。
【００１６】
好ましい実施例において用いられるテーブルの単純化された説明として、ある有効発話が、最も左側の列にあるあるセルで始まって、その右側のある列で終わり、それらの間の各列からの１つのセルの内容を含まなければならない。この左から右への進行は上記のテーブルを通るある経路を辿るが、この経路自体がその有効発話である。全く異なる意味を持つ有効発話が最も左側の列の同じセルで始まる可能性もあるため、コラム内の太い線を用いることにより、当該経路内の次のセルを考える際にその経路が交差し得ない境界を形成する。したがって、１つの意味を有する発話の経路は、全く異なる意味を持つ発話の経路にあるセルとともには続き得ない。
【００１７】
最終的に、有効発話の経路は、その発話における最後の語に到達すると終わる。好ましい実施例では、その発話の最後の語としてのその同じ行内にある次の空白でないセルにトークンデータが含まれる。このトークンデータは、開発中の音声可能化アプリケーションに対する、その有効発話の意味を表現する。
【００１８】
セルは他のタイプのデータも含み得る。あるセルには他のテーブルへのリファレンスが含まれてもよい。他のセルには、音声可能化アプリケーションに別個のデータ値を返す句（たとえば数字、日付、時間およびドルの額）である変数が含まれてもよい。セルには、音声認識装置によって理解される指示またはコマンドが含まれてもよい。あるセルは、任意選択セルの内容を伴ってまたは伴わずに発話が有効であるような、任意選択として識別されてもよい。
【００１９】
開発者がテーブルにデータを入力し終わると、その文法が定義される。次いで、このテーブルを探査することによってその文法における有効発話の列挙されたリスト（コーパス）が発生されるが、そのコーパスにおける各発話にはさらにトークンが含まれる。さらにこのテーブルをもう一度処理することによって、自動音声認識（ＡＳＲ）システムへの入力として働く文法ファイルを発生させる。さらに、この第２の処理中においては、そのＡＳＲ音声認識装置の性能特性を利用するよう、その文法が最適化される。これらの処理は、それらが記載される順序で生ずる必要はない。
【００２０】
次いで、このコーパスおよび文法ファイルを、好ましい実施例では対話型音声認識システム（ＩＶＲ）において用いるが、このシステムが実際には発話者と対話している。音声認識装置によって聞き取られた有効発話はＩＶＲに報告され、次いでＩＶＲがそれら有効発話を実行時インタプリタ（上述の同時係属出願の主題）に送り、そこで、その音声認識装置によって検知された有効発話がその文法内の有効発話のコーパスと比較される。一致が見つかると、それに関連付けられるトークンが検索されＩＶＲに戻される。一旦トークンが与えられると、ＩＶＲはその検知された有効発話が何を意味するかを理解し、それに従って反応し得る。
【発明を実施するための最良の形態】
【００２１】
本発明を記載する前に、いくつかの用語を定義する必要がある。これらの用語およびそ
れらの定義は以下のものを含む：
注釈付きＡＳＲコーパスファイル  −  ある文法における有効発話をリスト化したもの、および、対話型音声認識システム（ＩＶＲ  １３０）への各有効発話の意味を表現する、各有効発話に対するトークンデータを含むデータファイル。
【００２２】
自動音声認識（ＡＳＲ）  −  話し言葉を識別してそれらをたとえばテキスト（文字）のようなコンピュータ読取可能フォーマットにて報告する能力があるコンピュータハードウェアおよびソフトウェアに対する包括的な用語。
【００２３】
セル  −  テーブル内における別個であり区別される要素（このテーブルはセルの行列からなる）。下記の「規則」の定義とともに与えられる例示的規則においては、“I want”、“I need”および“food”の各々があるセルに置かれることになる。さらに、好ましい実施例では、“I want”および“I need”を含むセルは縦方向に互いに隣接する（同じ列）。縦方向に隣接するセルは概して併せてＯＲされる。しかしながら、“food”を含むセルは“I want”および“I need”の列の右の列に生じて、“food”は“I want”または“I need”のいずれかに続かなければならないという事実を示し、したがって、“food”を含むセルはＡＮＤされることにより、“I want”および“I need”を含むセルに続くことになる。
【００２４】
制約付き文法  −  発話者の言語における各およびすべての考えられ得る文は含まず、受入れ可能な文の範囲を限定する文法。
【００２５】
コーパス  −  大きなリスト。
【００２６】
文法  −  理解されるべき言語全体。規則の集合を用いることにより、またはその文法内にて許される各およびすべての文をリスト化することによって、さまざまな文法を表現し得る。
【００２７】
文法開発ツールキット（１０４）  −  文法およびその文法を表現する規則の集合を作成するために用いられるソフトウェア。
【００２８】
自然言語理解  −  通常の態様にて話される文にある意味を識別すること。
【００２９】
句  −  文法の「基礎単位」であり、テーブル内のあるセル全体を占める語、語の群、または変数。
【００３０】
規則  −  これらは文法の論理を定義する。ある例示的な規則は：（“I want”｜“I need”）（“food”）であり、これによって、“I want”ＯＲ“I need”で始まりＡＮＤで直後に“food”が続く文のみからなる文法を定義する。
【００３１】
実行時インタプリタ（１２４）  −  有効発話が聞こえる度に注釈付きコーパス（１２２）を検索して、その有効発話の意味を表わすトークンを返すソフトウェア。
【００３２】
実行時インタプリタアプリケーションプログラムインターフェイス（ＲＩＡＰＩ）  −
対話型音声応答システム（１３０）が実行時インタプリタを用いる際のインターフェイスとして働くソフトウェア機能の組合せ。
【００３３】
音声認識装置（１１６）  −  話し言葉を検知し識別することができるハードウェアとソフトウェアとの組合せ。
【００３４】
音声認識装置コンパイラ（１１４）  −  音声認識装置（１１６）とともに含まれ、入力として販売者特有ＡＳＲ文法ファイル（１１２）を受入れ、そのファイル（１１２）を実行時中に音声認識装置（１１６）にて用いるために処理するソフトウェア。
【００３５】
テーブル  −  文法を表現するために用いられる２次元格子。テーブルの内容は、好ましい実施例においては、左から右へ読まれる。
【００３６】
トークン  −  テーブル内の各有効発話の後にはトークンを含むセルが続くが、このトークンは、対話型音声応答システム（１３０）への有効発話の意味を表現する独立のデータ値（開発者が当該文法を開発する際にその開発者によって作成される）である。
【００３７】
発話  −  文。
【００３８】
発話（話される）  −  声に出された発話。話された発話は、それが文法の規則に従う場合には、有効発話であるかもしれない。
【００３９】
発話（有効）  −  文法内に見出される発話。有効発話は文法を定義する規則に従う。
【００４０】
変数  −  完全に列挙するには多くの可能性がありすぎる句を表現するためにコーパス（１２２）にて用いられる「集合指定子」。たとえば、“My favorite number between one and a million is xxx（１と１００万と間で私の好きな数字はxxxである）”という発話の結果は、１つが各考えられ得る数に対する、９９９，９９８のコーパスエントリであり得る。この発明では、しかしながら、変数は、コーパス（１２２）内の数を表現するべく用いられる。したがって、ある低減されたコーパス（１２２）には“My favorite number between one and a million is ［INTEGER］（１と１００万との間で私の好きな数字は［整数］である）”という発話に対し、単に１つがエントリを含まれることになる。実行時インタプリタ（１２４）はそのコーパスにおいてこの変数を識別することができ、実行時中にさらなる処理を行なうことによってその数を解釈する。
【００４１】
販売者特有ＡＳＲ文法ファイル（１１２）  −  文法を表現する規則の集合を含み、音声認識装置コンパイラ（１１４）によって認識されるフォーマットにて書込まれるデータファイル。
【００４２】
ここで、図面を参照して（それらのうちいくつかに現れる要素は図面全体を通して同じ参照番号を与えられる）、埋込自然言語理解システム（１００）の好ましい実施例を実現するのに必要な構造を図１に示す。基本的な構成要素は以下を含む：
対話型音声応答システム（１３０）またはＩＶＲ；
文法開発ツールキット（１０４）；
自動音声認識（ＡＳＲ）システム（１１８）の一部である、コンパイラ（１１４）および音声認識装置（１１６）；
注釈付きＡＳＲコーパスファイル（１２２）；
販売者特有ＡＳＲ文法ファイル（１１２）；
実行時インタプリタ（１２４）；および
カスタムプロセッサインターフェイス（１２６）またはＣＰ；および
実行時インタプリタアプリケーションプログラムインターフェイス（１２８）またはＲＩＡＰＩ。文法開発ツールキット（１０４）がこの出願の焦点であり、以下に詳細に論じられる。上記の他の構成要素は上に引用した同時係属出願にて詳細に論じられる。しかしながら、この音声可能化システムの概観を知ることは、ツールキット（１０４）の動作および目的を十分に理解する上で役に立つであろう。
【００４３】
１．埋込アーキテクチャの概観
以下の概観では埋込アーキテクチャについて論ずるが、これは、ＲＩＡＰＩ（１２８）内に埋込まれてもよい単一の実行時インタプリタ（１２４）を用いるものである。複数の実行時インタプリタを用いる第２の分散型アーキテクチャもあるが、これは上記の引用した同時係属出願にて論じられている。
【００４４】
自然言語システムを実現する第１のステップは、文法における有効発話を司る規則の集合を作成することである。たとえば、“What do you want for lunch？（お昼に何が食べたい？）”という質問に対する応答に対する文法は次のように表現されるかもしれない：
＜応答＞：（（“I want”｜“I'd like”）（“hotdogs”｜“hamburgers”））；この規則の集合の下では、すべての有効応答が１）“I want”または“I'd like”に、２）“hotdogs”または“hamburgers”のいずれかが続くという２つの部分からなる。この表記法はバッカス・ナウア形式（Backus−Naur-Form）（ＢＮＦ）と称されるが、それによると、隣接する要素は併せて論理ＡＮＤされ、“｜”は論理ＯＲを表現する。この発明の好ましい実施例ではこのタイプの文法が発生される。
【００４５】
図１を参照して、開発者により、文法開発ツールキット（１０４）を用いて文法が発生される。
【００４６】
このツールキット（１０４）は、文法を発生させるための単純化された方法を自然言語アプリケーションの開発者に提供するような、新規なスプレッドシート指向型ソフトウェアパッケージである。好ましい実施例では、このツールキット（１０４）は、中央処理装置（１０２）とアプリケーション特定ソフトウェア（１０６）とメモリファイル１０８とキーボードなどの入力装置（１１０）とを含むコンピュータにある。
【００４７】
開発者がツールキット（１０４）を用いて文法を完成させると、ツールキット（１０４）はその自然言語システムにて用いるための２つの出力を発生させる。第１の出力は販売者特有ＡＳＲ文法ファイル（１１２）であるが、これは音声認識装置（１１６）によって認識可能なフォーマットにて保存される。音声認識装置（１１６）は、連続音声・発話者非依存型音声認識装置である。市場で入手可能な音声認識装置（１１６）としては、Lernout & Hauspie製造のASR-1500、AT&T製造のWatson 2.0、Nuance製造のNuance 5.0などがある。ツールキット（１０４）の好ましい実施例は、これら認識装置のうちいずれに対しても文法ファイルを発生することができる。
【００４８】
販売者特有ＡＳＲ文法ファイル（１１２）は、音声認識装置（１１６）と整合性がある形式にて書かれる、その認識装置が認識することを要求される語および句に関する情報を含む。さらに、このファイルは、選択された音声認識装置（１１６）に関する特性を利用すべく最適化される。たとえば、Ｌ＆Ｈ認識装置を用いた実験では、Ｌ＆Ｈ文法は、それが同じ始まりを伴う複数の規則（“I want”で始まる３つの規則）を有することを回避する場合にはうまく働くことがわかった。Ｌ＆Ｈ認識装置の場合に文法を最適化することは、規則の集合を＜規則１＞：（ａｂ）｜（ａｃ）｜（ａｄ）を＜規則２＞：ａ（ｂ｜ｃ｜ｄ）に書換えることになる。ここでは、「規則１」の３つの規則が「規則２」の１つのルールに書換えられ組合せられた。
【００４９】
音声を操作し認識するためには、音声認識装置は、その音声認識装置の販売者によって供給されるコンパイラツール（１１４）を用いて販売者特有ＡＳＲ文法ファイル（１１２）をコンパイルする必要がある。ツールキット（１０４）の好ましい実施例は、文法がまず発生されたときに、どの音声認識装置（１１６）が使用されしたがってその販売者特有ＡＳＲ文法ファイル（１１２）をフォーマット化できるかを知っている。
【００５０】
ツールキット（１０４）からの第２の出力は注釈付きＡＳＲコーパス（１２２）であるが、これは実際にはフラットファイルの対である。この対のうち第１のファイルはコーパスファイルであり、その文法におけるすべての考えられ得る論理的な文章または句（ただし以下で論じる変数は除く）をリスト化したものと、それらが現れるコンパートメント（テーブルの群）と、聞こえる発話（文章）のクラスを表現する値とを含む。第２のファイルは、各発話クラスを、トークン、またはその発話の意味を表現するデータ値とともにマッピングする応答ファイルである。これら２つのファイルは実行時インタプリタ（１２４）によって用いられる。
【００５１】
実行時中、発話者は、音声認識装置（１１６）に取付けられたマイクロホン（または電話）（１２０）に対して発話する。この認識装置（１１６）は、有効発話が聞こえると、それが聞いた語および句を識別し、ＩＶＲ（１３０）に通知する。このＩＶＲ（１３０）は音声理解能力を必要とするシステムであり、機能するよう必要な外部接続およびハードウェアを含む（たとえば、銀行業務ＩＶＲ  −  １３０は、銀行データベースへの接続部と、データ入力のためのキーパッドと、情報を表示するための視覚ディスプレイと、入出金のためのディスペンサと、ユーザに話し返すためのスピーカとを含むであろう）。この有効発話はたとえばテキストのようなコンピュータ読取可能形式にてＩＶＲ（１３０）に送られ、ＩＶＲ（１３０）は実行時インタプリタ（１２４）にその聞こえた発話を通知する。実行時インタプリタ（１２４）は注釈付きＡＳＲコーパス（１２２）に相談して、認識装置（１１６）が聞いた有効文章に対し適切なトークンをＩＶＲ（１３０）に返す。このトークンは認識装置（１１６）が聞いた発話の意味を表現するものであり、したがって、ＩＶＲ（１３０）はその発話に対し適切に応答することができる。ＣＰ（１２６）およびＲＩＡＰＩ（１２８）は、ＩＶＲ（１３０）が実行時インタプリタ（１２４）にアクセスできるソフトウェアインターフェイスとして働く。このＩＶＲ（１３０）が、究極的には、音声能力を用いて発話者と実行時中に対話するのである。
【００５２】
２．文法開発ツールキット
好ましい実施例では、このツールキットは、“Pentium（Ｒ）”-based（商標  Intel
Corp.）コンピュータシステム上にて動作する“Visual Basic”（商標  Microsoft Corp.）を用いて開発される。このツールキットは“Windows（Ｒ） NT”（商標  Microsoft Corporation）上にて動作するよう設計される。しかしながら、この発明は、異なるソフトウェアを用いる他のコンピュータシステムにて開発され得動作し得ることを理解されたい。
【００５３】
簡潔に言えば、このツールキットは、開発者が、音声を認識するためのＢＮＦに基づく言語モデルを用いる特定の音声認識装置に対し最適化されたＡＳＲ文法を視覚化し作成することを可能にするようなソフトウェアツールである。このツールキットの１つの新規な局面は、作成中の文法を視覚化するために用いられるスプレッドシートフォーマットである。図２は典型的なメインツールキットスクリーンを示す。
【００５４】
好ましい実施例では、このツールキットメインスクリーン（図２）は、あるプロジェクト内のテーブル（２０６）を表示する。プロジェクトは、特定の音声アプリケーションの基礎をなすコンパートメントとテーブルとの集合として定義される。コンパートメントには、あるプロジェクト内の特定のタスクに関係する１つ（以上）のテーブルが含まれる。テーブルには、本質的には、有効発話に対するツリーが含まれる。したがって、ある典型的なプロジェクトといえる「銀行業務」には、「口座問合せ」および「ローン問合せ」といった銀行業務に関連するさまざまなタスクに対するコンパートメントが含まれるであろう。「口座問合わせ」コンパートメント内のテーブルは、したがって、ある口座問合せの話題に関する有効発話を定義するであろう。
【００５５】
テーブル（２０６）は、開発者が文法を発生させるために用いられるデータを入力するマトリックスであり、セルの行列からなる。各セルには以下のタイプのうちの１つのデータが含まれ得る：終端シンボル、非終端シンボル、変数およびＡＳＲ指示。終端シンボルは任意のＡＳＣＩＩ記号列であり（ただし、実行時インタプリタ１２４または音声認識装置１１６に対し特定の意味を有する特別の文字は除く）、それらはテキスト形式にて書かれる言語の基本語句である。好ましい実施例における特別の文字には、Ｌ＆Ｈ認識装置に対しては「！」、「／*」および「♯」が含まれ、一般には、括弧、角型括弧、ブレースおよび脱字記号が含まれる。
【００５６】
非終端シンボルは他のテーブルに対する相互参照として働く。たとえば、メインテーブル２０６の第１行第３列および第７行第３列の“LOAN（ローン）”は、サブテーブル２０５ａを参照する非終端である。このメインテーブルを処理することによって上述のコーパスファイル（１２２）が発生されると、非終端シンボルがその参照されたテーブルで置換される。“LOAN”はサブテーブル２０５の内容で置換される。
【００５７】
変数は、別のテーブルを参照することに加えて、ある値を制御ソフトウェア（つまりＩＶＲ）に対し実行時中に返す、あるタイプの非終端シンボルである。メインテーブル２０６の第３列第４行は、サブテーブル２０５ｂを参照する変数“YEARS（年）”を含むセルである。変数によって参照されるテーブルはその変数に対する文法を定義し、販売者特有ＡＳＲ文法（１１２）が作成されると他の任意の参照されるテーブルとして処理される。しかしながら、コーパスファイル（１２２）が発生される場合には、変数は完全には列挙されない。これは、効率性を保つ場合には、リスト化するにはあまりに多くの可能性がありすぎることになるからである。たとえば、“My favorite number between 1 and a thousand is xxx（１から１０００までのうち私の好きな数はxxxである）”という有効発話は１０００の異なる可能性をもたらす結果となる。これらの可能性をすべて列挙する代わりに、変数を含む発話を、変数がその発話のどこに生ずるかの「集合を指定する」特別な文字とともに、コーパスファイル（１２２）に書込む。したがって、我々の例示的な発話の場合には、単一のコーパスファイル（１１２）エントリ“My favorite number between
1 and a thousand is ［INTEGER1］（１から１０００のうち私の好きな数は［整数１］である）”となる。実行時インタプリタ（１２４）が変数を含む検出された発話に対するコーパスファイル（１２２）を検索すると、その検出された発話の非変数部分のみが一致しなければならない。変数部分は、実行時インタプリタ（１２４）にあるアルゴリズムを用いて別途解釈され（この例ではINTEGER1に対するアルゴリズム）、結果として得られる値はＩＶＲ（１３０）が検索できるようにシステムメモリに記憶される。本実施例では、そのようなアルゴリズムでサポートされる変数のタイプを図５に示す。
【００５８】
コーパスファイル（１２２）においては、変数は通常のテキストからは角型括弧（「［」および「］」）でもって離されて設定される。これら括弧間の文字は、当該変数のタイプと、その変数が聞こえた場合に実行時において処理されるアルゴリズムとを識別する。
【００５９】
ＡＳＲ指示は音声識別装置（１１６）にとって意味を持つ特別なコマンドである。これらのセルは、文法ファイル（１１２）には現れるが、コーパスファイル（１２２）には現れない。たとえば、ＡＳＲ指示を文法ファイル（１１２）にて用いることにより、認識装置に対し、発話内に変数が存在し別のテーブルを参照すべきである旨が通知される。
【００６０】
任意として、セルにマークしたり、下線を引いたり、またはセルを特徴づけたりすることもできる。こうした特徴については、以下でテーブル探査について論じる際に説明する。
【００６１】
テーブルにおいて表わされた文法におけるすべての有効発話は、テーブルを左から右へ
と探査することによって得ることができる。
【００６２】
有効発話は、列１に示した句のうち１つが聞こえたときに始まる。列２以上においてこれに続き得る句の範囲は、例「I think」が発生する行１よりも上および下の行にある境界線によって決まる。境界線に関わらず、句は右に移動して隣接する列に入ることができるが、セルの句に下線を引くことによって記された境界線を越えて上昇または下降して隣接する行に入ることはできない。文字の大きさの制約があるので図示していないが「you give me」という句に下線が引かれていると仮定する。有効発話の存在を求めるために左から右に向かって列を探査しているときは、この境界線に垂直方向で出会ったり交差したりしない。
【００６３】
したがって、列２において可能な句は、行１から６（行７は境界を有する）のセルを含む。探査プロセスは、「TOKEN（トークン）」を含む「マークされた」列に達するまで、列３他まで続けられる。
【００６４】
各コンパートメントはメインテーブルを有し、このメインテーブルの最も右側の列は、テーブルの列を探査することにより生成される各有効発話についてＩＶＲ（１３０）に戻されるトークンを含む。
【００６５】
たとえば、図２に示したテーブルを用いると、図３に示したツリーが生成される。行１、列１の「I think」という句が聞こえる。列２の次の有効な句についての行の値の範囲は行１から６を含む。なぜなら行７は横切ることのできない境界を有するからである。この行の範囲（空白のものはスキップする）内のエントリを含む次の列は列２であるため、次の有効な句は列２において行１と６との間にあるはずである。次に「I want」という句が聞こえた場合、これは有効である。なぜならこの句は列２の行２（１と６との間）にあるからである。次の有効な句を求めるプロセスを列３で開始する。列２の行２に入ると、次の行の有効範囲はまた境界線のない行１から６にわたる。次に「the term to be」が聞こえると、これは有効である。列４に進むと次の行の有効範囲は４から６である。行３および６に境界線がある（図示せず）。次に列４に進むと次の列は行３から６にエントリがある。次にこのシステムは「YEARS」変数（２０、３０または６０など）という用語を聞こうとし、これは発話全体が処理されマークされた列（列７−「TOKEN」）に達するまで続けられる。
【００６６】
上記のような探査中、非終端のセルに出会うたびに第２の「ミニ探査」が行なわれる。上記のように、非終端セルは単に、非終端セルの代わりに現われるべき別のテーブルを識別する。探査中に非終端セルに出会うと、参照するテーブルを同じ態様で探査し、この「サブテーブル」からの発話を、メイン探査の現在の発話内の非終端セルに置くことができる。機能的には、現在のテーブルの非終端セルを参照するテーブルで置換えたようなものである。
【００６７】
任意選択としてセルを特徴づけてもよい。任意選択セルを含む各発話はセルの内容があってもなくても有効である。したがって、このような発話を処理して注釈付のＡＳＲコーパス（１２２）にしたとき、この発話における任意選択セルは複数のコーパスアイテム（発話）となり種々の可能性に対処する。販売者特有文法ファイル（１１２）におけるＡＳＲ指示を用いて音声認識装置（１１６）に特定のセルが任意選択であることを知らせる。
【００６８】
最後に、上記の探査は、どのようにしてテーブルを用いて所与の発話の有効性を検査できるのかを示していることに注意されたい。実際は、他の種類の探査がツールキット（１０４）ソフトウェアを用いて行なわれる。この第２の種類の探査を用いて、起こり得る有効な発話（変数などのいくつかの例外がある）をテーブルからすべて列挙する。言い換え
れば、列挙探査は、「テーブルを通るすべての有効経路の終端に何があるのかを知り」、各経路により形成される有効発話を記録しようとするものである。
【００６９】
好ましい実施例では、列挙探査を行なうとき、ソフトウェアは、ある経路が（マークされた列で）終わるまで、その経路全体を論理的に辿り、通過したセルの内容を記録する。その時点で、ある有効経路が完成し、経路と交差するセルの内容が、出会った順序で有効発話として書込まれる。この探査では次に、経路の最後の「分岐」（ここでは２つ以上のセルが有効である）までバックアップし、分岐に至る経路におけるセルの記録を維持し、終端まで他の「分岐」を辿り、バックアップし、といった処理を、起こり得る有効経路がすべて列挙されるまで行なう。
【００７０】
例として図２のテーブルをもう一度用いると、列挙探査は、有効発話「I think I need
a mortgage with a twenty year term」（「twenty」はYEAR変数である）で始まることもある。最初の有効発話の終わりから分岐まで「バックアップ」した後の、次の有効発話は、「I think I need a mortgage that has a twenty year term」である。分岐は列４で生じ、ここでは「with a」および「that has a」双方は結果として有効発話である。これは、この発明の好ましい実施例で行なうタイプの列挙探査に過ぎず、種々の探査方法によっても完全な列挙が得られることがわかる。好ましい実施例では、コーパス（１２２）における有効発話のリストは特定の順序である必要はなく、いかなる列挙探査方法でも機能するであろう。なお、好ましい実施例では「thirty」および「sixty」は考慮しない。なぜならこれらはすべて１つの変数YEARの一部であり、変数をすべて列挙するわけではないからである。また「I think」は任意選択セルにあるので、先に列挙した有効発話は「I
think」を削除しても有効であり、第２の有効発話が同じように列挙されるであろう。
【００７１】
ツール（２０２）は、図２のツールキットメイン画面の最上部に表示される。ユーザはこのツールによりコンパートメントおよびプロジェクトを管理することができる。ユーザは「ファイル」メニューの下にプロジェクトを作成し、開きまたは閉じ、プロジェクトにおけるコンパートメントのための注釈付コーパスを構築し、出力ファイルの宛先を選択し、音声認識装置フォーマットを選択することができる。「コンパートメント」メニューの下に、ユーザは文法ファイルまたはコーパスファイルを現在のコンパートメントについて生成することができる。組合せボックス２０２ａによりユーザは現在のプロジェクト内で種々のコンパートメントから表示および選択を行なうことができる。
【００７２】
ツール（２０２）の下には、コンパートメントウィンドウ（２０３）があり、これを用いてコンパートメント内のテーブルを生成および編集する。コンパートメントウィンドウ（２０３）の中の「ファイル」メニューオプションにより、ユーザは、コンパートメント文法およびコーパスを生成し、文法およびコーパスを最適化し、プリンタのセットアップを変更し、コンパートメントを保存する。「テーブル」メニューにより、ユーザは、選択されたテーブルを生成し、開き、インポートし、その名称を変更し、保存し、削除しまたは印刷する。ユーザは組合せボックス（２０４ａ）により現在のコンパートメント内の特定のテーブルを選択および表示し、サイズ決定ボタン（２０４ｂ）により選択されたテーブルにおける行または列の数を変更する。
【００７３】
好ましい実施例では、セルの属性（任意選択、ＡＳＲ指示、非終端またはサブ文法、変数）を、最初にマウスを用いて修正すべき属性を有するセルを指し示すことによって設定し、次に右側のマウスボタンを押す。こうすることによって図２ｂに示したメニューが得られる。この発明の好ましい実施例ではマウスを用いているが、他の手段（たとえばコントロールキー）を用いてセルを選択したりメニューを開いたりすることもできることがわかるであろう。メニューから、セルに下線を引くための「下線」、セルを変数にするための「変数挿入」、非終端を特定し非終端が参照するテーブル（またはサブ文法）を挿入す
るための「サブ文法挿入」、およびＡＳＲ指示を挿入するための「ＡＳＲオプション挿入」を含めて、種々のセルの機能を利用できる。
【００７４】
セルの属性が変数、非終端またはＡＳＲ指示に設定されているとき、図４ａ−ｃの対話が現われる。図４ａは、非終端特定対話（４００）を示す。上記で規定したように、非終端セルタイプは別のテーブルを参照する。この対話（４００）では単に、開発者の注意を参照されたテーブルの名称に促している。
【００７５】
図４ｂは、現在の音声認識装置（１１６）のために利用可能なＡＳＲ指示のリストボックスをユーザに与えるＡＳＲ指示対話（４１０）を示す。選択されたＡＳＲ指示にさらなる引き数データが必要であれば、開発者はこのさらなる引き数データを対話に与えることができる。
【００７６】
図４ｃは、開発者が変数セルを指定するときに表示される変数特定対話（４２０）を示す。対話（４２０）は、開発者の注意を、変数の名称、変数が参照するテーブル、および変数のタイプに促す。好ましい実施例が提示する変数のタイプのリストおよび変数が戻す値のタイプが図５に示される。
【００７７】
図６は、開発者がツールキット（１０４）を用いて文法を生成するときに用いるステップを示す。開発者は、ステップ６００においてツールキット（１０４）プログラムを開くことによって開始する。典型的な窓あけ環境では、これはアイコンを選択することを含む。ツールキット（１０４）の好ましい実施例は、別の販売者開発ツールキットに含み入れるためのＯＬＥサーバであるが、ツールキットを独立型バージョンで製作することも可能である。
【００７８】
プログラムが始まると、ステップ６０２で、開発者は取組むべき新しいプロジェクトを開く必要がある。開発者は次に、ステップ６０４でコンパートメントを生成し、ステップ６０６でコンパートメントのメインテーブルについて行および列の数を規定する。これはサイズ決定ボタン（２０４ｂ）を用いて行なうことができる。コンパートメントのメインテーブルのサイズが確立すると、次のステップ（６０８）では終端データを含むことになるセルを埋める。上記のように、終端データは単に、文法において有効な非変数の句（「I'd like」、「I want」など）を規定するテキストデータである。
【００７９】
ステップ６１０で、開発者はテーブルの変数セル（もしあれば）を埋める。好ましい実施例では、図４ｃに示した変数対話を用いて、変数の名称および変数を処理するときに行なわれるであろうアルゴリズムへの参照（実際のアルゴリズムは実行時インタプリタ１２４内にある）を含む変数を規定する。
【００８０】
ステップ６１２で、開発者はＡＳＲ指示を含むセル（もしあれば）を満たす。好ましい実施例では、図４ｂの対話を用いて、現在の音声認識装置（１１６）（現在の音声認識装置はツール２０２の「ファイル」メニューのリストから選択される）について、サポートされているＡＳＲ指示のリストから、ＡＳＲ指示を選択する。
【００８１】
ステップ６１４で、開発者は、右側のマウスボタンおよび図２ｂに示したメニューの「任意選択指定」オプションを用いてどのセルを（もしあれば）任意選択とするかを識別する。
【００８２】
ステップ６１６で、開発者は、コンパートメントメインテーブルにおいてトークン（ｔｏｋｅｎ）データを含む列を識別しこれを埋める。好ましい実施例では、コンパートメントメインテーブルの右端の列がトークンデータを有するものとしてデフォルトでマークさ
れる。
【００８３】
ステップ６１８で、開発者は、上記のような探査中に用いられる境界を識別する。好ましい実施例では、これは図２ｂに示したメニューを用い、あるセルに下線を引くことによって行なわれる。
【００８４】
ステップ６２０で、開発者は非終端セルを埋める。好ましい実施例では、これは図４ａに示した対話を用いて行なわれる。開発者は、サブ文法を含む新しいテーブルを生成する必要もあり、これは「テーブル」メニューを用いて行なうことができる。このテーブルはまた、先に延べたような終端、非終端、変数、任意選択およびＡＳＲ指示セルステップを、もし参照するテーブルが上記のようなセルのタイプを必要とするのであれば、必要とする。しかしながら好ましい実施例では、参照するテーブルがマークされた列を有しておらずトークンを戻さない。
【００８５】
ステップ６２２で、コンパートメントは完成する。このプロジェクトについて別のコンパートメントが必要であれば、開発者はステップ６０４に進み新しいコンパートメントを生成する。他のコンパートメントが不要であれば、開発者は６２４および６２６のふたつのうちいずれかのステップに進むことができる。ステップ６２４では、ＡＳＲ（１１４、１１６）について文法ファイル（１１２）を生成する。好ましい実施例では、このプロセスはコンパートメントウィンドウ（２０３）の「ファイル」メニューオプションを用いて開始される。この生成は、テーブルの解析を行なうことによってなされ、その結果メモリに記憶されるファイル（１１２）が得られる。このファイル（１１２）は、テーブルで実施される文法規則を含み、音声認識装置（１１６）がコンパイルし使用することができる形式である。
【００８６】
文法ファイル（１１２）の生成中に行なわれる解析では、文法の有効発話に先行する１組のＢＮＦ規則を生成しようとする。ＢＮＦ規則の生成は、非終端のないテーブルで始まる。すべての非終端は参照するテーブルと置換えられ、結果として完全でかつ拡張されたメインテーブルが得られる。
【００８７】
以下のテーブル１ａ−１ｅについて検討する。
【００８８】
【表１】
2004258674.tif 000003
【００８９】
好ましい実施例の、テーブルを表わす文法規則を生成するメインプロセスが、図１０ａ−ｄのフロー図に示される。このフロー図のタイトルは「領域処理」であり、使用する再帰的アルゴリズムを示す。領域処理そのものは、テーブルまたはテーブルの一部を入力として受ける。好ましい実施例では、領域処理に与えられたテーブルにおいて元々存在した非終端は、領域処理を呼出す前に参照するサブテーブルと置換えられる。テーブルは、２次元アレイで表わされ、角（すなわち行１、列１−行４、列４）により規定される。領域処理では、「単純な」領域が形成されるまで再帰的にテーブルをより小さなテーブル（「領域」）に分割することによって、テーブルが規定する文法規則を集める。単純領域とは、太線（境界）のないセルの領域である。テーブル１ａは単純領域を示す。
【００９０】
領域処理が始まると（ステップ１００２）、検査が行なわれて処理する領域が単純なものであるかどうかが判断される。テーブル１ａから規則を引き出すのであれば、この検査は続けられる。領域が単純なものであるとき、論理「ＯＲ」を用いて、垂直方向に隣接するセルをグループ化する（ステップ１００６）。テーブル１ａでは、各列に１つずつ４つのグループが形成される。これらのグループは、（Ａ｜Ｅ｜Ｉ｜Ｍ）、（Ｂ｜Ｆ｜Ｊ｜Ｎ）、（Ｃ｜Ｇ｜Ｋ｜Ｏ）および（Ｄ｜Ｈ｜Ｌ｜Ｐ）であり、ここで「｜」は論理「ＯＲ」を表わしている。次に、これらのグループを論理「ＡＮＤ」を用いて左から右へと組合わせると（ステップ１００８）、「（Ａ｜Ｅ｜Ｉ｜Ｍ）（Ｂ｜Ｆ｜Ｊ｜Ｎ）（Ｃ｜Ｇ｜Ｋ｜Ｏ）（Ｄ｜Ｈ｜Ｌ｜Ｐ）」となる。ステップ１０１０でこの規則を戻し、領域処理はステップ１０７２で終了する。
【００９１】
処理する領域がテーブル１ｂに示したように単純なものでない場合、ステップ１００４の検査は失敗し、このプロセスはステップ１０１２に進む。ステップ１０１２で、処理する領域を検査して「接頭語付」領域であるかどうかを調べる。接頭語付領域には最初の「ｎ」列において境界線がない（単純な列である）ので、テーブル１ｂは接頭語付領域である。なぜならその最初の列１には境界線がないからである。ステップ１０１４で、接頭語付領域を２つのサブ領域に分割する。第１のサブ領域は左端のｎ列である（Ａ、Ｅ、ＩおよびＭを含む）、第２のサブ領域は接頭語付領域の残りである。ステップ１０１６で、接頭語付領域についての規則が、第１の領域についての規則ＡＮＤ第２の領域についての規則として規定される。再帰的に領域処理を１回呼出して第１の領域についての規則を発見し、もう一度呼び出して第２の領域についての規則を発見する。ステップ１０１８で、この規則は戻され、領域処理はステップ１０７２で終了する。
【００９２】
ステップ１０１２で、もし領域が接頭語付領域でなければ、これに対して検査を行ない（ステップ１０２０）「接尾語付」領域かどうかを調べる。接尾語付領域は接頭語付領域の逆であり、最後の「ｎ」列に境界線のないものである。この領域が接尾語付領域であれば、ステップ１０２２において、一方が右端のｎ列についてのものであり、もう一方がその残りのものについてのものである２つのサブ領域に分割される。ステップ１０２４では、接頭語付領域に対するステップ１０１６と同じようにして、領域についての規則を２つのサブ領域の論理ＡＮＤとして規定する。この規則を再び戻し（ステップ１０２６）領域処理はステップ１０７２で終了する。
【００９３】
ステップ１０２０において、もしこの領域が接尾語付領域でなければ、これに対して検査を行ない（ステップ１０２８）、この領域において「重複する」境界があるかどうかを調べる。２つ以上の境界のある列において重複境界が生じるので、テーブル１ｃは重複する列（列２）を含む。領域において重複する列が存在すれば、セルごとにアプローチを行なって含まれている単純な領域を求める。ステップ１０３０で、このプロセスは処理する領域における左上端のセルで始まる。このセル（「Ａ」）の内容を、規定している現在の単純領域に追加する。
【００９４】
次に、ステップ１０３２で、このプロセスでは境界線に出会うまで現在の列を下降しようとする。このプロセスが進入したセルを現在の単純領域に追加する。テーブル１ｃでは、プロセスはセル「Ｉ」まで下降可能で、進入した各セルを現在の単純領域に追加する（ここまでは現在の単純領域に「Ａ」、「Ｅ」および「Ｉ」がある）。このとき、「天井」および「地面」に注意する。「天井」は現在のセルよりも上の、現在の列における最初の境界または区切り（「Ａ」よりも上の区切り）であり、「地面」は、現在の列において現在のセルよりも下にある最初の境界または区切りである（行３の「Ｉ」の下の区切り）。ステップ１０３４で、このプロセスでは、右隣のセルの「天井」または「地面」が異なるまで右に向かって進もうとする。テーブル１ｃを用いた例では、１０３２の後に、このプ
ロセスはセル「Ｉ」にある。次は右に進んでセル「Ｊ」に向かおうとする。「Ｊ」の下の「地面」は同じである（区切りは行３の下にある）が、「天井」は異なる。「Ｊ」の上の最初の境界または区切りは、「Ａ」の上の区切りではなく（「Ｉ」の場合はそうである）、「Ｆ」の下の境界である。
【００９５】
このようにしてこのプロセスは、「天井」が変わるまで右に進む。このプロセスは、領域の右端の境界に出会った場合または右のセルが既に重複プロセスにより単純領域に割当てられている場合に右に進むことをやめる。
【００９６】
プロセスが右に進むのをやめたときに、ステップ１０３６で、既に単純領域に割当てられている次の境界、区切りまたはセルまで上昇しようとする。現在の例では、このプロセスは「Ｉ」から出ない。なぜなら「Ｊ」（次のセル）の「天井」が異なるからである。このプロセスが上昇しようとしたとき、次のセルは「Ｅ」であり、これは既に現在の単純領域に割当てられているため、プロセスは「Ｉ」に残り、上昇は終了する。
【００９７】
このプロセスが上昇をやめたとき、次はステップ１０３８で「天井」または「地面」が変わるまで、領域の左の境界に出会うまで、または左隣のセルが既に単純領域に割当てられている場合まで左に進む。この例では、プロセスはまだ「Ｉ」にあり、領域の左側の境界に出会うので左に進むことができない。ステップ１０３８で左に進もうとした後、このプロセスはステップ１０３２−１０３８を、プロセスが「捉えられる」まで繰返す。これ以上下降、右への進行、上昇または左への進行ができなくなったときにプロセスは「捉えられる」。この例では、プロセスは既に「Ｉ」で捉えられている。「Ｉ」の下に境界があるためにこれ以上下降することはできず、天井が変わっているため右に進むことができず、「Ｅ」が既に単純領域に割当てられているため（これは事実である）上昇することができず、領域の左の境界のため左に進むことができない。このプロセスは、最初の単純領域にどのセルがあるのかを求めるために行なわれ、セル「Ａ」、「Ｅ」および「Ｉ」が最初の領域にあるということを記録する（ステップ１０４０）。
【００９８】
ステップ１０４２で、重複プロセスでは、すべてのセルが単純領域に割当てられているかどうかを検査する。そうでなければ、このプロセスはステップ１０４４に進み、単純領域に割当てる次のセルを選択する。この選択は現在の行を横切って左から右へと行なわれ、１行が終了すると、次の行の最初のセルが選択される。この例では、第１の単純領域は左上端のセル（「Ａ」）で始まる。まだ単純領域の一部になっていない右隣のセルは「Ｂ」なので、「Ｂ」が次の開始点である。
【００９９】
「Ｂ」で始めてステップ１０３２−１０４０を再び行なうと、このプロセスは「Ｆ」（これを含む）まで下降し、「Ｈ」（これを含む）まで右に進み、「Ｄ」（これを含む）まで上昇し、「Ｃ」で捉えられる前に「Ｃ」（これを含む）まで左に進むことになる。したがって、第２の単純領域は「Ｂ」、「Ｃ」、「Ｄ」、「Ｆ」、「Ｇ」および「Ｈ」を含む。第２の単純領域は「Ｂ」で始まるので、このプロセスでは「Ｃ」を次の開始セルとみなす。「Ｃ」は既に割当てられているので、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」、「Ｈ」および「Ｉ」である。したがって次の開始セルは「Ｊ」である。
【０１００】
「Ｊ」で始めてステップ１０３２−１０４０を行なうと、このプロセスは境界のために下降することができず、地面が変わるので右に進むことができず、境界があるので上昇することができず、「Ｉ」が既に単純領域に割当てられているので左に進むことができない。したがって「Ｊ」はそれ自身の単純領域である。
【０１０１】
「Ｋ」で始めてステップ１０３２−１０４０を行なうと、このプロセスは「Ｏ」まで下降し、「Ｐ」まで右に進み、「Ｌ」で捉えられる前に「Ｌ」まで上昇している。第４の単
純領域は、「Ｋ」、「Ｌ」、「Ｏ」および「Ｐ」を含む。次の開始点は［Ｍ］であり、最後の単純領域は「Ｍ」および「Ｎ」を含む。
【０１０２】
単純領域の規定後、ステップ１０４６で、各単純領域について単純規則を求める。これは本質的にステップ１００６および１００８と同じ機能を果たし、垂直方向に隣接するセルを論理「ＯＲ」を用いて組み合わせてグループにし、水平方向に隣接するグループを論理「ＡＮＤ」を用いて組み合わせる。
【０１０３】
ステップ１０４８で、共通する少なくともひとつの垂直方向の境界を共有する単純領域を求めて、隣接する組を計算する。一対の単純領域がこのような境界を共有しているとき、隣接する組において左側の領域が右側の領域を「指す」。テーブル１ｃはまた、この例における種々の単純領域を示す。単純領域１は単純領域２および３双方と境界を共有するので、隣接する組は１−＞２を連結するエントリおよび１−＞３についてのエントリを含む。「−＞」は「…を指す」を表わす。この例では、計算した隣接組は１−＞２、１−＞３、３−＞４および５−＞４を含む。右端の領域についてもエントリを計算すると、これらのエントリはＥＮＤ（終了）を指す。この例では、さらなるエントリは２−＞ＥＮＤおよび４−＞ＥＮＤである。
【０１０４】
次に、ステップ１０５０で、左端の領域を識別する。これはＢＥＧＩＮ（開始）−＞１およびＢＥＧＩＮ−＞５で表わされる。ステップ１０５２で、ＢＥＧＩＮからＥＮＤまでの「経路」を、連結されたリストからの要素を互いに入れ替えることによって生成する。この例では、ある経路はＢＥＧＩＮ−＞１−＞２−＞ＥＮＤであり、別の経路はＢＥＧＩＮ−＞５−＞４−＞ＥＮＤであり、最後の経路はＢＥＧＩＮ−＞１−＞３−＞４−＞ＥＮＤである。最後にステップ１０５４で、ＢＥＧＩＮおよびＥＮＤを廃棄し、「−＞」を論理「ＡＮＤ」で置換え、領域番号をステップ１０４６で生成した単純領域規則で置換えることによって、各経路を規則に変換する。経路１つ当たり１つである規則は、論理「ＯＲ」を用いて組合わされ、重複領域に対し１つの規則を形成する。この１つの規則はステップ１０５６で戻され、領域処理プロセスはステップ１０７２で終了する。
【０１０５】
ステップ１０２８で、処理する領域が重複領域でなければ、領域処理プロセスはステップ１０５８に進み、ここで処理する領域における最長の境界線を求める。もしタイがあれば、任意で選択される。ステップ１０６０でこの線を検査し、領域の一方端から他方端に延びているかどうかを判断する。そうでなければ、処理する領域を垂直方向分割して２つの水平方向に隣接するサブ領域にする。この分割は最長の境界線の任意の一端で行なわれる。好ましい実施例では、左側の端部を用いるが、最長の線の左側の端部が領域の左の境界であれば、右側の端部を用いる。テーブル１ｄでは、「Ｏ」および「Ｐ」の下の境界ではなく「Ａ」および「Ｂ」の下の境界を任意で選択する。さらに、この境界の右端で分割を行ない２つのサブ領域を形成する。第１のサブ領域は列１および２を含み、第２のサブ領域は列３および４を含む。ステップ１０６４で、領域処理プロセスを各サブ領域について一度ずつ呼出し、サブ領域について戻した規則を論理「ＡＮＤ」を用いて組合わせる。
【０１０６】
ステップ１０６０で最長の境界線が領域全体にわたって延在していれば、ステップ１０６６では単に領域を最長の線に基づいて２つのサブ領域に分割する。次に各サブ領域について一度ずつ領域処理を呼出し、これらの領域を論理「ＯＲ」を用いてステップ１０６８で組合わせる。ステップ１０７０では生成した規則を戻し（ステップ１０６４または１０６８）、１０７２で領域処理プロセスが終了する。
【０１０７】
文法ファイル（１１２）が構築されると、これについて最適化も行なわれる。最適化中に、テーブルが表わす文法規則を変形し、選択した音声認識装置（１１６）の特質に合わせるようにして性能を高めてもよい。たとえば、同じ語で始まるかまたは終了する複数の
規則を組合わせて１つの規則にし、ある認識装置についての効率を高める。２つの規則が同じ語で始まるのであれば（すなわちＡＢおよびＡＣ）、さらなる論理「ＯＲ」を用いて２つの規則を組合わせて１つの規則にすることができる（すなわちＡ（Ｂ｜Ｃ））。同様に、同じ語で終わる２つの規則（すなわちＡＣおよびＢＣ）を組合わせて１つの規則にする（すなわち（Ａ｜Ｂ）Ｃ）。
【０１０８】
ステップ６２４の前または後に起こり得るステップ６２６で、注釈付ＡＳＲコーパスファイルを生成する。好ましい実施例では、これはコンパートメントウィンドウ（２０３）の「ファイル」メニューの「コーパス生成」で開始される。好ましい実施例では、最初に個々のコーパスを生成し各コンパートメントについてメモリに記憶し、個々のコーパスはツール（２０２）の「ファイル」メニューのこのオプションを選択することによって併合される。このオプションを選択したとき、図７に示した注釈付コーパス対話が現われ、開発者は、併合するコーパスおよび新たに併合したコーパスの名称を選択する。本来併合では種々のコーパスのリストを１つのリストに加える。結果として得られるコーパスファイル（１２２）はメモリに記憶され、実行時にインタプリタ（１２４）がこれを用いて音声認識装置（１１６）が聞く発話を処理する。
【０１０９】
コンパートメントコーパスを生成したときに、上記の列挙探査をコンパートメント内のテーブルについて行なう。好ましい実施例では、コンパートメント内の有効発話がコンパートメントメインテーブルにおいて開始および終了するが、有効発話「経路」は非終端が参照するいくつかのテーブルを通過するであろう。テーブルを通過する各有効経路が（テキスト形式で）コンパートメントコーパスに書込まれる。各有効経路もまた、コンパートメントのメインテーブルの有効経路の端部（マークされた列）にあるトークンデータ（トークンクラス識別子の役割を果たす）を含むであろう。コンパートメントコーパスを生成したとき、種々の有効発話の論理も検査し、結果として得られる文法が確実に意味をなすようにする（空の発話がない、１つの有効発話につき１つのトークンクラスがあるなど）。
【０１１０】
実際には、こうして得られたコーパス（１２２）は好ましい実施例では１対のファイルであり、ツールキット（１０４）は、種々のコンパートメントコーパスが１つのコーパスに併合されたときにこれらのファイル双方を生成する。これらのファイルについての好ましいフォーマットは以下のとおりである。
【０１１１】
コーパスファイル
[１]：ｃｏｍｐ１−ｃｏｍｐ１の第１の発話、トークンクラス１
[１−１]：ｃｏｍｐ１−ｃｏｍｐ１の第２の発話、トークンクラス１
[１−２]：ｃｏｍｐ１−ｃｏｍｐ１の第３の発話、トークンクラス１
[２]：ｃｏｍｐ１−ｃｏｍｐ１の第１の発話、トークンクラス２など。
最初の数字は発話のクラスを示す。第２の数字がある場合これはこのクラスのメンバーを示す。このすぐ後に続くテキスト「ｃｏｍｐ１」はコンパートメントを識別する。残りのラインは実際のテキスト形式の発話である。
【０１１２】
アンサーファイル：
[１]：
years（年数）
[２]：
days（日数）
−−−
最初の数は発話クラスであり、次のラインは戻すトークンを含む。この例では、クラス「１」の発話はトークン「years」をＩＶＲ（１３０）に戻し、クラス「２」の発話はトー
クン「days」を戻す。
【０１１３】
コーパスの併合後、得られたコーパスファイル（１２２）を実行時に実行時インタプリタ（１２４）が用いることができる。生成したコーパスファイル（１２２）および文法ファイル（１１２）を用いて、開発者は文法開発ツールキット（１０４）を用いた開発を終了する。ツールキットはステップ６２８において、ファイルメニューから「終了」オプションを選択するかまたはツールキットウィンドウの右上隅の「ｘ」をクリックすることによって終了する。
【０１１４】
上記の教示から判断すれば、これらの教示において実施されるこの発明の範囲から逸脱することなく変形が可能であることがわかるであろう。発明者らの好ましい実施例の一部として挙げた例はいずれも例示のみを目的として示したものであり、この発明の範囲を限定することを意図したものではない。それよりもむしろ、この発明の範囲は前掲の特許請求の範囲によって定められるものである。
【図面の簡単な説明】
【０１１５】
【図１】埋込自然言語理解システムの全体図を示す。
【図２−１】文法開発ツールキットのメイン画面を示す。
【図２−２】文法開発ツールキットのメイン画面を示す。
【図２ｂ−１】文法開発ツールキットのメイン画面を示す。
【図２ｂ−２】文法開発ツールキットのメイン画面を示す。
【図３】図２の文法テーブルをツリーで表現したものを示す。
【図４ａ−１】種々のセル対話を示す。
【図４ａ−２】種々のセル対話を示す。
【図４ｂ】種々のセル対話を示す。
【図４ｃ−１】種々のセル対話を示す。
【図４ｃ−２】種々のセル対話を示す。
【図５】好ましい実施例で提示される変数のタイプを示すテーブルである。
【図６】文法開発ツールキットの使用を示すフロー図である。
【図７】注釈付コーパス対話を示す。
【図８ａ】注釈付ＡＳＲコーパスファイルおよび販売者特有ＡＳＲ文法ファイルのためのサンプルフォーマットを示す。
【図８ｂ】注釈付ＡＳＲコーパスファイルおよび販売者特有ＡＳＲ文法ファイルのためのサンプルフォーマットを示す。
【図９】ＩＶＲが実行時インタプリタにアクセスするときの動作を示すフロー図である。
【図１０ａ】テーブルから文法規則を引き出すためにツールキットが行なうステップを示すフロー図である。
【図１０ｂ】テーブルから文法規則を引き出すためにツールキットが行なうステップを示すフロー図である。
【図１０ｃ】テーブルから文法規則を引き出すためにツールキットが行なうステップを示すフロー図である。
【図１０ｄ】テーブルから文法規則を引き出すためにツールキットが行なうステップを示すフロー図である。
【図１】
2004258674.tif 000004
【図２−１】
2004258674.tif 000005
【図２−２】
2004258674.tif 000006
【図２ｂ−１】
2004258674.tif 000007
【図２ｂ−２】
2004258674.tif 000008
【図３】
2004258674.tif 000009
【図４ａ−１】
2004258674.tif 000010
【図４ａ−２】
2004258674.tif 000011
【図４ｂ】
2004258674.tif 000012
【図４ｃ−１】
2004258674.tif 000013
【図４ｃ−２】
2004258674.tif 000014
【図５】
2004258674.tif 000015
【図６】
2004258674.tif 000016
【図７】
2004258674.tif 000017
【図８ａ】
2004258674.tif 000018
【図８ｂ】
2004258674.tif 000019
【図９】
2004258674.tif 000020
【図１０ａ】
2004258674.tif 000021
【図１０ｂ】
2004258674.tif 000022
【図１０ｃ】
2004258674.tif 000023
【図１０ｄ】
2004258674.tif 000024