以下に、本願の開示する特定方法、生成方法、次元圧縮方法、表示方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1および図2は、本実施例に係る情報処理装置の処理を説明するための図である。まず、図1について説明する。図1に示すように、情報処理装置の次元圧縮部150bは、単語ベクトルテーブル140aを取得する。単語ベクトルテーブル140aは、各単語のベクトルの情報を保持するテーブルである。単語ベクトルテーブル140aに含まれる各単語のベクトルは、Word2Vec等を用いて予め算出されたベクトルであり、たとえば、200次元のベクトルとする。
次元圧縮部150bは、単語ベクトルテーブル140aの各単語のベクトルを次元圧縮することで、次元圧縮単語ベクトルテーブル140bを生成する。次元圧縮単語ベクトルテーブル140bは、次元圧縮した各単語のベクトルの情報を保持するテーブルである。次元圧縮単語ベクトルテーブル140bに含まれる各単語のベクトルは、3次元のベクトルとする。
次元圧縮部150bは、200次元に成分分解された、200本の各ベクトルaiei(i=1~200)を円状に等分に分散配置する。「ei」は、基底ベクトルである。以下の説明では、成分分解されたベクトルを基底ベクトルと表記する。次元圧縮部150bは、素数の基底ベクトルを一つ選択し、その基底ベクトルに他の次元の基底ベクトルを直交変換した値を積算する。次元圧縮部150bは、素数「3」で分割され、分散する3つの素数の基底ベクトルに対して、上記処理を実行することで、200次元のベクトルを、3次元のベクトルに次元圧縮する。たとえば、次元圧縮部150bは、「1」、「67」、「131」の素数の基底ベクトルの値をそれぞれ算出することで、3次元のベクトルに次元圧縮する。
なお、本実施例では一例として、3次元のベクトルとして説明するが、他の次元のベクトルであってもよい。素数「3以上」で分割され、分散する素数の基底ベクトルを選択することで、非可逆ではあるが、高精度な次元復元を実現できる。なお、分割する素数を大きくすると、精度が向上するが、圧縮率が低下する。以下の説明では、適宜、200次元のベクトルを「ベクトル」と表記し、3次元に次元圧縮されたベクトルを「圧縮ベクトル」と表記する。
情報処理装置の生成処理部150cは、複数のテキストファイル10Aを受け付ける。テキストファイル10Aは、複数の単語から構成される文を複数有するファイルである。生成処理部150cは、辞書情報15を基にして、複数のテキストファイル10Aをそれぞれ単語単位に符号化することで、複数のテキスト圧縮ファイル10Bを生成する。
生成処理部150cは、テキストファイル10Aを基にしてテキスト圧縮ファイル10Bを生成する際に、単語インデックス140c、同義語インデックス140d、同義文インデックス140e、文ベクトル140f、動的辞書140gを生成する。
辞書情報15は、単語と符号とを対応付ける情報(静的辞書)である。生成処理部150cは、辞書情報15を参照し、テキストファイル10Aの各単語を符号に割当てて、圧縮する。生成処理部150cは、テキストファイル10Aの単語のうち、辞書情報15に存在しない単語や、頻度の低い単語を、動的符号を割り当てて圧縮し、かかる単語と、動的符号とを動的辞書140gに登録する。
単語インデックス140cは、単語の符号(あるいは、単語ID)と、かかる単語の符号の位置とを対応付けるものである。単語の符号の位置は、テキスト圧縮ファイル10Bのオフセットで示される。複数のテキスト圧縮ファイル10Bにおいて、オフセットをどのように定義してもよい。たとえば、先のテキスト圧縮ファイルの末尾の単語の符号のオフセットを「N」とすると、次のテキスト圧縮ファイルの先頭の単語の符号のオフセットは「N+1」と連続することができる。
同義語インデックス140dは、単語の圧縮ベクトルと、かかる圧縮ベクトルに対応する単語の符号の位置とを対応付けるものである。単語の符号の位置は、テキスト圧縮ファイル10Bのオフセットで示される。ここで、異なる単語の符号であっても、同義語である単語については、同一の圧縮ベクトルが割り当てられる。たとえば、単語A1、A2、A3がそれぞれ「リンゴ」(日本語)「apple」(英語)「pomme」(フランス語)のような同義語である場合は、単語A1、A2、A3の圧縮ベクトルは、ほぼ同一の値を持つ。
同義文インデックス140eは、文の圧縮ベクトルと、かかる圧縮ベクトルに対応する文の位置とを対応付けるものである。テキスト圧縮ファイル10Bの文の位置は、文に含まれる単語の符号にうち、先頭の単語の符号の位置とする。生成処理部150cは、文に含まれる各単語の圧縮ベクトルを積算することで文の圧縮ベクトルを算出し、文ベクトルテーブル140fに格納する。生成処理部150cは、テキストファイル10Aに含まれる各文の圧縮ベクトルの類似度をそれぞれ算出し、類似度が閾値以上となる複数文を同一のグループに分類する。生成処理部150cは、同一のグループに属する各文を、同義文として特定し、同一の圧縮ベクトルを割り当てる。なお、文ベクトルは、文毎に3次元の圧縮ベクトルが割当てられる。また、各文ベクトルを出現順に円に対応付けて分散配置し、複数の文を一括して圧縮することも可能である。
上記のように、本実施例に係る情報処理装置は、単語ベクトルテーブル140aを次元圧縮した次元圧縮単語ベクトルテーブル140bを生成し、テキストファイル10Aを圧縮する場合に、圧縮ベクトルと、圧縮ベクトルに対応する同義語、同義文の出現位置を定義した同義語インデックス140d、同義文インデックス140eを生成する。同義語インデックス140dは、同一の同義語に属する各単語に、同一の圧縮ベクトルを割当て、圧縮ベクトルに対応する単語(同義語)が出現する位置を定義した情報である。また、同義文インデックス140eは、同一の同義文に属する各文に、同一の圧縮ベクトルを割当て、圧縮ベクトルに対応する文(同義文)が出現する位置を定義した情報である。このため、それぞれの単語や文に200次元のベクトルを割り当てる方法と比較して、データ量を削減することができる。
図2の説明に移行する。情報処理装置の抽出部150dは、検索クエリ20Aを受け付けると、次元圧縮単語ベクトルテーブル140bを基にして、特徴単語21と、特徴文22とを抽出する。
たとえば、抽出部150dは、検索クエリ20Aに含まれる複数の文の圧縮ベクトルを算出する。まず、抽出部150dは、一つの文に含まれる複数の単語の圧縮ベクトルを、次元圧縮単語ベクトルテーブル140bから取得し、取得した単語の圧縮ベクトルを、200次元のベクトルに復元する。
抽出部150dは、200次元に成分分解された各基底ベクトルを円状に等分に分散配置する。抽出部150dは、次元圧縮部150bで選択された素数「3」で分割された3つの素数「1」、「67」、「131」の基底ベクトル以外の、一つの基底ベクトルを選択し、選択した基底ベクトルに対し、素数「1」、「67」、「131」の基底ベクトルを直交変換した値を積算することで、選択した一つの基底ベクトルの値を算出する。たとえば、抽出部150dは、「2~66、68~130、132~200」に対応する各基底ベクトルに対して、上記処理を繰り返し実行する。上記処理を行うことで、抽出部150dは、検索クエリ20Aに含まれる各単語の圧縮ベクトルを、200次元のベクトルに復元する。
続いて、抽出部150dは、一つの文に含まれる複数の単語のベクトルを積算することで、文のベクトルを算出する。抽出部150dは、検索クエリ20Aに含まれる他の文についても同様に、文のベクトルを算出する。
抽出部150dは、検索クエリ20Aに含まれる複数の文のベクトルを積算することで、検索クエリ20Aのベクトルを算出する。以下の説明では、検索クエリ20Aのベクトル(200次元)を「クエリベクトル」と表記する。
抽出部150dは、クエリベクトルの各次元の値を降順にソートし、上位の数次元を特定する。以下の説明では、上位の数次元を「特徴次元」と表記する。抽出部150dは、検索クエリ20Aに含まれる複数の文のうち、特徴次元のベクトルの値を多く含む文を、特徴文22として抽出する。また、抽出部150dは、検索クエリ20Aに含まれる複数の単語のうち、特徴次元のベクトルの値を多く含む単語を、特徴単語21として抽出する。
特定部150eは、特徴単語21の圧縮ベクトルと、同義語インデックス140dの圧縮ベクトルとを比較して、特徴単語21の圧縮ベクトルとの類似度が閾値以上となる同義語インデックス140dの圧縮ベクトルを特定する。特定部150eは、特定した圧縮ベクトルに対応するオフセットを基にして、特徴単語21に対応するテキスト圧縮ファイルを、複数のテキスト圧縮ファイル10Bから検索し、検索したテキスト圧縮ファイルを、第1候補リスト31として生成する。
特定部150eは、特徴文22の圧縮ベクトルと、同義文インデックス140eの圧縮ベクトルとを比較して、特徴文22の圧縮ベクトルとの類似度が閾値以上となる同義文インデックス140eの圧縮ベクトルを特定する。特定部150eは、特定した圧縮ベクトルに対応するオフセットを基にして、特徴文22に対応するテキスト圧縮ファイルを、複数のテキスト圧縮ファイル10Bから検索し、検索したテキスト圧縮ファイルを、第2候補リスト32として生成する。
上記のように、情報処理装置は、検索クエリ20Aが与えられた場合に、検索クエリ20Aの特徴次元を特定し、特徴次元のベクトルの値を多く含む特徴単語21および特徴文22を特定する。情報処理装置は、特徴単語21の圧縮ベクトルと、同義語インデックス140dとを基にして、第1候補リスト31を生成する。情報処理装置は、特徴文22の圧縮ベクトルと、同義文インデックス140eとを基にして、第2候補リスト32を生成する。特徴単語21、特徴文22、同義語インデックス140d、同義文インデックス140eで用いられる圧縮ベクトルは、3次元のベクトルであるため、類似度計算のコストを抑えつつ、検索クエリ20Aに類似する単語、文を含むテキスト圧縮ファイルを検出することができる。
次に、本実施例に係る情報処理装置の構成の一例について説明する。図3は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。図3に示すように、この情報処理装置100は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150とを有する。
通信部110は、ネットワーク等を介して、図示しない外部装置とデータ通信を実行する処理部である。通信部110は、通信装置に対応する。たとえば、通信部110は、外部装置から、テキストファイル10A、辞書情報15、検索クエリ20A等の情報を受信してもよい。
入力部120は、情報処理装置100に各種の情報を入力するための入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。たとえば、利用者は、入力部120を操作して、検索クエリ20Aを入力してもよい。
表示部130は、制御部150から出力される各種の情報を表示する表示装置である。表示部130は、液晶ディスプレイ、タッチパネル等に対応する。たとえば、表示部130は、特定部150eにより特定される第1候補リスト31、第2候補リスト32を表示する。
記憶部140は、テキストファイル10A、テキスト圧縮ファイル10B、単語ベクトルテーブル140a、次元圧縮単語ベクトルテーブル140b、単語インデックス140c、同義語インデックス140d、同義文インデックス140eを有する。記憶部140は、文ベクトルテーブル140f、動的辞書140g、辞書情報15、検索クエリ20A、第1候補リスト31、第2候補リスト32を有する。記憶部140は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
テキストファイル10Aは、複数の文を含む情報である。文は、複数の単語を含む情報である。たとえば、文と文は、句読点、ピリオド等によって区切られる。本実施例では、記憶部140に、複数のテキストファイル10Aが登録される。
テキスト圧縮ファイル10Bは、テキストファイル10Aを圧縮した情報である。たとえば、辞書情報15に基づいて、テキストファイル10Aを単語単位で圧縮することで、テキスト圧縮ファイル10Bが生成される。
単語ベクトルテーブル140aは、単語毎のベクトルの情報を保持するテーブルである。図4は、単語ベクトルテーブルのデータ構造の一例を示す図である。図4に示すように、単語ベクトルテーブル140aは、単語IDと、単語のベクトルとを対応付ける。単語IDは、単語を一意に識別するものである。なお、単語IDの代わりに、辞書情報15等で定義された単語の符号を利用してもよい。ベクトルは、Word2Vec等を用いて予め算出されたベクトルであり、たとえば、200次元のベクトルとする。
次元圧縮単語ベクトルテーブル140bは、次元圧縮した各単語の圧縮ベクトルの情報を保持するテーブルである。図5は、次元圧縮テーブルのデータ構造の一例を示す図である。図5に示すように、次元圧縮単語ベクトルテーブル140bは、単語IDと、単語の圧縮ベクトルとを対応付ける。なお、単語IDの代わりに、単語の符号を利用してもよい。
単語インデックス140cは、単語の符号(あるいは、単語ID)と、かかる単語IDの位置(オフセット)とを対応付けるものである。図6は、単語インデックスのデータ構造の一例を示す図である。図6に示す単語インデックス140cにおいて、横軸はテキスト圧縮ファイル10Bのオフセットを示す。縦軸は単語IDに対応する。たとえば、単語ID「A01」の行と、オフセット「2」の列との交差する部分にフラグ「1」が立っている。このため、単語ID「A01」の単語の符号は、テキスト圧縮ファイル10Bのオフセット「2」に位置することを示す。
本実施例で用いるオフセットは、複数のテキスト圧縮ファイル10Bを順に連結した場合のオフセットであって、先頭のテキスト圧縮ファイル10Bからのオフセットを示す。図示を省略するが、テキスト圧縮ファイル間の切れ目となるオフセットは、単語インデックス140cに設定されているものとする。後述する、同義語インデックス140dのオフセット、同義文インデックス140eのオフセットも同様である。
同義語インデックス140dは、単語の圧縮ベクトルと、かかる圧縮ベクトルに対応する単語の符号の位置(オフセット)とを対応付けるものである。図7は、同義語インデックスのデータ構造の一例を示す図である。図7に示す同義語インデックス140dにおいて、横軸はテキスト圧縮ファイル10Bのオフセットを示す。縦軸は単語の圧縮ベクトルに対応する。同一の同義語に属する複数の単語には、同一の圧縮ベクトルが割り当てられる。たとえば、同義語の圧縮ベクトル「W3_Vec1」の行と、オフセット「1」、「6」との交差する部分にフラグ「1」が立っている。このため、圧縮ベクトル「W3_Vec1」の同義語に属する複数の単語の符号のうち、いずれかの符号が、テキスト圧縮ファイル10Bのオフセット「1」、「6」に位置することを示す。なお、同義語の圧縮ベクトルの各次元は、一定の閾値で分割されているため、圧縮ベクトルは一定の粒度を持っている。
同義文インデックス140eは、文の圧縮ベクトルと、かかる圧縮ベクトルに対応する文の位置(オフセット)とを対応付けるものである。テキスト圧縮ファイル10Bの文の位置は、文に含まれる単語の符号にうち、先頭の単語の符号の位置とする。図8は、同義文インデックスのデータ構造の一例を示す図である。図8に示す同義文インデックス140eにおいて、横軸はテキスト圧縮ファイル10Bのオフセットを示す。縦軸は、文の圧縮ベクトルに対応する。同一の意味となる同義文に属する複数の文には、同一の圧縮ベクトルが割り当てられる。たとえば、同義文の圧縮ベクトル「S3_Vec1」の行と、オフセット「3」、「30」との交差する部分にフラグ「1」が立っている。このため、圧縮ベクトル「S3_Vec1」の同義文に属する複数の文のうち、いずれかの文の先頭の単語の符号が、テキスト圧縮ファイル10Bのオフセット「3」、「30」に位置することを示す。なお、同義文の圧縮ベクトルの各次元は、一定の閾値で分割されているため、圧縮ベクトルは一定の粒度を持っている。
文ベクトルテーブル140fは、文の圧縮ベクトルの情報を保持するテーブルである。動的辞書140gは、圧縮符号化の時に出現した低頻度な単語や辞書情報15に未登録な単語と符号を動的に対応付ける情報である。辞書情報15は、単語と符号とを対応付ける情報(静的辞書)である。
検索クエリ20Aは、検索対象となる文の情報を有する。検索クエリ20Aは、複数の文を有するテキストファイルであってもよい。
第1候補リスト31は、検索クエリ20Aから抽出される特徴単語21を基に検出されるテキスト圧縮ファイル10Bを有するリストである。
第2候補リスト32は、検索クエリ20Aから抽出される特徴文22を基に検出されるテキスト圧縮ファイル10Bを有するリストである。
図3の説明に戻る。制御部150は、受付部150aと、次元圧縮部150bと、生成処理部150cと、抽出部150dと、特定部150eと、グラフ生成部150fとを有する。制御部150は、CPUやMPU(Micro Processing Unit)などによって実現できる。また、制御部150は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
受付部150aは、通信部110または入力部120から、各種の情報を受け付ける処理部である。受付部150aは、複数のテキストファイル10Aを受け付けた場合、複数のテキストファイル10Aを記憶部140に登録する。受付部150aは、検索クエリ20Aを受け付けた場合、検索クエリ20Aを記憶部140に登録する。
次元圧縮部150bは、単語ベクトルテーブル140aの各単語のベクトルを次元圧縮することで、次元圧縮単語ベクトルテーブル140bを生成する処理部である。図9Aは、基底ベクトルの分散配置を説明するための図である。まず、次元圧縮部150bは、200次元に成分分解された、200本の基底ベクトルaiei(i=1~200)を円状(半円状)に等分に分散配置する。なお、成分分解前のベクトルAと、成分分解された各基底ベクトルaieiとの関係は、式(1)によって定義される。
図9Aに示すように、次元圧縮部150bは、200本の基底ベクトルa1e1~a200e200に対して、正(実線+円形矢印)を右側半円、負(点線+円形矢印)を左側半円に分散配置する。各基底ベクトルのなす角度は均等であるものとする。たとえば、次元圧縮部150bは、基底ベクトルa1e1~a200e200から、素数「3」で分割された素数の基底ベクトルを選択する。本実施例では一例として、次元圧縮部150bは、基底ベクトルa1e1と、基底ベクトルa67e67と、基底ベクトルa131e131とを選択する。
図9Bは、次元圧縮を説明するための図である。まず、次元圧縮部150bは、基底ベクトルa1e1に対して、残りの基底ベクトルa2e2~a200e200をそれぞれ直交変換し、直交変換した各基底ベクトルa2e2~a200e200の値を積算することで、基底ベクトルa1e1の値を算出する。
次元圧縮部150bは、図9Bに示すように、基底ベクトルa67e67に対して、残りの基底ベクトルa1e1(実線+矢印)、a2e2、a3e3~a66e66、a68e68~a200e200をそれぞれ直交変換し、直交変換した各基底ベクトルa1e1~a66e66、a68e68~a200e200の値を積算することで、基底ベクトルa67e67の値を算出する。
次元圧縮部150bは、基底ベクトルa131e131に対して、残りの基底ベクトルa1e1~a130e130、a132e132~a200e200をそれぞれ直交変換し、直交変換した各基底ベクトルa1e1~a130e130、a132e132~a200e200の値を積算することで、基底ベクトルa131e131の値を算出する。
次元圧縮部150bは、200次元のベクトルを次元圧縮した圧縮ベクトルの各成分を「基底ベクトルa1e1の値、基底ベクトルa67e67の値、基底ベクトルa131e131の値」とする。これにより、200次元のベクトルは、素数「3」で分割された3次元のベクトルに次元圧縮することができる。なお、次元圧縮部150bは、KL展開等を用いて、次元圧縮を行ってもよい。次元圧縮部150bは、上記の次元圧縮を、単語ベクトルテーブル140aの各単語についてそれぞれ実行することで、次元圧縮単語ベクトルテーブル140bを生成する。
生成処理部150cは、複数のテキストファイル10Aを受け付け、テキストファイル10Aに含まれる文字列に対して字句解析を実行し、文字列を単語単位に分割する。生成処理部150cは、辞書情報15を基にして、複数のテキストファイル10Aに含まれる単語を、単語単位で圧縮し、複数のテキスト圧縮ファイル10Bを生成する。生成処理部150cは、テキストファイル10Aの単語と、辞書情報15とを比較して、各単語を符号に圧縮する。生成処理部150cは、テキストファイル10Aの単語のうち、辞書情報15に存在しない単語には、動的符号を割り当てて圧縮し、かかる単語と、動的符号とを動的辞書140gに登録する。
上記の圧縮符号化と同時に、生成処理部150cは、テキストファイル10Aを基にして、単語インデックス140c、同義語インデックス140d、同義文インデックス140e、文ベクトルテーブル140fを生成する。
生成処理部150cが「単語インデックス140c」を生成する処理の一例について説明する。生成処理部150cは、テキストファイル10Aの単語を先頭から走査して圧縮していく過程において、所定の単語ID(単語の符号)にヒットした場合、先頭からのオフセットを特定し、特定したオフセットと、単語IDとの交差する単語インデックス140cの部分にフラグ「1」を設定する。生成処理部150cは、上記処理を繰り返し実行することで、単語インデックス140cを生成する。単語インデックス140cの各部分の初期値を「0」とする。
生成処理部150cが「同義語インデックス140d」を生成する処理の一例について説明する。生成処理部150cは、テキストファイル10Aの単語を先頭から走査して圧縮していく過程において、圧縮する単語に対応する圧縮ベクトルを、次元圧縮単語ベクトルテーブル140bから取得する。以下の説明では、この取得した圧縮ベクトルを、適宜、「対象圧縮ベクトル」と表記する。
生成処理部150cは、対象圧縮ベクトルと、同義語インデックス140dの一定の粒度を持つ各同義語の圧縮ベクトルとの類似度を算出し、同義語インデックス140dの各圧縮ベクトルのうち、対象圧縮ベクトルとの類似度が最大となる圧縮ベクトルを特定する。生成処理部150cは、同語義インデックス140dにおいて、特定した圧縮ベクトルの行と、対象圧縮ベクトルの単語のオフセットの列との交差する部分にフラグ「1」を設定する。
たとえば、生成処理部150cは、式(2)を基にして、圧縮ベクトルの類似度を算出する。式(2)では、ベクトルAと、ベクトルBとの類似度を算出し、圧縮ベクトルの類似度を評価する場合を示すものである。
生成処理部150cは、上記処理を繰り返し実行することで、同義語インデックス140dを生成する。なお、同義語インデックス140dの各部分の初期値を「0」とする。
生成処理部150cが「同義文インデックス140e」を生成する処理の一例について説明する。生成処理部150cは、テキストファイル10Aの単語を先頭から走査して圧縮していく過程において、1つの文の先頭の単語(符号)から、かかる1つの文の終端の単語(符号)までの各単語(符号)の圧縮ベクトルを、次元圧縮単語ベクトルテーブル140bから取得し、取得した各圧縮ベクトルを積算することで、1つの文の圧縮ベクトルを算出する。なお、文の先頭の単語は、文章の最初の単語、または、句読点の次の単語である。文の終端の単語は、句読点の前の単語である。以下の説明では、算出した文の圧縮ベクトルを、適宜、「対象圧縮ベクトル」と表記する。
生成処理部150cは、対象圧縮ベクトルと、同義文インデックス140eの一定の粒度を持つ各同義文の圧縮ベクトルとの類似度を算出し、同義文インデックス140eの各圧縮ベクトルのうち、対象圧縮ベクトルとの類似度が最大となる圧縮ベクトルを特定する。生成処理部150cは、式(2)を基にして、対象圧縮ベクトルと、各圧縮ベクトルとの類似度を算出する。生成処理部150cは、同語文インデックス140eにおいて、特定した圧縮ベクトルの行と、対象圧縮ベクトルに対する文の先頭の単語のオフセットの列との交差する部分にフラグ「1」を設定する。
生成処理部150cは、上記処理を繰り返し実行することで、同義文インデックス140dを生成する。なお、同義文インデックス140eの各部分の初期値を「0」とする。
ところで、生成処理部150cは、単語インデックス140c、同義語インデックス140d、同義文インデックス140eを生成するとき、演算量を削減するために、式(2)を使用せずに、一定の粒度を持つ圧縮ベクトルのそれぞれの基底ベクトルの閾値に対応付けてもよい。また、情報量を削減するために、各転置インデックス140c,140d,140eをそれぞれハッシュ化してもよい。
図10は、転置インデックスをハッシュ化する処理の一例を説明するための図である。図10で説明する例では、32ビットレジスタを想定し、「29」と「31」の素数(底)を基に、単語インデックス140cの各行のビットマップをハッシュ化する。ここでは、一例として、ビットマップb1から、ハッシュ化ビットマップh11およびハッシュ化ビットマップh12を生成する場合について説明する。
ビットマップb1は、単語インデックス(たとえば、図6に示した単語インデックス140c)のある行を抽出したビットマップを示すものとする。ハッシュ化ビットマップh11は、底「29」によりハッシュ化されたビットマップである。ハッシュ化ビットマップh12は、底「31」によりハッシュ化されたビットマップである。
生成処理部150cは、ビットマップb1の各ビットの位置を、1つの低で割った余りの値を、ハッシュ化ビットマップの位置と対応付ける。生成処理部150cは、該当するビットマップb1のビットの位置に「1」が設定されている場合には、対応付けられたハッシュ化ビットマップの位置に「1」を設定する処理を行う。
ビットマップb1から、底「29」のハッシュ化ビットマップh11を生成する処理の一例について説明する。はじめに、生成処理部150cは、ビットマップb1の位置「0~28」の情報を、ハッシュ化ビットマップh11にコピーする。続いて、ビットマップb1のビットの位置「35」を、低「29」で割った余りは「6」となるので、ビットマップb1の位置「35」は、ハッシュ化ビットマップh11の位置「6」と対応付けられる。生成処理部150cは、ビットマップb1の位置「35」に「1」が設定されているため、ハッシュ化ビットマップh11の位置「6」に「1」を設定する。
ビットマップb1のビットの位置「42」を、低「29」で割った余りは「13」となるので、ビットマップb1の位置「42」は、ハッシュ化ビットマップh11の位置「13」と対応付けられる。生成処理部150cは、ビットマップb1の位置「42」に「1」が設定されているため、ハッシュ化ビットマップh11の位置「13」に「1」を設定する。
生成処理部150cは、ビットマップb1の位置「29」以上の位置について、上記処理を繰り返し実行することで、ハッシュ化ビットマップh11を生成する。
ビットマップb1から、底「31」のハッシュ化ビットマップh12を生成する処理の一例について説明する。はじめに、生成処理部150cは、ビットマップb1の位置「0~30」の情報を、ハッシュ化ビットマップh12にコピーする。続いて、ビットマップb1のビットの位置「35」を、低「31」で割った余りは「4」となるので、ビットマップb1の位置「35」は、ハッシュ化ビットマップh12の位置「4」と対応付けられる。生成処理部150cは、ビットマップb1の位置「35」に「1」が設定されているため、ハッシュ化ビットマップh12の位置「4」に「1」を設定する。
ビットマップb1のビットの位置「42」を、低「31」で割った余りは「11」となるので、ビットマップb1の位置「42」は、ハッシュ化ビットマップh12の位置「11」と対応付けられる。生成処理部150cは、ビットマップb1の位置「42」に「1」が設定されているため、ハッシュ化ビットマップh12の位置「11」に「1」を設定する。
生成処理部150cは、ビットマップb1の位置「31」以上の位置について、上記処理を繰り返し実行することで、ハッシュ化ビットマップh12を生成する。
生成処理部150cは、単語インデックス140cの各行について上記の折り返し技術による圧縮を行うことで、単語インデックス140cをハッシュ化する。なお、底「29」、「31」のハッシュ化ビットマップは、生成元のビットマップの行(符号化された単語の種別)の情報が付与される。図10では、生成処理部150cが、単語インデックス140cをハッシュ化する場合について説明したが、同義語インデックス140d、同義文インデックス140eについても同様に、ハッシュ化する。
図3の説明に戻る。抽出部150dは、検索クエリ20Aに含まれる複数の文の圧縮ベクトルを算出する。まず、抽出部150dは、一つの文に含まれる複数の単語の圧縮ベクトルを、次元圧縮単語ベクトルテーブル140bから取得し、取得した単語の圧縮ベクトルを、200次元のベクトルに復元する。次元圧縮単語ベクトルテーブル140bの圧縮ベクトルは、基底ベクトルa1e1の値、基底ベクトルa67e67の値、基底ベクトルa133e133の値をそれぞれ次元の値とするベクトルである。
図11は、次元復元を説明するための図である。図11では一例として、素数「3」で分割された基底ベクトルa1e1、基底ベクトルa67e67、基底ベクトルa131e131を基にして、基底ベクトル基底ベクトルa45e45の値を復元する場合について説明する。抽出部150dは、基底ベクトルa45e45に対し、基底ベクトルa1e1、基底ベクトルa67e67、基底ベクトルa131e131を直交変換した値を積算することで、基底ベクトルa45e45の値を復元する。
抽出部150dは、他の基底ベクトルについても、基底ベクトルa45e45と同様にして、上記処理を繰り返し実行することで、3次元の圧縮ベクトルを、200次元のベクトルに復元する。
続いて、抽出部150dは、次元圧縮単語テーブル140bを用いて、一つの文に含まれる複数の単語のベクトルを積算することで、文のベクトルを算出する。抽出部150dは、検索クエリ20Aに含まれる他の文についても同様に、文のベクトルを算出する。また、抽出部150dは、検索クエリ20Aに含まれる複数の文のベクトルを積算することで、検索クエリ20Aの「クエリベクトル」を算出する。
抽出部150dは、クエリベクトルの各次元の値を降順にソートし、上位の「特徴次元」を特定する。抽出部150dは、検索クエリ20Aに含まれる複数の文のうち、特徴次元のベクトルの値を多く含む文を、特徴文22として抽出する。また、抽出部150dは、検索クエリ20Aに含まれる複数の単語のうち、特徴次元のベクトルの値を多く含む単語を、特徴単語21として抽出する。抽出部150dは、特徴単語21の情報および特徴文22の情報を、特定部150eに出力する。
特定部150eは、特徴単語21の圧縮ベクトルと、同義語インデックス140dの圧縮ベクトルとを比較して、特徴単語21の圧縮ベクトルとの類似度が閾値以上となる同義語インデックス140dの圧縮ベクトルを特定する。特定部150eは、特定した圧縮ベクトルに対応するオフセットを基にして、特徴単語21に対応するテキスト圧縮ファイルを、複数のテキスト圧縮ファイル10Bから検索し、検索したテキスト圧縮ファイルを、第1候補リスト31として生成する。
特定部150eが、特徴単語21の圧縮ベクトルと、同義語インデックス140dの圧縮ベクトルとの類似度を算出する場合には、式(2)を利用する。ここで、特徴単語21の圧縮ベクトルとの類似度が閾値以上となる同義語インデックス140dの圧縮ベクトルを「類似圧縮ベクトル」と表記する。
特定部150eは、類似圧縮ベクトルが複数存在する場合、類似圧縮ベクトルを類似度の降順にソートし、類似圧縮ベクトルを類似度の大きい順にランク付けを行う。特定部150eは、第1候補リスト31を生成する場合、類似度のより大きい類似圧縮ベクトルに対応するオフセットを基にして、検索したテキスト圧縮ファイルを、第1候補リスト31に登録する。特定部150eは、ランク順に、テキスト圧縮ファイルを、第1候補リスト31に登録してもよい。
特定部150eは、特徴文22の圧縮ベクトルと、同義文インデックス140eの圧縮ベクトルとを比較して、特徴文22の圧縮ベクトルとの類似度が閾値以上となる同義文インデックス140eの圧縮ベクトルを特定する。特定部150eは、特定した圧縮ベクトルに対応するオフセットを基にして、特徴文22に対応するテキスト圧縮ファイルを、複数のテキスト圧縮ファイル10Bから検索し、検索したテキスト圧縮ファイルを、第2候補リスト32として生成する。
特定部150eは、辞書情報15と動的辞書140gとを基にして、第1候補リスト31に登録された各テキスト圧縮ファイル10Bを復号し、復号した第1候補リスト31を、表示部130に出力して表示させる。また、特定部150eは、検索クエリ20Aを送信した外部装置に、復号した第1候補リスト31を送信してもよい。
特定部150eが、特徴文22の圧縮ベクトルと、同義文インデックス140eの圧縮ベクトルとの類似度を算出する場合には、式(2)を利用する。ここで、特徴文22の圧縮ベクトルとの類似度が閾値以上となる同義文インデックス140eの圧縮ベクトルを「類似圧縮ベクトル」と表記する。
特定部150eは、類似圧縮ベクトルが複数存在する場合、類似圧縮ベクトルを類似度の降順にソートし、類似圧縮ベクトルを類似度の大きい順にランク付けを行う。特定部150eは、第2候補リスト32を生成する場合、類似度のより大きい類似圧縮ベクトルに対応するオフセットを基にして、検索したテキスト圧縮ファイルを、第2候補リスト32に登録する。特定部150eは、ランク順に、テキスト圧縮ファイルを、第1候補リスト31に登録してもよい。
特定部150eは、辞書情報15と動的辞書140gとを基にして、第2候補リスト32に登録された各テキスト圧縮ファイル10Bを復号し、復号した第2候補リスト32を、表示部130に出力して表示させる。また、特定部150eは、検索クエリ20Aを送信した外部装置に、復号した第2候補リスト32を送信してもよい。
ところで、特定部150eは、同義語インデックス140dおよび同義文インデックス140eがハッシュ化されている場合には、ハッシュ化されたビットマップを復元する。図12は、ハッシュ化されたビットマップを復元する処理を説明するための図である。ここでは一例として、特定部150eが、ハッシュ化ビットマップh11およびハッシュ化ビットマップh12を基にして、ビットマップb1を復元する場合について説明する。
特定部150eは、底「29」のハッシュ化ビットマップh11から、中間ビットマップh11’を生成する。特定部150eは、ハッシュ化ビットマップh11の位置0~28の値を、中間ビットマップh11’の位置0~28にそれぞれ、コピーする。
特定部150eは、中間ビットマップh11’の位置29以降の値については、「29」毎に、ハッシュ化ビットマップh11の位置0~28の値を、それぞれコピーする処理を繰り返し実行する。図12に示す例では、中間ビットマップh11’の位置29~43の位置に、ハッシュ化ビットマップh11の位置0~14の値を、コピーした例を示す。
特定部150eは、底「31」のハッシュ化ビットマップh12から、中間ビットマップh12’を生成する。特定部150eは、ハッシュ化ビットマップh12の位置0~30の値を、中間ビットマップh12’の位置0~30にそれぞれ、コピーする。
特定部150eは、中間ビットマップh12’の位置31以降の値については、「31」毎に、ハッシュ化ビットマップh12の位置0~30の値を、それぞれコピーする処理を繰り返し実行する。図12に示す例では、中間ビットマップh12’の位置31~43の位置に、ハッシュ化ビットマップh12の位置0~12の値を、コピーした例を示す。
特定部150eは、中間ビットマップh11’と、中間ビットマップh12’とを生成すると、中間ビットマップh11’と、中間ビットマップh12’とをAND演算することで、ハッシュ化前のビットマップb1を復元する。特定部150eは、他のハッシュ化されたビットマップについても、同様の処理を繰り返し実行することで、単語の符号に対応する各ビットマップを復元する(同義語インデックス140dおよび同義文インデックス140eを復元する)ことができる。
グラフ生成部150fは、入力部120等を介して、テキストファイル10A(あるいは、テキスト圧縮ファイル10B)の指定を受け付けると、指定されたテキストファイル10Aを基にして、グラフ情報を生成する処理部である。図13は、グラフ情報の一例を示す図である。図13に示すグラフG10は、テキストファイル10Aに含まれる各単語の圧縮ベクトルに対応する位置とその単語の分散状態を示すグラフである。グラフG11は、テキストファイル10Aに含まれる各文の圧縮ベクトルに対応する位置とその文の遷移状態を示すグラフである。グラフG12は、テキストファイル10Aの複数の文ベクトルを合算した圧縮ベクトルに対応する位置を示すグラフである。グラフG10~G12の横軸は、圧縮ベクトルのうち、第1の次元に対応する軸であり、縦軸は、第2の次元(第1の次元とは異なる次元)に対応する軸である。例えば、大学のシラバス(講義概要)をグラフ化する場合には、横軸を時代や西暦、縦軸を地域や場所に関する次元とする。なお、第1の次元および第2の次元は予め設定されているものとし、その値は、3次元の圧縮ベクトルから直交変換により、それぞれが集積され変換される。
グラフ生成部150fが、グラフG10を生成する処理の一例について説明する。グラフ生成部150fは、テキストファイル10Aに含まれる文字列に対して字句解析を行い、先頭から順に単語を抽出する。グラフ生成部150fは、次元圧縮単語ベクトルテーブル140bと、抽出した単語とを比較して、圧縮ベクトルを特定し、特定した圧縮ベクトルから、第1の次元の値および第2の次元の値に対応するグラフG10の位置に点プロットする処理を繰り返し実行することで、グラフ10を生成する。
グラフ生成部150fが、グラフG11を生成する処理の一例について説明する。グラフ生成部150fは、テキストファイル10Aに含まれる文字列に対して字句解析を行い、先頭から順に文を抽出する。グラフ生成部150fは、文に含まれる各単語と、次元圧縮単語ベクトルテーブル140bとを比較して、単語の圧縮ベクトルを特定し、文に含まれる単語を積算することで、文の圧縮ベクトルを算出する処理を文毎に実行する。グラフ生成部150fは、各文の圧縮ベクトルについて、第1の次元の値および第2の次元の値に対応するグラフG11の位置に点プロットする処理を繰り返し実行することで、グラフ10を生成する。グラフ生成部150fは、テキストファイル10Aに含まれる、文の出現順に応じて、グラフG11の点をつなげてもよい。
グラフ生成部150fが、グラフG12を生成する処理の一例について説明する。グラフ生成部150fは、テキストファイル10Aに含まれる文字列に対して字句解析を行い、先頭から順に文を抽出する。グラフ生成部150fは、文に含まれる各単語と、次元圧縮単語ベクトルテーブル140bとを比較して、単語の圧縮ベクトルを特定し、文に含まれる単語を積算することで、文の圧縮ベクトルを算出する処理を文毎に実行する。また、グラフ生成部150fは、各文の圧縮ベクトルを積算することで、テキストファイル10Aの圧縮ベクトルを算出する。グラフ生成部150fは、テキストファイル10Aの圧縮ベクトルについて、第1の次元の値および第2の次元の値に対応するグラフG11の位置に点プロットすることで、グラフG12を生成する。
上記の説明では、グラフ生成部150fが、グラフG10~G12を別々に生成する場合について説明したが、グラフ生成部150fは、グラフG10~G12を同時に生成してもよい。たとえば、グラフ生成部150fは、テキストファイル10Aに含まれる文字列に対して字句解析を行い、先頭から順に単語を抽出して、圧縮ベクトルを特定していく過程において、文の圧縮ベクトル、テキストファイル10Aの圧縮ベクトルを合わせて算出してもよい。
次に、本実施例に係る情報処理装置100の処理手順の一例について説明する。図14は、本実施例に係る情報処理装置の処理手順を示すフローチャート(1)である。情報処理装置100の受付部150aは、テキストファイル10Aを受信して、記憶部140に登録する(ステップS101)。
情報処理装置100の次元圧縮部150bは、単語ベクトルテーブル140aを取得する(ステップS102)。次元圧縮部150bは、単語ベクトルテーブルの各ベクトルを次元圧縮することで、次元圧縮単語ベクトルテーブル140bを生成する(ステップS103)。
情報処理装置100の生成処理部150cは、テキストファイル10Aを圧縮する場合、次元圧縮単語ベクトルテーブル140bを用いて、単語インデックス140c、同義語インデックス140d、同義文インデックス140e、文ベクトルテーブル140f、動的辞書140gを生成する(ステップS104)。
生成処理部150cは、単語インデックス140c、同義語インデックス140d、同義文インデックス140e、文ベクトルテーブル140f、動的辞書140gを記憶部140に登録し、テキスト圧縮ファイル10Bを生成する(ステップS105)。
図15は、本実施例に係る情報処理装置の処理手順を示すフローチャート(2)である。情報処理装置100の受付部150aは、検索クエリ20Aを受け付ける(ステップS201)。情報処理装置100の抽出部150dは、次元圧縮単語ベクトルテーブル140bを基にして、検索クエリ20Aに含まれる各文の圧縮ベクトルを算出する(ステップS202)。
抽出部150dは、各文の圧縮ベクトルの次元を200次元に復元し、特徴次元を特定する(ステップS203)。抽出部150dは、特徴次元を基にして、特徴単語および特徴文を抽出し、特徴単語の圧縮ベクトル、特徴文の圧縮ベクトルを特定する(ステップS204)。
情報処理装置100の特定部150eは、特徴単語の圧縮ベクトルおよび同義語インデックスを基にして、第1候補リスト31を生成し、表示部130に出力する(ステップS205)。特定部150eは、特徴文の圧縮ベクトルおよび同義文インデックス140eを基にして、第2候補リスト32を生成し、表示部130に出力する(ステップS206)。
次に、本実施例に係る情報処理装置100の効果について説明する。情報処理装置100は、単語ベクトルテーブル140aを次元圧縮した次元圧縮単語ベクトルテーブル140bを生成し、テキストファイル10Aを圧縮する場合に、同義語インデックス140d、同義文インデックス140eを生成する。同義語インデックス140dは、同一の同義語に属する各単語に、同一の圧縮ベクトルを割当て、圧縮ベクトルに対応する単語(同義語)が出現する位置を定義した情報である。また、同義文インデックス140eは、同一の同義文に属する各文に、同一の圧縮ベクトルを割当て、圧縮ベクトルに対応する文(同義文)が出現する位置を定義した情報である。このため、それぞれの単語に200次元のベクトルを割り当てる従来と比較して、データ量を削減することができる。
情報処理装置100は、検索クエリ20Aが与えられた場合に、検索クエリ20Aの特徴次元を特定し、特徴次元のベクトルの値が最大となる特徴単語21および特徴文22を特定する。情報処理装置100は、特徴単語21の圧縮ベクトルと、同義語インデックス140dとを基にして、第1候補リスト31を生成する。情報処理装置100は、特徴文22の圧縮ベクトルと、同義文インデックス140eとを基にして、第2候補リスト32を生成する。特徴単語21、特徴文22、同義語インデックス140d、同義文インデックス140eで用いられる圧縮ベクトルは、3次元のベクトルであるため、類似度計算のコストを抑えつつ、検索クエリ20Aに類似する単語、文を含むテキスト圧縮ファイル10Bを検出することができる。
情報処理装置100は、テキストファイル10Aに含まれる複数の単語の圧縮ベクトルに基づくグラフG10、複数の文の圧縮ベクトルに基づくグラフG11、テキストファイル10Aの圧縮ベクトルに基づくグラフG12を生成して表示する。これによって、単語、文、テキストファイル(文章)の見える化を実現することができる。
ところで、本実施例に係る情報処理装置100は、一つの同義語インデックス140dを用いて、検索クエリ20Aから抽出される特徴単語を含むテキスト圧縮ファイル10Bを検出して、第1候補リスト31を生成していたがこれに限定されるものではない。情報処理装置100は、粒度の異なる(分類レベルの異なる)複数の同義語インデックス140dを生成し、複数の同義語インデックス140dを用いて、第1候補リスト31を生成してもよい。
図16は、生成処理部が生成する複数の同義語インデックスの一例を示す図である。図16では一例として、3つの同義語インデックス140d-1,140d-2,140d-3を生成する場合について説明する。同義語インデックス140d-1,140d-2,140d-3には、第1基準値、第2基準値、第3基準値がそれぞれ設定される。各基準値の大小関係は、第1基準値<第2基準値<第3基準値とする。同義語インデックス140d-1の粒度が最も小さく、同義語インデックス140d-2、同義語インデックス140d-3の順に、粒度が大きくなる。
生成処理部150cは、テキストファイル10Aの単語を先頭から走査して圧縮していく過程において、圧縮する単語に対応する圧縮ベクトルを、次元圧縮単語ベクトルテーブル140bから取得する処理を繰り返し実行する。
生成処理部150cは、各圧縮ベクトルの類似度をそれぞれ算出して、類似度が第1基準値以上となる圧縮ベクトルのグループを、同義語であると判定する。生成処理部150cは、同一のグループに含まれる複数の圧縮ベクトルの平均値を、同一のグループに含まれる複数の圧縮ベクトルの代表値として特定し、代表値(圧縮ベクトル)と、圧縮ベクトルに対応する単語のオフセットとを基にして、同義語インデックス140d-1にフラグ「1」を設定する。生成処理部150cは、各グループについて上記処理を繰り返し実行することで、同義語インデックス140d-1に各フラグを設定する。
生成処理部150cは、各圧縮ベクトルの類似度をそれぞれ算出して、類似度が第2基準値以上となる圧縮ベクトルのグループを、同義語であると判定する。生成処理部150cは、同一のグループに含まれる複数の圧縮ベクトルの平均値を、同一のグループに含まれる複数の圧縮ベクトルの代表値として特定し、代表値(圧縮ベクトル)と、圧縮ベクトルに対応する単語のオフセットとを基にして、同義語インデックス140d-2にフラグ「1」を設定する。生成処理部150cは、各グループについて上記処理を繰り返し実行することで、同義語インデックス140d-2に各フラグを設定する。
生成処理部150cは、各圧縮ベクトルの類似度をそれぞれ算出して、類似度が第3基準値以上となる圧縮ベクトルのグループを、同義語であると判定する。生成処理部150cは、同一のグループに含まれる複数の圧縮ベクトルの平均値を、同一のグループに含まれる複数の圧縮ベクトルの代表値として特定し、代表値(圧縮ベクトル)と、圧縮ベクトルに対応する単語のオフセットとを基にして、同義語インデックス140d-3にフラグ「1」を設定する。生成処理部150cは、各グループについて上記処理を繰り返し実行することで、同義語インデックス140d-3に各フラグを設定する。
特定部150eは、抽出部150dから抽出される特徴単語21の圧縮ベクトルと、同義語インデックス140d-1~140d-3を比較し、特徴単語21の圧縮ベクトルとの類似度が閾値以上となる圧縮ベクトルを、同義語インデックス140d-1~140d-3から特定する。
特定部150eは、特徴単語21の圧縮ベクトルとの類似度が閾値以上となる同義語インデックス140d-1の圧縮ベクトルのオフセットを基にして、オフセットに対応する複数のテキスト圧縮ファイル(第1のテキスト圧縮ファイル)を検索する。特定部150eは、特徴単語21の圧縮ベクトルとの類似度が閾値以上となる同義語インデックス140d-2の圧縮ベクトルのオフセットを基にして、オフセットに対応する複数のテキスト圧縮ファイル(第2のテキスト圧縮ファイル)を検索する。特定部150eは、特徴単語21の圧縮ベクトルとの類似度が閾値以上となる同義語インデックス140d-3の圧縮ベクトルのオフセットを基にして、オフセットに対応する複数のテキスト圧縮ファイル(第3のテキスト圧縮ファイル)を検索する。
特定部150eは、第1~第3のテキスト圧縮ファイルを第1候補リスト31に登録してもよいし、第1~第3のテキスト圧縮ファイルのうち、検出された数が最大となるテキスト圧縮ファイルを、第1候補リスト31に登録してもよい。
また、特定部150eは、はじめに、最も粒度の大きい同義語インデックス140d-3を用いて、テキスト圧縮ファイルの検索を行い、検索したテキスト圧縮ファイルの数が所定数未満である場合に、次に粒度の大きい同義語インデックス140d-2に切り替えて、テキスト圧縮ファイルの検索を行ってもよい。更に、特定部150eは、同義語インデックス140d-2を用いて、テキスト圧縮ファイルの検索を行い、検索したテキスト圧縮ファイルの数が所定数未満である場合に、次に粒度の大きい同義語インデックス140d-1に切り替えて、テキスト圧縮ファイルの検索を行ってもよい。このように、同義語インデックスを切り替えることで、検索結果の候補数を調整することができる。
上記の例では、同義語インデックス140dに対して、第1基準値、第2基準値、第3基準値を設定して、粒度の異なる同義語インデックス140d-1~140d-3を生成する場合について説明したが、これに限定されるものでは無い。生成処理部150cは、同義文インデックス140eに対して、第1基準値、第2基準値、第3基準値を設定し、粒度の異なる同義文インデックスをそれぞれ生成してもよい。また、利用者は、入力部120等を操作して、第1基準値、第2基準値、第3基準値を適宜、変更してもよい。生成部150cは、第1基準値、第2基準値、第3基準値の変更を受け付けた場合に、粒度の異なる同義語インデックス140d、同義文インデックス140eをそれぞれ、動的に再作成してもよい。
本実施例1に係る次元圧縮部150bは、素数「3」で分割された3つの素数「1」、「67」、「131」の基底ベクトルの値をそれぞれ算出することで、一つの単語に対して、一つの圧縮ベクトルを求めていたが、これに限定されるものではない。たとえば、次元圧縮部150bは、圧縮ベクトルを算出する場合に、複数種類の素数で分割される複数の素数の基底ベクトルを設定し、一つの単語に対して複数種類の圧縮ベクトルを算出してもよい。たとえば、次元圧縮部150bは、素数「3」で分割された3つの素数「1」、「67」、「131」基底ベクトル、素数「5」で分割された5つの素数「1」、「41」、「79」、「127」、「163」の基底ベクトル、素数「7」で分割された7つの素数「1」、「29」、「59」、「83」、「113」、「139」、「173」の基底ベクトルを算出し、一つの単語に対して、複数種類の圧縮ベクトルを、次元圧縮単語ベクトルテーブル140bに登録してもよい。そして、生成処理部150d、抽出処理部150dが、次元圧縮単語ベクトルテーブル140bを利用する場合に、いずれかの圧縮ベクトルを選択的に用いて、転置インデックスの生成や、特徴単語、特徴文の抽出を行ってもよい。
次に、本実施例に示した情報処理装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図17は、本実施例に係る情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図17に示すように、コンピュータ500は、各種演算処理を実行するCPU501と、ユーザからのデータの入力を受け付ける入力装置502と、ディスプレイ503とを有する。また、コンピュータ500は、記憶媒体からプログラム等を読み取る読み取り装置504と、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行うインタフェース装置505とを有する。コンピュータ500は、各種情報を一時記憶するRAM506と、ハードディスク装置507とを有する。そして、各装置501~507は、バス508に接続される。
ハードディスク装置507は、受付プログラム507a、次元圧縮プログラム507b、生成処理プログラム507c、抽出プログラム507d、特定プログラム507e、グラフ生成プログラム507fを有する。CPU501は、受付プログラム507a、次元圧縮プログラム507b、生成処理プログラム507c、抽出プログラム507d、特定プログラム507e、グラフ生成プログラム507fを読み出してRAM506に展開する。
受付プログラム507aは、受付プロセス506aとして機能する。次元圧縮プログラム507bは、次元圧縮プロセス506bとして機能する。生成処理プログラム507cは、生成処理プロセス506cとして機能する。抽出プログラム507dは、抽出プロセス506dとして機能する。特定プログラム507eは、特定プロセス506eとして機能する。グラフ生成プログラム507fは、グラフ生成プロセス506fとして機能する。
受付プロセス506aの処理は、受付部150aの処理に対応する。次元圧縮プロセス506bの処理は、次元圧縮部150bの処理に対応する。生成処理プロセス506cの処理は、生成処理部550cの処理に対応する。抽出プロセス506dの処理は、抽出部150dの処理に対応する。特定プロセス506eの処理は、特定部150eの処理に対応する。グラフ生成プロセス506fの処理は、グラフ生成部150fの処理に対応する。
なお、各プログラム507a~507fついては、必ずしも最初からハードディスク装置507に記憶させておかなくてもよい。例えば、コンピュータ500に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ500が各プログラム507a~507fを読み出して実行するようにしてもよい。