(57)【要約】【課題】検索文字列に含まれる単語の構文情報を含めた検索処理のためのインデックス情報を提供する。【解決手段】コンピュータは、複数の文を含むテキストデータから複数の単語を抽出する（ステップ２０１）。そして、コンピュータは、抽出した複数の単語それぞれより、第１論理値、第２論理値、及び第３論理値を有するインデックス情報を生成する（ステップ２０２）。第１論理値は、単語を示す単語情報と、テキストデータ内におけるその単語の位置を示す位置情報とに対応付けられた、単語の存在を示す論理値である。第２論理値は、単語の構文情報と、その単語の位置を示す位置情報とに対応付けられた、単語の存在を示す論理値である。第３論理値は、単語を含む文を示す文情報と、テキストデータ内におけるその文の位置を示す位置情報とに対応付けられた、文の存在を示す論理値である。【選択図】図２
2018180890.tif 000002
【特許請求の範囲】
【請求項１】
複数の文を含むテキストデータから複数の単語を抽出し、
前記複数の単語それぞれより、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、インデックス情報を生成する、
処理をコンピュータに実行させるためのインデックス生成プログラム。
【請求項２】
前記文情報は、前記単語を含む文の文頭又は文末を示す情報であり、前記第３論理値は、前記テキストデータ内における前記文頭又は前記文末の位置を示す位置情報に対応付けられることを特徴とする請求項１記載のインデックス生成プログラム。
【請求項３】
前記コンピュータは、前記テキストデータに対する構文解析を行って、前記単語の構文情報を生成することを特徴とする請求項１又は２記載のインデックス生成プログラム。
【請求項４】
複数の文を含むテキストデータに対する検索文字列を受け付け、
前記テキストデータに含まれる複数の単語それぞれより生成されたインデックス情報であって、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、前記インデックス情報を参照し、
前記インデックス情報において、前記検索文字列に含まれる検索単語に対応付けられた第４論理値と、前記検索単語の構文情報に対応付けられた第５論理値と、前記検索単語を含む文に対応付けられた第６論理値とを用いて、論理演算を行い、
前記論理演算の結果に基づく前記検索文字列の検索結果を出力する、
処理をコンピュータに実行させるためのデータ検索プログラム。
【請求項５】
前記文情報は、前記単語を含む文の文頭又は文末を示す情報であり、前記第３論理値は、前記テキストデータ内における前記文頭又は前記文末の位置を示す位置情報に対応付けられることを特徴とする請求項４記載のデータ検索プログラム。
【請求項６】
前記コンピュータは、前記検索文字列に対する構文解析を行って、前記検索単語の構文情報を生成することを特徴とする請求項４又は５記載のデータ検索プログラム。
【請求項７】
複数の文を含むテキストデータから複数の単語を抽出する抽出部と、
前記複数の単語それぞれより、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、インデックス情報を生成する生成部と、
備えることを特徴とするインデックス生成装置。
【請求項８】
複数の文を含むテキストデータに含まれる複数の単語それぞれより生成されたインデックス情報であって、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、前記インデックス情報を記憶する記憶部と、
前記テキストデータに対する検索文字列を受け付ける受付部と、
前記インデックス情報において、前記検索文字列に含まれる検索単語に対応付けられた第４論理値と、前記検索単語の構文情報に対応付けられた第５論理値と、前記検索単語を含む文に対応付けられた第６論理値とを用いて、論理演算を行う演算部と、
前記論理演算の結果に基づく前記検索文字列の検索結果を出力する出力部と、
備えることを特徴とするデータ検索装置。
【請求項９】
コンピュータが、
複数の文を含むテキストデータから複数の単語を抽出し、
前記複数の単語それぞれより、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、インデックス情報を生成する、
ことを特徴とするインデックス生成方法。
【請求項１０】
コンピュータが、
複数の文を含むテキストデータに対する検索文字列を受け付け、
前記テキストデータに含まれる複数の単語それぞれより生成されたインデックス情報であって、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、前記インデックス情報を参照し、
前記インデックス情報において、前記検索文字列に含まれる検索単語に対応付けられた第４論理値と、前記検索単語の構文情報に対応付けられた第５論理値と、前記検索単語を含む文に対応付けられた第６論理値とを用いて、論理演算を行い、
前記論理演算の結果に基づく前記検索文字列の検索結果を出力する、
ことを特徴とするデータ検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法に関する。
【背景技術】
【０００２】
テキストデータを解析対象とするテキスト解析には、字句解析、形態素解析、構文解析、意味解析等が含まれる。字句解析は、表記に基づいて文書内の文を単語に分割する処理であり、形態素解析は、文を形態素に分割し、各形態素に対して品詞情報を付与する処理である。形態素解析により得られる形態素は、単語として扱われることもある。
【０００３】
構文解析は、単語の品詞情報に基づいて自立語を含む文節を合成し、文節に含まれる自立語に基づいて文節同士の係り受け関係（修飾関係）を求める処理である。構文解析によって得られる構文情報には、例えば、各文に含まれる単語が主語（Ｓ）、述語（Ｖ）、目的語（Ｏ）、又は補語（Ｃ）のいずれであるかを示す情報が含まれる。意味解析は、係り受け関係に基づいて同義表現、多義表現の意味を求める処理、又は複数の単語の中から類語を抽出する処理である。
【０００４】
テキストデータから検索文字列を検索する際に、テキストデータに含まれる単語の出現位置、単語の特徴量、又は単語間の関係性を示す情報を登録したインデックスが用いられることがある（例えば、特許文献１〜特許文献３及び非特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−６９４７１号公報
【特許文献２】国際公開第２００９／０６６５０１号パンフレット
【特許文献３】特開２００６−２２７９１４号公報
【非特許文献】
【０００６】
【非特許文献１】“MarkLogicのセマンティック”、［online］、マークロジック株式会社、［平成２９年１月１８日検索］、インターネット＜ＵＲＬ：http://www.marklogic.com/resources/semantics-japanese/resource_download/datasheets/＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
テキストデータに含まれる単語の出現位置のみを登録したインデックスを用いて検索文字列を検索する場合、検索文字列に含まれる各単語の構文情報とは無関係に検索処理が行われる。この場合、単語の構文情報も含めた検索結果を得るために、検索文字列に含まれる各単語の構文情報と、テキストデータから検索された単語の構文情報とを比較する、検証処理を行うことが望ましい。しかし、検索処理を行った後に別途検証処理を行う場合、検索結果を得るための処理時間が増加する。
【０００８】
１つの側面において、本発明は、検索文字列に含まれる単語の構文情報を含めた検索処理のためのインデックス情報を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、インデックス生成プログラムは、以下の処理をコンピュータに実行させる。
（１）コンピュータは、複数の文を含むテキストデータから複数の単語を抽出する。
（２）コンピュータは、抽出した複数の単語それぞれより、第１論理値、第２論理値、及び第３論理値を有するインデックス情報を生成する。第１論理値は、単語を示す単語情報と、テキストデータ内におけるその単語の位置を示す位置情報とに対応付けられた、単語の存在を示す論理値である。第２論理値は、単語の構文情報と、その単語の位置を示す位置情報とに対応付けられた、単語の存在を示す論理値である。第３論理値は、単語を含む文を示す文情報と、テキストデータ内におけるその文の位置を示す位置情報とに対応付けられた、文の存在を示す論理値である。
【発明の効果】
【００１０】
１つの実施形態によれば、検索文字列に含まれる単語の構文情報を含めた検索処理のためのインデックス情報を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】インデックス生成装置の機能的構成図である。
【図２】インデックス生成処理のフローチャートである。
【図３】データ検索装置の機能的構成図である。
【図４】データ検索処理のフローチャートである。
【図５】インデックス生成装置の具体例を示す機能的構成図である。
【図６】テキストデータを示す図である。
【図７】２つのインデックス情報を示す図である。
【図８】単一のインデックス情報を示す図である。
【図９】ビット列を示す図である。
【図１０】圧縮ビット列を示す図である。
【図１１】インデックス生成処理の具体例を示すフローチャートである。
【図１２】データ検索装置の具体例を示す機能的構成図である。
【図１３】データ検索処理の具体例を示すフローチャートである。
【図１４】主語に対応するビット列のＡＮＤ演算を示す図である。
【図１５】文の範囲を示す図である。
【図１６】述語に対応するビット列のＡＮＤ演算を示す図である。
【図１７】目的語に対応するビット列のＡＮＤ演算を示す図である。
【図１８】情報処理装置の構成図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、実施形態のインデックス生成装置の機能的構成例を示している。インデックス生成装置１０１は、抽出部１１１及び生成部１１２を含む。抽出部１１１及び生成部１１２は、インデックス生成処理を行ってインデックス情報を生成する。
【００１３】
図２は、図１のインデックス生成装置１０１が行うインデックス生成処理の例を示すフローチャートである。まず、抽出部１１１は、複数の文を含むテキストデータから複数の単語を抽出する（ステップ２０１）。
【００１４】
次に、生成部１１２は、抽出された複数の単語それぞれより、第１論理値、第２論理値、及び第３論理値を有するインデックス情報を生成する（ステップ２０２）。第１論理値は、単語を示す単語情報と、テキストデータ内におけるその単語の位置を示す位置情報とに対応付けられた、単語の存在を示す論理値である。第２論理値は、単語の構文情報と、その単語の位置を示す位置情報とに対応付けられた、単語の存在を示す論理値である。第３論理値は、単語を含む文を示す文情報と、テキストデータ内におけるその文の位置を示す位置情報とに対応付けられた、文の存在を示す論理値である。
【００１５】
図１のインデックス生成装置１０１によれば、検索文字列に含まれる単語の構文情報を含めた検索処理のためのインデックス情報を提供することができる。
【００１６】
図３は、実施形態のデータ検索装置の機能的構成例を示している。データ検索装置３０１は、記憶部３１１、受付部３１２、演算部３１３、及び出力部３１４を含む。記憶部３１１は、図１のインデックス生成装置１０１が生成したインデックス情報３２１を記憶し、受付部３１２、演算部３１３、及び出力部３１４は、インデックス情報３２１に基づくデータ検索処理を行う。
【００１７】
図４は、図３のデータ検索装置３０１が行うデータ検索処理の例を示すフローチャートである。まず、受付部３１２は、テキストデータに対する検索文字列を受け付ける（ステップ４０１）。
【００１８】
次に、演算部３１３は、インデックス情報３２１を参照し、第４論理値、第５論理値、及び第６論理値を用いて論理演算を行う（ステップ４０２）。第４論理値は、インデックス情報３２１において、検索文字列に含まれる検索単語に対応付けられた論理値である。第５論理値は、インデックス情報３２１において、検索単語の構文情報に対応付けられた論理値である。第６論理値は、インデックス情報３２１において、検索単語を含む文に対応付けられた論理値である。
【００１９】
次に、出力部３１４は、論理演算の結果に基づく検索文字列の検索結果を出力する（ステップ４０３）。
【００２０】
図３のデータ検索装置３０１によれば、検索文字列に含まれる単語の構文情報を含めた検索処理を行うことができる。
【００２１】
図５は、図１のインデックス生成装置１０１の具体例を示している。図５のインデックス生成装置１０１は、抽出部１１１、生成部１１２、記憶部５０１、及び解析部５０２を含む。記憶部５０１は、テキストデータ５１１を記憶する。テキストデータ５１１は、日本語、中国語、韓国語、英語、フランス語等の自然言語で記述された複数の文を含む文書又はファイルであってもよい。さらに、テキストデータ５１１は、複数の文書又はファイルを含んでいてもよい。
【００２２】
抽出部１１１は、テキストデータ５１１に対する字句解析を行って、テキストデータ５１１の各文に含まれる単語を抽出し、抽出した単語の出現位置を示す単語情報５１２を生成して、記憶部５０１に格納する。単語情報５１２は、単語を示す識別情報（単語ＩＤ）と、テキストデータ５１１内におけるその単語の出現位置を示す位置情報とを含む。単語ＩＤは、テキストデータ５１１を圧縮する際に用いられる単語符号であってもよい。
【００２３】
解析部５０２は、テキストデータ５１１に対する構文解析を行って、テキストデータ５１１の各文に含まれる単語の構文情報５１３と、テキストデータ５１１の各文を示す文情報５１４とを生成し、記憶部５０１に格納する。
【００２４】
構文情報５１３は、単語の構文情報を示す識別情報（構文ＩＤ）と、テキストデータ５１１内におけるその単語の出現位置を示す位置情報とを含む。構文ＩＤは、主語、述語、目的語、又は補語のいずれかを示す構文符号であってもよい。文情報５１４は、文を示す識別情報（文ＩＤ）と、テキストデータ５１１内における文の出現位置を示す位置情報とを含む。文ＩＤは、文頭又は文末を示す文符号であってもよく、文の位置情報は、文頭又は文末に存在する単語の出現位置を示す位置情報であってもよい。
【００２５】
生成部１１２は、単語情報５１２、構文情報５１３、及び文情報５１４を用いてインデックス情報３２１を生成し、記憶部５０１に格納する。
【００２６】
図６は、テキストデータ５１１の例を示している。図６のテキストデータ５１１は、“Ｍｉｃｋｙ  ｅａｔｓ  ｃｈｅｅｓｅ  ｅｖｅｒｙ  ｄａｙ．”という文を含んでいる。この文には、“Ｍｉｃｋｙ”、“ｅａｔｓ”、“ｃｈｅｅｓｅ”、“ｅｖｅｒｙ”、及び“ｄａｙ”の５個の単語が含まれており、それぞれの単語の出現位置は、“１”〜“５”の番号によって表されている。
【００２７】
“Ｍｉｃｋｙ”は主語であり、“ｅａｔｓ”は述語であり、“ｃｈｅｅｓｅ”は目的語であり、“ｅｖｅｒｙ  ｄａｙ”は補語である。“Ｍｉｃｋｙ”は文頭に存在し、“ｄａｙ”は文末に存在する。
【００２８】
この場合、単語情報５１２は、“Ｍｉｃｋｙ”、“ｅａｔｓ”、“ｃｈｅｅｓｅ”、“ｅｖｅｒｙ”、及び“ｄａｙ”それぞれを示す単語ＩＤと、それぞれの単語の出現位置を示す番号とを含む。
【００２９】
構文情報５１３は、“Ｍｉｃｋｙ”、“ｅａｔｓ”、及び“ｃｈｅｅｓｅ”それぞれの構文情報として、主語、述語、及び目的語を示す構文ＩＤを含み、“ｅｖｅｒｙ”及び“ｄａｙ”それぞれの構文情報として、補語を示す構文ＩＤを含む。構文情報５１３は、さらに、それぞれの単語の出現位置を示す番号を含む。文情報５１４は、文頭及び文末を示す文ＩＤと、文頭に存在する“Ｍｉｃｋｙ”の出現位置を示す番号と、文末に存在する“ｄａｙ”の出現位置を示す番号とを含む。
【００３０】
なお、図６のテキストデータ５１１には、図示されている文以外の文も含まれており、単語情報５１２は、すべての文に含まれる単語の情報を含み、構文情報５１３は、すべての文に含まれる単語の構文情報を含む。また、文情報５１４は、すべての文の文頭及び文末の情報を含む。
【００３１】
図７は、図６のテキストデータ５１１が複数のファイルを表す場合のインデックス情報３２１の例を示している。図７のインデックス情報３２１は、図７（ａ）に示す２次元のインデックス情報と、図７（ｂ）に示す３次元のインデックス情報とを含む。
【００３２】
図７（ａ）のインデックス情報において、Ｘ軸は、単語を含むファイルのファイルＩＤを表し、Ｙ軸は、単語ＩＤ、構文ＩＤ、及び文ＩＤを表す。図７（ａ）のインデックス情報は、各単語の単語ＩＤに対応するビット列、各構文情報の構文ＩＤに対応するビット列、文頭に対応するビット列、及び文末に対応するビット列を含む。例えば、ビット列７０１は、“ｅａｔｓ”の単語ＩＤに対応するビット列である。
【００３３】
図７（ｂ）のインデックス情報において、Ｘ軸は、各ファイル内における単語の出現位置に対応するオフセットを表し、Ｙ軸は、単語ＩＤ、構文ＩＤ、及び文ＩＤを表し、Ｚ軸は、ファイルＩＤを表す。図７（ｂ）のインデックス情報は、Ｚ軸上で、各ファイルのファイルＩＤに対応する平面内に、各単語の単語ＩＤに対応するビット列、各構文情報の構文ＩＤに対応するビット列、文頭に対応するビット列、及び文末に対応するビット列を含む。例えば、ビット列７０２は、“ｅａｔｓ”の単語ＩＤに対応するビット列である。
【００３４】
それぞれのファイルのファイルＩＤとオフセットとを併せてＸ軸上にプロットすることで、図７の２つのインデックス情報を単一の２次元のインデックス情報３２１に相互に変換することも可能である。
【００３５】
図８は、このような２次元のインデックス情報３２１の例を示している。Ｘ軸は、単語の出現位置に対応するオフセット及びファイルＩＤを表し、Ｙ軸は、単語ＩＤ、構文ＩＤ、及び文ＩＤを表す。図８のインデックス情報３２１は、各単語の単語ＩＤに対応するビット列、各構文情報の構文ＩＤに対応するビット列、文頭に対応するビット列、及び文末に対応するビット列を含む。さらに、ファイルＩＤとして、各ファイルの先頭（又は末尾）に対応するビット列を含む。例えば、ビット列８０１は、“ｅａｔｓ”の単語ＩＤに対応するビット列である。
【００３６】
図９は、図７又は図８のインデックス情報３２１に含まれる、単語ＩＤ又は構文ＩＤに対応するビット列の例を示している。図９のビット列９０１は、アドレス“０”〜アドレス“４３”を有するレジスタに格納されており、論理値（ビット値）“０”は、単語が存在しないことを示し、論理値“１”は、単語が存在することを示す。
【００３７】
アドレス“０”〜アドレス“４３”は、テキストデータ５１１内における単語の出現位置を示す番号にそれぞれ対応付けられている。例えば、アドレス“０”〜アドレス“４”は、図６の番号“１”〜番号“５”にそれぞれ対応する。
【００３８】
ビット列９０１の長さは、４４ビットに限られず、テキストデータ５１１内の総単語数に比例して長くなるが、テキストデータ５１１内に出現する同じ単語の個数は、総単語数よりもはるかに少ない。このため、ビット列９０１に含まれる論理値の多くは“０”であり、論理値“１”の個数は、論理値“０”の個数よりも少なくなる。
【００３９】
そこで、ビット列９０１において各論理値が格納されているアドレスを適当な除数により除算することで、ビット列９０１をハッシュ化することができる。ハッシュ化したビット列を格納するレジスタのビット数を超えない素数のうち最大の素数を除数として用いることで、ハッシュ化したビット列から元のビット列９０１を復元することも可能である。このようなハッシュ化方法としては、例えば、先願である特願２０１６−０８３２４３号に記載された方法を用いることができる。
【００４０】
例えば、アドレス“０”〜アドレス“３１”を有する３２ビットレジスタにビット列９０１を格納する場合、レジスタのビット数は３２であり、そのビット数を超えない最大の素数は３１であり、次に大きな素数は２９である。この場合、生成部１１２は、各論理値が格納されているアドレスを２９及び３１でそれぞれ除算したときの剰余を求める。そして、生成部１１２は、３２ビットレジスタにおいて、求めた剰余が示すアドレスに元の論理値を格納することで、ビット列９０１を圧縮することができる。
【００４１】
除数として２９を用いた場合、ビット列９０１は圧縮ビット列９０２に変換される。この場合、３２ビットレジスタのアドレス“０”〜アドレス“２８”が使用され、アドレス“２９”〜アドレス“３１”は使用されない。ビット列９０１のアドレス“３５”及びアドレス“４２”に格納されていた論理値“１”は、圧縮ビット列９０２のアドレス“６”及びアドレス“１３”にそれぞれ格納される。
【００４２】
また、除数として３１を用いた場合、ビット列９０１は圧縮ビット列９０３に変換される。この場合、３２ビットレジスタのアドレス“０”〜アドレス“３０”が使用され、アドレス“３１”は使用されない。ビット列９０１のアドレス“３５”及びアドレス“４２”に格納されていた論理値“１”は、圧縮ビット列９０３のアドレス“４”及びアドレス“１１”にそれぞれ格納される。
【００４３】
文頭又は文末に対応するビット列も、ビット列９０１と同様の形式で表され、圧縮ビット列９０２及び圧縮ビット列９０３と同様の形式で圧縮することができる。この場合、論理値“０”は、文頭又は文末ではないことを示し、論理値“１”は、文頭又は文末であることを示す。したがって、論理値“１”は、対応するアドレスに文が存在することを示している。
【００４４】
図１０は、図８のインデックス情報３２１に含まれるビット列をハッシュ化することで得られる、圧縮ビット列の例を示している。除数として２９を用いた場合、“Ｍｉｃｋｙ”、“ｅａｔｓ”、“ｃｈｅｅｓｅ”、文頭、主語、述語、目的語、及び文末それぞれに対応するビット列は、圧縮ビット列１００１〜圧縮ビット列１００８に変換される。
【００４５】
また、除数として３１を用いた場合、“Ｍｉｃｋｙ”、“ｅａｔｓ”、“ｃｈｅｅｓｅ”、文頭、主語、述語、目的語、及び文末それぞれに対応するビット列は、圧縮ビット列１０１１〜圧縮ビット列１０１８に変換される。
【００４６】
なお、インデックス情報３２１には、図１０に示されていない他の単語に対応する圧縮ビット列と、他の構文情報に対応する圧縮ビット列も含まれる。また、テキストデータ５１１内に複数個の同じ単語が含まれている場合、その単語に対応する圧縮ビット列において、複数の出現位置それぞれに対応するアドレスに論理値“１”が格納される。
【００４７】
同様に、テキストデータ５１１内に同じ構文情報を有する複数個の単語が含まれている場合、その構文情報に対応する圧縮ビット列において、複数の出現位置それぞれに対応するアドレスに論理値“１”が格納される。さらに、文頭又は文末に対応する圧縮ビット列において、テキストデータ５１１内に含まれる複数の文それぞれの文頭又は文末に対応するアドレスに、論理値“１”が格納される。
【００４８】
図１１は、図５のインデックス生成装置１０１が行うインデックス生成処理の具体例を示すフローチャートである。まず、抽出部１１１は、テキストデータ５１１に対する字句解析を行って、テキストデータ５１１から単語を抽出し、単語情報５１２を生成する（ステップ１１０１）。次に、解析部５０２は、テキストデータ５１１に対する構文解析を行って、構文情報５１３及び文情報５１４を生成する（ステップ１１０２）。
【００４９】
次に、生成部１１２は、単語情報５１２に含まれる複数の単語ＩＤの中から１つの単語ＩＤを選択し（ステップ１１０３）、その単語ＩＤに対応する圧縮ビット列を生成する（ステップ１１０４）。例えば、生成部１１２は、選択した単語ＩＤに対応するレジスタ領域内で、単語の出現位置に対応する１つ以上のアドレスに論理値“１”を書き込むことで、その単語ＩＤに対応するビット列を生成する。そして、生成部１１２は、生成したビット列を２つの素数でハッシュ化して、２つの圧縮ビット列を生成する。
【００５０】
次に、生成部１１２は、単語情報５１２に含まれるすべての単語ＩＤを選択したか否かをチェックする（ステップ１１０５）。未選択の単語ＩＤが残っている場合（ステップ１１０５，ＮＯ）、生成部１１２は、ステップ１１０３以降の処理を繰り返す。これにより、複数の単語それぞれに対応する圧縮ビット列が生成される。
【００５１】
すべての単語ＩＤを選択した場合（ステップ１１０５，ＹＥＳ）、生成部１１２は、構文情報５１３に含まれる複数の構文ＩＤの中から１つの構文ＩＤを選択し（ステップ１１０６）、選択した構文ＩＤに対応する圧縮ビット列を生成する（ステップ１１０７）。例えば、生成部１１２は、構文ＩＤに対応するレジスタ領域内で、その構文ＩＤが示す構文情報を有する１つ以上の単語の出現位置に対応するアドレスに論理値“１”を書き込むことで、その構文ＩＤに対応するビット列を生成する。そして、生成部１１２は、生成したビット列を２つの素数でハッシュ化して、２つの圧縮ビット列を生成する。
【００５２】
次に、生成部１１２は、構文情報５１３に含まれるすべての構文ＩＤを選択したか否かをチェックする（ステップ１１０８）。未選択の構文ＩＤが残っている場合（ステップ１１０８，ＮＯ）、生成部１１２は、ステップ１１０６以降の処理を繰り返す。これにより、例えば、主語、述語、目的語、及び補語それぞれに対応する圧縮ビット列が生成される。
【００５３】
すべての構文ＩＤを選択した場合（ステップ１１０８，ＹＥＳ）、生成部１１２は、文情報５１４に含まれる複数の文ＩＤの中から１つの文ＩＤを選択し（ステップ１１０９）、選択した文ＩＤに対応する圧縮ビット列を生成する（ステップ１１１０）。例えば、生成部１１２は、文ＩＤに対応するレジスタ領域内で、その文ＩＤに対応する１つ以上の単語の出現位置に対応するアドレスに論理値“１”を書き込むことで、その文ＩＤに対応するビット列を生成する。そして、生成部１１２は、生成したビット列を２つの素数でハッシュ化して、２つの圧縮ビット列を生成する。
【００５４】
次に、生成部１１２は、文情報５１４に含まれるすべての文ＩＤを選択したか否かをチェックする（ステップ１１１１）。未選択の文ＩＤが残っている場合（ステップ１１１１，ＮＯ）、生成部１１２は、ステップ１１０９以降の処理を繰り返す。これにより、例えば、文頭に対応する圧縮ビット列及び文末に対応する圧縮ビット列が生成される。そして、すべての文ＩＤを選択した場合（ステップ１１１１，ＹＥＳ）、生成部１１２は、処理を終了する。
【００５５】
例えば、非特許文献１に記載されたセマンティック検索では、人、場所、及び物の関係性を示すトリプルインデックスを用いることで、単語間の関係性を含めた検索処理が行われる。しかし、テキストデータに対して構文解析及び意味解析を行ってトリプルインデックスを生成するため、インデックス生成処理の処理時間が増加し、生成されるトリプルインデックスのサイズも大きくなる。
【００５６】
これに対して、図１１のインデックス生成処理によれば、単語ＩＤ、構文ＩＤ、及び文ＩＤそれぞれに対応するビット列において、単語の出現位置に対応するアドレスに論理値“１”を書き込むだけで、インデックス情報３２１が生成される。これにより、インデックス生成処理が高速化されるとともに、インデックス情報３２１のサイズが小さくなる。ビット列を圧縮することで、インデックス情報３２１のサイズはさらに削減される。
【００５７】
図１２は、図３のデータ検索装置３０１の具体例を示している。図１２のデータ検索装置３０１は、記憶部３１１、受付部３１２、演算部３１３、出力部３１４、抽出部１２０１、及び解析部１２０２を含む。記憶部３１１は、テキストデータ５１１から生成されたインデックス情報３２１を記憶する。
【００５８】
受付部３１２は、テキストデータ５１１に対する検索文字列１２１１を、ユーザ又は外部の装置から受け付けて、記憶部３１１に格納する。抽出部１２０１は、検索文字列１２１１に対する字句解析を行って、検索文字列１２１１が表す文に含まれる検索単語を抽出し、抽出した検索単語を示す単語情報１２１２を生成して、記憶部３１１に格納する。単語情報１２１２は、検索単語を示す単語ＩＤを含む。
【００５９】
解析部１２０２は、検索文字列１２１１に対する構文解析を行って、検索文字列１２１１が表す文に含まれる検索単語の構文情報１２１３を生成し、記憶部３１１に格納する。構文情報１２１３は、検索単語の構文情報を示す構文ＩＤを含み、構文ＩＤは、単語情報１２１２に含まれる検索単語の単語ＩＤと対応付けられる。
【００６０】
演算部３１３は、単語情報１２１２及び構文情報１２１３を用いて、インデックス情報３２１に含まれる複数のビット列の間の論理演算を行う。そして、演算部３１３は、論理演算の結果に基づいて、検索文字列１２１１の検索結果１２１４を生成し、記憶部３１１に格納する。出力部３１４は、検索結果１２１４を出力する。検索結果１２１４は、テキストデータ５１１内における検索文字列１２１１又は検索単語の出現位置を示す情報を含む。
【００６１】
図１３は、図１２のデータ検索装置３０１が行うデータ検索処理の具体例を示すフローチャートである。まず、受付部３１２は、検索文字列１２１１を受け付け（ステップ１３０１）、抽出部１２０１は、検索文字列１２１１に対する字句解析を行って、単語情報１２１２を生成する（ステップ１３０２）。そして、解析部１２０２は、検索文字列１２１１に対する構文解析を行って、構文情報１２１３を生成する（ステップ１３０３）。
【００６２】
例えば、“Ｍｉｃｋｙ  ｅａｔｓ  ｃｈｅｅｓｅ．”という文が検索文字列１２１１としてデータ検索装置３０１に入力された場合、“Ｍｉｃｋｙ”、“ｅａｔｓ”、及び“ｃｈｅｅｓｅ”それぞれの単語ＩＤを含む単語情報１２１２が生成される。この場合、主語、述語、及び目的語それぞれの構文ＩＤを含む構文情報１２１３が生成される。そして、“Ｍｉｃｋｙ”の単語ＩＤは主語の構文ＩＤと対応付けられ、“ｅａｔｓ”の単語ＩＤは述語の構文ＩＤと対応付けられ、“ｃｈｅｅｓｅ”の単語ＩＤは目的語の構文ＩＤと対応付けられる。
【００６３】
次に、演算部３１３は、インデックス情報３２１に含まれる構文ＩＤに対応する圧縮ビット列の中から、主語に対応する２つの圧縮ビット列を抽出し、抽出した２つの圧縮ビット列を伸長して、主語に対応するビット列を復元する（ステップ１３０４）。２つの圧縮ビット列から元のビット列を復元する復元方法としては、例えば、上述した先願に記載された方法を用いることができる。
【００６４】
次に、演算部３１３は、単語情報１２１２及び構文情報１２１３を参照して、検索文字列１２１１における主語に対応する単語ＩＤを特定する（ステップ１３０５）。そして、演算部３１３は、特定した単語ＩＤに対応する２つの圧縮ビット列を伸長して、主語の単語ＩＤに対応するビット列を復元する。
【００６５】
次に、演算部３１３は、主語に対応するビット列と主語の単語ＩＤに対応するビット列とのＡＮＤ演算を行って、検索単語の出現位置を絞り込む（ステップ１３０６）。このとき、演算部３１３は、それぞれのビット列の同じアドレスに格納された２つの論理値の論理積を求め、求めた論理積を別のビット列の同じアドレスに書き込むことで、演算結果を示すビット列を生成する。
【００６６】
演算結果を示すビット列において、論理値“１”は、検索文字列１２１１における主語に対応する検索単語が、テキストデータ５１１内に存在することを示している。また、論理値“１”が格納されたアドレスは、テキストデータ５１１内におけるその検索単語の出現位置を示している。
【００６７】
図１４は、主語に対応するビット列のＡＮＤ演算の例を示している。図１４（ａ）は、図１０の圧縮ビット列１００１及び圧縮ビット列１０１１から復元された“Ｍｉｃｋｙ”のビット列の例を示しており、図１４（ｂ）は、圧縮ビット列１００５及び圧縮ビット列１０１５から復元された主語のビット列の例を示している。
【００６８】
図１４（ａ）のビット列と図１４（ｂ）のビット列とのＡＮＤ演算によって、図１４（ｃ）に示すビット列が生成される。図１４（ｃ）のビット列のアドレス“０”に格納された論理値“１”は、テキストデータ５１１内に主語の構文情報を有する“Ｍｉｃｋｙ”が含まれることを示しており、アドレス“０”は、その出現位置を示している。
【００６９】
次に、演算部３１３は、インデックス情報３２１に含まれる文ＩＤに対応する圧縮ビット列の中から、文頭に対応する２つの圧縮ビット列を抽出し、抽出した２つの圧縮ビット列を伸長して、文頭に対応するビット列を復元する（ステップ１３０７）。
【００７０】
次に、演算部３１３は、インデックス情報３２１に含まれる文ＩＤに対応する圧縮ビット列の中から、文末に対応する２つの圧縮ビット列を抽出し、抽出した２つの圧縮ビット列を伸長して、文末に対応するビット列を復元する（ステップ１３０８）。
【００７１】
次に、演算部３１３は、文頭に対応するビット列と文末に対応するビット列との四則演算を行って、ステップ１３０６で生成したビット列が示す検索単語を含む文の範囲を示すビット列を生成する（ステップ１３０９）。
【００７２】
例えば、演算部３１３は、文頭に対応するビット列において、ステップ１３０６で生成したビット列における論理値“１”に最も近い論理値“１”を特定する。また、演算部３１３は、文末に対応するビット列において、特定した論理値“１”よりも後方に格納された論理値“１”のうち、特定した論理値“１”に最も近い論理値“１”を特定する。ここで、ビット列の先頭は、least significant bit（ＬＳＢ）に対応し、ビット列の末尾は、most significant bit（ＭＳＢ）に対応する。したがって、ビット列の後方は、ＭＳＢに近づく方向を意味する。
【００７３】
そして、演算部３１３は、文頭に対応するビット列において特定した論理値“１”のアドレスから、文末に対応するビット列において特定した論理値“１”のアドレスまでの範囲を、文の範囲に決定する。
【００７４】
次に、演算部３１３は、文頭に対応するビット列及び文末に対応するビット列から、文の範囲に対応する部分ビット列をそれぞれ抽出する。ここで、文頭に対応するビット列から抽出した部分ビット列を文頭部分ビット列と呼び、文末に対応するビット列から抽出した部分ビット列を文末部分ビット列と呼ぶことにする。演算部３１３は、文末部分ビット列を１ビットだけ後方にシフトし、シフト後の文末部分ビット列から文頭部分ビット列を減算することで、文の範囲を示すビット列を生成する。
【００７５】
図１５は、文の範囲の例を示している。図１５（ａ）は、図１０の圧縮ビット列１００４及び圧縮ビット列１０１４から復元された文頭のビット列の例を示しており、図１５（ｂ）は、圧縮ビット列１００８及び圧縮ビット列１０１８から復元された文末のビット列の例を示している。
【００７６】
図１５（ａ）のビット列において、アドレス“０”に格納された論理値“１”は、図１４（ｃ）のビット列のアドレス“０”に格納された論理値“１”に最も近い論理値“１”である。したがって、図１５（ａ）のビット列からアドレス“０”が特定される。
【００７７】
次に、図１５（ｂ）のビット列において、アドレス“０”よりも後のアドレス“４”に格納された論理値“１”は、アドレス“０”に最も近い論理値“１”である。したがって、図１５（ｂ）のビット列からアドレス“４”が特定される。
【００７８】
この場合、アドレス“０”からアドレス“４”までの範囲が文の範囲に決定され、図１５（ａ）のビット列から、アドレス“０”〜アドレス“４”の範囲に対応する文頭部分ビット列“００００１”が抽出される。また、図１５（ｂ）のビット列から、同じ範囲に対応する文末部分ビット列“１００００”が抽出される。
【００７９】
次に、文末部分ビット列“１００００”を１ビットだけ後方にシフトすることで、部分ビット列“１０００００”が生成され、文頭部分ビット列“００００１”を含む同じ範囲の部分ビット列“０００００１”が生成される。次に、部分ビット列“１０００００”から部分ビット列“０００００１”を減算することで、部分ビット列“０１１１１１”が生成される。そして、アドレス“０”〜アドレス“５”の範囲に部分ビット列“０１１１１１”を格納し、他のアドレスに論理値“０”を格納することで、図１５（ｃ）に示すような、文の範囲を示すビット列が生成される。
【００８０】
このように、文頭に対応するビット列と文末に対応するビット列とを用いて論理演算を行うことで、所望の単語を含む文の範囲を迅速に特定することができる。
【００８１】
次に、演算部３１３は、構文情報１２１３に含まれる主語以外の構文ＩＤの中から１つの構文ＩＤを選択する（ステップ１３１０）。そして、演算部３１３は、インデックス情報３２１に含まれる構文ＩＤに対応する圧縮ビット列の中から、選択した構文ＩＤに対応する２つの圧縮ビット列を抽出し、抽出した２つの圧縮ビット列を伸長して、その構文ＩＤに対応するビット列を復元する（ステップ１３１１）。
【００８２】
次に、演算部３１３は、単語情報１２１２及び構文情報１２１３を参照して、検索文字列１２１１における、選択した構文ＩＤに対応する単語ＩＤを特定する（ステップ１３１２）。そして、演算部３１３は、特定した単語ＩＤに対応する２つの圧縮ビット列を伸長して、その構文ＩＤに対応付けられた単語ＩＤに対応するビット列を復元する。
【００８３】
次に、演算部３１３は、文の範囲を示すビット列と、構文ＩＤに対応するビット列と、構文ＩＤに対応付けられた単語ＩＤに対応するビット列とのＡＮＤ演算を行って、検索単語の出現位置を絞り込む（ステップ１３１３）。このとき、演算部３１３は、それぞれのビット列の同じアドレスに格納された３つの論理値の論理積を求め、求めた論理積を別のビット列の同じアドレスに書き込むことで、演算結果を示すビット列を生成する。
【００８４】
演算結果を示すビット列において、論理値“１”は、検索文字列１２１１における、構文ＩＤが示す構文情報を有する検索単語が、テキストデータ５１１内の文の範囲に存在することを示している。また、論理値“１”が格納されたアドレスは、テキストデータ５１１内におけるその検索単語の出現位置を示している。
【００８５】
次に、演算部３１３は、構文情報１２１３に含まれる主語以外のすべての構文ＩＤを選択したか否かをチェックする（ステップ１３１４）。未選択の構文ＩＤが残っている場合（ステップ１３１４，ＮＯ）、演算部３１３は、ステップ１３１０以降の処理を繰り返す。これにより、例えば、検索文字列１２１１における述語、目的語、及び補語それぞれに対応する検索単語の出現位置を示すビット列が生成される。
【００８６】
図１６は、述語に対応するビット列のＡＮＤ演算の例を示している。図１６（ａ）は、図１５（ｃ）のビット列を示している。図１６（ｂ）は、図１０の圧縮ビット列１００６及び圧縮ビット列１０１６から復元された述語のビット列の例を示しており、図１６（ｃ）は、圧縮ビット列１００２及び圧縮ビット列１０１２から復元された“ｅａｔｓ”のビット列の例を示している。
【００８７】
図１６（ａ）〜図１６（ｃ）の３つのビット列のＡＮＤ演算によって、図１６（ｄ）に示すビット列が生成される。図１６（ｄ）のビット列のアドレス“１”に格納された論理値“１”は、図１６（ａ）の文の範囲に述語の構文情報を有する“ｅａｔｓ”が含まれることを示しており、アドレス“１”は、その出現位置を示している。
【００８８】
図１７は、目的語に対応するビット列のＡＮＤ演算の例を示している。図１７（ａ）は、図１５（ｃ）のビット列を示している。図１７（ｂ）は、図１０の圧縮ビット列１００７及び圧縮ビット列１０１７から復元された目的語のビット列の例を示しており、図１７（ｃ）は、圧縮ビット列１００３及び圧縮ビット列１０１３から復元された“ｃｈｅｅｓｅ”のビット列の例を示している。
【００８９】
図１７（ａ）〜図１７（ｃ）の３つのビット列のＡＮＤ演算によって、図１７（ｄ）に示すビット列が生成される。図１７（ｄ）のビット列のアドレス“２”に格納された論理値“１”は、図１７（ａ）の文の範囲に目的語の構文情報を有する“ｃｈｅｅｓｅ”が含まれることを示しており、アドレス“２”は、その出現位置を示している。
【００９０】
このように、文の範囲を示すビット列と、構文ＩＤに対応するビット列と、単語ＩＤに対応するビット列とのＡＮＤ演算を行うことで、所望の構文情報を有する所望の単語が文の範囲に存在するか否かを迅速に判定することができる。
【００９１】
主語以外のすべての構文ＩＤを選択した場合（ステップ１３１４，ＹＥＳ）、演算部３１３は、ステップ１３０６及びステップ１３１３で生成したビット列に基づいて、検索結果１２１４を生成する（ステップ１３１５）。そして、出力部３１４は、検索結果１２１４を出力する。検索結果１２１４は、検索文字列１２１１における各構文情報に対応する検索単語の出現位置を含んでいる。
【００９２】
図１３のデータ検索処理によれば、インデックス情報３２１に含まれる複数のビット列の間の論理演算によって、検索文字列１２１１に含まれる検索単語とその構文情報とを一括して検索することができる。同じ検索単語を含む検索文字列１２１１を用いた場合でも、構文情報に応じて異なる検索結果１２１４が生成されるため、検索単語と構文情報との組み合わせに応じた柔軟な検索処理が実現される。
【００９３】
また、テキストデータ５１１と検索文字列１２１１との照合を行う必要がなく、インデックス情報３２１に対する論理演算のみで検索結果１２１４が得られるため、データ検索処理が高速化される。
【００９４】
図１及び図５のインデックス生成装置１０１の構成は一例に過ぎず、インデックス生成装置１０１の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、構文情報５１３及び文情報５１４が外部の装置で生成される場合は、図５の解析部５０２を省略することができる。
【００９５】
図３及び図１２のデータ検索装置３０１の構成は一例に過ぎず、データ検索装置３０１の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、構文情報１２１３が検索文字列１２１１とともに与えられる場合は、図１２の解析部１２０２を省略することができる。データ検索装置３０１に、図５の抽出部１１１、生成部１１２、及び解析部５０２を追加して、データ検索装置３０１内でインデックス生成処理を行ってもよい。
【００９６】
図２、図４、図１１、及び図１３のフローチャートは一例に過ぎず、インデックス生成装置１０１又はデータ検索装置３０１の構成又は条件に応じて一部の処理を省略又は変更してもよい。
【００９７】
例えば、図１１のインデックス生成処理において、構文情報５１３及び文情報５１４が外部の装置で生成される場合は、ステップ１１０２の処理を省略することができる。ステップ１１０４、ステップ１１０７、及びステップ１１１０において、生成部１１２は、生成したビット列を圧縮することなく、そのままインデックス情報３２１に格納してもよい。
【００９８】
図１３のデータ検索処理において、構文情報１２１３が検索文字列１２１１とともに与えられる場合は、ステップ１３０３の処理を省略することができる。ステップ１３０４において、演算部３１３は、主語に対応するビット列の代わりに、別の構文情報に対応するビット列を復元してもよい。また、ステップ１３０５において、演算部３１３は、主語の単語ＩＤに対応するビット列の代わりに、別の構文情報を有する単語の単語ＩＤに対応するビット列を復元してもよい。
【００９９】
インデックス情報３２１に含まれるビット列が圧縮されていない場合は、ステップ１３０４、ステップ１３０５、ステップ１３０７、ステップ１３０８、ステップ１３１１、及びステップ１３１２の処理を省略することができる。
【０１００】
図６のテキストデータ、図７及び図８のインデックス情報、図９、図１０、及び図１４〜図１７のビット列は一例に過ぎない。テキストデータ及び検索文字列は、インデックス生成装置１０１又はデータ検索装置３０１の用途に応じて変化し、インデックス情報及び演算結果は、テキストデータ及び検索文字列に応じて変化する。テキストデータ及び検索文字列の言語は、英語以外の言語であってもよい。構文情報は、主語、述語、目的語、及び補語以外の情報であってもよく、文情報は、文頭及び文末以外の情報であってもよい。
【０１０１】
図１８は、図１及び図５のインデックス生成装置１０１、又は図３及び図１２のデータ検索装置３０１として用いられる情報処理装置（コンピュータ）の構成例を示している。図１８の情報処理装置は、ＣＰＵ１８０１、メモリ１８０２、入力装置１８０３、出力装置１８０４、補助記憶装置１８０５、媒体駆動装置１８０６、及びネットワーク接続装置１８０７を備える。これらの構成要素はバス１８０８により互いに接続されている。
【０１０２】
メモリ１８０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ１８０２は、図３及び図１２の記憶部３１１、又は図５の記憶部５０１として用いることができる。
【０１０３】
情報処理装置がインデックス生成装置１０１である場合、ＣＰＵ１８０１（プロセッサ）は、例えば、メモリ１８０２を利用してプログラムを実行することにより、図１及び図５の抽出部１１１、生成部１１２、及び図５の解析部５０２として動作する。
【０１０４】
情報処理装置がデータ検索装置３０１である場合、ＣＰＵ１８０１は、例えば、メモリ１８０２を利用してプログラムを実行することにより、図３及び図１２の受付部３１２、演算部３１３、図１２の抽出部１２０１、及び解析部１２０２として動作する。
【０１０５】
入力装置１８０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示及び情報の入力に用いられる。入力される情報は、検索文字列１２１１であってもよい。
【０１０６】
出力装置１８０４は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。出力装置１８０４は、図３及び図１２の出力部３１４として用いることができる。処理結果は、検索結果１２１４であってもよい。
【０１０７】
補助記憶装置１８０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置１８０５は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置１８０５にプログラム及びデータを格納しておき、それらをメモリ１８０２にロードして使用することができる。補助記憶装置１８０５は、図３及び図１２の記憶部３１１、又は図５の記憶部５０１として用いることができる。
【０１０８】
媒体駆動装置１８０６は、可搬型記録媒体１８０９を駆動し、その記録内容にアクセスする。可搬型記録媒体１８０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体１８０９は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体１８０９にプログラム及びデータを格納しておき、それらをメモリ１８０２にロードして使用することができる。
【０１０９】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ１８０２、補助記憶装置１８０５、又は可搬型記録媒体１８０９のような、物理的な（非一時的な）記録媒体である。
【０１１０】
ネットワーク接続装置１８０７は、Local Area Network、Wide Area Network等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置１８０７を介して受け取り、それらをメモリ１８０２にロードして使用することができる。
【０１１１】
情報処理装置がインデックス生成装置１０１である場合、ネットワーク接続装置１８０７は、インデックス情報３２１をデータ検索装置３０１へ送信することができる。
【０１１２】
情報処理装置がデータ検索装置３０１である場合、ネットワーク接続装置１８０７は、ユーザ端末から検索文字列１２１１を受信し、検索結果１２１４をユーザ端末へ送信することができる。この場合、ネットワーク接続装置１８０７は、出力部３１４として用いられる。
【０１１３】
なお、情報処理装置が図１８のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、情報処理装置がユーザ端末から通信ネットワーク経由で検索文字列１２１１を受信する場合は、入力装置１８０３及び出力装置１８０４を省略してもよい。また、可搬型記録媒体１８０９又は通信ネットワークを利用しない場合は、媒体駆動装置１８０６又はネットワーク接続装置１８０７を省略してもよい。
【０１１４】
情報処理装置がスマートフォンのような通話機能を有する携帯端末である場合、マイク及びスピーカのような通話用の装置を含んでいてもよく、カメラのような撮像装置を含んでいてもよい。
【０１１５】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１１６】
図１乃至図１８を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数の文を含むテキストデータから複数の単語を抽出し、
前記複数の単語それぞれより、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、インデックス情報を生成する、
処理をコンピュータに実行させるためのインデックス生成プログラム。
（付記２）
前記文情報は、前記単語を含む文の文頭又は文末を示す情報であり、前記第３論理値は、前記テキストデータ内における前記文頭又は前記文末の位置を示す位置情報に対応付けられることを特徴とする付記１記載のインデックス生成プログラム。
（付記３）
前記コンピュータは、前記テキストデータに対する構文解析を行って、前記単語の構文情報を生成することを特徴とする付記１又は２記載のインデックス生成プログラム。
（付記４）
前記単語の構文情報は、主語、述語、目的語、又は補語を示すことを特徴とする付記１乃至３のいずれか１項に記載のインデックス生成プログラム。
（付記５）
複数の文を含むテキストデータに対する検索文字列を受け付け、
前記テキストデータに含まれる複数の単語それぞれより生成されたインデックス情報であって、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、前記インデックス情報を参照し、
前記インデックス情報において、前記検索文字列に含まれる検索単語に対応付けられた第４論理値と、前記検索単語の構文情報に対応付けられた第５論理値と、前記検索単語を含む文に対応付けられた第６論理値とを用いて、論理演算を行い、
前記論理演算の結果に基づく前記検索文字列の検索結果を出力する、
処理をコンピュータに実行させるためのデータ検索プログラム。
（付記６）
前記文情報は、前記単語を含む文の文頭又は文末を示す情報であり、前記第３論理値は、前記テキストデータ内における前記文頭又は前記文末の位置を示す位置情報に対応付けられることを特徴とする付記５記載のデータ検索プログラム。
（付記７）
前記コンピュータは、前記検索文字列に対する構文解析を行って、前記検索単語の構文情報を生成することを特徴とする付記５又は６記載のデータ検索プログラム。
（付記８）
前記インデックス情報における前記単語の構文情報は、主語、述語、目的語、又は補語を示し、前記検索単語の構文情報は、主語、述語、目的語、又は補語を示すことを特徴とする付記５乃至７のいずれか１項に記載のデータ検索プログラム。
（付記９）
複数の文を含むテキストデータから複数の単語を抽出する抽出部と、
前記複数の単語それぞれより、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、インデックス情報を生成する生成部と、
備えることを特徴とするインデックス生成装置。
（付記１０）
前記文情報は、前記単語を含む文の文頭又は文末を示す情報であり、前記第３論理値は、前記テキストデータ内における前記文頭又は前記文末の位置を示す位置情報に対応付けられることを特徴とする付記９記載のインデックス生成装置。
（付記１１）
複数の文を含むテキストデータに含まれる複数の単語それぞれより生成されたインデックス情報であって、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、前記インデックス情報を記憶する記憶部と、
前記テキストデータに対する検索文字列を受け付ける受付部と、
前記インデックス情報において、前記検索文字列に含まれる検索単語に対応付けられた第４論理値と、前記検索単語の構文情報に対応付けられた第５論理値と、前記検索単語を含む文に対応付けられた第６論理値とを用いて、論理演算を行う演算部と、
前記論理演算の結果に基づく前記検索文字列の検索結果を出力する出力部と、
備えることを特徴とするデータ検索装置。
（付記１２）
前記文情報は、前記単語を含む文の文頭又は文末を示す情報であり、前記第３論理値は、前記テキストデータ内における前記文頭又は前記文末の位置を示す位置情報に対応付けられることを特徴とする付記５記載のデータ検索装置。
（付記１３）
コンピュータが、
複数の文を含むテキストデータから複数の単語を抽出し、
前記複数の単語それぞれより、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、インデックス情報を生成する、
ことを特徴とするインデックス生成方法。
（付記１４）
コンピュータが、
複数の文を含むテキストデータに対する検索文字列を受け付け、
前記テキストデータに含まれる複数の単語それぞれより生成されたインデックス情報であって、単語を示す単語情報と前記テキストデータ内における前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第１論理値と、前記単語の構文情報と前記単語の位置を示す位置情報とに対応付けられた、前記単語の存在を示す第２論理値と、前記複数の文のうち前記単語を含む文を示す文情報と前記テキストデータ内における前記単語を含む文の位置を示す位置情報とに対応付けられた、前記単語を含む文の存在を示す第３論理値とを有する、前記インデックス情報を参照し、
前記インデックス情報において、前記検索文字列に含まれる検索単語に対応付けられた第４論理値と、前記検索単語の構文情報に対応付けられた第５論理値と、前記検索単語を含む文に対応付けられた第６論理値とを用いて、論理演算を行い、
前記論理演算の結果に基づく前記検索文字列の検索結果を出力する、
ことを特徴とするデータ検索方法。
【符号の説明】
【０１１７】
１０１  インデックス生成装置
１１１、１２０１  抽出部
１１２  生成部
３０１  データ検索装置
３１１、５０１  記憶部
３１２  受付部
３１３  演算部
３１４  出力部
３２１  インデックス情報
５０２、１２０２  解析部
５１１  テキストデータ
５１２、１２１２  単語情報
５１３、１２１３  構文情報
５１４  文情報
７０１、７０２、８０１、９０１  ビット列
９０２、９０３、１００１〜１００８、１０１１〜１０１８  圧縮ビット列
１２１１  検索文字列
１２１４  検索結果
１８０１  ＣＰＵ
１８０２  メモリ
１８０３  入力装置
１８０４  出力装置
１８０５  補助記憶装置
１８０６  媒体駆動装置
１８０７  ネットワーク接続装置
１８０８  バス
１８０９  可搬型記録媒体
【図１】
2018180890.tif 000003
【図２】
2018180890.tif 000004
【図３】
2018180890.tif 000005
【図４】
2018180890.tif 000006
【図５】
2018180890.tif 000007
【図６】
2018180890.tif 000008
【図７】
2018180890.tif 000009
【図８】
2018180890.tif 000010
【図９】
2018180890.tif 000011
【図１０】
2018180890.tif 000012
【図１１】
2018180890.tif 000013
【図１２】
2018180890.tif 000014
【図１３】
2018180890.tif 000015
【図１４】
2018180890.tif 000016
【図１５】
2018180890.tif 000017
【図１６】
2018180890.tif 000018
【図１７】
2018180890.tif 000019
【図１８】
2018180890.tif 000020