本実施例は、クエリ間の類似度に基づいてクエリ集合が配置される空間において任意の点が指定された場合、指定された点に対応するクエリを生成する方法および装置に関する。以下、図面を用いて実施例を説明する。
図1は、本実施例のクエリ処理システムの構成を示すブロック図である。
本実施例のクエリ処理システムは、クライアント10、ネットワーク11及び検索サーバ12を備える。
クライアント10は、ユーザが操作する端末であり、文書を検索するためのクエリをユーザが入力する装置である。クライアント10は、CPU101、メモリ102、キーボード・マウス103、ディスプレイ104、クエリ生成部105、表示制御部106、データ通信部107及びクエリ蓄積部108を有する。なお、クエリ生成部105は、検索サーバ12に配置されてもよい。
CPU101は、演算装置であり、クエリ生成部105及び表示制御部106を構成する各種プログラムを実行することによってクライアント10の機能を実装する。CPU101は、少なくとも一つのプロセッサによって構成されていれば、いかなる構成のいかなるプロセッサであってもよい。
メモリ102は、CPU101が実行するプログラム、及びプログラムを実行するために必要なデータを一時的に記憶する。図1に示すクエリ生成部105及び表示制御部106を実装するためのプログラムは、メモリ102に記憶される。
なお、クエリ生成部105及び表示制御部106は、以下に示す説明においてプログラムによって実装されるが、集積回路等の物理的な装置によって実装されてもよい。また、クエリ生成部105及び表示制御部106は、一つのプログラム、又は、三つ以上のプログラムによって実装されてもよい。
キーボード・マウス103は、ユーザからの入力を受け付けるための入力装置である。キーボード・マウス103は、入力装置であればいかなる装置でもよく、例えばタブレット端末でもよい。
ディスプレイ104は、クライアント10又は検索サーバ12による処理の結果をユーザに出力するための装置である。ディスプレイ104は、出力装置であればいかなる装置でもよい。ディスプレイ104は、クエリ系列を可視化するための後述するクエリマップを、表示制御部106の指示によって表示する。
クエリ生成部105は、クエリマップ上の任意の点からクエリを生成するプログラムと、クエリマップ上で近傍にクエリが存在しない点に該当するクエリを検索するプログラムとによって実装される機能部である。クエリ生成部105のプログラムは、必要に応じて検索サーバ12と通信し、検索サーバ12からクエリを生成するために必要なデータを収集する。
表示制御部106は、クエリマップを表示するプログラムによって実装される機能部である。クエリ生成部105からの指示に従って、クエリマップをディスプレイ104に表示する。
データ通信部107は、クライアント10がネットワーク11を介して検索サーバ12とデータ通信をするためのインターフェースであり、例えば、TCP/IPプロトコルによって通信可能なLANカードによって構成される。
クエリ蓄積部108は、キーボード・マウス103を介して入力されたクエリを、保持する記憶部である。クエリ蓄積部108は、記憶装置によって構成され、メモリ102によって実装されてもよいし、メモリ102とは異なる記憶装置によって実装されてもよい。
ネットワーク11は、LAN、WAN、又は、インターネット等、いかなるネットワークでもよい。
検索サーバ12は、検索される文書を保持する計算機であり、クライアント10から送信されるクエリに基づいて、文書を検索する。検索サーバ12は、CPU121、メモリ122、インデックス123、検索部124及びデータ通信部125を備える。
CPU121は、検索部124を構成する各種プログラムを実行することによって検索サーバ12の機能を実装する。メモリ122は、CPU121が実行するプログラム、及びプログラムを実行するために必要なデータを一時的に記憶する。
インデックス123は、クエリによって検索される文書を検索に適したデータ構造で保持する記憶媒体である。インデックス123は、例えば、磁気記憶媒体によって構成される。
検索部124は、クライアント10から送られる検索要求を受け付け、インデックス123にアクセスし、検索要求に含まれるクエリを用いてインデックス123を検索する。そして、検索部124は、クライアント10に検索結果を送信する。
図1に示す検索部124は、プログラムによって実装されるが、本実施例の検索部124は、集積回路等の物理的な装置によって実装されてもよい。
データ通信部125は、検索サーバ12がネットワーク11を介してクライアント10とデータ通信をするためのインターフェースであり、例えば、TCP/IPプロトコルによって通信可能なLANカードによって構成される。
図2は、本実施例の表示制御部106により生成されるクエリマップ20の一例を示す説明図である。
表示制御部106は、クエリ蓄積部108が保持するクエリと、クエリ生成部105による処理の結果とに基づいて、クエリマップ20をディスプレイ104に表示する。クライアント10に入力されたクエリの各々は、丸によって描かれた複数のノード21の各々に対応する。
クエリマップ20は、類似するクエリ対(クエリのペア)を近い場所に表示し、類似しないクエリ対を遠い場所に表示することによって、ユーザがこれまで入力してきたクエリの集合を示す。また、クエリマップ20は、クエリ対に包含関係がある場合、包含関係をクエリ対のリンク22によって示す。また、ノード21に表示される数字は、クエリの入力順を示す。図2に示すノード21は、数字が小さいほど入力された時期が古いことを示す。
図2に示す複数のノード21は、中心部にクエリがない空いた空間を示す。これは、空いた空間に該当するクエリを用いて、ユーザが、まだインデックス123を検索しきれていないことを示唆する。よって、空いた空間に該当するクエリをユーザに提供できれば、本実施例のクエリ生成システムは、次の検索のための有用な指針をユーザに与えることができる。
図2に示すクエリマップ20は、二次元空間(平面)によって複数のクエリの類似関係及び包含関係を表示するが、三次元空間(立体)、又は、一次元空間(線)によって複数のクエリの類似関係又は包含関係を示してもよい。以下に示すクエリマップ20は、二次元空間によってクエリを表示する。
さらに、クエリマップ20は、過去に入力されたクエリを表示する用途以外に、検索システムによる検索のために用いられてもよい。クエリマップ20が検索のために用いられる場合、クエリマップ20は、入力エリア201及びボタン202を含む。
入力エリア201は、ユーザがクエリを入力するための領域である。ボタン202は、入力エリア201に入力されたクエリを、クライアント10及び検索サーバ12に受け付けさせるために、ユーザが操作するボタンである。
このため、本実施例のクエリ処理システムは、後述するクエリを生成する処理、及び、クエリを表示する処理等のクエリマップ20に関する処理以外にも、入力されたクエリを用いて検索する処理を実行してもよく、さらに、検索結果を示す画面を表示してもよい。本実施例のクエリ処理システムは、これらの検索処理及び検索結果の表示処理を、従来の技術を用いて実行する。
以下に、ユーザによるクエリマップ20への操作によって、開始される処理を説明する。
ユーザが、入力エリア201にクエリを入力し、ボタン202をクリックした場合、検索サーバ12の検索部124は、入力されたクエリを用いてインデックス123を検索する。さらに、クエリ生成部105は、後述する図5に示すフローチャートに従って、入力されたクエリが追加された新たなクエリマップを生成する。そして、表示制御部106は、生成されたクエリマップによって、クエリマップ20を更新する。図5に処理の詳細は後述する。
また、ユーザが、クエリマップ20における任意の点をキーボード・マウス103を用いて指定し、ボタン202をクリックした場合、表示制御部106は、ユーザが指定した任意の点に対応する座標をクエリ生成部105に送る。クエリ生成部105は、後述する図10に示すフローチャートに従って、送られた座標に対応するクエリを生成する。図10の処理の詳細は後述する。
そして、クエリ生成部105は、図5に示す処理によって、生成されたクエリが追加された新たなクエリマップを生成する。そして、表示制御部106は、生成されたクエリマップによってクエリマップ20を更新する。以上により、ユーザは、クエリマップ20上の任意の点に対応するクエリを知ることができる。
また、ユーザが、入力エリア201にクエリを入力せず、かつ、クエリマップ20に任意の点を指定せずに、ボタン202をクリックした場合、クエリ生成部105は、図11に示すフローチャートに従って、周囲にクエリが存在しないクエリマップ20における点を特定する。図11の処理の詳細は後述する。
そして、クエリ生成部105は、図10の処理によって特定された点の座標に対応するクエリを生成する。そして、クエリ生成部105及び表示制御部106は、図5の処理に従って、生成されたクエリを追加された新たなクエリマップを生成し、生成されたクエリマップによってクエリマップ20を更新する。以上により、ユーザは、次に入力すべきクエリを知ることができる。
表示制御部106は、クエリ間の類似度に基づいてクエリが配置されるクエリマップ20を表示する。また、表示制御部106は、クエリ対に包含関係がある場合、包含関係があるクエリ対の間にリンク22を表示する。以下に、本実施例における包含関係、及び、類似度を説明する。
図3は、本実施例のクエリAとクエリBとの包含関係を示す説明図である。
図3は、集合301及び集合302の関係と、クエリA及びクエリBの間のリンク22とを示す。集合301は、クエリAを用いて検索部124が検索した結果の文書の集合を示す。集合302は、クエリBを用いて検索部124が検索した結果の文書の集合を示す。
集合301及び集合302の間に包含関係がある場合、本実施例において、クエリAとクエリBとには包含関係があると記載する。そして、クエリマップ20は、含むクエリ(クエリA)から含まれるクエリ(クエリB)に向けた矢印によって、リンク22を表示する(303)。
例えば、クエリAが「情報∧検索」であり、このクエリAに一つのキーワード「システム」が追加されたクエリ「情報∧検索∧システム」がクエリBである場合、クエリAとクエリBとの間には包含関係がある。
例えば、あるクエリによる検索結果が多すぎる場合、ユーザは、新たなキーワードをクエリに加えることによって、検索結果を絞り込む。このような絞込みが、包含関係を有するクエリが生成される根拠である。
一方で、あるクエリによる検索結果が少なすぎる場合、ユーザは、不要なキーワードをクエリから除くことによって、検索結果を拡張する。このような拡張が、逆向きの包含関係を有するクエリが生成される根拠である。
このように、クエリ間に包含関係がある場合、包含関係を有する複数のクエリを含むクエリ系列は、検索結果の絞込み又は拡張といった、意図的な検索行為に関連することが多い。このため、本実施例のクエリマップ20は、包含関係を明らかに表示することにより、ユーザに検索処理の状況を正確に把握させることができる。
図4は、本実施例のクエリAとクエリBとの類似関係を示す説明図である。
図4は、集合401及び集合402の関係と、クエリA及びクエリBの類似度とを示す。集合401は、クエリAを用いて検索部124が検索した結果の文書の集合を示す。集合402は、クエリBを用いて検索部124が検索した結果の文書の集合を示す。また、集合403は、集合401と集合402との積集合である。図3に示す集合301及び集合302と異なり、集合401と集合402との間に包含関係はない。
本実施例の類似度は、集合403が集合401及び集合402の各々において占める割合を示す式404によって算出される。このため、クエリAによる検索結果と、クエリBによる検索結果との重複が多いほど、クエリAとクエリBとの類似度が大きい。なお、クエリA及びクエリBが図3の包含関係にある場合、本実施例のクエリ生成部105は、類似度を最大値(1.0)に定める。
本実施例における類似度は、式404に示すとおり、クエリAによる検索結果とクエリBによる検索結果とが重複する件数の2倍を、クエリAによる検索結果の件数とクエリBによる検索結果の件数との和で除算した結果である。
次に、クエリ対の包含関係及び類似関係に基づいて、クエリ系列を本実施例の可視空間上に配置する処理を説明する。
図5は、本実施例のクエリ系列を可視化する処理を示すフローチャートである。
まず、表示制御部106が入力エリア201から新たなクエリを受け付けた場合、クエリ生成部105は、クエリ蓄積部108に保持される過去に入力されたクエリと、表示制御部106によって受け付けられたクエリとを、クエリ系列Qとして取得する(801)。
ステップ801の後、クエリ生成部105は、取得されたクエリ系列Q内の全てのクエリ対に図6に示す処理を実行する。図6に示す処理によって、クエリ生成部105は、クエリ系列Qに含まれるすべてのクエリ対の包含関係を示す包含関係の集合Rと、クエリ系列Qに含まれるすべてのクエリ対の類似度を示す類似度の集合Sとを求める(802)。図6の詳細は後述する。
ステップ802の後、クエリ生成部105は、包含関係の集合Rを簡略化する(803)。全ての包含関係がリンク22として表示された場合、クエリマップ20の表示が煩雑になる。このため、クエリ生成部105は、ステップ803によって、ユーザが把握するために最低限必要な包含関係のみを包含関係の集合Rが含むように、包含関係の集合Rを精査する。
具体的には、クエリ生成部105は、他の包含関係から推移律により得られる包含関係を、クエリマップ20のリンク22として表示させない。
例えば、包含関係の集合Rに含まれる三つのクエリx、y、zの間に、x⊆y、かつ、y⊆z、かつ、x⊆zという包含関係がある場合のステップ803における処理を以下に示す。この場合、前者の二つの包含関係(x⊆y、かつ、y⊆z)に推移律が適用された結果、クエリ生成部105は、最後の包含関係(x⊆z)を得る。このため、クエリ生成部105は、包含関係(x⊆z)を包含関係の集合Rから除くことによって、包含関係の集合Rを簡略化する。このようにして簡略化した包含関係の集合Rは、ハッセ図に相当する。
ステップ803の後、クエリ生成部105は、クエリ系列Qに含まれるクエリの各々のクエリマップ20における座標を、類似度の集合Sに基づいて決定する(804)。本実施例においてクエリ生成部105は、類似度が高いクエリ対は近い場所に配置し、類似度が低いクエリ対は遠い位置に配置するように座標を決定する。
S804における座標の決定方法には、様々な方法が知られている。本実施例におけるクエリ生成部105は、いかなる方法を用いてもよいが、以下に示す実施例では、バネモデルと呼ばれる力学モデルを用いる。
バネモデルを用いた場合、クエリ生成部105は、類似度に対応する自然長を持つバネを、全てのクエリ間に仮想的に設置する。そして、クエリ生成部105は、クエリをランダムな場所に配置し、バネによるクエリの移動を力学的にシミュレートする。
クエリ生成部105は、このバネモデルによってシミュレートした結果、類似するクエリ対は近く、類似しないクエリ対は遠い位置に配置されるクエリの座標を得ることができる。そして、クエリ生成部105は、得られたクエリの座標を、クエリマップ20における座標として決定する。
ステップ804の後、クエリ生成部105は、ステップ804において決定された座標を、表示制御部106によってクエリマップ20に描画させる(805)。ステップ805の後、表示制御部106は、各クエリの系列情報(入力された順番)をクエリマップ20に表示する(806)。表示制御部106は、クエリの系列情報を、クエリ蓄積部108及びクエリ生成部105のいずれから取得してもよい。
系列情報の表示方法にはいくつかバリエーションがある。表示方法の一つには、まず、入力された順をノード21が表示される箇所に、通し番号として表示する方法がある。この方法を用いた場合、系列情報は、図2に示すノード21のように表示される。
また、表示制御部106は、ノード21の色の濃淡、又は透明度によって、系列情報を表示してもよい。例えば、表示制御部106は、入力された順番が古いクエリほど、表示されるノード21の色を薄く表示し、または、透明度を高く表示してもよい。そして、表示制御部106は、入力された順番が新しいクエリほど、表示されるノード21の色を濃く表示し、または、透明度を低く表示してもよい。これによって、古いクエリほどクエリマップ20からフェードアウトしていくため、表示制御部106は、直近のクエリしか興味がないユーザに、効果的に検索状況を表示できる。
ステップ806の後、表示制御部106は、クエリ系列Qの各クエリによる検索結果の件数をクエリマップ20に表示する(807)。なお、検索サーバ12の検索部124、又は、クライアント10のメモリ102は、クエリ系列Qに含まれるクエリの各々を用いて検索した結果、得られた文書の件数を保持する。
検索結果の件数を表現する方法には、いくつかのバリエーションがある。表示制御部106は、ユーザがカーソルをノード21にあわせた場合、件数がポップアップされるように表示してもよいし、ノード21に件数自体を表示してもよい。また、表示制御部106は、ステップ806と同じく、ノード21の色の濃淡又は透明度によって件数を表示してもよい。
また、表示制御部106は、検索結果の文書の件数に応じた大きさのノード21を表示してもよい。これによって、ユーザは、クエリの各々によって得られる文書の件数を、直感的に把握することができる。
ステップ807の後、表示制御部106は、ステップ803において簡略化された包含関係の集合Rに基づいて、クエリ対に対応する包含関係を示すリンク22をクエリマップ20に表示する(808)。表示制御部106は、包含関係にあるクエリ対に対応するノード21間に、含む方から含まれる方に向かうリンク22を表示する。
包含関係が表示されることによって、ユーザはクエリマップ20から、過去に入力したクエリ間の関係を容易に取得することができる。
以下において、ステップ802における、クエリ対の包含関係判定処理及び類似度算出処理の詳細を説明する。
図6は、本実施例の包含関係および類似度を求める処理を示すフローチャートである。
本実施例におけるクエリは、キーワードを含む論理式である。例えば、論理式「x∧y」はキーワードx及びキーワードyの双方が存在すれば真を返す論理式である。論理式「x∨y」は、キーワードx又はキーワードyのいずれかが存在すれば真を返す論理式である。検索部124は、このような論理式が真を返すような文書を、インデックス123から検索する。
クエリ生成部105は、クエリ系列Qに含まれる複数のクエリから、クエリ対をすべて抽出する。そして、クエリ生成部105は、抽出されたクエリ対の各々に、図6に示す処理を実行する。
まず、クエリ生成部105は、クエリ系列Qから抽出されたクエリ対から一つのクエリ対を取得する(501)。ここで取得されたクエリ対は、クエリA及びクエリBであり、クエリAは、論理式Aによって指定される。また、クエリBは、論理式Bによって指定される。
S501の後、クエリ生成部105は、論理式Aと論理式Bとの各々を、従来の技術のド・モルガンの法則及び分配法則等を用い、積和標準形(加法標準形、Disjunctive normal form)に変換する。そして、クエリ生成部105は、積和標準形に変換された論理式の各々を、ベキ等律と吸収律とによって簡略化する(502)。簡略化の詳細は、図7に述べる。
S502の後、クエリ生成部105は、ステップ502において簡略化された論理式Aと論理式Bとの積(A∧B)を算出する。算出された積(A∧B)は、既に積和形であるため、クエリ生成部105は、図7の処理によって積(A∧B)の簡略化のみを行う(503)。
ステップ502及び503によって、論理式A、論理式B、及び、積(A∧B)が正規化される。これによって、クエリ生成部105は、後述するステップ504及び506において、クエリAとクエリBとの包含関係を判定することができる。
ステップ503の後、クエリ生成部105は、論理式Aが積(A∧B)と等しいか否かを判定する(504)。論理式Aと積(A∧B)とが等しい場合、図3に示すとおり、クエリAは、クエリBに包含される。このため、クエリ生成部105は、A⊆Bという包含関係と類似度1.0とを出力する(505)。
論理式Aと積(A∧B)とが異なる場合、クエリ生成部105は、論理式Bが積(A∧B)と等しいか否かを判定する(506)。論理式Bと積(A∧B)とが等しい場合、クエリAは、クエリBを包含する。このため、クエリ生成部105は、A⊇Bという包含関係と類似度1.0とを出力する(507)。
論理式A及び論理式Bのいずれもが積(A∧B)と等しくない場合、クエリ生成部105は、クエリA及びクエリBに包含関係がないと判定し、クエリAとクエリBとの類似度を算出する。そして、算出された類似度のみを出力する(508)。
図4に示す式404のような類似度を算出するためには、クエリ生成部105は、クエリAによる検索結果の件数、クエリBによる検索結果の件数、積(A∧B)のクエリによる検索結果の件数が必要になる。
クエリ生成部105は、過去に検索されたクエリの検索結果の件数をあらかじめ保持してもよく、この場合、クエリA及びクエリBの各々の検索結果の件数を、あらかじめ保持された件数から取得できる。
一方で、クエリ生成部105は、クエリA及びクエリBの各々による検索結果から類推するか、または、積(A∧B)を用いてインデックス123を実際に検索するかしなければ、積(A∧B)による検索結果の件数を取得できない。一般的に、検索結果の保持、新たな論理式による再検索は、記憶容量及び計算時間の遅延の観点から望ましくないことが多い。このため、本実施例のクエリ生成部105は、以下の式1及び式2と、クエリAによる検索結果の件数と、クエリBによる検索結果の件数とを用いて、積(A∧B)のクエリによる検索結果の件数を推定する。
P(A∧B)≒P(A)*P(B) (式1)
P(A∨B)≒min{1.0,P(A)+P(B)−P(A∧B)} (式2)
式1は、論理積に対する件数の推定式であり、式2は、論理和に対する件数の推定式である。式1及び式2は、それぞれ、式の出現の独立性を仮定し、確率的に件数を推定するための式である。Pは、確率を示す。例えばP(A)は、任意の文書に対して論理式Aが真となる確率である。すなわち、P(A)は、インデックス123に格納される文書全体の数によって、論理式Aが真となる文書の数を除算した数である。
なお、本実施例において、インデックス123に格納される文書全体の数は、論理式Aによる検索の場合も論理式Bによる検索の場合も同じであり、P(A)及びP(B)等の分母は同じ値であるため、クエリ生成部105は、式1及び式2におけるPを、論理式による検索結果の件数とみなすことができる。
このため、クエリ生成部105は、式1と式2とを再帰的に適用することによって、キーワード(前述の例では、論理式Aに含まれるキーワードx及びy)による検索結果の件数を用いる式に、式404を展開することができる。よって、クエリ生成部105は、各キーワードによる検索結果の文書の件数を取得できれば、それらのキーワードを含む任意の論理式による検索結果の件数を推定できる。
一つのキーワードによる検索結果の件数は、検索サーバ12が保持する独立したインデックスによって管理されることが多い。このため、クエリ生成部105が、一つのキーワードによる検索結果の件数を、高速に検索サーバ12から取得できる場合が多い。
さらに、一つのキーワードによる検索結果の件数を取得することが難しい場合、クエリ生成部105は、すべてのキーワードの各々による検索結果の件数は同じであると仮定し、論理式全体のヒット件数を推定してもよい。本実施例の図面に示される件数等はすべて、この仮定によって算出された類似度に基づく。
以上によって、クエリ生成部105は、類似度を算出し、クエリ対の包含関係と、類似度とを出力する。そして、クエリ生成部105は、クエリ系列Qのすべてのクエリ対に図6に示す処理を実行することによって、包含関係の集合Rと類似度の集合Sとを求める。
図7は、本実施例の積和標準形の論理式の簡略化処理を示すフローチャートである。
以下において、図7に示す処理に入力される論理式を積和形Xと記載する。積和形Xは、ステップ502において論理式A及び論理式Bの各々であり、ステップ503において積(A∧B)である。
また、積和形Xにおいて、論理和によって統合される複数の論理式を、X1、X2、・・・と記載する。具体的には、積和形X=X1∨X2∨・・・である。
まず、クエリ生成部105は、積和形Xの各要素(論理式Xi:X1、X2、・・・)をベキ等律によって簡略化する(602〜607)。クエリ生成部105は、論理式X1、X2、・・・の各々に、ステップ603〜606を繰り返す。このため、クエリ生成部105は、まず、論理式X1、X2、・・・の中から、ステップ603〜606を実行されていない論理式Xiを一つ取得する(602)。
論理式Xiは、キーワード(x1、x2・・・)の論理積x1∧x2∧・・・である。ここで、論理式Xiに含まれるキーワードをxs、及び、xtと記載する。
クエリ生成部105は、論理式Xiのすべてのキーワード対(xs、xt)の各々に、ステップ604を実行する。具体的には、クエリ生成部105は、論理式Xiから、ステップ604が実行されていない、任意のキーワード対(xs、xt)を一組抽出する(603)。
クエリ生成部105は、抽出されたキーワード対(xs、xt)について、xs⊆xtが成立するか否かを判定する(604)。xs⊆xtが成立しない場合、クエリ生成部105は、ステップ603に戻り、新たなキーワード対(xs、xt)を一組抽出する。
xs⊆xtが成立する場合、クエリ生成部105は、キーワードxtを論理式Xiから削除する(605)。
ここで、本実施例において、xs⊆xtが成立する場合とは、キーワードxsとキーワードxtとが等しい場合、又は、キーワードxsがキーワードxtの部分文字列である場合である。キーワードxsがキーワードxtの部分文字列である場合、一般的に、キーワードxsによる検索結果は、キーワードxtによる検索結果に含まれるためである。このため、クエリ生成部105は、このキーワードによる検索結果の包含関係を、キーワードの文字列から判定することができる。
また、クエリ生成部105は、ステップ604において、キーワードxsとキーワードxtとを実際に検索部124に検索させ、各々のキーワードによる検索結果の包含関係を判定してもよい。
ステップ602〜607の繰返しが終了した後、クエリ生成部105は、ステップ602〜607によって簡略化された論理積X1、X2、・・・を、吸収律を用いて更に簡略化する(608〜611)。クエリ生成部105は、積和形Xから論理式Xiと論理式Xjとを一組抽出する(608)。論理式Xiと論理式Xjとは、論理積である。
クエリ生成部105は、論理式Xi=x1∧x2∧・・・、及び、論理式Xj=y1∧y2∧・・・に基づいて、論理式Xiの全てのキーワードxsについて、xs⊇ytを満たすキーワードytが論理式Xjに含まれるか否かを判定する(609)。論理式Xiの全てのキーワードxsについて、xs⊇ytを満たすキーワードytが論理式Xjに含まれる場合、クエリ生成部105は、論理式Xjを削除する。
ステップ609において、xs⊇ytが成立するか否かを判定する方法は、ステップ604における方法と同じである。
ステップ609において、論理式Xiの全てのキーワードxsについて、xs⊇ytを満たすキーワードytが論理式Xjに含まれないと判定された場合、クエリ生成部105は、ステップ608に戻り、新たな二つの論理式を積和形Xから抽出する。
以上の図7に示す処理によって、積和形X、すなわち、論理式A、論理式B、及び、積(A∧B)は、簡略化され、また、正規化される。
次に、クエリマップ20において、ユーザが任意の点を指定し、指定された点に対応するクエリを、クエリ生成部105が生成する処理を示す。
図8は、本実施例のユーザによって点が指定されたクエリマップ20を示す説明図である。
図8に示すクエリマップ20は、図2に示すクエリマップ20と同じクエリを示す。
図9は、本実施例の複数のクエリの例を示す説明図である。
図9は、通し番号が0〜19の20個のクエリを示す。図2及び図8に示すクエリマップ20は、図9に示す20個のクエリと、そのクエリの入力順とを示す。
図2及び図8は、クエリが表示されない空間がクエリマップ20の中央にあることを示す。そして、クエリマップ20は、このように空いた空間に相当するクエリが、まだ検索に用いられていないことを示す。
このため、図8に示す点1101に対応するクエリを取得できれば、本実施例のクエリ処理システムは、取得されたクエリを用いて検索することによって、クエリマップ20において空いた空間をカバーし、そして、検索対象をまんべんなく検索することができる。
このような場合、ユーザは、クエリマップ20の点1101を指定する。ユーザによって指定された点1101を、以下において点pと記載する。
図10は、本実施例の指定された点に対応するクエリを生成する処理を示すフローチャートである。
まず、クエリ生成部105は、クエリマップ20から点pの座標を取得し、クエリの所定の数K及びキーワードの所定の数Nを取得する(901)。クエリの数K及びキーワードの数Nは、あらかじめクエリ生成部105に設定されていてもよく、また、点pが指定される際にユーザによって設定されてもよい。
ステップ901の後、クエリ生成部105は、点pからの距離が近い順にK個のクエリを選択し、選択されたクエリの論理式を論理和で結合する(902)。ここで、距離とは、図5に示すステップ804において決定された座標に基づく距離であり、ステップ802において算出されたクエリ間の類似度に基づく。
クエリの数Kが10である場合、図8に示す例において、クエリ生成部105は、通し番号が2、3、4、5、11、12、16、17及び18である10個のクエリを、点pに近いクエリとして選択する。クエリ生成部105は、ステップ902において、選択されたクエリを論理和で結合した候補クエリQを生成する。
通し番号が2、3、4及び5であるクエリは、図9に示すクエリ群1201のクエリであり、通し番号が11及び12であるクエリは、図9に示すクエリ群1202のクエリであり、通し番号が16、17及び18であるクエリは、図9に示すクエリ群1203のクエリである。
なお、クエリマップ20を表示する際、それぞれのクエリは積和標準形に変換されているため(ステップ802及びステップ502による)、候補クエリQも積和標準形である。
また、クエリ生成部105は、候補クエリQを表示制御部106に、点pに対応するクエリとしてクエリマップ20に表示させてもよい。これによって、ユーザは、今まで検索されておらず、次に入力すべきクエリを取得することができ、これによって、検索対象のインデックス123を、効率よく、かつ、漏れなく検索することができる。
しかし、候補クエリQは、複雑な積和標準形であるため、クエリ生成部105は、以降の処理によって候補クエリQを簡略化する。
ステップ902の後、クエリ生成部105は、候補クエリQに含まれるキーワードの中から、候補クエリQのみに特徴的に現れるキーワードをN個選択する(903)。クエリ生成部105は、候補クエリQのみに特徴的に現れることを示す尺度として、TF−IDF法という尺度を用いてもよいし、他の方法による尺度を用いてもよい。
TF−IDF法は、与えられた集合内で出現頻度が高く、かつ、その集合外ではあまり出現しないキーワードに大きな重みを与える方法である。例えば、図9に示すクエリ群1201のクエリには、「燃焼」というキーワードがよく出現する。しかし、「燃焼」は、候補クエリQに含まれるクエリ以外のクエリには出現しない。このため、クエリ生成部105は、キーワード「燃焼」に大きい重みを割り当てる。
また、キーワード「自動」は、通し番号が17及び18のクエリに出現し、候補クエリQに含まれるクエリ以外のクエリに出現しない。このため、キーワード「自動」にも、大きい重みが割り当てられる。
また、キーワード「プラント」は、通し番号が14及び15のクエリに出現し、かつ、通し番号が16、17及び18のクエリに出現する。通し番号が14及び15のクエリは、候補クエリQに含まれておらず、通し番号が16、17及び18のクエリは、候補クエリQに含まれる。このため、キーワード「プラント」には、キーワード「燃焼」及び「自動」よりも、小さい重みが割り当てられる。
また、キーワード「報知」は、通し番号が2、3、4及び5のクエリに出現し、かつ、通し番号が0、1、6、7及び8のクエリに出現する。通し番号2、3、4及び5のクエリは、候補クエリQに含まれ、通し番号が0、1、6、7及び8のクエリは、候補クエリQに含まれない。
ここで、キーワード「報知」が候補クエリQに含まれる頻度は、候補クエリQ以外のクエリに含まれる頻度よりも少ない。一方で、キーワード「プラント」が候補クエリQに含まれる頻度は、候補クエリQ以外のクエリに含まれる頻度よりも多い。このため、キーワード「報知」には、キーワード「プラント」に割り当てられた重みよりも小さい重みが割り当てられる。
そして、キーワード「燃焼」、「自動」、「プラント」及び「報知」の中で、キーワード「報知」は、最も小さい重みが割り当てられる。
このように、クエリ生成部105は、ステップ902において選択されたクエリに含まれるキーワードに重みを割り当てられ、さらに、重みが大きい順にN個分のキーワードを選択する。キーワードの数Nが3である場合、クエリ生成部105は、例えば、キーワード「燃焼」、「自動」及び「プラント」を、ステップ903において選択する。
ステップ903の後、クエリ生成部105は、候補クエリQから、ステップ903において選択されたキーワード以外のキーワードを削除することによって、候補クエリQ1を生成する(904)。候補クエリQ1を生成することによって、クエリ生成部105は、候補クエリQを簡略化する。
図8及び図9の例において、クエリ生成部105が、通し番号が2、3、4、5、11、12、15、16、17及び18のクエリを論理和で結合した候補クエリQから、キーワード「燃焼」、「自動」及び「プラント」以外のキーワードを削除した後、通し番号が2のクエリは空になる。また、通し番号が3、4及び5のクエリは、キーワード「燃焼」のみを含む。また、通し番号が11及び12のクエリは、空になる。
また、通し番号が16、17及び18のクエリは、「プラント∨(プラント∧自動)」のクエリに変換される。この結果、クエリ生成部105は、候補クエリQを、「燃焼∨プラント∨(プラント∧自動)」の候補クエリQ1に変換する。
クエリ生成部105は、ステップ904においてさらに、この候補クエリQ1を、図7に示す処理によってさらに正規化することによって、候補クエリQ1を、「燃焼∨プラント」に変換する。
クエリ生成部105は、ステップ904において生成された候補クエリQ1を表示制御部106に、点pに対応するクエリとして表示させてもよい。これによって、ユーザは、今まで検索されておらず、次に入力すべきクエリを取得することができ、検索対象のインデックス123を、効率よく、かつ、漏れなく検索することができる。また、ユーザは、候補クエリQを提示されるよりも、簡易で理解しやすいクエリを取得することができる。
ここで、候補クエリQ1には、これまでにユーザが入力してきたキーワードしか含まれていない。しかし、点pに対応する真のクエリには、新たなキーワードが入っている可能性がある。このため、本実施例のクエリ生成部105は、以下の処理を実行することによって、真のクエリに含まれるべき新たなキーワードを特定する。
ステップ904の後、クエリ生成部105は、検索サーバ12の検索部124に、候補クエリQ1を用いてインデックス123を検索させる(905)。この検索部124による検索結果のデータ集合を、データ集合Dと記載する。データ集合Dは、例えば、検索結果によって得られた文書の内容である。
データ集合Dには、ユーザがこれまでにクエリとして入力してきたキーワード以外のキーワードも含まれる。このため、クエリ生成部105は、データ集合Dから検索式を逆生成する(906)。
検索式を逆生成する方法は、例えば、特開2012−155673号において開示される技術である。特開2012−155673号は、与えられた文書集合のみをもれなく検索できる検索式を自動生成する方法を開示する。本実施例におけるクエリ生成部105は、データ集合Dを文書集合として特開2012−155673号における処理を実行することによって、検索式を逆生成する。
クエリ生成部105は、ステップ906において逆生成された検索式を、点pに対応する候補クエリQ2として取得する。
図8及び図9に示す例において、候補クエリQ1として「燃焼∨プラント」が生成された場合を以下に示す。ここで、候補クエリQ1「燃焼∨プラント」を用いて検索部124がインデックス123を検索し、クエリ生成部105がこの検索結果から検索式を逆生成した場合、クエリ生成部105は、候補クエリQ2「燃焼∧プラント∧制御∧(ガス∨空気)」の検索式を得る。候補クエリQ2には、候補クエリQ1に含まれるキーワードの他に、新たなキーワードとして「制御」、「ガス」及び「空気」などが追加される。
ステップ906の後、クエリ生成部105は、生成された候補クエリQ2を表示制御部106に送り、表示制御部106は、図5の処理によって、送られた候補クエリQ2と既に保持するクエリとを、クエリマップ20に再描画する(907)。
再描画されたクエリマップ20は、点pの近傍に、候補クエリQ2に対応するノード21を表示する。これによって、ユーザは、今まで検索されておらず、次に入力すべきクエリを取得することができ、これによって、検索対象のインデックス123を、効率よく、かつ、漏れなく検索することができる。
また、ユーザは、今まで検索していなかったキーワードに基づくクエリを取得できるため、候補クエリQ又は候補クエリQ1よりも、より正確に指定された点に対応するクエリを取得できる。そして、これによって、さらに漏れなくインデックス123を検索することができる。
以下に、図10の処理におけるバリエーションを何点か列挙する。
まず、ステップ902のK個のクエリを選択する処理において、クエリ生成部105は、点pからの距離のみに従ってクエリを選択せず、クエリの重要度と距離とに従ってクエリを選択してもよい。クエリにはユーザが試しに入力したものもあれば、考え抜いて入力したものもあり、ユーザにとってクエリの各々の重要度は異なる。
このため、クエリの重要度が何らかの方法によって取得できる場合、クエリ生成部105は、点pからの距離と、重要度の逆数との積を算出し、算出された積の大きさの順にクエリを選択してもよい。
クエリ生成部105は、クエリの重要度を取得する方法として、例えば、ユーザがクエリを入力時に指定した(例えば、いくつかの段階を評価するなどによって指定した)重要度を取得する方法を用いてもよい。
また、クエリ生成部105は、ユーザが検索結果を調べていた時間が長いほど、当該検索結果が得られたクエリを重要度が高いクエリとして取得してもよい。また、クエリ生成部105は、検索結果のうち、実際にユーザが調べたデータの数(文書数)が多いほど、当該検索結果が得られたクエリを重要度が高いクエリとして取得してもよい。
クエリの重要度に従って、候補クエリQに含まれるクエリを選択することによって、クエリ生成部105は、ユーザにとって有用であるクエリのみを用いて候補クエリQを生成することができる。
さらに、図10の処理におけるバリエーションとして、前述のステップ902において、クエリ生成部105は、選択されたK個のクエリを論理和で結合して候補クエリQ1を生成したが、選択されたクエリを論理積によって結合してもよい。この場合、より特殊なクエリが生成されることになる。
最後に、ユーザは点pを指定せず、クエリ生成部105が、クエリマップ20においてクエリがない所定の広さの領域を抽出し、抽出された領域に対応するクエリを生成する処理を説明する。
図11は、本実施例のクエリマップ20におけるクエリがない領域を抽出する処理を示すフローチャートである。
クエリ生成部105は、クエリマップ20に表示されるクエリの集合Qを取得し、クエリマップ20における格子点間の横方向の距離W及び縦方向の距離Hを取得する。クエリ生成部105は、表示されるクエリの集合Qを、表示制御部106から取得してもよいし、クエリ蓄積部108から取得してもよい。
また、クエリ生成部105は、クエリマップ20の領域を複数の格子に分割するための、格子点間の横方向の距離W及び縦方向の距離Hを、ユーザによってあらかじめ設定されてもよい。また、クエリ生成部105は、クエリマップ20が三次元で表示される場合、格子点間の高さ方向の距離を取得してもよい。また、クエリマップ20が一次元で表示される場合、所定の距離を取得してもよい。
ステップ1001の後、クエリ生成部105は、横方向の距離W及び縦方向の距離Hを用いてクエリマップ20を格子状に区切り、複数の格子点G(=g1、g2、・・・)を仮想的に生成することによって、複数の格子点Gの各々の座標を取得する(1002)。
ステップ1002の後、クエリ生成部105は、ステップ1003〜1005を繰り返すことによって、すべての格子点Gにステップ1004を実行し、周囲に表示されるクエリが最も少ない格子点giを抽出する。具体的には、クエリ生成部105は、格子点Gから、ステップ1004を実行していない格子点giを取得する(1003)。
クエリ生成部105は、取得された格子点giと、表示制御部106によって表示されるすべてのクエリとの距離を算出する。そして、クエリ生成部105は、格子点giとクエリとの距離のうち、一番小さい距離を空隙度viとして取得する(1004)。
空隙度viの算出は、前述の方法に限定されない。例えば、格子点giから所定の距離内に存在するクエリの密度を、空隙度として算出してもよい。また、クエリ生成部105は、ステップ902においてクエリを選択した方法と同様に、クエリとの距離とクエリの重要度とに従って空隙度を算出してもよい。
クエリ生成部105は、ステップ1003〜1005を繰り返すことによって、格子点Gの各々の空隙度vを算出する。
ステップ1003〜1005の繰返しが終了した後、クエリ生成部105は、空隙度vが一番大きい格子点gを出力する(1006)。そして、この格子点gの座標を、図10における点pの座標として特定することによって、クエリ生成部105は、図10に示す処理により、自動的に抽出された格子点gに対応するクエリを生成する。
前述した図11に示す処理により、クエリ処理システムは、クエリマップ20において検索しきれていないと予想される領域を自動的に同定し、その領域に対応するクエリを次に入力すべき候補クエリQ1として、ユーザに提示することができる。更に、生成した候補クエリQ2を用いて検索し、検索結果に基づいて生成された候補クエリQ3をユーザに提示することもできる。
さらに、クエリ生成部105は、ユーザによってクエリが連続して入力され、所定の数のクエリが入力された後、それらクエリがカバーしきれていない領域を万遍なく自動探索し、その結果をユーザに提示してもよい。これによって、ユーザは、所定の数の検索を行った後、次に入力すべきクエリを提示されるため、入力すべきクエリに迷うことがない。
本実施例のクライアント10は、クエリマップ20において、ユーザによって点pが入力された場合、又は、周囲にクエリが存在しない点pが自動的に特定された場合、点pに対応するクエリを適切に出力する。これによって、本実施例のクライアント10は、これまでに検索された検索対象の領域の周辺でまだ検索しきれていない領域に対応するクエリを適切に生成することができる。そして、ユーザは、生成されたクエリを提示されることによって、特許公報又は論文などの検索において、効率良く、かつ、漏れなく検索対象を調べ尽くすことができる。
なお、前述において、インデックス123に格納される検索対象は文書であり、クエリはキーワードの論理式であるが、本発明の適用範囲はこの場合に限られない。例えば、一般のデータベースのように、検索対象が任意のデータのメタデータである場合にも適用できる。検索対象がメタデータである場合、クエリを構成する要素は、キーワードに加え、数値範囲(例えば、ある年からある年の間に出版された図書等)であってもよい。
このような一般的なデータ、および、クエリにも、クエリ間の包含関係及び類似度が定義されることによって、本実施例を適用できる。そして、クエリマップ20を作成し、クエリマップ20上の任意の点に対応するクエリを自動生成したり、クエリマップ20上を自動探索して次に発行すべきクエリを生成したりできる。
このため、本実施例は、複数のデータ集合を検索する検索システムに適用可能である。ここで、本実施例におけるデータ集合とは、例えば、文書、又は、メタデータ等であり、検索される対象(キーワード又は数値等の文字列)を複数含む集合を示す。
また、前述において、クエリ生成部105及び表示制御部106は、異なる機能部として記載したが、クエリ生成部105の一部の機能を表示制御部106が実装してもよく、また、クエリ生成部105及び表示制御部106が一つのプログラムによって実装されてもよい。
また、本発明は前述した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、上記の各構成、機能、処理部、処理手順等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、各機能を実現するプログラム、テーブル、及びファイル等の情報は、メモリ、ハードディスク、若しくは、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、若しくは、DVD等の記録媒体に置くことができる。
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。