(57)【特許請求の範囲】
【請求項１】
検索要求から意味構造を表す複数の検索意味記号を生成し、
検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、前記複数の単語の前記検索対象文書内における位置との対応関係を表す文書内意味構造情報を参照して、前記複数の検索意味記号から、前記検索要求に対応する単語の前記検索対象文書内における位置を特定し、
前記検索対象文書と、前記検索要求に対応する単語と、前記検索要求に対応する単語の前記検索対象文書内における位置とを示す検索結果を出力する、
処理をコンピュータに実行させる意味構造検索プログラム。
【請求項２】
前記文書内意味構造情報は、前記検索対象文書に対して生成された、前記複数の意味記号を表す符号情報と、前記複数の単語の前記検索対象文書内における位置との対応関係を表し、
前記コンピュータは、単語と意味記号との対応関係を表す意味記号情報と、単語と符号情報との対応関係を表すマッピング情報とを参照して、前記複数の検索意味記号から、前記検索対象文書を検索するための検索符号情報を生成し、前記文書内意味構造情報から前記検索符号情報と一致する符号情報に対応する位置を求め、求めた位置を前記検索要求に対応する単語の前記検索対象文書内における位置として特定することを特徴とする請求項１記載の意味構造検索プログラム。
【請求項３】
前記コンピュータは、前記意味記号情報を参照して、前記複数の検索意味記号に対応する複数の検索単語を特定し、複数の文書それぞれにおける複数の単語それぞれの存否を示すビットマップ情報を参照して、前記複数の検索単語を含む文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする請求項２記載の意味構造検索プログラム。
【請求項４】
前記意味記号情報は、単語に付与された属性情報を含み、
前記ビットマップ情報は、前記複数の文書それぞれにおける前記複数の単語と属性情報と意味記号との組み合わせ毎に、前記複数の単語それぞれの存否を示し、
前記コンピュータは、前記意味記号情報を参照して、前記複数の検索意味記号に対応する前記複数の検索単語と前記複数の検索単語の属性情報と前記複数の検索単語の意味記号との組み合わせを特定し、前記ビットマップ情報を参照して、特定した組み合わせに対応する文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする請求項３記載の意味構造検索プログラム。
【請求項５】
検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、前記複数の単語の前記検索対象文書内における位置との対応関係を表す文書内意味構造情報を記憶する記憶部と、
検索要求から意味構造を表す複数の検索意味記号を生成し、前記文書内意味構造情報を参照して、前記複数の検索意味記号から、前記検索要求に対応する単語の前記検索対象文書内における位置を特定する検索部と、
前記検索対象文書と、前記検索要求に対応する単語と、前記検索要求に対応する単語の前記検索対象文書内における位置とを示す検索結果を出力する出力部と、
を備えることを特徴とする意味構造検索装置。
【請求項６】
コンピュータが、
検索要求から意味構造を表す複数の検索意味記号を生成し、
検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、前記複数の単語の前記検索対象文書内における位置との対応関係を表す文書内意味構造情報を参照して、前記複数の検索意味記号から、前記検索要求に対応する単語の前記検索対象文書内における位置を特定し、
前記検索対象文書と、前記検索要求に対応する単語と、前記検索要求に対応する単語の前記検索対象文書内における位置とを示す検索結果を出力する、
ことを特徴とする意味構造検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法に関する。
【背景技術】
【０００２】
近年、テキストデータの量が爆発的に増大しており、テキスト検索の重要性が増している。特に、秘書機能アプリケーションソフトウェア等のための意味処理の研究が盛んになってきており、自然文の意味構造の検索がますます重要になってきている。
【０００３】
テキスト検索で用いられる自然文の解析には、字句解析、形態素解析、意味解析等が利用されている。字句解析は、文字列を単語に分割する処理であり、形態素解析は、文字列を形態素に分割し、各形態素に対して品詞、属性等の情報を付与する処理である。形態素解析により得られる形態素は、単語として扱われることもある。
【０００４】
意味解析は、自然文の形態素解析結果を用いて、その自然文の意味構造を求める処理である。意味解析結果である意味構造を用いることで、自然文が何を意味するかを、コンピュータが扱うデータとして表現することができる。
【０００５】
意味構造は、形態素解析結果に含まれる複数の単語の意味をそれぞれ表す複数の意味記号と、２つの意味記号の間の関係を表す情報とを含む。１つの意味記号が複数の単語に対応する場合もある。意味構造は、例えば、複数の意味記号を表す複数のノードと、２つのノード間の関係を表すアークとからなる有向グラフにより表すことができる。意味構造の最小の部分構造は、意味最小単位と呼ばれ、２つのノードとそれらのノードの間のアークとからなる。
【０００６】
複数の文書に含まれるテキストデータに対して形態素解析及び意味解析を行うことで、自然文の検索要求の意味構造を用いて複数の文書を検索する意味構造検索を実現することができる。
【０００７】
しかし、テキストデータの意味解析結果である意味構造は、元のテキストデータの数十倍のデータ量になる。さらに、意味構造検索は複雑な処理であるため、意味構造検索のために意味解析結果のデータが圧縮されることがある。
【０００８】
自然文の意味構造検索における検索キーとして意味最小単位を用いる情報検索装置も知られている（例えば、特許文献１を参照）。この情報検索装置は、自然言語文の検索クエリーを受け付け、その自然言語文を意味解析し、意味解析結果から、検索キーとなる意味最小単位を特定する。そして、情報検索装置は、予め検索対象文に含まれる意味最小単位が格納されている検索用インデックスから、検索キーと一致する意味最小単位を含む検索対象文を検索する。
【０００９】
文の意味合いを重視した検索結果を用いて、分かりやすい表示を効率よく実現するための情報検索装置も知られている（例えば、特許文献２を参照）。この情報検索装置は、マッチプロファイル情報に基づき、関連付けられているマッチング条件に応じた、検索キー文とマッチ辞書情報との照合を行い、照合の結果として、マッチング条件を満たす単語が、マッチ辞書情報の文中に出現する位置を表す位置情報を得る。そして、情報検索装置は、得られた照合の結果に基づき、マッチング条件を満たす単語を含む文と位置情報とが関連付けられている検索結果情報を、端末装置に送信する。
【００１０】
文字コードの圧縮効率の向上と圧縮処理や伸長処理の高速化を図ることができる情報処理プログラムも知られている（例えば、特許文献３を参照）。文字情報等の総種類数に最適な符号長を割り当てる２Ｎ分枝無節点ハフマン木を構築することができる生成プログラムも知られている（例えば、特許文献４を参照）。基礎単語や文字の存否を示すインデックス情報の生成の高速化及びインデックス情報のサイズの最適化を図ることができる情報生成プログラムも知られている（例えば、特許文献５を参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１３−１８６７６６号公報
【特許文献２】特開２０１０−２６７２４７号公報
【特許文献３】特開２０１０−９３４１４号公報
【特許文献４】国際公開第２０１２／１１１０７８号パンフレット
【特許文献５】国際公開第２０１１／１４８５１１号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述した従来の意味構造検索には、以下のような問題がある。
文書に対する形態素解析結果と意味解析結果とは関連付けられていないため、意味構造検索により意味最小単位が検索されても、意味最小単位に含まれる意味記号と原文に含まれる単語との対応関係は不明である。このため、意味解析の際に生成された、意味記号と原文に含まれる単語との対応関係を示す情報に基づいて、検索された意味記号に対応する単語が求められ、その単語の位置に対応するテキストが参照される。この場合、意味構造検索に加えて、意味記号に対応する単語を求める処理を行うため、処理時間が増大する。
【００１３】
一方、意味構造検索の前処理として、形態素解析結果と原文との対応関係と、意味構造解析結果と形態素解析結果との対応関係の双方を含む情報を生成する場合、生成される情報が膨大なサイズとなり、却って処理時間が増えることになる。したがって、意味構造検索において、意味構造と原文とを効率よく対応付けることが望ましい。
【００１４】
特許文献２には、単語によって構成された文節からなる文について、その文節を部分木ノードとして木構造に構成することも開示されているが、木構造の情報を検索する場合、処理時間が長くなる。
【００１５】
なお、かかる問題は、意味構造から意味最小単位を検索する場合に限らず、意味構造から３つ以上の意味記号を含む部分構造を検索する場合においても生ずるものである。
【００１６】
１つの側面において、本発明は、意味構造検索において、検索要求に対応する単語とその単語の文書内における位置とを特定することを目的とする。
【課題を解決するための手段】
【００１７】
１つの案では、意味構造検索プログラムは、以下の処理をコンピュータに実行させる。
（１）コンピュータは、検索要求から意味構造を表す複数の検索意味記号を生成する。
（２）コンピュータは、検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、複数の単語の検索対象文書内における位置との対応関係を表す文書内意味構造情報を参照する。そして、コンピュータは、複数の検索意味記号から、検索要求に対応する単語の検索対象文書内における位置を特定する。
（３）コンピュータは、検索対象文書と、検索要求に対応する単語と、検索要求に対応する単語の検索対象文書内における位置とを示す検索結果を出力する。
【発明の効果】
【００１８】
１つの実施形態によれば、意味構造検索において、検索要求に対応する単語とその単語の文書内における位置とを特定することができる。
【図面の簡単な説明】
【００１９】
【図１】意味構造検索装置の機能的構成図である。
【図２】意味構造検索処理のフローチャートである。
【図３】意味構造検索装置の具体例を示す機能的構成図である。
【図４】圧縮処理のフローチャートである。
【図５】文書の解析結果を示す図である。
【図６】意味記号情報の第１の例を示す図である。
【図７】意味記号情報の第２の例を示す図である。
【図８】マッピング情報の役割を示す図である。
【図９】マッピング情報を示す図である。
【図１０】ビットマップ情報を示す図である。
【図１１】単位符号を示す図である。
【図１２】符号化処理のフローチャートである。
【図１３】文書内意味構造情報を示す図である。
【図１４】意味構造検索処理の具体例を示すフローチャートである。
【図１５】ビットマップ情報の２つの行の論理積を示す図である。
【図１６】２つの行の論理積により得られる文書ＩＤを示す図である。
【図１７】スコア計算を行う意味構造検索処理のフローチャートである。
【図１８】検索式のスコアの第１の例を示す図である。
【図１９】検索式のスコアの第２の例を示す図である。
【図２０】情報処理装置の構成図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、実施形態の意味構造検索装置の機能的構成例を示している。意味構造検索装置１０１は、記憶部１１１、検索部１１２、及び出力部１１３を含む。記憶部１１１は、検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、複数の単語の検索対象文書内における位置との対応関係を表す文書内意味構造情報１２１を記憶する。検索部１１２は、文書内意味構造情報１２１を参照して、検索要求に基づく意味構造検索処理を行い、出力部１１３は、検索結果を出力する。
【００２１】
図２は、図１の意味構造検索装置１０１が行う意味構造検索処理の例を示すフローチャートである。まず、検索部１１２は、検索要求から意味構造を表す複数の検索意味記号を生成する（ステップ２０１）。次に、検索部１１２は、文書内意味構造情報１２１を参照して、複数の検索意味記号から、検索要求に対応する単語の検索対象文書内における位置を特定する（ステップ２０２）。そして、出力部１１３は、検索対象文書と、検索要求に対応する単語と、検索要求に対応する単語の検索対象文書内における位置とを示す検索結果を出力する（ステップ２０３）。
【００２２】
図１の意味構造検索装置１０１によれば、意味構造検索において、検索要求に対応する単語とその単語の文書内における位置とを特定することができる。
【００２３】
図３は、図１の意味構造検索装置１０１の具体例を示している。図３の意味構造検索装置１０１は、記憶部１１１、検索部１１２、出力部１１３、解析部３０１、生成部３０２、生成部３０３、生成部３０４、及び符号化部３０５を含む。
【００２４】
解析部３０１は、記憶部１１１が記憶する複数の文書３１１の各々に対して、形態素解析及び意味解析を行い、形態素解析結果及び意味解析結果を含む解析結果３１２を生成して、記憶部１１１に格納する。生成部３０２は、解析結果３１２から、単語と意味記号との対応関係を表す意味記号情報３１３を生成して、記憶部１１１に格納する。
【００２５】
生成部３０３は、解析結果３１２及び意味記号情報３１３から、単語と符号情報との対応関係を表すマッピング情報３１４を生成し、記憶部１１１に格納する。生成部３０４は、解析結果３１２及び意味記号情報３１３から、各文書３１１における複数の単語それぞれの存否を示すビットマップ情報３１５を生成し、記憶部１１１に格納する。符号化部３０５は、解析結果３１２、意味記号情報３１３、及びマッピング情報３１４を用いて各文書３１１を符号化することで、各文書３１１に対する文書内意味構造情報１２１を生成し、記憶部１１１に格納する。
【００２６】
検索部１１２は、文書内意味構造情報１２１、解析結果３１２、意味記号情報３１３、マッピング情報３１４、及びビットマップ情報３１５を参照して、検索要求に基づく意味構造検索処理を行う。
【００２７】
まず、図４から図１３までを参照しながら、文書３１１のデータを圧縮する圧縮処理について説明する。
【００２８】
図４は、図３の意味構造検索装置１０１が行う圧縮処理の例を示すフローチャートである。まず、解析部３０１は、文書３１１に対して形態素解析を行って形態素解析結果を生成し（ステップ４０１）、文書３１１に対して意味解析を行って意味解析結果を生成する（ステップ４０２）。そして、解析部３０１は、形態素解析結果及び意味解析結果を含む解析結果３１２を記憶部１１１に格納する。ステップ４０１及びステップ４０２の処理は、文書３１１毎に行われる。
【００２９】
次に、生成部３０２は、解析結果３１２から意味記号情報３１３を生成して、記憶部１１１に格納する（ステップ４０３）。
【００３０】
次に、生成部３０３は、解析結果３１２及び意味記号情報３１３から文書３１１に対するマッピング情報３１４を生成し、記憶部１１１に格納する（ステップ４０４）。次に、生成部３０４は、解析結果３１２及び意味記号情報３１３から文書３１１に対するビットマップ情報３１５を生成し、記憶部１１１に格納する（ステップ４０５）。そして、符号化部３０５は、解析結果３１２、意味記号情報３１３、及びマッピング情報３１４を用いて文書３１１を符号化することで文書内意味構造情報１２１を生成し、記憶部１１１に格納する（ステップ４０６）。ステップ４０４〜ステップ４０６の処理は、文書３１１毎に行われる。
【００３１】
図５は、図４のステップ４０１及びステップ４０２において生成される、文書３１１の解析結果３１２に対応するテキストファイルの例を示している。図５のテキストファイル５０１は、文書３１１に含まれる各文の解析結果５０２を含み、各文の解析結果５０２は、形態素解析結果５１１及び意味解析結果５１２を含む。
【００３２】
形態素解析結果５１１は、文に含まれる単語５２１、文書ＩＤ５２２、文ＩＤ５２３、文中における単語の位置５２４、単語のデータ長５２５、単語に対応する意味記号５２６、及び属性情報５２７を含む。属性情報５２７は、例えば、単語の品詞、単語が自立語であるか否か等を示す情報を含む。形態素解析により得られる１つの形態素が１つの単語として扱われることもあり、複数の形態素からなる複合語が１つの単語として扱われることもある。
【００３３】
例えば、“業務”の文書ＩＤ５２２は“７５０２”であり、文ＩＤ５２３は“４”である。“業務”の位置５２４は、文頭から“６”バイトの位置を表し、データ長５２５は、“４”バイトを表す。“業務”の意味記号５２６は“ＢＵＳＩＮＥＳＳ＆＃０６１；ＧＹＯＵＭＵ”であり、属性情報５２７は“：Ｎ：ＩＷ）”である。属性情報５２７の“Ｎ”は名詞を表し、“ＩＷ”は自立語を表す。
【００３４】
意味解析結果５１２は、文に含まれる意味最小単位５３１、文書ＩＤ５３２、文ＩＤ５３３、意味最小単位に対応する句５３４、文中における句の開始位置５３５、及び句の終了位置５３６を含む。意味最小単位５３１は、起点ノード、終点ノード、及び起点ノードから終点ノードへ向かうアークを含む。意味解析結果５１２は、さらに、起点ノードに対応する単語の開始位置５３７、起点ノードに対応する単語の終了位置５３８、終点ノードに対応する単語の開始位置５３９、及び終点ノードに対応する単語の終了位置５４０を含む。
【００３５】
例えば、意味最小単位“ＩＮＴＥＲＮＥＴ＝７−−＜ＣＯＮＣＥＲＮ＞−−＞ＥＮＴＲＥＰＲＥＮＥＵＲ”の起点ノードは“ＩＮＴＥＲＮＥＴ＝７”であり、終点ノードは“ＥＮＴＲＥＰＲＥＮＥＵＲ”であり、アークは“−−＜ＣＯＮＣＥＲＮ＞−−＞”である。
【００３６】
この意味最小単位の文書ＩＤ５３２は“７５０２”であり、文ＩＤ５３３は“４”であり、対応する句５３４は“事業者のデータセンタとインターネット”である。“事業者のデータセンタとインターネット”の開始位置５３５は、文頭から“４２”バイトの位置を表し、終了位置５３６は、文頭から“７８”バイトの位置を表す。
【００３７】
起点ノードに対応する単語“インターネット”の開始位置５３７は、文頭から“６４”バイトの位置を表し、終了位置５３８は、文頭から“７８”バイトの位置を表す。終点ノードに対応する単語“事業者”の開始位置５３９は、文頭から“４２”バイトの位置を表し、終了位置５４０は、文頭から“４８”バイトの位置を表す。
【００３８】
図６は、図４のステップ４０３において生成される意味記号情報３１３に対応する単語符号辞書の第１の例を示している。図６の単語符号辞書は、辞書ＩＤとエントリの対応関係を表す。エントリは、単語、属性情報、及び意味記号を含み、辞書ＩＤは、エントリに対して付与される単語符号を表す。このような単語符号辞書を参照することで、エントリが示す単語を、辞書ＩＤが示す単語符号に置き換えて、文書３１１を圧縮することができる。
【００３９】
例えば、辞書ＩＤ“５０２３”に対応するエントリ“翻訳＋名詞＋抽象物＋ＴＲＡＮＳＬＡＴＩＯＮ”において、“翻訳”は単語であり、“名詞”及び“抽象物”は属性情報であり、“ＴＲＡＮＳＬＡＴＩＯＮ”は意味記号である。“名詞”は品詞を表し、“抽象物”は単語のカテゴリを表す。図６の単語符号辞書は、単語と意味記号との対応関係も表している。
【００４０】
単語符号辞書のエントリとして、単語、属性情報、及び意味記号の組み合わせを用いることで、意味が異なる複数の同じ単語を区別することが可能になる。
【００４１】
図７は、意味記号情報３１３に対応する単語符号辞書の第２の例を示している。図７の単語符号辞書は、図６のエントリから意味記号を除外した構成を有する。この場合、意味記号情報３１３として、単語符号辞書とともに、単語及び属性情報の組み合わせと、意味記号との対応関係を表す単語辞書が用いられる。図７の単語符号辞書と単語辞書とを参照することで、辞書ＩＤと意味記号との対応関係が一意に決定できる。
【００４２】
図８は、図４のステップ４０４において生成されるマッピング情報３１４の役割を示している。マッピング情報３１４は、各文書３１１に含まれる各単語に対応する意味記号を表す符号情報（文書内意味記号ＩＤ）と、単語符号辞書の辞書ＩＤとの対応関係を表す。
【００４３】
例えば、文書ＩＤ“０”の文書内意味記号ＩＤ“０”は、辞書ＩＤ“５０２３”に対応付けられ、文書内意味記号ＩＤ“１”は、辞書ＩＤ“７０２５”に対応付けられる。文書内意味記号ＩＤ“２”は、辞書ＩＤ“８６５３”に対応付けられる。
【００４４】
また、文書ＩＤ“１”の文書内意味記号ＩＤ“０”は、辞書ＩＤ“７０２５”に対応付けられ、文書内意味記号ＩＤ“１”は、辞書ＩＤ“８６５３”に対応付けられる。
【００４５】
単語符号辞書のエントリの数が膨大である場合でも、１つの文書に含まれる単語に対応する意味記号の総数は限られているため、文書内意味記号ＩＤは、辞書ＩＤよりも短いデータ長で表すことができる。そこで、マッピング情報３１４を用いて、辞書ＩＤを文書内意味記号ＩＤに置き換えることで、単語符号化による圧縮率を高めることができる。例えば、文書内意味記号ＩＤとして０以上の整数を用いた場合、その最大値を数百〜数千に抑えることが可能である。
【００４６】
次に、マッピング情報３１４を生成する処理の例を説明する。生成部３０３は、各文書３１１の解析結果３１２を順に読み込んでいき、各意味記号に対して文書内意味記号ＩＤを付与して、文書内意味記号ＩＤと辞書ＩＤとを対応付けることで、マッピング情報３１４を生成する。
【００４７】
まず、生成部３０３は、マッピング情報３１４のためのメモリ空間を割り当てる。例えば、Ｃ言語の場合、生成部３０３は、演算子ｎｅｗにより、以下の配列を確保する。
ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｍａｐｐｉｎｇ＿ｄｉｃ［文書数］［ＭＡＸ＿ＤＯＣＷＯＲＤ］
＃ｄｅｆｉｎｅ  ＭＡＸ＿ＤＯＣＷＯＲＤ  １０２４
【００４８】
ＭＡＸ＿ＤＯＣＷＯＲＤは、１つの文書３１１に含まれる意味記号の総数の最大値を表し、ｍａｐｐｉｎｇ＿ｄｉｃ［ｉ］［ｊ］は、文書ＩＤ“ｉ”の文書３１１に出現する文書内意味記号ＩＤ“ｊ”の意味記号に対応する辞書ＩＤを表す。
【００４９】
次に、生成部３０３は、演算子ｎｅｗにより、以下の配列を確保する。
ｉｎｔ  ｍａｐｐｉｎｇ＿ｄｉｃ＿ｉｎｄｅｘ［文書数］
【００５０】
ｍａｐｐｉｎｇ＿ｄｉｃ＿ｉｎｄｅｘ［ｉ］は、文書ＩＤ“ｉ”の文書３１１に出現する意味記号の総数を表す。
【００５１】
次に、生成部３０３は、１つの文書３１１の解析結果３１２を読み込み、その文書３１１の意味記号リストを生成し、辞書ＩＤの順序に従って、その文書３１１における文書内意味記号ＩＤを割り当てる。
【００５２】
例えば、文書ＩＤ“０”の文書３１１に出現する意味記号が“ＷＯＲＫ”、“ＴＲＡＮＳＬＡＴＯＲ”、及び“ＴＲＡＮＳＬＡＴＩＯＮ”の３個である場合、図８の単語符号辞書から、対応する辞書ＩＤはそれぞれ“７０２５”、“８６５３”、及び“５０２３”となる。これらの辞書ＩＤを昇順にソートすると、“５０２３”、“７０２５”、及び“８６５３”となる。したがって、各意味記号には、次のような文書内意味記号ＩＤが割り当てられる。
ｍａｐｐｉｎｇ＿ｄｉｃ［０］［０］＝５０２３；
ｍａｐｐｉｎｇ＿ｄｉｃ［０］［１］＝７０２５；
ｍａｐｐｉｎｇ＿ｄｉｃ［０］［２］＝８６５３；
【００５３】
また、文書ＩＤ“０”の文書３１１に出現する意味記号の総数は“３”であるため、ｍａｐｐｉｎｇ＿ｄｉｃ＿ｉｎｄｅｘ［０］＝３となる。
【００５４】
すべての文書３１１について、ｍａｐｐｉｎｇ＿ｄｉｃ［ｉ］［ｊ］及びｍａｐｐｉｎｇ＿ｄｉｃ＿ｉｎｄｅｘ［ｉ］の生成が終了すると、生成部３０３は、生成した２つの配列を、マッピング情報３１４に対応する次の２つのファイルに出力する。
【００５５】
（１）ファイルｍａｐ．ｄｉｃ
ｍａｐｐｉｎｇ＿ｄｉｃ［ｉ］［ｊ］の内容が、下記のようにしてファイルｍａｐ．ｄｉｃに出力される。
ｆｏｒ（ｉ＝０；ｉ＜文書数；ｉ＋＋）｛
ｆｗｒｉｔｅ（＆ｍａｐｐｉｎｇ＿ｄｉｃ［ｉ］，ｍａｐｐｉｎｇ＿ｄｉｃ＿ｉｎｄｅｘ［ｉ］，ｓｉｚｅｏｆ（ｕｎｓｉｇｎｅｄ  ｉｎｔ），ｆｐ＿ｍａｐ＿ｄｉｃ）；
｝
【００５６】
（２）ファイルｍａｐ．ｉｄｘ
ｍａｐｐｉｎｇ＿ｄｉｃ＿ｉｎｄｅｘ［ｉ］の内容が、下記のようにしてファイルｍａｐ．ｉｄｘに出力される。
ｉｎｔ  ｌｏｃ＝０；
ｆｏｒ（ｉ＝０；ｉ＜文書数；ｉ＋＋）｛
ｌｏｃ＋＝ｍａｐｐｉｎｇ＿ｄｉｃ＿ｉｎｄｅｘ［ｉ］；
ｆｗｒｉｔｅ（＆ｌｏｃ，１，ｓｉｚｅｏｆ（ｉｎｔ），ｆｐ＿ｍａｐ＿ｉｄｘ）；
｝
【００５７】
図９は、このようにして生成されたマッピング情報３１４の例を示している。ファイルｍａｐ．ｉｄｘのオフセットは、文書ＩＤを表し、内容は、ファイルｍａｐ．ｄｉｃのオフセットを表す。ファイルｍａｐ．ｄｉｃのオフセットは、各意味記号の文書内意味記号ＩＤに対応する位置を表し、内容は、辞書ＩＤを表す。
【００５８】
例えば、文書ＩＤ“ｎ”及び文書内意味記号ＩＤ“ｘ”が与えられた場合、ｍａｐ．ｉｄｘのオフセット“ｎ”の位置を参照して内容“ｍ”を取得することで、文書ＩＤ“ｎ”に対応するｍａｐ．ｄｉｃのオフセット“ｍ”を求めることができる。そして、ｍａｐ．ｄｉｃのオフセット“ｍ＋ｘ”の位置を参照して内容を取得することで、文書内意味記号ＩＤ“ｘ”に対応する辞書ＩＤを求めることができる。
【００５９】
また、文書ＩＤ“１”及び文書内意味記号ＩＤ“１”が与えられた場合、ｍａｐ．ｉｄｘのオフセット“１”の位置を参照して内容“３”を取得することで、文書ＩＤ“１”に対応するｍａｐ．ｄｉｃのオフセット“３”を求めることができる。そして、ｍａｐ．ｄｉｃのオフセット“３＋１＝４”の位置を参照して内容を取得することで、文書内意味記号ＩＤ“１”に対応する辞書ＩＤ“８６５３”を求めることができる。
【００６０】
図１０は、図４のステップ４０５において生成されるビットマップ情報３１５の例を示している。図１０のビットマップ情報３１５は、文書ＩＤが示す文書における、単語符号辞書に登録された単語の存否を示している。論理“１”は、単語が存在することを表し、論理“０”は、単語が存在しないことを表す。
【００６１】
例えば、辞書ＩＤ“１０８８”に対応する単語は、文書ＩＤ“０”の文書３１１には含まれておらず、文書ＩＤ“１”の文書３１１には含まれている。このようなビットマップ情報３１５を用いることで、多数の文書３１１の中から特定の単語を含む文書３１１を高速に絞り込むことができる。
【００６２】
次に、図４のステップ４０６における符号化処理の例を説明する。符号化部３０５は、文書内意味記号ＩＤを用いて文書３１１の意味構造を符号化することで、文書内意味構造情報１２１を生成する。
【００６３】
文書３１１の意味構造は、意味最小単位により表され、意味最小単位は、次の３つのパターンに分類できる。
パターン１：（ノード１，ノード２，アーク）
パターン２：（ノード１，ＮＩＬ，アーク）
パターン３：（ＮＩＬ，ノード１，アーク）
【００６４】
パターン１のノード１及びノード２は、それぞれ、起点ノード及び終点ノードを表し、パターン２のＮＩＬは、終点ノードが存在しないことを表し、パターン３のＮＩＬは、起点ノードが存在しないことを表す。
【００６５】
パターン種別は、２ビットの符号で表すことができる。また、１つの文書３１１に含まれる単語の種類の総数が３２７６８以下である場合、ノード１及びノード２を１５ビット以下の符号で表すことができる。ただし、１つの文に同じ単語が複数個出現することもあるため、それらを区別するために、複数の同じ単語の中で文頭から何番目に相当するかを示す４ビットの符号を追加することが望ましい。また、意味最小単位で用いられるアークの種類の総数が２５６以下である場合、アークを１バイト（８ビット）以下の符号で表すことができる。
【００６６】
図１１（ａ）は、パターン１の意味最小単位を表す単位符号の例を示しており、図１１（ｂ）は、パターン２及びパターン３の意味最小単位を表す単位符号の例を示している。
【００６７】
図１１（ａ）の単位符号において、第１バイトの先頭２ビットは、パターン種別を表し、第１バイトの次の３ビットと第２バイトの先頭１ビットは、ノード１の順位（複数の同じ単語の中で文頭から何番目に相当するか）を表す。第１バイトの最後の３ビットと第４バイトの先頭１ビットは、ノード２の順位を表す。第２バイトの残りの７ビットと第３バイトは、ノード１の文書内意味記号ＩＤを表し、第４バイトの残りの７ビットと第５バイトは、ノード２の文書内意味記号ＩＤを表し、第６バイトは、アーク種別を表す。なお、ノードの順位が３ビットで収まり、第２バイトの先頭１ビット及び第４バイトの先頭１ビットが符号を表すために必要でない場合は、これらのビットを使用しなくてもよい。後述の実施形態においては、説明を簡単にするために第２バイトの先頭１ビット及び第４バイトの先頭１ビットを使用しない場合について説明している。
【００６８】
図１１（ｂ）の単位符号において、第１バイトの先頭２ビットは、パターン種別を表し、第１バイトの次の６ビットは、ノード１の順位を表し、第２バイトと第３バイトは、ノード１の文書内意味記号ＩＤを表し、第４バイトは、アーク種別を表す。
【００６９】
このような単位符号を用いることで、意味最小単位中のノードの符号情報と原文中の単語とのリンクを保持しながら、意味最小単位を４バイト又は６バイトで表すことができる。
【００７０】
図１２は、１つの意味最小単位を符号化して単位符号を生成する符号化処理の例を示すフローチャートである。まず、符号化部３０５は、解析結果３１２に含まれる意味解析結果を参照して、意味最小単位のパターン種別を決定し（ステップ１２０１）、アーク種別を決定する（ステップ１２０２）。
【００７１】
次に、符号化部３０５は、意味最小単位に含まれるノードの順位を求める（ステップ１２０３）。符号化部３０５は、パターン１の場合、ノード１の順位とノード２の順位とを求め、パターン２及びパターン３の場合、ノード１の順位を求める。
【００７２】
次に、符号化部３０５は、ノードの文書内意味記号ＩＤを求める（ステップ１２０４）。符号化部３０５は、パターン１の場合、ノード１の文書内意味記号ＩＤとノード２の文書内意味記号ＩＤとを求め、パターン２及びパターン３の場合、ノード１の文書内意味記号ＩＤを求める。
【００７３】
このとき、符号化部３０５は、解析結果３１２に含まれる形態素解析結果を参照して、意味最小単位に含まれるノードに対応する単語、属性情報、及び意味記号を取得する。次に、符号化部３０５は、意味記号情報３１３（単語符号辞書）を参照して、単語、属性情報、及び意味記号の組み合わせに対応する辞書ＩＤを取得する。そして、符号化部３０５は、文書ＩＤと取得した辞書ＩＤとに基づいて、マッピング情報３１４から文書内意味記号ＩＤを求める。
【００７４】
例えば、図９のマッピング情報３１４を用いて、文書ＩＤ“０”及び辞書ＩＤ“５０２３”に対応する文書内意味記号ＩＤを求める場合、符号化部３０５は、ｍａｐ．ｉｄｘのオフセット“０”の位置を参照して内容“０”を取得する。次に、符号化部３０５は、ｍａｐ．ｄｉｃのオフセット“０”の位置を参照し、その位置の内容が辞書ＩＤ“５０２３”と一致することを検出する。この場合、ｍａｐ．ｄｉｃの参照位置をシフトすることなく辞書ＩＤ“５０２３”が検出されたため、符号化部３０５は、文書内意味記号ＩＤを“０”に決定する。
【００７５】
また、文書ＩＤ“２”及び辞書ＩＤ“３５”に対応する文書内意味記号ＩＤを求める場合、符号化部３０５は、ｍａｐ．ｉｄｘのオフセット“２”の位置を参照して内容“５”を取得する。次に、符号化部３０５は、ｍａｐ．ｄｉｃのオフセット“５”の位置を参照し、その位置から右へ向かって参照位置を１つずつシフトしていき、オフセット“８”の位置の内容が辞書ＩＤ“３５”と一致することを検出する。この場合、ｍａｐ．ｄｉｃの参照位置を３だけシフトすることで辞書ＩＤ“３５”が検出されたため、符号化部３０５は、文書内意味記号ＩＤを“３”に決定する。
【００７６】
図１３は、図１２の符号化処理により生成される文書内意味構造情報１２１の例を示している。図１３の単位符号１３０１〜単位符号１３０３は、図１１（ａ）の単位符号に対応する。
【００７７】
例えば、単位符号１３０１のパターン種別“０”は、パターン１の意味最小単位であることを示し、ノード１の順位“５”は、文頭から５番目の単語であることを示し、ノード２の順位“８”は、文頭から８番目の単語であることを示している。ノード１の文書内意味記号ＩＤは“２”であり、ノード２の文書内意味記号ＩＤは“２９”であり、アーク種別は“２１”である。
【００７８】
これらの単位符号１３０１〜単位符号１３０３は、文書内意味構造情報１２１内において、それぞれの単位符号が属する文の文ＩＤ毎にグループ化されている。
【００７９】
このように、文書３１１の形態素解析結果に含まれる単語と意味解析結果に含まれる意味記号とを併せて、一連の符号として符号化することで、単語と意味記号の対応関係を文書内意味構造情報１２１に効果的に含めることが可能になる。これにより、圧縮された文書内意味構造情報１２１内の意味記号から、原文の単語へ直接アクセスすることができる。
【００８０】
次に、図１４から図１９までを参照しながら、文書３１１の意味構造を検索する意味構造検索処理について説明する。
【００８１】
図１４は、図３の意味構造検索装置１０１が行う意味構造検索処理の具体例を示すフローチャートである。まず、解析部３０１は、自然文で記述された検索要求に対して形態素解析を行って形態素解析結果を生成し（ステップ１４０１）、検索要求に対して意味解析を行って意味解析結果を生成する（ステップ１４０２）。そして、解析部３０１は、検索要求の形態素解析結果及び意味解析結果を記憶部１１１に格納する。
【００８２】
次に、検索部１１２は、検索要求の意味解析結果から、検索要求の意味構造を表す複数の検索意味記号を含む検索キーを生成して、記憶部１１１に格納する（ステップ１４０３）。
【００８３】
次に、検索部１１２は、意味記号情報３１３を参照して、検索キーに含まれる複数の検索意味記号に対応する、複数の検索単語とその属性情報及び意味記号との組み合わせを特定する（ステップ１４０４）。そして、検索部１１２は、ビットマップ情報３１５を参照して、特定した複数の検索単語を含む１つ以上の検索対象文書を特定する（ステップ１４０５）。
【００８４】
次に、検索部１１２は、意味記号情報３１３とマッピング情報３１４とを参照して、検索キーを符号化し、検索符号情報を生成する（ステップ１４０６）。
【００８５】
次に、検索部１１２は、検索対象文書の文書内意味構造情報１２１から、検索符号情報と一致する単位符号を検索する（ステップ１４０７）。そして、検索部１１２は、検出した単位符号に含まれるノードの順位に基づいて、検索単語の検索対象文書内における位置を特定する（ステップ１４０８）。ステップ１４０７及びステップ１４０８の処理は、検索対象文書毎に行われる。
【００８６】
次に、出力部１１３は、検索符号情報と一致する単位符号が検出された検索対象文書と、検索に用いた各検索単語と、各検索単語の検索対象文書内における位置とを示す検索結果を出力する（ステップ１４０９）。
【００８７】
例えば、“太郎は花子に本をあげた。”という検索要求が入力された場合、検索部１１２は、以下のような意味最小単位を表す検索キーを生成することができる。
（ＧＩＶＥ，ＨＡＮＡＫＯ，目的）
（ＧＩＶＥ，ＴＡＲＯ，動作主体）
（ＧＩＶＥ，ＢＯＯＫ，対象）
【００８８】
検索キー（ＧＩＶＥ，ＨＡＮＡＫＯ，目的）の“ＧＩＶＥ”は、“あげ”に対応する起点ノードの意味記号を表し、“ＨＡＮＡＫＯ”は、“花子”に対応する終点ノードの意味記号を表し、“目的”は、アークを表す。
【００８９】
この検索キーを用いて文書３１１を検索する場合、検索部１１２は、（ＧＩＶＥ，ＨＡＮＡＫＯ，目的）に含まれる“ＧＩＶＥ”及び“ＨＡＮＡＫＯ”にそれぞれ対応する辞書ＩＤ及びエントリを、意味記号情報３１３から取得する。これにより、例えば、次のような６種類の情報が取得される。
辞書ＩＤ：１０８８：あげ＋動詞＋ＧＩＶＥ
辞書ＩＤ：２１８３：与え＋動詞＋ＧＩＶＥ
辞書ＩＤ：４０２１：贈与＋サ変名詞＋ＧＩＶＥ
辞書ＩＤ：５９１１：寄付＋サ変名詞＋ＧＩＶＥ
辞書ＩＤ：９８２７：手渡＋動詞＋ＧＩＶＥ
辞書ＩＤ：２００２９１：花子＋名詞＋ＨＡＮＡＫＯ
【００９０】
そして、検索部１１２は、“ＧＩＶＥ”に対応する辞書ＩＤと“ＨＡＮＡＫＯ”に対応する辞書ＩＤとを組み合わせて、次のような検索式を生成する。
（１０８８  ＡＮＤ  ２００２９１）ＯＲ
（２１８３  ＡＮＤ  ２００２９１）ＯＲ
（４０２１  ＡＮＤ  ２００２９１）ＯＲ
（５９１１  ＡＮＤ  ２００２９１）ＯＲ
（９８２７  ＡＮＤ  ２００２９１）
【００９１】
次に、検索部１１２は、図１０のビットマップ情報３１５を参照して、検索式を満たす文書ＩＤの集合を求める。例えば、（１０８８  ＡＮＤ  ２００２９１）を満たす文書ＩＤは、図１５（ａ）に示すように、ビットマップ情報３１５の“１０８８”の行と“２００２９１”の行との論理積を計算することで求められる。この場合、“あげ”と“花子”とを含む文書３１１の文書ＩＤは“３”である。
【００９２】
（２１８３  ＡＮＤ  ２００２９１）を満たす文書ＩＤは、図１５（ｂ）に示すように、ビットマップ情報３１５の“２１８３”の行と“２００２９１”の行との論理積を計算することで求められる。この場合、“与え”と“花子”とを含む文書３１１の文書ＩＤは“２４”及び“５２２”である。
【００９３】
（４０２１  ＡＮＤ  ２００２９１）を満たす文書ＩＤは、図１５（ｃ）に示すように、ビットマップ情報３１５の“４０２１”の行と“２００２９１”の行との論理積を計算することで求められる。この場合、“贈与”と“花子”とを含む文書３１１の文書ＩＤは“９２８３”である。
【００９４】
（５９１１  ＡＮＤ  ２００２９１）を満たす文書ＩＤは、図１５（ｄ）に示すように、ビットマップ情報３１５の“５９１１”の行と“２００２９１”の行との論理積を計算することで求められる。この場合、“寄付”と“花子”とを含む文書３１１は存在しない。
【００９５】
（９８２７  ＡＮＤ  ２００２９１）を満たす文書ＩＤは、図１５（ｅ）に示すように、ビットマップ情報３１５の“９８２７”の行と“２００２９１”の行との論理積を計算することで求められる。この場合、“手渡”と“花子”とを含む文書３１１の文書ＩＤは“８２”である。
【００９６】
図１６は、図１５（ａ）〜図１５（ｅ）の論理積により得られる文書ＩＤを示している。結局、検索式を満たす文書ＩＤの集合は、（３，２４，５２２，９２８３，８２）となり、検索対象文書の数は５個に絞り込まれる。
【００９７】
次に、検索部１１２は、図１２のステップ１２０４と同様にして、検索式の辞書ＩＤを検索対象文書の文書ＩＤに対応する文書内意味記号ＩＤに置き換え、検索対象文書毎の検索符号情報を生成する。この場合、同じ検索式であっても、検索対象文書が異なれば、異なる検索符号情報に置き換えられる。
【００９８】
例えば、図９のマッピング情報３１４を用いて、文書ＩＤ“３”及び辞書ＩＤ“１０８８”に対応する文書内意味記号ＩＤを求める場合、検索部１１２は、ｍａｐ．ｉｄｘのオフセット“３”の位置を参照して内容“１１”を取得する。次に、検索部１１２は、ｍａｐ．ｄｉｃのオフセット“１１”の位置を参照し、その位置から右へ向かって参照位置を１つずつシフトしていき、オフセット“１５”の位置の内容が辞書ＩＤ“１０８８”と一致することを検出する。この場合、ｍａｐ．ｄｉｃの参照位置を４だけシフトすることで辞書ＩＤ“１０８８”が検出されたため、検索部１１２は、文書内意味記号ＩＤを“４”に決定する。
【００９９】
また、文書ＩＤ“３”及び辞書ＩＤ“２００２９１”に対応する文書内意味記号ＩＤを求める場合、検索部１１２は、ｍａｐ．ｉｄｘのオフセット“３”の位置を参照して内容“１１”を取得する。次に、検索部１１２は、ｍａｐ．ｄｉｃのオフセット“１１”の位置を参照し、その位置から右へ向かって参照位置を１つずつシフトしていき、オフセット“２２”の位置の内容が辞書ＩＤ“２００２９１”と一致することを検出する。この場合、ｍａｐ．ｄｉｃの参照位置を１１だけシフトすることで辞書ＩＤ“２００２９１”が検出されたため、検索部１１２は、文書内意味記号ＩＤを“１１”に決定する。
【０１００】
また、文書ＩＤ“２４”及び辞書ＩＤ“２１８３”に対応する文書内意味記号ＩＤを求める場合、検索部１１２は、ｍａｐ．ｉｄｘのオフセット“２４”の位置を参照して内容“１６９０”を取得する。次に、検索部１１２は、ｍａｐ．ｄｉｃのオフセット“１６９０”の位置を参照し、その位置から右へ向かって参照位置を１つずつシフトしていき、オフセット“１６９４”の位置の内容が辞書ＩＤ“２１８３”と一致することを検出する。この場合、ｍａｐ．ｄｉｃの参照位置を４だけシフトすることで辞書ＩＤ“２１８３”が検出されたため、検索部１１２は、文書内意味記号ＩＤを“４”に決定する。
【０１０１】
また、文書ＩＤ“２４”及び辞書ＩＤ“２００２９１”に対応する文書内意味記号ＩＤを求める場合、検索部１１２は、ｍａｐ．ｉｄｘのオフセット“２４”の位置を参照して内容“１６９０”を取得する。次に、検索部１１２は、ｍａｐ．ｄｉｃのオフセット“１６９０”の位置を参照し、その位置から右へ向かって参照位置を１つずつシフトしていき、オフセット“１７０５”の位置の内容が辞書ＩＤ“２００２９１”と一致することを検出する。この場合、ｍａｐ．ｄｉｃの参照位置を１５だけシフトすることで辞書ＩＤ“２００２９１”が検出されたため、検索部１１２は、文書内意味記号ＩＤを“１５”に決定する。
【０１０２】
このようにして、検索式から次のような検索符号情報が生成される。
（１０８８  ＡＮＤ  ２００２９１）
→文書ＩＤ“３”に対する検索符号情報：（４，１１）
（２１８３  ＡＮＤ  ２００２９１）
→文書ＩＤ“２４”に対する検索符号情報：（４，１５）
→文書ＩＤ“５２２”に対する検索符号情報：（５，１４）
（４０２１  ＡＮＤ  ２００２９１）
→文書ＩＤ“９２８３”に対する検索符号情報：（４，１０）
（９８２７  ＡＮＤ  ２００２９１）
→文書ＩＤ“８２”に対する検索符号情報：（２３，１０６）
【０１０３】
例えば、図１３が文書ＩＤ“３”の文書内意味構造情報１２１を示している場合、検索部１１２は、文書ＩＤ“３”に対する検索符号情報（４，１１）を用いて図１３の文書内意味構造情報１２１を検索する。そして、ノード１の文書内意味記号ＩＤ“４”とノード２の文書内意味記号ＩＤ“１１”とを含む単位符号１３０３を検出し、ノード１の順位“３”とノード２の順位“１”とを取得する。
【０１０４】
これにより、文書内意味記号ＩＤ“４”に対応する検索単語“あげ”は、文頭から３番目の“あげ”であり、文書内意味記号ＩＤ“１１”に対応する検索単語“花子”は、文頭から１番目の“花子”であることが分かる。
【０１０５】
そこで、検索部１１２は、解析結果３１２に含まれる形態素解析結果（図５の形態素解析結果５１１に対応）を参照して、単位符号１３０３に対応する文ＩＤの文内で、“あげ＋動詞＋ＧＩＶＥ”と一致する単語“あげ”を検索する。そして、検索部１１２は、検出した“あげ”のうち文頭から３番目の“あげ”の位置（図５の単語の位置５２４に対応）を、検索単語“あげ”の検索対象文書内における位置として特定する。
【０１０６】
また、検索部１１２は、解析結果３１２に含まれる形態素解析結果を参照して、単位符号１３０３に対応する文ＩＤの文内で、“花子＋名詞＋ＨＡＮＡＫＯ”と一致する単語“花子”を検索する。そして、検索部１１２は、検出した“花子”のうち文頭から１番目の“花子”の位置を、検索単語“花子”の検索対象文書内における位置として特定する。
【０１０７】
出力部１１３は、検索結果を出力する際に、例えば、特定された検索対象文書内の位置に存在する“あげ”及び“花子”のテキストを強調表示してもよい。
【０１０８】
Ｎ個の意味記号に対して、意味最小単位に含まれる２つの意味記号の組み合わせの総数はＮ＊Ｎであるため、従来の意味最小単位を用いた意味構造検索における計算量と検索結果のデータ量は、Ｎ＊Ｎのオーダーになる。例えば、Ｎ＝５０であれば、組み合わせの総数は５０＊５０＝２５００であるが、Ｎ＝５００万になると、組み合わせの総数は５００万＊５００万＝２５，０００，０００，０００，０００になる。
【０１０９】
これに対して、図１４の意味構造検索処理では、検索対象文書の意味最小単位と検索要求の意味最小単位とがともに符号化され、符号化された意味最小単位同士を比較するだけで済むため、計算量と検索結果のデータ量はＮのオーダーになる。
【０１１０】
また、従来の意味構造検索では、形態素解析結果と原文との対応関係を表す膨大なデータと、意味構造解析結果と形態素解析結果との対応関係を表す膨大なデータとを用いて検索を行うため、大容量のメモリが使用される。
【０１１１】
これに対して、意味記号情報３１３として用いられる単語符号辞書に登録される単語の総数は数百万程度であり、文書内意味構造情報１２１に登録される意味記号の総数は数百程度である。したがって、文書内意味構造情報１２１のデータ量は、意味記号情報３１３のデータ量と比較して約４桁スケールダウンされており、２つの意味記号の組み合わせでは４＊４＝１６桁のスケールダウンが図られる。
【０１１２】
また、従来のＬＺ７７符号化により圧縮されたテキストデータを検索する場合、一度すべての圧縮データを伸張してから、伸張したテキストデータを検索するため、処理速度が遅くなる。これに対して、図１４の意味構造検索処理では、圧縮された文書３１１を伸張することなく、符号化された意味最小単位同士を比較するため、処理速度が高速になる。
【０１１３】
図１７は、図１４の意味構造検索処理に加えて、検索対象文書のスコアを計算する処理を追加した意味構造検索処理を示すフローチャートである。図１７のステップ１７０１〜ステップ１７０８の処理は、図１４のステップ１４０１〜ステップ１４０８の処理と同様である。
【０１１４】
ステップ１７０９において、検索部１１２は、検索キーのスコアを用いて検索対象文書のスコアを計算する。そして、ステップ１７１０において、出力部１１３は、検索対象文書をスコア順にランク付けして、検索結果を出力する。
【０１１５】
図１８は、検索キーのスコアとして用いられる検索式のスコアの第１の例を示している。この例では、あらかじめ検索式毎に、そのスコアが計算される。検索式のスコアＳの計算には、例えば、次式を用いることができる。
Ｓ＝ｉｄｆ１＊Ｎ１＋ｉｄｆ２＊Ｎ２      （１）
【０１１６】
ｉｄｆ１は、検索式に含まれる１番目の辞書ＩＤに対応する検索単語の逆文書頻度（inverse document frequency）を表し、ｉｄｆ２は、検索式に含まれる２番目の辞書ＩＤに対応する検索単語の逆文書頻度を表す。Ｎ１は、１番目の辞書ＩＤに対応する検索単語の検索要求内における出現回数を表し、Ｎ２は、２番目の辞書ＩＤに対応する検索単語の検索要求内における出現回数を表す。
【０１１７】
図１９は、検索キーのスコアとして用いられる検索式のスコアの第２の例を示している。この例では、検索式のスコアＳの計算に、例えば、次式が用いられる。
Ｓ＝ｉｄｆ１１＊Ｎ１１＋ｉｄｆ１２＊Ｎ１２      （２）
【０１１８】
ｉｄｆ１１は、検索式に含まれる１番目の辞書ＩＤに対応する意味記号の逆文書頻度を表し、ｉｄｆ１２は、検索式に含まれる２番目の辞書ＩＤに対応する意味記号の逆文書頻度を表す。Ｎ１１は、１番目の辞書ＩＤに対応する意味記号の検索要求内における出現回数を表し、Ｎ１２は、２番目の辞書ＩＤに対応する意味記号の検索要求内における出現回数を表す。
【０１１９】
図１９の検索式は、いずれも同じ検索キー（ＧＩＶＥ，ＨＡＮＡＫＯ，目的）から生成されるため、意味記号の逆文書頻度及び出現回数を用いて検索式のスコアＳを計算すると、すべての検索式のスコアＳは同じ値になる。
【０１２０】
検索対象文書のスコアＤＳは、検索式のスコアＳを用いて、例えば、次式により計算される。
ＤＳ＝Σ（Ｓ＊Ｐ）      （３）
【０１２１】
式（３）の右辺のＳは、検索対象文書の文書内意味構造情報１２１と一致した検索式のスコアを表し、Ｐは、その検索式が一致した回数を表し、総和記号Σは、複数の検索式に対するＳ＊Ｐの値の総和を表す。スコアＤＳの降順に検索対象文書をランク付けして出力することで、検索結果として重要な検索対象文書から順に提示することが可能になる。
【０１２２】
図１及び図３の意味構造検索装置１０１の構成は一例に過ぎず、意味構造検索装置１０１の用途や条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、解析結果３１２、意味記号情報３１３、マッピング情報３１４、及びビットマップ情報３１５が外部の装置で生成される場合は、図３の解析部３０１、生成部３０２、生成部３０３、及び生成部３０４を省略することができる。また、文書内意味構造情報１２１が外部の装置で生成される場合は、図３の符号化部３０５を省略することができる。
【０１２３】
図２、図４、図１２、図１４、及び図１７のフローチャートは一例に過ぎず、意味構造検索装置１０１の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、解析結果３１２、意味記号情報３１３、マッピング情報３１４、ビットマップ情報３１５、及び文書内意味構造情報１２１が外部の装置で生成される場合は、図４の圧縮処理を省略することができる。
【０１２４】
図１４及び図１７の意味構造検索処理において、検索対象文書の絞り込みを行わない場合は、ステップ１４０５及びステップ１７０５の処理を省略することができる。図１４及び図１７の意味構造検索処理において、２つの意味記号を含む検索キーの代わりに、３つ以上の意味記号を含む検索キーを用いても構わない。
【０１２５】
図５の解析結果３１２、図６及び図７の意味記号情報３１３、図９のマッピング情報３１４、及び図１０のビットマップ情報３１５は一例に過ぎず、意味構造検索装置１０１の構成や条件に応じて、別のデータ構造の情報を用いてもよい。また、図１１の単位符号及び図１３の文書内意味構造情報１２１は一例に過ぎず、意味構造検索装置１０１の構成や条件に応じて、別のデータ構造の情報を用いてもよい。
【０１２６】
例えば、意味が異なる複数の同じ単語を区別する必要がない場合は、図５の形態素解析結果５１１及び図１０のビットマップ情報３１５において、属性情報及び意味記号を省略することができる。この場合、図６及び図７の意味記号情報３１３において、属性情報を省略することができる。
【０１２７】
式（１）〜式（３）は一例に過ぎず、別の計算式により検索対象文書のスコアを計算してもよい。
【０１２８】
図１及び図３の意味構造検索装置１０１は、例えば、図２０に示すような情報処理装置（コンピュータ）を用いて実現可能である。
【０１２９】
図２０の情報処理装置は、ＣＰＵ２００１、メモリ２００２、入力装置２００３、出力装置２００４、補助記憶装置２００５、媒体駆動装置２００６、及びネットワーク接続装置２００７を備える。これらの構成要素はバス２００８により互いに接続されている。
【０１３０】
メモリ２００２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ２００２は、図１及び図３の記憶部１１１として用いることができる。
【０１３１】
ＣＰＵ２００１（プロセッサ）は、例えば、メモリ２００２を利用してプログラムを実行することにより、図１及び図３の検索部１１２、解析部３０１、生成部３０２、生成部３０３、生成部３０４、及び符号化部３０５として動作する。
【０１３２】
入力装置２００３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示や情報の入力に用いられる。オペレータ又はユーザからの指示は、意味構造検索の検索要求であってもよい。
【０１３３】
出力装置２００４は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。出力装置２００４は、図１及び図３の出力部１１３として用いることができる。処理結果は、意味構造検索の検索結果であってもよい。
【０１３４】
補助記憶装置２００５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置２００５は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置２００５にプログラム及びデータを格納しておき、それらをメモリ２００２にロードして使用することができる。補助記憶装置２００５は、図１及び図３の記憶部１１１として用いることができる。
【０１３５】
媒体駆動装置２００６は、可搬型記録媒体２００９を駆動し、その記録内容にアクセスする。可搬型記録媒体２００９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体２００９は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体２００９にプログラム及びデータを格納しておき、それらをメモリ２００２にロードして使用することができる。
【０１３６】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ２００２、補助記憶装置２００５、又は可搬型記録媒体２００９のような、物理的な（非一時的な）記録媒体である。
【０１３７】
ネットワーク接続装置２００７は、Local Area Network、Wide Area Network等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置２００７を介して受け取り、それらをメモリ２００２にロードして使用することができる。
【０１３８】
情報処理装置は、ネットワーク接続装置２００７を介して、ユーザ端末から検索要求を受信し、検索結果をユーザ端末へ送信することができる。この場合、ネットワーク接続装置２００７は、図１及び図３の出力部１１３として用いられる。
【０１３９】
なお、情報処理装置が図２０のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、情報処理装置がユーザ端末から通信ネットワーク経由で検索要求を受信する場合は、入力装置２００３及び出力装置２００４を省略してもよい。また、可搬型記録媒体２００９又は通信ネットワークを利用しない場合は、媒体駆動装置２００６又はネットワーク接続装置２００７を省略してもよい。
【０１４０】
情報処理装置がスマートフォンのような通話機能を有する携帯端末である場合、マイク及びスピーカのような通話用の装置を含んでいてもよく、カメラのような撮像装置を含んでいてもよい。
【０１４１】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１４２】
図１乃至図２０を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
検索要求から意味構造を表す複数の検索意味記号を生成し、
検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、前記複数の単語の前記検索対象文書内における位置との対応関係を表す文書内意味構造情報を参照して、前記複数の検索意味記号から、前記検索要求に対応する単語の前記検索対象文書内における位置を特定し、
前記検索対象文書と、前記検索要求に対応する単語と、前記検索要求に対応する単語の前記検索対象文書内における位置とを示す検索結果を出力する、
処理をコンピュータに実行させる意味構造検索プログラム。
（付記２）
前記文書内意味構造情報は、前記検索対象文書に対して生成された、前記複数の意味記号を表す符号情報と、前記複数の単語の前記検索対象文書内における位置との対応関係を表し、
前記コンピュータは、単語と意味記号との対応関係を表す意味記号情報と、単語と符号情報との対応関係を表すマッピング情報とを参照して、前記複数の検索意味記号から、前記検索対象文書を検索するための検索符号情報を生成し、前記文書内意味構造情報から前記検索符号情報と一致する符号情報に対応する位置を求め、求めた位置を前記検索要求に対応する単語の前記検索対象文書内における位置として特定することを特徴とする付記１記載の意味構造検索プログラム。
（付記３）
前記コンピュータは、前記意味記号情報を参照して、前記複数の検索意味記号に対応する複数の検索単語を特定し、複数の文書それぞれにおける複数の単語それぞれの存否を示すビットマップ情報を参照して、前記複数の検索単語を含む文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする付記２記載の意味構造検索プログラム。
（付記４）
前記意味記号情報は、単語に付与された属性情報を含み、
前記ビットマップ情報は、前記複数の文書それぞれにおける前記複数の単語と属性情報と意味記号との組み合わせ毎に、前記複数の単語それぞれの存否を示し、
前記コンピュータは、前記意味記号情報を参照して、前記複数の検索意味記号に対応する前記複数の検索単語と前記複数の検索単語の属性情報と前記複数の検索単語の意味記号との組み合わせを特定し、前記ビットマップ情報を参照して、特定した組み合わせに対応する文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする付記３記載の意味構造検索プログラム。
（付記５）
検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、前記複数の単語の前記検索対象文書内における位置との対応関係を表す文書内意味構造情報を記憶する記憶部と、
検索要求から意味構造を表す複数の検索意味記号を生成し、前記文書内意味構造情報を参照して、前記複数の検索意味記号から、前記検索要求に対応する単語の前記検索対象文書内における位置を特定する検索部と、
前記検索対象文書と、前記検索要求に対応する単語と、前記検索要求に対応する単語の前記検索対象文書内における位置とを示す検索結果を出力する出力部と、
を備えることを特徴とする意味構造検索装置。
（付記６）
前記文書内意味構造情報は、前記検索対象文書に対して生成された、前記複数の意味記号を表す符号情報と、前記複数の単語の前記検索対象文書内における位置との対応関係を表し、
前記記憶部は、単語と意味記号との対応関係を表す意味記号情報と、単語と符号情報との対応関係を表すマッピング情報とをさらに記憶し、
前記検索部は、前記意味記号情報と前記マッピング情報とを参照して、前記複数の検索意味記号から、前記検索対象文書を検索するための検索符号情報を生成し、前記文書内意味構造情報から前記検索符号情報と一致する符号情報に対応する位置を求め、求めた位置を前記検索要求に対応する単語の前記検索対象文書内における位置として特定することを特徴とする付記５記載の意味構造検索装置。
（付記７）
前記記憶部は、複数の文書それぞれにおける複数の単語それぞれの存否を示すビットマップ情報をさらに記憶し、
前記検索部は、前記意味記号情報を参照して、前記複数の検索意味記号に対応する複数の検索単語を特定し、前記ビットマップ情報を参照して、前記複数の検索単語を含む文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする付記６記載の意味構造検索装置。
（付記８）
前記意味記号情報は、単語に付与された属性情報を含み、
前記ビットマップ情報は、前記複数の文書それぞれにおける前記複数の単語と属性情報と意味記号との組み合わせ毎に、前記複数の単語それぞれの存否を示し、
前記検索部は、前記意味記号情報を参照して、前記複数の検索意味記号に対応する前記複数の検索単語と前記複数の検索単語の属性情報と前記複数の検索単語の意味記号との組み合わせを特定し、前記ビットマップ情報を参照して、特定した組み合わせに対応する文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする付記７記載の意味構造検索装置。
（付記９）
コンピュータが、
検索要求から意味構造を表す複数の検索意味記号を生成し、
検索対象文書に含まれる複数の単語に対応する意味構造を表す複数の意味記号と、前記複数の単語の前記検索対象文書内における位置との対応関係を表す文書内意味構造情報を参照して、前記複数の検索意味記号から、前記検索要求に対応する単語の前記検索対象文書内における位置を特定し、
前記検索対象文書と、前記検索要求に対応する単語と、前記検索要求に対応する単語の前記検索対象文書内における位置とを示す検索結果を出力する、
ことを特徴とする意味構造検索方法。
（付記１０）
前記文書内意味構造情報は、前記検索対象文書に対して生成された、前記複数の意味記号を表す符号情報と、前記複数の単語の前記検索対象文書内における位置との対応関係を表し、
前記コンピュータは、単語と意味記号との対応関係を表す意味記号情報と、単語と符号情報との対応関係を表すマッピング情報とを参照して、前記複数の検索意味記号から、前記検索対象文書を検索するための検索符号情報を生成し、前記文書内意味構造情報から前記検索符号情報と一致する符号情報に対応する位置を求め、求めた位置を前記検索要求に対応する単語の前記検索対象文書内における位置として特定することを特徴とする付記９記載の意味構造検索方法。
（付記１１）
前記コンピュータは、前記意味記号情報を参照して、前記複数の検索意味記号に対応する複数の検索単語を特定し、複数の文書それぞれにおける複数の単語それぞれの存否を示すビットマップ情報を参照して、前記複数の検索単語を含む文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする付記１０記載の意味構造検索方法。
（付記１２）
前記意味記号情報は、単語に付与された属性情報を含み、
前記ビットマップ情報は、前記複数の文書それぞれにおける前記複数の単語と属性情報と意味記号との組み合わせ毎に、前記複数の単語それぞれの存否を示し、
前記コンピュータは、前記意味記号情報を参照して、前記複数の検索意味記号に対応する前記複数の検索単語と前記複数の検索単語の属性情報と前記複数の検索単語の意味記号との組み合わせを特定し、前記ビットマップ情報を参照して、特定した組み合わせに対応する文書を特定し、特定した文書を前記検索対象文書として用いることを特徴とする付記１１記載の意味構造検索方法。
【符号の説明】
【０１４３】
１０１  意味構造検索装置
１１１  記憶部
１１２  検索部
１１３  出力部
１２１  文書内意味構造情報
３０１  解析部
３０２〜３０４  生成部
３０５  符号化部
３１１  文書
３１２、５０２  解析結果
３１３  意味記号情報
３１４  マッピング情報
３１５  ビットマップ情報
５０１  テキストファイル
５１１  形態素解析結果
５１２  意味解析結果
５２１  単語
５２２、５３２  文書ＩＤ
５２３、５３３  文ＩＤ
５２４  単語の位置
５２５  単語のデータ長
５２６  意味記号
５２７  属性情報
５３１  意味最小単位
５３４  句
５３５  句の開始位置
５３６  句の終了位置
５３７、５３９  単語の開始位置
５３８、５４０  単語の終了位置
１３０１〜１３０３  単位符号
２００１  ＣＰＵ
２００２  メモリ
２００３  入力装置
２００４  出力装置
２００５  補助記憶装置
２００６  媒体駆動装置
２００７  ネットワーク接続装置
２００８  バス
２００９  可搬型記録媒体
【図１】
0006447161.tif 000002
【図２】
0006447161.tif 000003
【図３】
0006447161.tif 000004
【図４】
0006447161.tif 000005
【図５】
0006447161.tif 000006
【図６】
0006447161.tif 000007
【図７】
0006447161.tif 000008
【図８】
0006447161.tif 000009
【図９】
0006447161.tif 000010
【図１０】
0006447161.tif 000011
【図１１】
0006447161.tif 000012
【図１２】
0006447161.tif 000013
【図１３】
0006447161.tif 000014
【図１４】
0006447161.tif 000015
【図１５】
0006447161.tif 000016
【図１６】
0006447161.tif 000017
【図１７】
0006447161.tif 000018
【図１８】
0006447161.tif 000019
【図１９】
0006447161.tif 000020
【図２０】
0006447161.tif 000021