(57)【特許請求の範囲】
【請求項１】
コンピュータアクセス可能なメモリに記憶された、２以上のグループにされたタイプの識別子を包含するデータ構造を用いた、コンピュータで実施する方法であって、前記データ構造において各グループの識別子は対応するタイプグループを識別するものであり、各グループは、対応のタイプグループの各タイプについてそのタイプを示す１つの識別子を有し、グループ内の識別子の各々が、シーケンスに配列された識別子の対応の位置を有しており、各グループの識別子の全てがそのグループ内の識別子の対応する位置に基づいて探索される、コンピュータで実施する方法において、
前記タイプの中の対応の第１トークンを用いて、該第１トークンに対応するタイプの識別子を得ること、
前記第１トークンに対応するタイプの識別子を前記データ構造内の識別子と比較するように前記データ構造にアクセスすること、
前記アクセスにおいて前記第１トークンに対応するタイプの識別子に一致する、グループの識別子の１つが見つかったとき、該一致グループの識別子に基づいて、該一致グループの識別子と同じグループ内の他の識別子を探索する
ことを包含することを特徴とするコンピュータで実施する方法。
【請求項２】
メモリに格納されたデータ構造と、前記メモリに格納された命令データと、前記メモリに格納された前記データ構造及び前記命令データにアクセスできるように接続されたプロセッサとを備えるシステムであって、
前記データ構造は２以上の識別子を包含し、各識別子は、グループになったタイプの中の１つのタイプを識別する値を有し、各識別子は、前記データ構造内において順番に配列された対応の位置を有し、各識別子が前記タイプの中の対応するタイプを識別することによって、前記プロセッサが前記データ構造に前記１組のタイプの中の１つのタイプを識別する候補の識別子を用いてアクセスして前記候補の識別子を前記データ構造中の識別子と比較するのを可能にし、各識別子は２以上の識別子グループの１つの中のものであり、該識別子グループの各々は、前記タイプの対応するグループを識別するものであり、該識別子グループの各々は、前記対応するグループの中の各タイプについて、そのタイプを識別する１個の識別子を包含し、前記識別子がシーケンスに並べられていることによって、前記プロセッサが、各グループの識別子の前記シーケンスにおける対応の位置を、前記候補の識別子に一致する識別子の前記シーケンスにおける対応の位置から、決定するのが可能であり、
前記タイプの１つを識別する候補の識別子を獲得する手段と、
前記候補の識別子を前記データ構造における識別子と比較するように前記データ構造にアクセスして、前記候補の識別子に一致する識別子を含む前記グループの１つの中の識別子の対応の位置を決定する手段と、
前記一致する識別子のシーケンスの対応の位置に基づいて前記識別子の対応の位置を決定する手段とを備える、
ことを特徴とするシステム。
【請求項３】
コンピュータアクセス可能なメモリに記憶されて、２以上の識別子を包含し各識別子が一意的に対応のワードを識別する識別子を含むデータ構造を用いる、コンピュータで実施する方法であって、各識別子は、２以上のグループの１つのグループの中のものであり、各グループの識別子が、同義語ワードの対応のグループを識別し、識別子の各々は、対応の位置に記憶されている、コンピュータで実施する方法において、
第１ワードを用いて該第１ワードの識別子を得ること、
前記データ構造にアクセスして前記第１ワードの識別子を前記データ構造内のグループ内の識別子と比較すること、
前記比較において前記第１ワードの識別子に一致する、前記グループになった識別子の１つが見つかったとき、前記一致するグループの識別子と同じグループ内の他の識別子を探索し、且つ該一致するグループ識別子が記憶されている対応の位置から前記グループについての品詞情報を決定すること、
前記一致するグループの識別子と同じグループから探索された前記識別子の各々を用いて、各探索された識別子によって一意的に識別された対応のワードを得て、それらの対応するワードが一緒になってグループ内の同義語の全てのワードを表示すること、
を包含することを特徴とするコンピュータで実施する方法。
【請求項４】
コンピュータアクセス可能なメモリに記憶されるデータ構造であってナンバーの集合からの２以上のナンバーを包含し各ナンバーが１組のタイプの１つを識別する値を有するデータ構造を用いる、コンピュータで実施する方法であって、各ナンバーは、２以上のグループの１つのグループの中のものであり、各グループにおけるナンバーは数字として記憶され、各ナンバーは第１部分と第２部分とを有している、コンピュータで実施する方法において、
前記タイプの対応のものの第１トークンを用いて、該第１トークンの対応のタイプを一意的に識別する、第１部分と第２部分を有する前記第１ナンバーを得ること、
前記データ構造にアクセスして前記第１ナンバーを前記データ構造内のグループ内のナンバーと比較することを含み、該比較することが、前記第１ナンバーを前記グループの第１のものの中の１つのナンバーと比較すること；及び、その比較に基づいて第１グループ内の残りのナンバーをスキップするかどうかを決定することを含み、前記第１ナンバーの比較が、前記第１ナンバーの第１部分を前記第１グループ内のナンバーの第１部分と比較することと、一致した場合に前記第１ナンバーの第２部分を前記第１グループ内のナンバーの第２部分と比較することとを含み、
更に、前記第１ナンバーに一致する、前記グループになったナンバーの１つが見つかったとき、前記一致するグループのナンバーと同じグループ内の他のナンバーを探索することを包含する
ことを特徴とするコンピュータで実施する方法。
【請求項５】
コンピュータアクセス可能なメモリに記憶されるデータ構造であって２以上の識別子を有し且つ各識別子がグループになったワードの１つのワードを識別する値を有するデータ構造を生成する、コンピュータで実施する方法において、
２以上のグループのワードをワードグループのシーケンスとして順番に並べることを包含し、各グループ内のワードは相互に関連しており、各グループは、そのグループ内のワードの品詞を指示する品詞データを含み、前記順番に並べることが、そのワードグループを前記品詞データに基づく品詞に基づいて順番に並べることを含んでおり、
対応の識別子を得るように前記ワードの各グループの各ワードを用いることによって識別子のグループを得ることを包含し、各ワードの対応の識別子はそのワードを識別するものであり、各グループの識別子は、前記ワードのグループの対応の１つのグループの中のワード群を識別するものであり、前記識別子のグループは前記ワードグループのシーケンスに従って順番に配列されており、
更に、各識別子グループの対応の各ワードのグループの品詞を前記識別子グループ内の識別子の前記シーケンス内の位置から決定できるように、前記識別子を識別子シーケンスに並べること、及び、
前記識別子を該識別子が前記識別子シーケンスに配置された状態で前記コンピュータアクセス可能なメモリに記憶すること、
を包含することを特徴とする、コンピュータで実施する方法。
【請求項６】
データ構造と命令データとを格納するメモリを包含するシステムであって、
前記データ構造は２以上の識別子を包含し、各識別子は、グループになったタイプの１つを識別する値を有し、各識別子は、前記データ構造内においてシーケンスに並んだ対応の位置を有し、各識別子は前記タイプの対応の１つを識別するものであり、各識別子は２以上の識別子グループの１つの中のものであり、該識別子グループの各々は、前記タイプの対応のグループを識別するものであり、各識別子グループは、前記タイプの対応のグループを識別し、各識別子グループは、タイプの対応のグループの中の各タイプについて、そのタイプを識別する１個の識別子を包含し、各識別子グループは１つの対応の特性を備えており、前記識別子は、各グループの特性をそのグループの識別子シーケンスにおける対応の位置から決定できるように順番に並べられており、
前記メモリ内の前記データ構造と前記命令データにアクセスできるように接続されたプロセッサを包含し、前記命令データは、前記プロセッサが実行できる命令を示しており、
前記タイプの１つを識別する候補の識別子を獲得する手段と、
前記データ構造にアクセスして前記候補の識別子を前記データ構造における識別子と比較する手段と、
前記グループの１つの対応の特性を、前記候補の識別子に一致する、前記グループの１つの中の前記シーケンスにおける対応の位置から決定する手段とを備えた
ことを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、与えられたワードの関連ワードを得る方法及びシステムに関する。
【０００２】
【従来の技術】
Lucchesi, C.L. and Kowaltowski, T., “Applications of Finite Automata Representing Large Vocabularies,”Software-Practice and Experience, Vol.23(1), January 1993, pp.15-30 に、効率的なスペルチェッカーを具体化する問題が動機となって、最小非循環決定論的な有限オートマトンに非常に大量の語彙を圧縮する技法が記載されている。図４に、数個の英語の動詞の全ての形に関する上記オートマトンが示されている。２６〜２７頁に図８〜図１０に関する最小完全ハッシングが記載されている。オートマトンは、各状態について、その状態から開始するオートマトンに受け入れられるワードのナンバーを与える整数を有しており、２つの簡単な関数が整数１からＬの間の１対１の対応付けを実施する。ここでＬは、オートマトンによって受け入れられるワードのナンバーであり、そしてワード自身である。また２８〜２９頁に、多数の初期状態をもつナンバー付きオートマトンによって具体化された類語辞書が記載されている。各初期状態は１つの文法上の区分に対応している。追加のデータ構造は、ワードのリストをナンバーの順番の列（すなわちシーケンス）として表現する。
【０００３】
【発明が解決しようとする課題】
本発明の目的は、同義語などの関連語を表すデータを効率的に得る問題を解決することである。
【０００４】
本発明は、コンパクトなワードグループデータにワードグループに関する情報を与える技法を発見したことが基礎になっている。このワードグループデータを使用して、関連ワードを迅速に得ることができる。
【０００５】
【課題を解決するための手段】
第１の技法は、同義語、等を格納し、検索するのに必要な情報が区別できる２つの部分を有しており、それらの部分を区別することによって効率を向上させることができるという認識に基づいている。情報の第１部分（関連付け情報と呼ぶ）は、各ワードと他のワードとを関連付ける情報である。第２部分（識別情報と呼ぶ）は、各ワードを識別する情報である。各ワードは固有の識別子をもつことができる。
【０００６】
この技法は、さらに、関連語を得るため、電子類語辞典、その他のデバイスのために関連付け情報を格納する非常に効率的な方法を発見したことが基礎になっている。関連付け情報は、１つまたはそれ以上のワードグループ内の各ワードの一部に等しい。従って、関連付け情報に従ってワードの識別子をグループ化することができるので、関連付け情報を表す追加データは不要である。次に、ワードの実例を使用してそのワードの識別子を得て、その識別子とワードグループデータ内の識別子とを比較し、一致する識別子を含むグループを見つけたら、そのグループ内の識別子を検索することによって、関連ワードを得ることができる。
【０００７】
この技法は、ワードグループデータを含むプロダクトにおいて実施することができる。ワードグループデータは、順番列（すなわちシーケンス）に順序付けされたワード識別子を含んでいる。ワードグループデータは、さらに、シーケンス内の識別子のグループに関する情報を表すグループ化データも含んでいる。識別子データの各グループは、各ワードグループを識別する。識別子の位置とグループ化データとは共同して、そのワードを含むグループの特徴を表す。その特徴は、グループのメンバー（構成要素）であるワードの識別子の位置、グループの長さ（すなわち、メンバー（ワード）の数）、グループのメンバー（ワード）の品詞（part of speech)、あるいは１のグループを他のグループから区別する別の特徴であってもよい。
【０００８】
第２の技法は、グループ化データが記憶空間非効率の原因になることがあるという認識に基づいている。この技法は、グループ化データの量を減らすようにシーケンス内の識別子を位置決めする。詳しく述べると、この技法は、グループ化データからの比較的少ない値とともに、グループのメンバーの１つの識別子の順次位置とから各グループに関する情報を決定することができるように、識別子を位置決めする。
【０００９】
この技法は、グループの長さに従ってグループを分類することによって実施することができる。グループの長さはグループ内の識別子の数である。識別子の順次位置と、各長さグループの数を表すグループ化データ値とを使用して、識別子グループの長さと、グループの最初と最後の識別子の位置を決定することができる。この技法は、各グループのロケーションおよび長さに関するデータを省略できるので、効率的である。
【００１０】
各グループが同義語などの関連ワードのグループを表現する場合には、各グループの品詞に関するデータを省略するように、この技法を拡張することができる。この場合には、品詞によってグループを分類する。次に、シーケンス内の識別子の位置と、各品詞内の最初と最後の識別子の位置を表すグループ化データ値とを使用して、与えられた識別子を含むグループの品詞を決定する。グループ化データ値は、例えば、各品詞の最後の識別子の位置（次の品詞の最初の識別子のシーケンス内の位置をも表す）であってもよい。
【００１１】
第３の技法は、各ワードを一定長さのナンバーの集合からの固有ナンバーを用いて識別すれば、各ワードの識別子を非常にコンパクトにすることができるという認識に基づいている。その結果、各ワードが比較的少ないビットをもつ２進数によって識別されるので、比較的大量のワードをコンパクトに表現することができる。
【００１２】
この技法は、上に述べたようにワードグループデータを有するプロダクトにマッピングデータすなわち変換データを含ませることによって実施することができる。この変換データを使用して、各ワードとその識別子との間でマッピングすなわち変換を実施することができる。すべてのグループ内のワードの識別子は共同して、一定長さのナンバーの集合を構成する。
【００１３】
第４の技法は、識別子が非効率の原因になることがあるという認識に基づいている。もし各識別子がナンバー（数字）であれば、各ナンバーを整数のバイトで格納することは、表現されたワードのナンバーしだいでは、非効率になる。もしそうであれば、各識別子を部分に分けて格納することによって、少なくともその１つはフルバイト（１バイトを構成する全ビット：通常８ビット）より小さくすることができるので、ワードグループデータをより一層コンパクトにすることができる。もしフルバイトの長さが識別子の各部分の長さの整数倍であれば、シフト操作とマスク操作を使用して、１機械サイクルで各部分の比較を行うことができる。
【００１４】
第５の技法は、識別子を見つけるためにワードグループデータを走査するが、走査は非効率であることがあるという認識に基づいている。この技法は、各グループをナンバーで分類し、各グループ内の最初のナンバーで同じ長さのグループを分類することによって、より時間効率的に識別子を走査する。その結果、候補の識別子と一致する識別子を見つけるためグループを走査しているとき、もしグループ内の識別子が候補の識別子より大きければ、グループ内の残りの識別子をスキップすることができる。同様に、もしグループの最初の識別子が候補の識別子より大きければ、それらの識別子が一致する可能性はないので、その長さの残りのすべてのグループをスキップすることができる。
【００１５】
本発明の諸技法は、上に述べたように、ワードグループデータを使用する方法の中で実施することができる。識別子のシーケンスをワードの識別子で探索して、一致する識別子を見つけることができる。一致する識別子を見つけたら、その識別子の位置とグループ化データとを使用して、そのワードを含むグループに関連するデータを得ることができる。同様に、グループ内の他のワードの識別子を得ることができるし、あるいはグループ内のワードの品詞を表すデータを得ることもできるであろう。
【００１６】
本発明の諸技法は、さらに、変換ステップを含むことができる。すなわち、ワードを変換してその識別子を得ることもできるし、グループ内のワードの識別子を変換してワードへ戻し、例えば同義語を得ることができる。
【００１７】
本発明の諸技法は、さらに、識別子を部分に分けて比較するステップを含むことができる。本発明の諸技法は、さらに、一致する可能性がない識別子をスキッブするステップ、および一致する可能性のない識別子のグループをスキップするステップを含むことができる。
【００１８】
上に述べた諸技法は、同義語、等を効率的に格納したり検索したりできるので有用であり、電子類語辞書や、その他の語対応付け装置にも利用できる。また、コンパクトに格納された同義語を迅速に走査して、同義語を検索することができる。例えば、上に述べた諸技法を使用して、類語辞書のデータをより効率的にパーソナルコンピュータの常駐メモリに格納したり、ディスクの交換を少なくしたり、より迅速な同義語検索を行うことができる。
【００１９】
【実施例】
Ａ．概要
用語「類語辞書（thesaurus)」は、同義語の書物を指すことが多い。従って、ユーザーは類語辞書から与えられたワードの同義語を見つけることができる。しかし、上に述べたように、「類語辞書」は、同様に、与えられたワードの同義語をユーザーへ提供する電子デバイス、例えばコンピュータで実行される機能を指す場合にも使用される。後者の場合、類語辞書は、どれかのトークン（token) のナンバーに応じて関連するトークンを提供する、より大きなクラスの対応付け装置の一例である。トランスレータ（translator）は、ワードに適用できる対応付け装置のもう１つの例であるが、もしそのような対応付け装置が多数の受入れ可能なタイプ（type) のそれぞれを関連する受入れ可能なタイプに対応付ける情報を有していて、かつ対応付ける各トークンが受入れ可能なタイプの１つの実例であれば、ワード以外のタイプにも使用することができるできるであろう。
【００２０】
ここでは、用語「トークン」および「タイプ」は、言語学における通常の意味に従って使用する。従って、トークンは、表現、記号、または文の特定の実例であるのに対し、タイプは、その特定の実例ではなく、表現、記号、または文の一般形である。ここで使用するとき、用語「ワード」は、タイプを表しており、用語「ワードの実例」、「入力ワード」、「出力ワード」、「格納されたワード」、等はトークンを表す。ここで使用する用語「ワード」は、意味をもつ言語単位を含むほか（従って、１ワードだけに限定されない）、句および節を含むワードの列を含み、さらに、個別にまたはワードの列の中に表意記号または意味をもつ他の種類の記号を含む。
【００２１】
図１は、入力ワードに応答して同義語を提供する対応付け装置を示す。図２は、入力ワードの同義語をどのように検索するかを示すフローチャートである。
【００２２】
図１の装置１０は、３つの広義の機能部を有する。Ｉ／Ｏ部２０は、入出力（Ｉ／Ｏ）機能を実行する。詳しく述べると、ワード入力装置２２は、ユーザーから入力ワードを受け取り、同義語出力装置２４はユーザーへそのワードの同義語を提供する。Ｉ／Ｏ部２０は、さらに、受け取った入力ワードを適当なディジタル形でワード／ナンバー（Ｗ／Ｎ）マッピング部３０へ提供する。マッピング部３０は、Ｗ／Ｎマッパー３２とＮ／Ｗマッパー３４を有しており、各マッパー３２，３４は格納されたワードリスト３６へアクセスする。ナンバー対応付け部４０は、マッパー３２の出力を受け取り、そしてマッパー３４の入力を与える。対応付け部４０内のナンバーアソシェータ４２は、Ｗ／Ｎマッパー３２から入力ワードを表すナンバーを受け取り、Ｎ／Ｗマッパー３４へそのワードの同義語を表す出力ナンバーを与える。ナンバーアソシェータ４２は、格納された同義語グループ４４にアクセスして、入力ワードと同義語とを対応付ける。
【００２３】
図２は、装置１０の動作をより詳細に示す。ボックス５０において、ワード入力装置２２は入力ワードを受け取り、Ｗ／Ｎマッパー３２へ与える。ボックス５２において、Ｗ／Ｎマッパー３２は格納されたワードリスト３６にアクセスして、入力ワードが変換できる受入れ可能なワードの１つであるかどうかを決定する。もし NO であれば、ボックス５４において、通常の信号手段（図示せず）を通してスペル誤り信号を与える。しかし、ワードが格納されたワードリスト３６内にあれば、ボックス５６において、Ｗ／Ｎマッパー３２はワードのナンバーを得て、そのナンバーをナンバーアソシェータ４２へ提供する。ボックス５８において、ナンバーアソシェータ４２は同様に入力ワードのナンバーと同義語グループ４４内のナンバーとを比較し、一致するかどうかを調べる。もしそのナンバーがグループ４４内のどのナンバーとも一致しなければ、ボックス６０において、同様に、通常の信号手段（図示せず）を通して無同義語信号を与える。しかし、もし１つ以上の一致が生じれば、ボックス６２において、ナンバーアソシェータ４２は同義語グループ４４から同義語のナンバーを検索し、それらをＮ／Ｗマッピング３４へ与える。次にボックス６４において、Ｎ／Ｗマッパー３４は格納されたワードリスト３６にアクセスし、検索したナンバーを使用して同義語を得る。そしてボックス６６において、その同義語を同義語出力装置２４を介して提供する。
【００２４】
図１および図２は、受け取ったトークン（例えば、入力ワード）を使用して識別子（例えば、ナンバー）を得て、次に、得た識別子を使用して格納された識別子のグループから受け取ったトークンのタイプに関連するタイプの識別子を検索し、次に、検索した識別子を使用してトークンを得ることを明らかにしている。以下に、これらの特徴を効率的に実施できる方法をより詳細に説明する。
【００２５】
装置１０の構造は、独立した機能を実行する（従って、効率的に動作させるため高度に専門化することができる）３つの主要部から成っている。たとえば、Ｗ／ＮおよびＮ／Ｗマッピング（変換）を非常に効率的にするため、格納されたワードリスト３６にスキップ可能な分岐を入れることができる。同様に、同義語グループ４４に、ナンバーの集合（各ナンバーはワードを個々に識別する）からの一様な長さのナンバーのコンパクトな数列を含ませることができる。更にコンパクトにするために、各ナンバーを部分に分けて格納することができる。少なくともその１つの長さはフルバイトより小さくすることができる。フルバイトの長さは各部分の長さの整数倍であり、１機械サイクルで各部分の比較を行うことができる。
【００２６】
変換機能と対応付け機能は独立しているので、主要部間のインタフェースもまた、取り扱うデータの種類に対し専門化することができる。その理由は、Ｉ／Ｏ部２０とＷ／Ｎマッピング部３０間のインタフェースを通るのはワードだけであり、そしてＷ／Ｎマッピング部３０とナンバー対応付け部４０間のインタフェースを通るのはナンバーだけであるからである。従って、装置１０は、達成しなければならない処理速度および空間効率、および入手可能な構成要素しだいで、さまざまなやり方で具体化することができる。
【００２７】
図１の装置１０のＩ／Ｏ部２０の構成要素は、必要な入力機能および出力機能を与えることができれば、どんな構成要素であってもよい。例えば、ワード入力装置２２は通常のキーボードであってもよいし、同義語出力装置２４は通常のディスプレイであってもよい。ワード入力装置２２と同義語出力装置２４は、通常のディスプレイベース形ユーザーインタフェースを介して取り扱うことができる。音声または文字認識回路網や音声発生回路網を含む他のＩ／Ｏ装置を使用することもできる。
【００２８】
Ｗ／Ｎマッピング部３０は、ワードからナンバーへ、そしてその逆へ必要な変換を実行する任意の構成要素を用いて具体化することができる。例えば、Ｗ／Ｎマッパー３２およびＮ／Ｗマッパー３４は、格納されたワードリストを使用するデータ処理装置によって実行されるソフトウェアルーチンとして効率的に具体化することができる。
【００２９】
ナンバー対応付け部４０は、同様に、受け取ったナンバーに関連するナンバーを検索する任意の構成要素を用いて具体化することができる。上に述べたように、ナンバー対応付け部４０は、Ｗ／Ｎマッピング部３０からの入力ワードを識別するナンバーを受け取り、次に、関連ワードの検索したナンバーをＷ／Ｎマッピング部３０へ提供する。さらに、ナンバー対応付け部４０は、関連する同義語を識別する際にユーザーを支援するため、各検索したナンバーの品詞（part of speech) に関する情報を提供することができる。以下、ナンバー対応付け部４０の具体化機構を、その構成要素について説明する。
【００３０】
Ｂ．格納されたグループ
同義語などの関連するタイプのグループに関する関連付け情報は、さまざまなやり方で格納することができる。たとえば、タイプの識別子をグループで格納することができる。各グループは、その長さ、そのメンバー（識別子）のロケーション、および関連する品詞などのデータを含んでいる。入力ワードを識別するナンバーを受け取ったら、ナンバー対応付け部４０は、それらの品詞のほかに、そのナンバーを含むすべてのグループから格納されたナンバーを簡単に検索することができる。受け取ったナンバーを探索することによって、あるいは受け取ったナンバーを含むグループを識別するリストを検索することによって、グループを識別することができる。
【００３１】
格納された同義語グループ４４は、効率を向上させる多くの特徴を備えている。コンバクトにするため、同義語グループ４４の、内容が比較される部分は、ナンバーのみを有しており、コンパクトなテーブルを使用してナンバーのシーケンスから関連付け情報を決定することができる。さらにコンパクトにするため、各ナンバーは多くの部分に分けて格納される。各部分は、１機械サイクルでアクセスおよび比較ができる長さを有する。迅速に走査するため、各グループ内のナンバーは分類されており、各品詞内のグループは最初のナンバーによって分類されているので、グループ内の残りのメンバー、または品詞内の残りのグループをスキップすることができる。
【００３２】
このように、同義語グループ４４を迅速に走査できるコンパクトな形で格納することができる。図３は、格納された同義語グループ４４を含むプロダクトを作成する技法を示す。図４は、同義語グループ４４の構造を示す。
【００３３】
図３の技法は、ボックス２６０において、同義語グループ４４を通常の形（同義語がグループに分けられたワードデータ形態）で受け取ることによって始まる。各グループは、通例そのグループの各メンバーを識別するデータと、そのグループの長さと品詞を表すデータを含んでいる。多くのグループはメンバーが比較的少ないので、各グループの長さと品詞に関する追加データがグループの相当な部分を占める。この追加データを除くため、ボックス２６２において、この情報をグループの任意のメンバーの順次位置から決定することができるようにグループを順序付けしてシーケンスにする分類を実行する。この分類は、品詞によってなされ、各品詞内においてはグループの長さに従ってグループを順序付ける。
【００３４】
グループを分類したら、ボックス２６３において、各グループメンバーを識別する情報をコンパクトな識別子、例えばナンバーの集合からのナンバーへ変換する。しかし、この変換が終わった後でも、その後の分類およびテーブルの作成が可能なように、グループ内のナンバーを追加のデータによって保持することが必要である。
【００３５】
探索中にメンバーの一部またはグループの一部をスキップできるように、追加の分類を実施する。すなわち、ボックス２６４において、最も小さいナンバーが最初になるように、各グループを数値で分類する。次に、ボックス２６６において、各グループ内の最初のナンバーに従ってグループを数値で分類する。その結果、もし比較する候補ナンバーがそのナンバーより小さければ、それは、同じグループ内のそれ以後のナンバーより小さいので、それらをスキップすることができる。また、もし候補ナンバーがグループ内の最初のナンバーより小さければ、その候補ナンバーは、その品詞のその長さのそれ以後のすべてのグループ内のそれ以後のすべてのナンバーより小さいので、それらのグループをスキップすることができる。これらの分類によって、より迅速な探索が可能になる。
【００３６】
各グループ内のナンバーおよびグループ自身をこのやり方で分類したら、ボックス２６８において、それらを記憶媒体に順次ロード（格納）する。このステップにおいて、各グループを順番に取り上げ、前のグループと同じ品詞および長さを有するかどうかを決定する。もし異なる品詞を有していれば、後でテーブルを作り出す際に使用するため、前のグループの最後のナンバーの順次位置を一時的に格納する。同様に、もし異なる長さを有していれば、後でテーブルを作成する際に使用するため、前の長さを有するグループのナンバーを一時的に格納する。次に、グループ内のナンバーを、記憶媒体上の次の位置で開始し、順次ロードする。
【００３７】
各ナンバーをロードするやり方は、ある程度、同義語グループ内のナンバーの総数Ｎによって決まる。典型的な類語辞書は、例えば、全部で 31,000 の格納されたナンバーを収容できるが、固有ナンバーはその約半分（すなわち、２14より若干少ない）に過ぎない。迅速な比較を可能にするため、各バイトが２つのフルバイトとして各格納するナンバーをロードすることができれば、各バイトを最小限の機械サイクルで検索し、Ｗ／Ｎマッパー３２からのナンバーの同じバイトと比較することができる。
【００３８】
より一層コンパクトにするため、上記の代わりに、各ナンバーを長さ８ビット、４ビット、および２ビットの３つの部分に分割して、各長さの部分を同じシーケンス内で対応のの配列にロードすることができる。もう１つの技法は、各グループの最初のナンバーのみを略さずにロードして、それ以後の各ナンバーについては、そのナンバーと前のナンバーとの差のみをロードするやり方である。これにより、通例、各ナンバーについてロードする部分が２つ（８ビットの部分と４ビットの部分）に減るはずである。これらの技法において、フルバイトの長さは各部分の長さの整数倍であるので、部分の長さは「均等長さ」と呼ぶことができる。これらの技法は、場合によっては、さらに、１または２つの余分の比較を必要とするけれども、同義語グループ内の１６ビット当たり２または４ビットを除去するであろう。
【００３９】
これらの技法のいずれにおいても、配列は、検索を容易にするため、各格納されるナンバーの部分のアドレスすなわち配列索引が相互に一定の関係を有するようにロードされる。例えば、全長さの配列索引をシフトして、より短い長さの配列索引を得ることができるし、また索引のビットをマスクして、その索引にある配列エントリのどのビットを使用して比較すべきかを指示することができる。このように、均等長さを使用すれば、シフト操作を使用して妥当な部分を見つけ、マスク操作を使用してその部分と受け取ったナンバーの同じ部分とを比較することにより、１機械サイクルで比較が行える。各配列の開始点すなわちベースは、その配列をアクセスする際に使用するため格納される。
【００４０】
図４は、同義語グループ４４内のナンバーのシーケンスを示す。表の最上位レベルにおいて、グループは品詞（最初の品詞から最後の品詞まで）によって順序付けされる。それぞれの品詞の中で、グループは長さによって順序付けされる。２つのメンバー（すなわち同義語ワード）未満のグループは無いので、長さは Length2  からLengthn までである。ここで Length n は、すべてのグループの最大長さである。各長さの中で、グループは対応するグループの最初のナンバーによって順序付けされる。例えば、 Length2  の中で、 Group1 のａ1 は Group2 のａ2 より小さく、以下 Groupm のａm まで同様である。同様に、ａm+1 は Length3  のうち最も小さい最初のナンバーである。最後に、各グループ内のナンバーは順番になっており、ナンバーａはナンバーｂより小さく、ナンバーｂはナンバーｃより小さく、以下同様である。
【００４１】
最後に、ナンバーをすべて記憶媒体にロードし、テーブルを作成するための情報を一時的に格納したら、図３のボックス２７０において、テーブルを作成し、それを記憶媒体にロードする。例えば、２つのテーブル（品詞のロケーションテーブルとグループ長さテーブル）を作成することができる。前記ロケーションテーブルは、それぞれの品詞ごとに、ある品詞の最後のナンバーの位置と、次の品詞の最初のナンバーの位置を示すエンドロケーションを含んでいる。グループ長さテーブルは、それぞれの品詞について、それぞれ一定の長さをもつグループの数（GroupNo)を表す値を含むことができる。しかし、もし長さがとびとびであれば、グループ長さテーブルの各エントリは、長さと、グループの数（GroupNo)  を含んでいなければならない。２つのテーブルのベースは、対応付けのときそれらにアクセスする際に使用するため格納される。
【００４２】
テーブルの内容は、前に格納された情報に基づいている。指摘したように、各品詞ごとのエンドロケーションは、その品詞をもつ最後のグループ内の最後のナンバーの順次位置である。品詞内の各長さの GroupNo  は、もちろん、その品詞内のその長さのグループのナンバーである。
【００４３】
Ｃ．対応付け
ナンバーアソシェータ４２が動作するやり方は、主として関連ワードに関するデータを格納するやり方によって決まる。図５は、図４の格納された同義語グループ４４を使用してナンバーを対応付ける諸ステップから成る同義語検索ルーチンを示す。同義語が別の配置法で格納されていれば、当然に、別の技法が適当される。
【００４４】
図５のルーチンは、ボックス２８０において、ワードを受け取ったときに始まる。変換および対応付けへ進む前に、ボックス２８２において、 GroupStart ( 現グループの最初のロケーション) 、 GroupLast (現グループの最後のロケーション )、 LengthRunLast (現グループ長の最後のグループの最後のロケーション）、 SynonymLast (同義語グループ内の最後のロケーション）を含む、多くの変数を初期化する。図５のルーチンの場合、 GroupLast  および LengthRunLastは−１に初期化すると都合がよい。
【００４５】
図５のルーチンにおいて使用される格納されたワードリストには、格納された同義語グループ内に同義語をもつワードだけが入っている。従って、ルーチンは、ボックス２８４において、図２のボックス５２および５８のテストを実行して、ボックス２８０で受け取ったワードがワードリスト内のものであるかどうかのほかに、同義語グループ内のものであるかどうかも決定する。もし NO ならば、ボックス２８６において、無同義語信号を与える。もし YES  ならば、ボックス２８８において、前に述べたようにワードのナンバーを与える。これにより、Ｗ／Ｎマッパー３２の動作が終わって、ナンバーアソシェータ４２の動作が始まる。
【００４６】
次に、ルーチンは、ボックス２９０において、 GroupLast  の現在値が LengthRunLast  の現在値に等しいかどうかを決定する（これは、２つの変数が同じ値に初期化され、かつ現グループがそのグループ長さの最後のグループである場合に生じる）。NO の場合次のグループへ行く。YES の場合、ルーチンは、ボックス２９２において、 GroupLast  が SynonymLast  に等しいかどうかを決定する（これは、すべての格納された同義語グループが比較され、ルーチンが終了できることを意味する）。もし NO ならば、ルーチンは次のグループ長さへ行く（これは、次の長さと、その長さのグループのナンバーを得るため、グループ長さテーブルをアクセスすることを意味する）。次に、ルーチンは、ボックス２９４において、これらの値を使用して LengthRunLast  の新しい値と、その新しいグループ長さに関連する他の変数を決定する。
【００４７】
ルーチンが新しいグループ長さへ進んだ後、もし必要ならば、ボックス２９６において次のグループへ行く。これは、 GroupStart を GroupLast  より１つ大きくセットし、そして GroupLast  を現グループ長さだけ増分することを含む、関連する変数を変化させることによって行うことができる。ルーチンは、実際に受け取ったワードのナンバーと現グループのナンバーとを比較する前に、ボックス３０２において、そのナンバーが GroupStart にあるナンバーより小さいかどうかを決定する。もし YES  ならば、受け取ったワードのナンバーは、このグループのナンバーおよび同じ長さのそれ以後のすべてのグループのナンバーより小さい。従って、ルーチンが確実に次のグループ長さへ行くように、ボックス３０４において、 GroupLast を LengthRunLast にセットする。
【００４８】
最後に、ボックス３０６において、受け取ったワードのナンバーが現グループのメンバー（ワード）のどれかと一致するかどうかを決定する。もし一致しなければ、ルーチンはボックス２９０のテストへ戻る。もし一致すれば、ボックス３０８において、受け取ったワードの同義語を提供する。ボックス３０６と３０８のステップは、以下、図６について詳細に説明するが、それらがＮ／Ｗマッパー３４の動作とナンバーアソシェータ４２の動作を含んでいることは判るであろう。
【００４９】
ユーザーがワードのほかに、品詞を指定できるように、図５のルーチンを修正することができる。図５をそのように修正した場合には、ナンバーの対応付けを選択した品詞のための格納された同義語の部分に限定するステップが追加される。例えば、 SynonymLast  を、品詞のテーブルに基づいて、その品詞の最後のロケーションへ設定し、 GroupStart をその品詞の最初のロケーションへ初期化することができる。
【００５０】
図６は、図５のボックス３０６，３０８をどのように実施するかを詳細に示す。一般に、図６のサブルーチンは、図３について説明したように、各ナンバーを２つまたはそれ以上の部分に分けて記憶媒体にロードする場合に適している。
【００５１】
ボックス３０６を実施する諸ステップは、ボックス３１０のステップで始まり、そこでサブルーチンはロケーション GroupStart を開始する。次にボックス３１２において、そのロケーションにある値の最初の部分を検索する。次に、ボックス３１４において、検索した部分と受け取ったワードのナンバーの同じ部分とを比較する。もし２つの部分が等しくなければ、他の部分のどれも検索する必要はないが、ボックス３１６において、受け取ったワードのナンバーの部分と検索した部分とを比較して、どちらが大きいかを決定する。もし検索した部分が大きければ、一致が生じる可能性はないので、サブルーチンは図５のボックス２９０へ戻る。もし検索した部分が小さく、かつグループがさらにメンバーを有していれば、一致が生じる可能性があるので、ボックス３１８において、 GroupLast に達したかどうかを決定する。もし達したならば、サブルーチンは図５のボックス２９０へ戻り、ボックス３０６を実施する諸ステップが終了する。もし達していなければ、サブルーチンは、ボックス３２０において、現グループの次のメンバーへ進み、ボックス３１２において、その最初の部分を得る。
【００５２】
もしボックス３１４において、２つの部分が等しければ、ボックス３２２において、現部分が比較しているナンバーの最後の部分であるかどうかを決定する。もし NO であれば、ボックス３２４において、次の部分を検索するのに必要ならばアクセスするロケーションを修正して、次の部分を検索する。その後、ボックス３１４のテストを繰り返す。
【００５３】
もしボックス３２２のテストの結果が YES  ならば、図５のボックス３０６のテストは終了する。次に、サブルーチンは、ボックス３０８のように、現グループから同義語を得るため進行する。これを実行するため、サブルーチンは、ボックス３３０において、同様に GroupStart で開始する。ボックス３３２において、 GroupStart にある値に基づいて、現グループの品詞を決定し、それを表示するため提供する。次に、ボックス３３４において、それが受け取ったワードのナンバーと一致するグループのメンバーかどうかを決定する。これは、一致するメンバーの位置を表す値を保持することによって行うことができる。もし NO ならば、ボックス３３６において、メンバーの部分を検索し、ボックス３３８において、Ｎ／Ｗマッパー３４が同義語を提供する。
【００５４】
次に、サブルーチンは、ボックス３４０において、このメンバーが GroupLastかどうかを決定する。もし YES  ならば、図５のボックス２９０へ戻る。もし NO ならば、グループの吟味すべき追加のメンバーが残っている。次に、サブルーチンは、ボックス３４２において、グループの次のメンバーへ進んだ後、ボックス３３４のテストへ戻る。
【００５５】
図５および図６のルーチンの時間節約型変形は、受け取ったナンバーが一定の所定値以上であれば、格納された同義語グループ４４を逆順で探索するものである。受け取ったナンバー以下のナンバーの大量のグループをスキップすることができるので、受け取ったナンバーが大きい場合には、この逆順探索はより迅速である。
【００５６】
もう１つの変形は、ナンバーのレンジを一定の区切り値でサブレンジに分割し、そしてグループをサブグループに分割するものである。各サブグループは、サブレンジの１つに入るそのグループ内のナンバーを含んでいる。次に、受け取ったナンバーを区切り値と比較して、サブグループのどのセットを探索すべきかを決定する。これにより、より下の次の区切り値からのオフセットとして各ナンバーを格納することができるので、記憶空間が節減される。しかし、この空間節減は、各追加サブグループのための追加サブグループ長さテーブルによって部分的に相殺される。もしナンバーをディスクメモリまたは他の低速記憶装置に格納すれば、この技法は、探索を格納されたナンバーの部分に限定することが可能である。その結果、探索のとき高速メモリへ移すべきデータの総数を減らすことができるので、都合がよい。
【００５７】
さらに、別の技法を用いてナンバーアソシェータ４２の速度を加減することができる。例えば、テーブルを使用して与えられた入力ワードを含む各グループの開始ロケーションを得ることができる。すなわち、同じメンバーのどれかを有する次のグループを指示する一定のデータを、グループに含ませることができるから、もし一致するナンバーが見つかれば、探索はそれ以後の多数のグループを省略することができる。
【００５８】
各グループ内の同義語をアルファベット順に提供するために、格納されたワードリストを、ナンバーの数値順とアルファベット順とが一致するように作成することができる。
【００５９】
このように、ナンバーアソシェータ４２の実施は、Ｗ／Ｎマッパー３２からナンバーを受け取り、そして受け取ったナンバーを含むすべてのグループ内のナンバーをＮ／Ｗマッパー３４へ提供する。
【００６０】
Ｄ．類語辞書システム
類語辞書は多くのやり方で実施することができる。例えば、上に述べたルーチンと、それらを実行するのに必要なデータを、データ処理装置のメモリに格納することができる。
【００６１】
図７は、ＣＰＵ３５２を備えた類語辞書システム３５０を示す。入力ワードはワード入力バッファ３５４を介してＣＰＵ３５２へ送られ、得られた同義語と、品詞などの追加情報は、同義語出力バッファ３５６を介して出力される。動作中、ＣＰＵ３５２は、ＲＯＭ３６０に格納されたルーチン（関連のあるルーチンのみを示す）を実行する。
【００６２】
ＣＰＵ３５２は、主類語辞書ルーチン３６２を実行するとき、図８を参照して以下に説明するＷ／Ｎマッピングルーチン３６４、ナンバー対応付けルーチン３６６、およびＮ／Ｗマッピングルーチン３６８を含む多くの他のルーチンを呼び出す。Ｗ／Ｎマッピングルーチン３６４とＮ／Ｗマッピングルーチン３６８は、格納されたワードリスト３７０にアクセスし、ナンバー対応付けルーチン３６６は格納された同義語グループ３７２にアクセスする。これらのルーチンも、データを一時的にＲＡＭ３８０に格納する。
【００６３】
ＲＡＭ３８０の内部では、受取りワードレジスタ３８２が次の動作を待つ間、入力ワードを格納する。変換済みナンバーレジスタ３８４は入力ワードが変換されるナンバーを格納する。同義語ナンバースタック３８６は入力ワードを含む同義語グループから検索したナンバーを保持する。同義語フラッグや入力ワードが格納されたワードリスト３７０内にあるかどうかを指示する妥当ワードフラッグなど、多数のフラッグが準備されている。さまざまなルーチンを実行する間、例えばＮ／Ｗ変換に使用されるＬＩＦＯスタックを含む雑データ３９０は、ＲＡＭ３８０に一時的に格納される。
【００６４】
図８は、概して図２のステップに従う主類語辞書ルーチン３６２の実施を示す。ルーチンは、ボックス４００において、入力ワードをワード入力バッファ３５４から受取りワードレジスタ３８０へ転送することによって始まる。次にボックス４０２において、Ｗ／Ｎ変換ルーチン３６２を呼び出し、入力ワードをナンバーへ変換し、それを変換済みナンバーレジスタ３８４に格納する。Ｗ／Ｎマッピングルーチン３６４は、さらに、変換の失敗を指示する信号を戻すことができる。その場合には、フラッグ３８８のうちの妥当フラッグがクリヤされる。次に、ルーチンは、ボックス４０４において、妥当フラッグをテストする。もし妥当フラッグがクリヤされていれば、ボックス４０６において、エラー信号が信号バッファ３５６にロードされ、ルーチンは終了する。
【００６５】
もし入力ワードがうまく変換されたならば、ボックス４０８において、ナンバー対応付けルーチン３６６を呼び出す。ナンバー対応付けルーチン３６６は、もし同義語が見つかれば、同義語フラッグをセットする。ナンバー対応付けルーチン３６６は、さらに、同義語ナンバースタック３８６をロードし、その中に各グループに関する情報、たとえば品詞の情報を含ませる。同義語ナンバースタック３８６は、例えば、ＦＩＦＯスタックであってもよい。主類語辞書ルーチン３６２は、図２のステップに従う代わりに、図５および図６のステップに選択して従うことができる。その場合には、ナンバー対応付けルーチン３６６はフラッグをセットせず、グループのメンバーの１つと一致するのを見つけたら、グループのすべてのメンバーを提供する。
【００６６】
ナンバー対応付けが終了したら、ルーチンは、ボックス４１０において、同義語フラッグがセットされたかどうか決定する。もし NO であれば、ルーチンは、ボックス４１２において、無同義語信号を出力バッファ３５６へロードし、ルーチンは終了する。しかし、もし同義語が見つかったならば、ルーチンは、同義語ナンバースタックをアンロードし、同義語自身を出力として提供する。
【００６７】
次に、ボックス４１４において、各項目を同義語ナンバースタックからポップする（取出す）。ボックス４１６のテストは、ポップした項目が、検索したナンバーの１つかグループに関する情報かを決定する。もしナンバーであれば、ボックス４１８において、Ｎ／Ｗマッピングルーチン３６８を呼び出す。ボックス４２０において、Ｎ／Ｗマッピングルーチン３６８が提供した出力ワードを出力バッファ３５６へロードする。もしグループ情報がスタックからポップした項目の中にあれば、ボックス４２２において、品詞および他の妥当な情報を出力バッファ３５６へロードする。次に、ボックス４２４において、スタックが空かどうかを決定する。もし空でなければ、ボックス４１４において、別の項目をポップする。もしスタックが空であれば、ルーチンは終了する。
【００６８】
主類語辞書ルーチン３６２は、他の多くのやり方で実施することができる。例えば、一時的に格納する情報量を制限するために、同義語グループからナンバーが検索されるたびにＮ／Ｗマッピングを実行することができる。さらに、走査中のディスク交換を最小にするために、グループは、格納された同義語グループ３７２内に配列すべきである。それを行う最良の技法は、常駐メモリの容量と、システムの他の特徴とによって決まる。
【００６９】
Ｅ．その他
以上、類語辞書について説明したが、本発明は多くの応用面を有する。例えば、さまざまな種類のワード対応付け問題に本発明を応用することができる。ユーザーが入力ワードを多数の言語の１つでタイプし、装置が多数の出力ワードのグループ（各出力ワードのグループは、他の言語の入力ワードおよび同義語を含んでいる）で応答することによって、翻訳能力を与えることができる。語形が大きく変化する言語を含む応用において、語根の語形変化形を語根でグループ化すれば、変化形のどれか１つに応じて、他のすべての変化形を検索することができる。
【図面の簡単な説明】
【図１】  電子類語辞書の主要な機能構成要素を示すブロック図である。
【図２】  電子類語辞書を使用する際の一連の基本機能を示すフローチャートである。
【図３】  同義語のグループのリストと、グループ化データを有するテーブルから成るプロダクトを作成する方法を示すフローチャートである。
【図４】  図３の方法に従って作成した同義語のグループのリストの略図である。
【図５】  ナンバーとナンバーとの対応付けを含む同義語検索ルーチンを示すフローチャートである。
【図６】  図５の一部のステップをより詳細に示すフローチャートである。
【図７】  類語辞書操作のためのデータ処理装置の略図である。
【図８】  図７の装置の主類語辞書ルーチンを示すフローチャートである。
【符号の説明】
１０  装置
２０  Ｉ／Ｏ部
２２  ワード入力装置
２４  同義語出力装置
３０  Ｗ／Ｎマッピング部
３２  Ｗ／Ｎマッパー
３４  Ｎ／Ｗマッパー
３６  格納されたワードリスト
４０  ナンバー対応付け部
４２  ナンバーアソシャータ
４４  格納された同義語グループ４４
３５０  類語辞書システム
３５２  ＣＰＵ
３５４  ワード入力バッファ
３５６  同義語出力バッファ
３６０  ＲＯＭ
３６２  主類語辞書ルーチン
３６４  Ｗ／Ｎマッピングルーチン
３６６  ナンバー対応付けルーチン
３６８  Ｎ／Ｗマッピングルーチン
３７０  格納されたワードリスト
３７２  格納された同義語グループ
３８０  ＲＡＭ
３８２  受取りワードレジスタ
３８４  変換済ナンバーレジスタ
３８６  同義語ナンバースタック
３８８  フラッグ
【図１】
0003720060.tif 000002
【図２】
0003720060.tif 000003
【図３】
0003720060.tif 000004
【図４】
0003720060.tif 000005
【図５】
0003720060.tif 000006
【図６】
0003720060.tif 000007
【図７】
0003720060.tif 000008
【図８】
0003720060.tif 000009