(57)【要約】【課題】  自然言語文の集合体に対し、語順等を考慮したパターン検索が高速に行える検索方法および検索装置を提供することを課題とする。好ましくは、二次情報付きコーパスに対して、二次情報や語順等を含めたパターン検索が高速に行えて実用性が高い検索方法および検索装置を提案する。【解決手段】  自然言語文の集合体の検索方法であって、自然言語文の各構成単位と、各構成単位に対応して一意に定められた固定長コードとを関係づけて格納した変換コードテーブルを用い、自然言語文における構成単位間の順序情報が保持されたまま、自然言語文の各構成単位が、対応する前記固定長コードに変換されたコード化文の集合体を格納したコード化文ＤＢが構成され、コード化文ＤＢが固定長コードを用いて検索される。【選択図】  図２
2005242416.tif 000002
【特許請求の範囲】
【請求項１】
自然言語文の集合体の検索方法であって、前記自然言語文の各構成単位と、当該各構成単位に対応して一意に定められた固定長コードとを関係づけて格納した変換コードテーブルを用い、前記自然言語文における前記構成単位間の順序情報が保持されたまま、前記自然言語文の各構成単位が、対応する前記固定長コードに変換されたコード化文の集合体を格納したコード化文データベースが構成され、前記コード化文データベースが前記固定長コードを用いて検索されることを特徴とする検索方法。
【請求項２】
前記検索されたコード化文が、前記変換コードテーブルに基づいて、前記順序情報が保持されたまま逆変換されることを特徴とする請求項１に記載の検索方法。
【請求項３】
さらに、前記各コード化文に対応する自然言語文の位置情報が格納されたインデックステーブルを用い、当該検索されたコード化文に対応する前記位置情報を取得することを特徴とする請求項１に記載の検索方法。
【請求項４】
前記自然言語文が、二次情報を含む標準化データ形式により表現されており、前記構成単位には前記二次情報を含むことを特徴とする請求項１に記載の検索方法。
【請求項５】
自然言語文の集合体の検索装置であって、前記自然言語文の各構成単位と前記構成単位の各々に対応して一意に定められた固定長コードとを関係づけて格納した変換コードテーブルと、前記自然言語文における前記構成単位間の順序情報が保持されたまま、前記自然言語文の各構成単位が、対応する前記固定長コードに変換されたコード化文の集合体を格納したコード化文データベースと、前記コード化文データベースを前記固定長コードを用いて検索する検索部とを備えたことを特徴とする検索装置。
【請求項６】
さらに、前記検索させたコード化文が、前記変換コードテーブルに基づいて前記順序情報を保持したまま逆変換されるデコード部を備えたことを特徴とする請求項５に記載の検索装置。
【請求項７】
さらに、前記各コード化文に対応する自然言語文の位置情報が格納されたインデックステーブルを備え、前記検索部は、前記検索されたコード化文と前記インデックステーブルとから前記位置情報を取得することを特徴とする請求項５に記載の検索方法。
【請求項８】
さらに、前記自然言語文を、前記変換コードテーブルに基づいて、前記順序情報を保持したまま前記コード化文に変換するエンコード部を備えたことを特徴とする請求項５に記載の検索装置。
【請求項９】
前記自然言語文が、二次情報を含む標準化データ形式により表現されており、前記構成単位には前記二次情報を含むことを特徴とする請求項５に記載の検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、膨大な容量を有する自然言語文の集合体に対し、語順等を含めたパターン検索が高速に実行できる検索方法及び検索装置に関する。好ましくは、ＳＧＭＬ(Standard Generalized Markup Language)やＸＭＬ（eXtensible Markup Language）等の標準化データ形式で表現された二次情報付き自然言語文の集合体を、二次情報や語順等を含めて高速に検索できる検索方法および検索装置に関する。
【背景技術】
【０００２】
日常的に使用されて人間間の情報伝達の機能を有する自然言語文では、多くの単語が、時制、数、人称等による様々な変化形で表現され、かつ任意の順序で並べられた複雑な構造を有する。対象となる自然言語文の集合体の容量が比較的小さい場合には、正規表現が使用できるgrep等の全文検索ソフトウェアを用いて、単語の語順や変化形などを考慮して検索することができる。しかし、この方法では、自然言語文の集合体の容量が膨大になるにつれて検索時間も膨大になり、実用的とは言い難い。そのため、例えば一般のインターネット検索では、各種のキーワードと当該キーワードを含むＷＥＢページのＵＲＬとを関係づけるデータベースがあらかじめ構築され、検索対象のキーワードを用いてこのデータベースが検索されるにすぎない。膨大な容量の自然言語文に対しては、語順や二次情報等を考慮したより的確で高速なパターン検索は困難なのが実情である。
【０００３】
ところで、このような膨大な容量を有する自然言語文の集合体の例として、新聞記事や映画の台本等に記載された一定レベル以上の自然言語文が大規模に集積されたコーパスが知られている。近年、ＳＧＭＬやＸＭＬ等のテキストベースの標準的データ交換形式を利用した、いわゆる二次情報付きコーパスが注目されている。二次情報付きコーパスは、自然言語文に加えて、自然言語文を構成する各単語、句、章等の個別の文法単位について、品詞や語の原形などの各種の属性に関する二次情報が、タグ属性等として付加されたコーパスであり、具体例としては、The British National Corpus (BNC)、The Bank of Englishなどが知られている。これらは、いずれも数ギガバイトの膨大な容量を有し、言語表現の慣習的側面を明らかにするためのコロケーション調査や、より自然な言語表現の記述や分析に利用されている。
【０００４】
しかし、このような大規模なコーパスでは、二次情報を用いずに自然言語文の検索を行うと、検索ヒット数が多すぎてデータを絞りきれない。また、二次情報付きコーパスを、grep等の全文検索ソフトウェアを用いて正規表現を使用して検索しても、膨大な検索時間がかかってしまう。さらに、多くの二次情報付きコーパスの表現形式は、二次情報の入力のしやすい形式が採用されており、高速な検索には適さない。そのため、二次情報つきコーパスに含まれる品詞などに関する二次情報や語順などを検索に反映でき、かつ高速に検索できることが望まれている。
【０００５】
ここで、一定の論理的構造をもった構造化文書の検索手法として、構造化文書に含まれる構造情報とタグ管理情報とテキスト情報とに加えて索引情報を設定することにより、検索を高速化する構造化文書検索方法等が開示されている（例えば、特許文献１参照）。また、タグ付きコーパスの検索方法として、RDB（Relational DataBase）を用い、コーパスに含まれる形態素、文節、文、段落等の階層ごとにそれぞれ一つのテーブルを対応させることで、コーパス中の任意の部分木や連接関係を柔軟に検索できる方法が開示されている（例えば、非特許文献１参照）。さらに、複雑な構造を有する二次情報付き文書のデータベースを直感的に検索できるインターフェイスを備えた検索装置と、そのためのデータベースの構築方法等が開示されている（例えば、特許文献２参照）。しかし、いずれもデータベースが複雑で構築に多大な手間を要したり、検索に著しく時間を要する等の問題点があり、満足できるものではなかった。
【特許文献１】特開平08-137898号公報
【非特許文献１】工藤、松本、「RDBを利用したタグ付きコーパス検索支援環境の構築」、研究報告・自然言語処理、No.144、言語処理学会発行、2001年
【特許文献２】国際公開ＷＯ02/091234パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、膨大な容量を有する自然言語文の集合体に対し、語順や二次情報等を考慮したパターン検索が高速に行える検索方法および検索装置を提供することを課題とする。好ましくは、二次情報付きコーパスに対して、二次情報や語順等を含めたパターン検索が高速に行えて実用性が高い検索方法および検索装置を提案することを課題とする。
【課題を解決するための手段】
【０００７】
本発明の第一は、自然言語文の集合体の検索方法であって、前記自然言語文の各構成単位と、当該各構成単位に対応して一意に定められた固定長コードとを関係づけて格納した変換コードテーブルを用い、前記自然言語文における前記構成単位間の順序情報が保持されたまま、前記自然言語文の各構成単位が、対応する前記固定長コードに変換されたコード化文の集合体を格納したコード化文データベースが構成され、前記コード化文データベースが前記固定長コードを用いて検索されることを特徴とする検索方法である。
【０００８】
ここで、前記検索されたコード化文が、前記変換コードテーブルに基づいて、前記順序情報が保持されたまま逆変換されることは好ましい。また、さらに、前記各コード化文に対応する自然言語文の位置情報が格納されたインデックステーブルを用い、当該検索されたコード化文に対応する前記位置情報を取得することは好ましい。また、前記自然言語文が、二次情報を含む標準化データ形式により表現されており、前記構成単位には前記二次情報を含むことは好ましい。
【０００９】
発明の第二は、自然言語文の集合体の検索装置であって、前記自然言語文の各構成単位と前記構成単位の各々に対応して一意に定められた固定長コードとを関係づけて格納した変換コードテーブルと、前記自然言語文における前記構成単位間の順序情報が保持されたまま、前記自然言語文の各構成単位が、対応する前記固定長コードに変換されたコード化文の集合体を格納したコード化文データベースと、前記コード化文データベースを前記固定長コードを用いて検索する検索部とを備えたことを特徴とする検索装置である。
【００１０】
ここで、さらに、前記検索させたコード化文が、前記変換コードテーブルに基づいて前記順序情報を保持したまま逆変換されるデコード部を備えたことは好ましい。また、さらに、前記各コード化文に対応する自然言語文の位置情報が格納されたインデックステーブルを備え、前記検索部は、前記検索されたコード化文と前記インデックステーブルとから前記位置情報を取得することは好ましい。また、さらに、前記自然言語文を、前記変換コードテーブルに基づいて、前記順序情報を保持したまま前記コード化文に変換するエンコード部を備えたことは好ましい。また、前記自然言語文が、二次情報を含む標準化データ形式により表現されており、前記構成単位には前記二次情報を含むことは好ましい。
【発明の効果】
【００１１】
膨大な容量を有する自然言語文の集合体に対して、語順や単語間距離等を考慮したパターン検索が高速に行える。また、検索用データベースの構築が容易である。二次情報付きコーパスに適用した場合には、二次情報も含めたパターン検索ができる。
【発明を実施するための最良の形態】
【００１２】
以下、説明を簡単にするために、自然言語文として英語文を用い、最小構成単位がスペースで区切られた単語である例を用いて本発明を説明する。また、自然言語文は、テキストベースで標準化されたマークアップ言語によりフォーマットされているものとし、マークアップ言語のタグ属性に含まれる二次情報としては、単語の基本形と、活用形分類を含む品詞分類とを用いることにする。これらの構成単位を、以下トークン（token）と言うことがある。
【００１３】
まず、「I gave up smoking .」なる例文を考え、これを、以下に示すように、基本形と品詞等の属性がついたＳＧＭＬ形式のソーステキストに書き直す。ここで、<>はタグであり、wordは、それが含まれるタグが単語に関するタグであることを意味する。
【００１４】
ソーステキスト例：<sentence id=1 filename=****.txt><word 基本形＝I 品詞＝代名詞>I <word 基本形＝give 品詞＝動詞過去形>gave <word 基本形＝up 品詞＝副詞>up <word 基本形＝smoke 品詞＝動詞進行形>smoking <word 基本形＝. 品詞＝区切り>.</sentence>
【００１５】
次に、英文のあらゆる単語とタグ属性と必要によりタグ名とが、固定長ＩＤコードにより一意に特定できるように関係づけられた変換コードテーブルを作成する。つまり、英文に使用されるあらゆる単語とタグ属性とタグ名とにわたって、固定長ＩＤと一対一に対応づけられたテーブルを作成する。図１は、固定長ＩＤコードとして４バイトのASCIIコード形式を用いて、作成された変換コードテーブルの一部の例である。このテーブルの左の列には、あらゆる単語とタグ属性やタグ名とを含む。また、右の列には、左の列に一対一に対応する固定長ＩＤコードが格納されている。
【００１６】
この例で固定長ＩＤコードの長さを４バイトにしているのは、これだけの容量があれば、あらゆる変化形を含むすべての英単語と、基本形、品詞、品詞活用形などのトークンを一意に特定できるからである。バイナリーの４バイトは、１バイト＝２５６通りの４乗のＩＤ空間を持ち、事実上、単一言語に使用されるすべての単語の種類とタグ属性等の種類をまかなえる。つまり、固定長ＩＤコードの長さは、固定長ＩＤコードの種類が、データベースに格納されるすべての自然言語文に含まれる単語の異なり数と、各種のタグ属性の異なり数と、さらにタグ名の異なり数との和の上限値を上回るように決めればよい。従って、固定長ＩＤコードの長さは、必ずしも４バイトに限定されるものではなく、必要によりより大きなバイト数としたり、より小さなバイト数としたりしてもよい。
【００１７】
また、この例ではASCIIコード形式を用いているが、使用できるコードはASCIIコードには限定されない。例えば、後述の検索に用いる全文検索エンジンが扱えるJISコード等の他の文字コードを用いることができる。また、配列にコード化文を入れる場合には、整数やビット列でも良い。
【００１８】
変換コードテーブルを構成する際には、ソーステキストに含まれる単語の異なりリストをASCII順にソートしておき、その順に従って、コード値の昇順または降順で固定長ＩＤを割り振るのがよい。このようにすると、固定長ＩＤの大小順位が、元の単語の大小順位と対応し、固定長ＩＤのリストをソートすると、ソーステキストの単語をASCii順にソートしたことになる。
【００１９】
図２は、この変換コードテーブルのうち、上記のソーステキスト例に対応する部分の例を示した図である。この変換コードテーブルを用いて、上記のソーステキスト例をコード化してコード化文を構成する。コード化にあたっては、ソーステキスト例に含まれている自然言語文の単語の並びの順番を特定する順序情報が保持されるようにしてコード化する。単語の並びの順序情報が保持されれば、同じ単語に関する、単語、基本形、品詞の並びの順番は任意でかまわないが、すべての単語について同じになるように、あらかじめ定める。ここでは、ソーステキスト例の一つの単語に関する構成単位の順番である「基本形／品詞／単語」を、「単語／基本形／品詞」の順序となるように入れ替えてコード化した例を次に示す。このようにしても、自然言語文の構成単位の並びに関する順序情報は、実質的に保持されたままとなる。なお、各コードをスペースで区切っているのは、多くの全文検索エンジンにおいて、スペースを単語の切れ目と解してインデックスファイルを作成することに対応させたためである。
【００２０】
コード化文の例：BBB1 BBB0 FFFF AAA1 AAA0 GGG0 CCC1 CCC0 HHHH DDD1 DDD0 GGG1 EEE1 EEE0 JJJJ
【００２１】
ここで、コード化文の先頭の「BBB1」は、変化形が「I」であるコードを意味し、続く「BBB0」は、基本形が「I」であるコードを意味し、さらに「FFFF」は、品詞が「代名詞」であるコードを意味する。これら先頭から三つの固定長コードは一群となり、自然言語文の先頭に位置する一つの単語「Ｉ」に対応している。それぞれが同じ一つの単語に対応する続く三つずつのコードの群は、いずれの単語についても、「単語／基本形／品詞」の順序で並べられている。また、それら三つずつのコードの群は、対応する自然言語文の単語の並びの順番に従って並べられている。つまり、コード化文の固定長コードの並びは、自然言語文の構成単位の並び方に関する順序情報を、あらかじめ定めた一定の方式に従って保持している。
【００２２】
このようにして、自然言語文の集合体を構成するすべての自然言語文について、固定長ＩＤコードを用いたコード化文を構成し、そのようなコード化文の集合体からなるコード化文データベースを構成する。このように構成されたデータベースを用いることで、自然言語文の集合体の容量が膨大であっても、語順や二次情報等を考慮した検索を高速に行うことが可能になる。
【００２３】
構成単位の並びの順序情報を保持するには、自然言語文の構成単位の並びをそのままコード化文の固定長コードの並びに用いても良いし、上記のように一つの単語に対応する一群の中でのみ所定の順序で入れ替えても良い。この場合、すべての群についてこの同じ所定の順序を採用する必要がある。また、自然言語文の単語の並び順序を、コード化文において所定の順序となるように入れ替えることもできる。この場合、すべての自然言語文について同じ所定の順序となるように入れ替えることが必要となる。
【００２４】
次に、このコード化文データベースに対する検索方法について説明する。検索に使用するソフトウェアは、検索に用いるキーワードとキーワードの間の文字数または間隔を指定できる、いわゆる近傍検索の機能を有する全文検索ソフトウェアを用いればよい。検索用ソフトウェアに対する入力は、固定長ＩＤコードを用いる必要があるが、この例では、入力インターフェイス上は単語や品詞などの表現をそのまま用い、これらの表現を変換コードテーブルで変換してから検索を実行する。
【００２５】
入力には、二つの方法が選択できる。一つ目はクエリーを直接に入力する方法であり、二つ目は、単語の並びと二次情報の並びを入力できる入力窓がテーブル形式に設けられた、図３に示すような入力用インタフェースから行う方法である。
【００２６】
クエリーを直接書く場合は、例えば、以下のような文法に従って書くことができる。まず、検索したい内容に対応する単語の並びに従って、それぞれの内容を単語ごとに｛｝でくくって並べる。それぞれの｛｝の中に、検索したい内容に対応する検索式を入力する。例えば、「giving」に続き、m単語以上n単語以下の単語を空けて、「up」が出現する自然言語文を検索したい場合は、｛単語＝"give" 品詞＝"動詞進行形"｝[m,n]｛単語＝"up"｝のようにクエリーを書くことができる。ここで、[m,n]は、m単語以上、n単語以下の長さのワイルドカードを意味する。
【００２７】
図３の入力用インターフェイスを用いると、より直感的な入力が可能となる。入力インターフェイスは、９つの入力窓が３×３の行列形式となるように配置されており、これらのいずれか一つ以上に入力されれば、入力されたデータを用いて上記のごとき検索式が自動的に生成されて検索が実行されるようになっている。入力窓のうち一行目は、自然言語文中に出現する単語が入力される行であり、二行目は品詞が入力される行であり、三行目は単語の基本形が入力される行である。どの行に入力されているかにより、何により検索すべきかが判断される。また、列の順序は、自然言語文中に出現する単語の順序を表している。一列目の入力窓に入力されるデータが、自然言語文の中で最初に出現する単語に関するデータと解釈され、二列目に入力されるデータが、その次に出現する単語のデータと解釈され、三列目に入力されるデータが、最後に出現する単語のデータと解釈されることになる。また、３×３の入力窓の少なくともいずれか一つに入力されれば、検索は可能であり、きわめて直感的に入力することができる。
【００２８】
いずれの方法により検索条件が入力された場合でも、入力された検索条件は、先に説明した変換コードテーブルを用いて対応する固定長ＩＤコードに変換される。これにより、クエリーが構成されて、コード化文データベースに対する検索が実行される。ここで、具体的な検索例を示す。
【００２９】
検索例１：  A=「自然言語文の集合体に対して、"get"から最大で２語離れて"money"が来るパターンを探す」例を説明する。この検索内容を行列形式の入力インターフェイスを用いて入力する場合は、図４に記載のように、第一行第一列の入力窓に"get"が入力される。これで自然言語文中に、"get"がこのままの形で含まれる文が検索対象となる。第一行第二列の入力窓に"[0,2]"が入力され、第一行第三列の入力窓に"money"が入力される。この場合、品詞や基本形の指定はないので、他の入力窓は不定のままとする。これからクエリーが自動生成される。クエリーは、例えば{単語="get" 品詞＝"" 基本形＝""} [0,2] {単語＝"money" 品詞＝"" 基本形＝""}となる。ここで、検索条件がない品詞や基本形の式は省略しても良い。
【００３０】
次に、このクエリーを固定長ＩＤコードを用いたクエリーに変換する。ここでは、図１に記載したような４バイトの固定長ＩＤコードへの変換コードテーブルを使用するとして、"get"は、例えば"ABCD"と変換され、"money"は、例えば"EFGH"と変換されるとする。すると、図４の入力に対応して解釈される入力内容は、図５に記載の三つの入力内容の和になる。図５（ａ）は、２単語離れた場合を検索する入力内容であり、（ｂ）は１単語離れた場合の入力内容であり、（ｃ）は０単語離れた場合の入力内容である。
【００３１】
図５（ａ）では、入力時の３×３行列におけるワイルドカードの２語分が、図５（ａ）の第二列めと第三列めになり、入力時の第三列目が図５では第四列目にずらされている。ここで、「????」は、どのような固定長ＩＤコードにもマッチするワイルドカードを意味する。また、(n)は、不定部分のあらかじめ定めた並び順位を意味する。
【００３２】
この図５（ａ）の検索キーを一次元化すると、「ABCD_????(1)_????(2)_????(3)_????(4)_????(5)_????(6)_????(7)_????(8)_EFGH_」となる。なお、ここで下線はスペースを意味する。この検索キーの並びの順番は、上記と同様に、一つの単語に対応するトークンの群の中では、単語／品詞／基本形の順序であり、群自体の順序は、元の自然言語文の単語の順序に従っている。検索が実行されるトークンの単位長さは、固定長ＩＤコードの長さにスペースを足した長さとなる。従って、この例のように、検索キーと検索キーとが、８単位長さ離れている場合には、（４＋１）×８=４０であるから、生成される検索コマンドは、例えば、"ABCD_" fby.40 "EFGH_"となる。ここで、"Key1" fby.N "Key2"は、近傍検索をする場合の検索コマンドの一例であり、「Key1の直後にNバイトの間隔を置いてKey2が来る」ことを意味する。なお、fbyは、「followed by」を意味する。検索キーの間隔をバイト数で指定できるこの機能は、多くの全文検索エンジンに備わっている。
【００３３】
この検索コマンドの意味は、B1=「コード化文データベースに対して、"ABCD"のあとに８トークン分離れて"EFGH"がくるパターンを探せ」となる。次に、図５（ａ）の場合と同様にして図５（ｂ）の検索コマンドを求めると、例えば、"ABCD_" fby.25 "EFGH_"となる。この検索コマンドの意味は、B2=「コード化文データベースに対して、"ABCD"のあとに５トークン分離れて"EFGH"がくるパターンを探せ」となる。さらに、図５（ｃ）に対応する検索コマンドは、例えば、"ABCD_" fby.10 "EFGH_"となる。この検索コマンドの意味は、B3=「コード化文データベースに対して、"ABCD"のあとに２トークン分離れて"EFGH"がくるパターンを探せ」となる。これら三つの検索コマンドの和であるB=B1+B2+B3が、上記Aと同じ意味になる。
【００３４】
従って、自然言語文の集合体を直接検索する代わりに、固定長ＩＤコードでコード化されたコード化文データベースを検索することで、同じ検索結果を得ることができる。また、トークンが不定長のデータから構成されている本来の自然言語文では、すべての文字に対して逐次的にマッチング処理して単語の区切りを探して、単語数をカウントする必要があった。しかし、コード化文データベースでは、語数分のコードの長さが確定しているから、そのようなマッチング処理が不要となる。
【００３５】
また、自然言語文にトークンの並びの順序情報が、あらかじめ定めた方式で、コード化文データベースでも保持されているから、語順等を考慮した検索も高速で行うことができる。さらにトークンには二次情報を含むから、二次情報を用いて高速に検索することもできる。
【００３６】
コード化文データベースの検索により得られたコード化文から元の自然言語文を得る方法は二通りあり、目的により選択すればよい。一つ目は、検索により得られたコード化文が、変換コードテーブルに従って逆変換されて表示される方法である。逆変換により元の自然言語文が直ちに得られるから、これを検索結果として、例えば、ＫＷＩＣ形式などで表示すればよい。この方法は簡単であり、二次情報付きコーパスの検索のような、テキストベースのデータだけが表示できればよい場合に適する。
【００３７】
二つ目は、テキストデータ以外にも表示したい画像データ等が存在する場合に適しており、ここでは、インターネット検索を行う場合を例として説明する。まず、自然言語文の集合体はインターネットそのものとなる。コード化文データベースは、インターネットに含まれるテキストベースのデータに関して、固定長ＩＤコードによりコード化された文の集合体として構築されている。また、各コード化文に対し、それらのコード化文が含まれるＷＥＢページのＵＲＬを特定したインデックステーブルが用意されている。そして、コード化文データベースが上記したように検索されてコード化文が特定されたら、インデックステーブルから当該コード化文に対応する自然言語文を含むＷＥＢぺージのＵＲＬが読み出され、これらＵＲＬが検索結果として表示される。これにより、語順等を考慮したインターネット検索が高速に行える。コード化文データベースにＷＥＢページに含まれる二次情報を含めておけば、二次情報で検索することも容易である。
【００３８】
検索例２：  C=「自然言語文の集合体に対して、"give（活用を無視） up"の直後に"-ing形"がくるパターンを探す」例を説明する。この検索内容Cを、行列形式の入力インターフェイスに入力した例を図６に示す。図６では、第一列第三行に"give"が入力されている。これで、"give"のすべての活用形を含む文が検索対象となる。第二列第一行には、"up"が入力されている。"give"と"up"の間に他のトークンが指定されていないので、"give up"を含む文が検索対象となる。続いて、第三列第二行には"動詞進行形"と入力されている。これで、"give up"の直後に動詞の進行形が来る文が検索対象となる。この入力内容に基づいて生成される検索コマンドは、例えば、{基本形＝"give"} {単語＝"up"} {品詞＝"動詞進行形"}となる。なお、入力データが空白となる部分は省略した。
【００３９】
次に、図６の入力データが、変換コードテーブルによって固定長ＩＤコードによるデータに変換される。これを図７に示す。ここでは、基本形が"give"である固定長ＩＤコードは"XYZ1"であるとし、実際に自然言語文中に現れる単語が"up"である固定長ＩＤコードは"LMNP"であるとし、動詞進行形を意味する固定長ＩＤコードは"VVG1"であるとした入力内容が示されている。これを一次元化すると、「XYZ1_LMNP_????(1)_????(2)_????(3)_VVG1_」となる。ただし、固定長ＩＤコードの並びの順番は検索例１と同じにした。入力データがない不定部分の長さは、固定長ＩＤコードの長さが４で、スペースが１、入力データに挟まれた不定部分の個数が３であるから、（４＋１）×３＝１５と計算され、この図７に対応する検索コマンドの例は、"XYZ1_LMNP_ fby.15 VVG1_"となる。
【００４０】
この検索コマンドは、D=「コード化文データベースに対して、"XYZ1 LMNP"のあとに3トークンを挟んで"VVG1"が出現するパターンを探せ」を意味するから、CとDの意味は同じとなる。この検索コマンドで検索結果のコード化文が得られたら、これらを検索例１の一つ目の方法と同様にして、変換コードテーブルでデコードすると元の自然言語文が得られる。または、検索例１の二つ目の方法と同様にして、インデックステーブルを介して自然言語文が含まれるＷＥＢページのＵＲＬを特定するようにしてもよい。
【００４１】
検索例３：  E=「自然言語文の集合体に対して、基本形が"sign"で、自然言語文中で"signs"となる単語を含むパターンを探せ」なる例について説明する。この検索内容Eが、行列形式の入力インターフェイスに入力された状態を図８に示す。第一列第一行に"signs"と入力され、これで自然言語文中の表現が"signs"となっている文が検索対象となる。また、同じ第一列の第三行に"sign"と入力されている。これで、基本形が"sign"である単語を含む文が検索対象となる。この検索内容が、固定長ＩＤコードへの変換コードテーブルにより変換される。変換された検索内容を図９に示す。ここで、自然言語文中に現れる"signs"なる単語の固定長ＩＤコードが"KKKK"であるとし、また、基本形が"sign"である固定長ＩＤコードが"KKK1"であるとした。この図９の検索内容を一次元化すると、「KKKK_????_KKK1_」となる。入力データが空白である不定部分の長さは、（４＋１）×１＝５と計算され、これから、検索コマンドは、"KKKK_ fby.5 KKK1_"となる。これは、F=「"KKKK"のあとに１トークンを挟んで"KKK1"が来るパターンを探せ」の意味であり、Eと同じである。この検索コマンドを用いてコード化文データベースを検索することで、所定の検索結果を得ることができる。その後は、検索例１と同様にして自然言語文を得る。
【００４２】
次に、上記の例から一般化された検索方法について説明する。まず、二次情報付きの自然言語文の集合体に対する一次元化された検索内容が、「xxxxxxxx 不定 yyy 不定 zzzzzz 不定 1111111」なるパターンであるとする。ここで、「xxxxxxxx」、「yyy」等の検索条件がバラバラな長さになっているのは、自然言語文を構成する単語の長さが、単語ごとにバラバラであることに基づく。
【００４３】
これを行列形式の入力インターフェイスに入力した状態を図１０に示す。これを固定長ＩＤコードへの変換コードテーブルを用いて変換する。変換した状態例を図１１に示す。この図１１の検索内容を、トークンの並びの順序情報を保持したまま一次元化すると、「ABCD_????_EFGH_????_JKLM_????_????_????_PQRS_」となる。という不定部分の長さを特定できる一次元のパターンにできる。これから、検索コマンドは、例えば、"ABCD_" fby.5 "EFGH_" fby.5 "JKLM_" fby.15 "PQRS_"となる。この検索コマンドを用いて、コード化文データベースを検索することで、所定の検索結果を高速で得ることができる。
【００４４】
次に、上記で説明した検索方法を実行するための検索装置について説明する。図１２は、二次情報付きコーパスの検索に適したスタンドアローンの検索装置１を、制御面から見た概略構成を示した図である。この検索装置１は、一般のパーソナルコンピュータを用いて構成されている。検索装置１は、プログラム類とデータ類が格納されたハードディスクを備えた記憶部２００と、記憶部２００から読み出されたプログラム類とデータ類が一時的に格納されたＲＡＭと中央処理装置であるＣＰＵとで構成された処理部１００と、キーボードやマウス等の入力デバイス３００と、処理状況を画面表示するディスプレイ３０１と、必要により接続されたプリンタやルータ等とを備える。
【００４５】
ここで、記憶部２００は、ハードディスクを用いずに、フラッシュメモリ等の駆動部分を有さない大容量のメモリにより構成しても良い。このようにすると、既存の全文検索エンジンを用いずに、すべてのインデックスをテーブルと配列で実装することができる。この場合、固定長ＩＤは３２ビット長で表現するのがよい。このようにすると、費用はかかるが高速の検索を実現できる。
【００４６】
記憶部２００は、自然言語文テキストデータファイル２０１と、変換コードテーブル２０２と、コード化文データベース２０３と、その他の操作に必要なプログラム類や画面情報を格納している。自然言語文テキストデータファイル２０１は、ＳＧＭＬやＸＭＬ等のテキストベースのマークアップ言語で記述された自然言語文のテキストファイルの集合体であって、ここでは、ＳＧＭＬで記述された二次情報付きコーパスが格納されている。
【００４７】
変換コードテーブルは、二次情報付きコーパスに現れるあらゆる単語とタグ属性と必要によりタグ名とを一意に特定できるように、４バイトの固定長ＩＤコードが関係づけられたテーブルである。この例は、すでに図１に示した。
【００４８】
コード化文データベース２０３は、自然言語文の集合体である二次情報付きコーパスのトークンが、変換コードテーブル２０２に従って、トークンどうしの並びに関する順序情報が一定の方式で保持されたまま、固定長ＩＤコードに変換されたコード化文の集合体と、そのインデックステーブルからなる。
【００４９】
処理部１００は、エンコード部１０１と、検索部１０２と、デコード部１０３とを備える。エンコード部１０１は、自然言語文テキストデータファイル２０１に格納されている自然言語文を、変換コードテーブル２０２に従って、トークンの並びの順序情報を所定の方式で保持しながら、コード化文に変換してコード化文データベース２０３に格納し、合わせてインデックステーブルを作成する。この作業は、新しいコーパスが格納された場合や新しい自然言語文の例文が追加された場合に、随時行われる。
【００５０】
検索部１０２は、入力された検索条件に従って、コード化文データベース２０３を検索する。デコード部１０３は、検索により得たコード化文を逆変換して自然言語文に戻す。検索部１０２とデコード部１０３の動作を、図１３のフローチャートを用いて説明する。入力インターフェイスから検索条件が入力されて検索がスタートすると、検索部１０２は、検索条件に含まれる単語の表現や活用形などのタグ属性に関するデータを、変換コードテーブル２０２に従ってエンコードし、これを固定長ＩＤコードを用いた検索コマンドに変換する（Ｓ１００ステップ）。次に、この検索コマンドを用いてコード化文データベース２０３が検索され、検索条件に合致するコード化文を得る（Ｓ１１０ステップ）。次に、デコード部１０３は、検索結果のコード化文を変換コードテーブル２０２に従い、また、エンコード部１０１で用いた順序情報の所定の方式に従って順序情報を保持しながら、得られたコード化文を自然言語文に逆変換する（Ｓ１２０ステップ）。続いて、この得られた自然言語文が、ＫＷＩＣ形式でディスプレイ３０１上に表示されて（Ｓ１３０ステップ）、処理が終了する。
【００５１】
このようにすることにより、膨大な容量を有する二次情報付きのコーパスや自然言語文の集合に対し、それらに含まれる二次情報や単語の語順等を検索条件に含めて検索しても、比較的短い検索時間で検索が可能となる。そのため、例文の十分な絞り込みが可能で実用性が高い。
【００５２】
この検索装置はスタンドアローンで構成した例であるが、検索装置をサーバとして構成し、サーバと複数のクライアントをインターネットを経由して接続可能とし、クライアントから二次情報付きコーパス等が検索できるようにしても良い。この場合、検索入力と検索結果である自然言語文の表示はクライアント側で行う。
【００５３】
次に、インターネットを自然言語文の集合体として検索を行うのに適した検索装置２について説明する。この検索装置２の概略構成を図１４に示す。検索装置２は、変換コードテーブル４１０が格納された記憶装置と、コード化文データベース４２０が格納された記憶装置と、インデックステーブル４３０が格納された記憶装置と、巡回サーバ４４０と、ＷＷＷサーバ４５０と、検索サーバ４６０と、ルータ４７０とを備え、これらがＬＡＮで接続されて構成されている。また、検索装置２は、ルータ４７０を介してインターネット５００に接続されている。
【００５４】
変換コードテーブル４１０は、図１に示したテーブルと類似のテーブルであり、インターネットのＷＥＢサーバ５１０から発信されている、ＨＴＭＬ(Hyper Text Markup Language)で記述されたソーステキストに現れる各種の単語および検索対象とする二次情報のすべてに対して、所定長さの固定長ＩＤコードが一意に割り当てられたテーブルである。ちなみに、ＨＴＭＬは、ＳＧＭＬをベースにして簡略化されたマークアップ言語である。このテーブルは、巡回サーバ４４０により随時更新される。
【００５５】
コード化文データベース４２０は、ソーステキストにおけるトークンの並びの順序情報が保持されるようにして、変換コードテーブル４１０に従って、ソーステキストが変換されたコード化文が、やはり固定長でエンコードされたそれらのＩＤと共に大規模に格納されたものである。このテーブルも、巡回サーバ４４０により随時更新される。
【００５６】
インデックステーブル４３０は、各コード化文のＩＤと、そのコード化文が含まれるＷＥＢページのＵＲＬを関係づけて格納したテーブルである。このテーブルも、巡回サーバ４４０により随時更新される。
【００５７】
巡回サーバ４４０は、インターネット上の複数のＷＥＢサーバ５１０を自動巡回して、検索に必要なデータを収集してデータベース等を更新する機能を有する。巡回サーバ４４０の動作を図１５のフローチャートを用いて説明する。巡回サーバ４４０は、ＷＥＢサーバのＵＲＬと、そのＷＥＢサーバ上で公開されているテキストとを収集する（Ｓ２００ステップ）。次に、収集したデータを、インデックステーブルに追加して更新する（Ｓ２１０ステップ）。また、テキストに含まれるトークンに、変換コードテーブル４１０に含まれていないものがあった場合には、新しく固定長ＩＤコードを発行し新しいトークンと結びつけて、変換コードテーブル４１０に追加する（Ｓ２２０ステップ）。次に、収集したテキストを変換コードテーブル４１０に従って変換し、コード化文データベース４２０に追加する。これで、自然言語文の検索に必要なデータ類が揃う。
【００５８】
ＷＷＷサーバ４５０は、クライアント端末５２０からのインターネットを介した画面情報の送信要求を受信すると、検索に必要な画面情報をＨＴＭＬで記述して送信する。クライアント５２０から送信された検索条件を受信すると、その検索条件を検索サーバ４６０に送信する。検索サーバ４６０から検索結果を受信すると、検索結果を表示する画面情報を構成して、クライアント端末５２０に送信する。
【００５９】
検索サーバ４６０は、ＷＷＷサーバ４５０から送信された検索条件を用いて検索を行う。これを図１６のフローチャートを用いて説明する。検索サーバ４６０は、検索条件を受け取ると、変換コードテーブル４１０を用いて検索条件に含まれるトークンを固定長ＩＤコードに変換し、続いて検索コマンドを生成する（Ｓ３００ステップ）。次に、検索コマンドを用いてコード化文データベース４２０を検索する（Ｓ３１０ステップ）。検索結果として該当するコード化文のＩＤが得られたら、インデックステーブル４３０から該当するコード化文が公開されているＷＥＢページのＵＲＬを取得する（Ｓ３２０ステップ）。このＵＲＬの集合をＷＷＷサーバに送って（Ｓ３３０ステップ）、検索は終了する。
【００６０】
このように構成することにより、インターネット上で公開されているテキストに対し、クライアントから語順等を含めた検索を高速に行うことが可能となる。データベースの構成も比較的単純で、データベースの構築は容易である。
【００６１】
以上、本発明の実施形態を説明したが、本発明は以上の具体的な態様には限定されない。例えば、自然言語文は英語に限定されるものではなく、日本語等の他の言語であってもよい。また、自然言語文の構成単位（トークン）は単語でなくともよく、句や、名詞や動詞に助詞や助動詞が組み合わされたもの等を構成単位として含めても良い。また、単語がスペースで区切られていなくともよく、言語に合わせた文法解析等により最小構成単位が特定できればよい。二次情報は、品詞や活用形等の文法に関係するものに限られず、単語の意味等を含んでもよいし、自然言語文が含まれる文書名や章名、または著者名、作成された年月日、出版社名、分類項目、関連文献等の自然言語文に関係する情報を含んでいてもよい。また、検索条件として入力すべきデータは、正規表現を含めるのが便利であるが、単なる文字情報だけでもよい。また、入力インターフェイスは、３×３の行列形式には限定されず、より使いやすい任意の形式を取ることができる。
【００６２】
巡回サーバがＷＥＢサーバからテキストを収集する方法は、重要と判断された単語だけを、単語間の順序を保持したまま飛び飛びで収集するのでも良いし、テキスト全文を収集するのでも良い。また、検索装置２は、インターネットを介するのではなく、自然言語文を大規模に集積したデータベースがＬＡＮやＷＡＮで接続されたものに対して検索するのでも良い。自然言語文の集合体の例としては、特許明細書や各種研究文献等の公開用または非公開のデータベース等を上げることができる。
【００６３】
また、検索装置は、コンピュータに実行させるためのプログラムとしても表現することもできる。プログラムは、コンピュータ読み取り可能な記録媒体に格納しても良い。その際、プログラムは、機能に基づいて複数に分割して異なる記録媒体に格納しても良い。ここで、記録媒体とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭフラッシュメモリ等の可搬媒体、ハードディスク装置等を言う。
【図面の簡単な説明】
【００６４】
【図１】変換コードテーブルの一部の概念図である。
【図２】変換コードテーブルの他の部分の概念図である。
【図３】入力インターフェイスの例を示した模式図である。
【図４】入力インターフェイスに検索条件が入力された例を示した模式図である。
【図５】エンコードされた検索条件の例を示した模式図である。
【図６】入力インターフェイスに検索条件が入力された他の例を示した模式図である。
【図７】エンコードされた検索条件の他の例を示した模式図である。
【図８】入力インターフェイスに検索条件が入力されたさらに他の例を示した模式図である。
【図９】エンコードされた検索条件のさらに他の例を示した模式図である。
【図１０】入力インターフェイスに、一般化された検索条件が入力された例を示した模式図である。
【図１１】一般化された検索条件が、エンコードされた例を示した模式図である。
【図１２】検索装置１の制御面から見た概略構成を示したブロック図である。
【図１３】検索処理の概略フローを示したフローチャートである。
【図１４】検索装置２の概略構成を示した概念図である。
【図１５】巡回処理の概略フローを示したフローチャートである。
【図１６】検索処理の他の概略フローを示したフローチャートである。
【図１】
2005242416.tif 000003
【図２】
2005242416.tif 000004
【図３】
2005242416.tif 000005
【図４】
2005242416.tif 000006
【図５】
2005242416.tif 000007
【図６】
2005242416.tif 000008
【図７】
2005242416.tif 000009
【図８】
2005242416.tif 000010
【図９】
2005242416.tif 000011
【図１０】
2005242416.tif 000012
【図１１】
2005242416.tif 000013
【図１２】
2005242416.tif 000014
【図１３】
2005242416.tif 000015
【図１４】
2005242416.tif 000016
【図１５】
2005242416.tif 000017
【図１６】
2005242416.tif 000018