実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAAテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と呼ぶことができる。
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェース装置(例えばポート)を用いながら行うため、処理の主体がプロセッサとされてもよい。プログラムを動作の主体として説明された処理は、プロセッサを含む装置が行う処理としてもよい。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースから装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであってもよい。
図1は、一実施形態に係る検索システムの全体構成図である。
検索システム1は、1以上の検索クライアント10と、検索サーバ20と、検索ログサーバ30とを備える。検索クライアント10と、検索サーバ20と、検索ログサーバ30とは、例えば、ネットワーク40を介して接続されている。
ネットワーク40は、例えば、有線LAN(Local Area Network)や無線LANなどのネットワークである。
検索クライアント10は、検索支援装置の一例であり、例えば、PC(Personal Computer)によって構成されている。検索クライアント10は、CPU(Central Processing Unit)11と、メモリ12と、入出力デバイス13と、通信回路14と、記憶デバイス15と、を備えている。
通信回路14は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、ネットワーク40を介して他の装置(例えば、検索サーバ20、検索ログサーバ30)と通信する。
CPU11は、メモリ12及び/又は記憶デバイス15に格納されているプログラムに従って各種処理を実行する。
メモリ12は、例えば、RAM(RANDOM ACCESS MEMORY)であり、CPU11で実行されるプログラムや、必要な情報を記憶する。
記憶デバイス15は、例えば、ハードディスクドライブやSSD(Solid State Drive)などであり、CPU11で実行されるプログラムや、CPU11に利用されるデータを記憶する。本実施形態では、記憶デバイス15は、プログラムとして履歴検索プログラム152と、カテゴリ評価プログラム153とを記憶し、データとして操作ログテーブル151を記憶する。ここで、履歴検索プログラム152と、カテゴリ評価プログラム153とにより、検索支援プログラムが構成される。
履歴検索プログラム152は、操作ログの履歴を管理する処理と、操作ログを用いて検索する処理とを実行するプログラムである。カテゴリ評価プログラム153は、文書に対応するカテゴリを評価し、適切なカテゴリを決定する処理を実行するプログラムである。本実施形態では、カテゴリ評価プログラム153は、予め作成されたニューラルネットワークモデル(以下単にモデルという)をカテゴリごとに有し、これらモデルに対して文章内の複数の単語を入力することにより、この文章についての各カテゴリの評価を行い、各カテゴリの評価に基づいて文書のカテゴリを特定する処理を行う。なお、本実施形態では、カテゴリ評価プログラム153は、カテゴリごとに分類された文書を教師データとして、各カテゴリに対応するモデルを学習する処理を実行する。ここで、CPU11が履歴検索プログラム152を実行することにより、ログ収集部と、受付部と、検索使用カテゴリ決定部と、検索制御部と、検索ログ取得部とが構成される。また、CPU11がカテゴリ評価プログラム153を実行することにより、候補カテゴリ特定部が構成される。
操作ログテーブル151は、検索クライアント10のユーザ(利用者)による操作によって使用(参照等)したデータを特定可能なログ(操作ログ)の履歴を格納するテーブルである。操作ログテーブル151の詳細については後述する。
入出力デバイス13は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける入力装置と、ディスプレイ等の各種情報を表示出力する表示装置とを含む。
検索サーバ20は、例えば、PCによって構成されている。検索サーバ20は、CPU21と、メモリ22と、DVD−ROMドライブ23と、通信回路24と、記憶デバイス25と、を備えている。
通信回路24は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、ネットワーク40を介して他の装置(例えば、検索クライアント10、検索ログサーバ30)と通信する。
CPU21は、メモリ22及び/又は記憶デバイス25に格納されているプログラムに従って各種処理を実行する。
メモリ22は、例えば、RAMであり、CPU21で実行されるプログラムや、必要な情報を記憶する。
記憶デバイス25は、例えば、ハードディスクドライブやSSDなどであり、CPU21で実行されるプログラムや、CPU21に利用されるデータを記憶する。本実施形態では、記憶デバイス25は、プログラムとしてOS(Operating System)251と、検索プログラム252とを記憶し、データとして文書データDB(データベース)253を記憶する。
検索プログラム252は、文書データDB253から検索クライアント10から送信された検索条件に対応する文書データを検索し、検索元の検索クライアント10に検索結果を送信する。文書データDB253は、検索対象の文書データを格納する。
DVD−ROMドライブ23は、例えば、不揮発性の記録媒体の一例であるDVD−ROMに格納されたプログラムやデータを読み込むドライブである。
検索ログサーバ30は、例えば、PCによって構成されている。検索ログサーバ30は、CPU31と、メモリ32と、入出力デバイス33と、通信回路34と、記憶デバイス35と、を備えている。
通信回路34は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、ネットワーク40を介して他の装置(例えば、検索クライアント10、検索サーバ20)と通信する。
CPU31は、メモリ32及び/又は記憶デバイス35に格納されているプログラムに従って各種処理を実行する。
メモリ32は、例えば、RAMであり、CPU31で実行されるプログラムや、必要な情報を記憶する。
記憶デバイス35は、例えば、ハードディスクドライブやSSDなどであり、CPU31で実行されるプログラムや、CPU31に利用されるデータを記憶する。本実施形態では、記憶デバイス35は、プログラムとして検索ログプログラム352を記憶し、データとして検索ログテーブル351を記憶する。
検索ログプログラム352は、検索クライアント10又は検索サーバ20から送られたユーザによる検索に関するログ(検索ログ)を検索ログテーブル351に格納する処理と、検索クライアント10からの検索ログの要求に対して検索ログテーブル351から検索ログを取得して送信する処理とを実行するプログラムである。検索ログテーブル351は、複数の検索クライアント10による検索ログを格納するテーブルである。検索ログテーブル351の詳細については後述する。
入出力デバイス33は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける入力装置と、ディスプレイ等の各種情報を表示出力する表示装置とを含む。
次に、操作ログテーブル151の詳細な構成について説明する。
図2は、一実施形態に係る操作ログテーブルの構成図である。
操作ログテーブル151は、ユーザの操作に関するログ(操作ログ)を管理するテーブルである。操作ログテーブル151の操作ログ(エントリ)は、日時151aと、種別151bと、タイトル151cと、参照先151dとのフィールドを含む。日時151aには、操作が行われた日時が格納される。種別151bには、ユーザの操作対象を示す種別が格納される。種別としては、「文書」、「音声」、「プログラム」、「サイト」等がある。「文書」は、例えば、Word(登録商標)のファイル、Excel(登録商標)のファイル、テキストのファイル等の文書ファイルをユーザが使用(参照)している場合に設定され、「音声」は、ユーザが音声データを参照(視聴)している場合に設定され、「プログラム」は、ユーザがプログラムファイル(例えば、識別子が「.java」、「.c」、「.cpp」)等)を使用(編集等)している場合に設定され、「サイト」は、ユーザがサイト(サイトのウェブページ)を参照している場合に設定される。タイトル151cには、操作対象のタイトルが格納される。参照先151dには、操作対象のデータの位置(参照先)が格納される。具体的には、参照先151dには、操作対象のデータのディレクトリ及びファイル名や、操作対象のサイトのURL(Uniform Resource Locator)が格納される。なお、操作ログテーブル151には、最新の操作ログから所定の個数の操作ログを格納するようにしてもよく、或いは、最新の所定の時間範囲(例えば、30分以内)の操作ログを格納するようにしてもよい。
次に、検索ログテーブル351の詳細な構成について説明する。
図3は、一実施形態に係る検索ログテーブルの構成図である。
検索ログテーブル351は、複数のユーザの検索に関するログ(検索ログ)を管理するテーブルである。検索ログテーブル351の検索ログ(エントリ)は、日時351aと、検索カテゴリ351bとのフィールドを含む。日時351aには、検索が行われた日時が格納される。検索カテゴリ351bには、検索において検索クライアント10により追加されて使用されたカテゴリが格納される。なお、検索ログテーブル351には、最新の検索ログから所定の個数の検索ログを格納するようにしてもよく、或いは、最新の所定の時間範囲(例えば、30分以内)の検索ログを格納するようにしてもよい。
次に、検索システム1における処理動作について説明する。
図4は、一実施形態に係る学習処理のフローチャートである。
学習処理は、検索クライアント10のカテゴリ評価プログラム153(正確には、カテゴリ評価プログラム153を実行するCPU11)が各カテゴリのモデルを学習する処理であり、後述する検索処理が実行される前に実行される。なお、カテゴリ評価プログラム153に、学習したモデルをすでに用意している場合には、学習処理を行わなくてもよい。
まず、カテゴリ評価プログラム153は、学習用にカテゴリごとに分けられている文書データ(教師データ)を記憶デバイス15から取り出す(ステップS11)。なお、教師データは、他の装置から取得するようにしてもよい。例えば、「農業」とのカテゴリを評価するモデルを学習させる場合には、「農業」のカテゴリとして評価されるべき、文書「みかんの栽培」等を教師データとして用意しておく。
次いで、カテゴリ評価プログラム153は、取り出した文書内容を単語に分割し(ステップS12)、単語をカテゴリごとに仕分ける(ステップS13)。
次いで、カテゴリ評価プログラム153は、ループAの処理(ステップS14)を、各カテゴリを対象に実行する。ここで、処理対象のカテゴリを対象カテゴリということとする。
ループAにおいては、カテゴリ評価プログラム153は、対象カテゴリを評価するためのモデルを、対象カテゴリに分類された単語を用いて学習を行う(ステップS14)。
そして、すべてのカテゴリを対象に、ループAの処理を終了した場合には、カテゴリ評価プログラム153は、ループAを終了し、ループAで作成された各カテゴリを評価する各モデルの学習結果(各モデルの重み等の設定値)を記憶デバイス15に格納し(ステップS15)、学習処理を終了する。
この学習処理によると、記憶デバイス15には、各カテゴリを評価する複数のモデル(具体的には、モデルの設定値)が格納されることとなり、カテゴリ評価プログラム153は、各モデルを使用して、文書の内容がどのカテゴリかを特定することができるようになる。
次に、操作ログ格納処理について説明する。
図5は、一実施形態に係る操作ログ格納処理のフローチャートである。
操作ログ格納処理は、例えば、検索クライアント10が起動している際に逐次実行される。
検索クライアント10の履歴検索プログラム152は、入出力デバイス13を介してユーザによる操作を受け付ける(ステップS21)。次いで、履歴検索プログラム152は、受け付けた操作の内容に相当する操作ログを作成し、操作ログテーブル151に格納し(ステップS22)、操作ログ格納処理を終了する。具体的には、履歴検索プログラム152は、操作の日時、操作対象の種別、操作対象のデータのタイトル、及び操作対象のデータの位置を含む操作ログを作成して操作ログテーブル151に格納する。
次に、検索処理について説明する。
図6は、一実施形態に係る検索処理のフローチャートである。
検索処理は、検索クライアント10において、履歴検索プログラム152が入出力デバイス13を介して、ユーザから検索条件(ユーザ条件)の入力を受け付けた場合に実行が開始される。
履歴検索プログラム152は、予め設定された処理対象とする操作ログの数(1以上)だけループBの処理(ステップS31〜S43)を繰り返して実行する。
ループBにおいては、まず、履歴検索プログラム152は、処理対象とする操作ログの中の未処理の操作ログ(対象操作ログ)を操作ログテーブル151から取得する(ステップS31)。ここで、処理対象とする操作ログとしては、直近の操作ログから所定数としてもよい。次いで、履歴検索プログラム152は、対象操作ログの種別151bの値を参照することで、対象操作ログが示す操作が文書を参照であるか否かを判定する(ステップS32)。
この判定の結果、対象操作ログが示す操作が文書を参照である場合(ステップS32:YES)には、履歴検索プログラム152は、対象操作ログの参照先151dから参照先を特定し、参照先の文書の内容を取得し、取得した文書を対象にカテゴリ評価抽出処理(図7参照)を実行し(ステップS34)、カテゴリ評価抽出処理により抽出されたカテゴリを候補カテゴリと特定してメモリ12に保存する(ステップS43)。
一方、ステップS32における判定の結果、対象操作ログが示す操作が文書を参照でない場合(ステップS32:NO)には、履歴検索プログラム152は、対象操作ログが示す操作の対象がプログラム系のファイルであるか否かを判定する(ステップS35)。具体的には、履歴検索プログラム152は、操作対象のファイルの識別子が、Java(登録商標)言語のプログラムファイルであることを示す「.java」、C言語のプログラムファイルであることを示す「.c」、又は、C++のプログラムファイルであることを示す「.cpp」である場合には、操作対象がプログラム系のファイルであると判定する。
この結果、対象操作ログが示す操作の対象がプログラム系のファイルである場合(ステップS35:YES)には、履歴検索プログラム152は、ファイルの識別子に対応するプログラム言語をカテゴリとして決定し(ステップS36)、決定したカテゴリを候補カテゴリとしてメモリ12に保存する(ステップS43)。履歴検索プログラム152は、例えば、識別子が「.java」の場合には、カテゴリをJavaと決定し、識別子が「.c」の場合には、カテゴリをC言語と決定し、識別子が「.cpp」の場合には、カテゴリをC++と決定する。
一方、ステップS35における判定の結果、対象操作ログが示す操作の対象がプログラム系のファイルでない場合(ステップS35:NO)には、履歴検索プログラム152は、対象操作ログが示す操作の対象が音声系のファイルであるか否かを判定する(ステップS37)。
この結果、対象操作ログが示す操作の対象が音声系のファイルである場合(ステップS37:YES)には、履歴検索プログラム152は、対象操作ログの参照先151dから参照先を特定し、参照先の音声ファイルのデータをテキスト化し(ステップS38)、テキスト化した文書を対象にカテゴリ評価抽出処理(図7参照)を実行し(ステップS39)、カテゴリ評価抽出処理により抽出されたカテゴリを候補カテゴリとしてメモリ12に保存する(ステップS43)。
一方、ステップS37における判定の結果、対象操作ログが示す操作の対象が音声系のファイルでない場合(ステップS37:NO)には、履歴検索プログラム152は、対象操作ログが示す操作がサイトの閲覧か否かを判定する(ステップS40)。
この結果、対象操作ログが示す操作がサイトの閲覧である場合(ステップS40:YES)には、履歴検索プログラム152は、対象操作ログの参照先151dから参照先を特定し、参照先のサイトの内容(文書)を取得し(ステップS41)、取得した文書を対象にカテゴリ評価抽出処理(図7参照)を実行し(ステップS42)、カテゴリ評価抽出処理により抽出されたカテゴリを候補カテゴリとしてメモリ12に保存する(ステップS43)。
一方、ステップS40における判定の結果、対象操作ログが示す操作がサイトの閲覧でない場合(ステップS40:NO)には、履歴検索プログラム152は、処理をステップS43に進め、候補カテゴリとしては何も格納しない。
そして、処理対象とした操作ログのすべてを対象としてループBの処理を終了した場合には、履歴検索プログラム152は、ループBを終了し、検索に使用するカテゴリ(検索使用カテゴリ)を決定する検索使用カテゴリ決定処理(図8参照)を実行し(ステップS44)、検索使用カテゴリ決定処理により決定されたカテゴリをユーザ条件に追加した検索条件により検索を実行し、すなわち、検索条件を検索サーバ20に送信し(ステップS45)、処理を終了する。この結果、検索サーバ20から検索条件に対応する検索結果が返送され、履歴検索プログラム152は、検索結果を、入出力デバイス13を介して表示させる。なお、本実施形態では、履歴検索プログラム152は、検索サーバ20に検索条件を送信した場合には、その検索条件に含めた検索使用カテゴリを、検索ログサーバ30の検索ログプログラム352に送信する。
次に、カテゴリ評価抽出処理について説明する。
図7は、一実施形態に係るカテゴリ評価抽出処理のフローチャートである。
カテゴリ評価抽出処理は、図6の検索処理におけるステップS34、S39、S42に対応する処理である。
まず、カテゴリ評価プログラム153は、カテゴリ評価の対象とする文書(対象文書)の内容を単語に分割し(ステップS51)、ループCの処理(ステップS52)を評価するカテゴリの数分繰り返し実行する。
ループCにおいては、カテゴリ評価プログラム153は、評価するカテゴリの中の1つの処理対象のカテゴリ(対象カテゴリ)の評価に用いる学習済みのモデルに対して、対象文書の単語を入力することにより、対象文書の対象カテゴリに対する評価を行う(ステップS52)。
そして、すべてのカテゴリを対象としてループCの処理を終了した場合には、カテゴリ評価プログラム153は、ループCを終了し、複数のカテゴリの中で評価が最も高かったカテゴリを抽出し(ステップS53)、カテゴリ評価抽出処理を終了する。
このカテゴリ評価抽出処理によると、対象文書のカテゴリを適切に抽出することができる。
次に、検索使用カテゴリ決定処理について説明する。
図8は、一実施形態に係る検索使用カテゴリ決定処理のフローチャートである。
検索使用カテゴリ決定処理は、図6の検索処理におけるステップS44に対応する処理である。
履歴検索プログラム152は、複数の検索クライアント10において検索で使用されたカテゴリを検索ログサーバ30から取得する(ステップS61)。ここで、検索ログサーバ30から取得するカテゴリとしては、最近の所定数(1以上)の検索ログのカテゴリを取得してもよく、所定時間以内で使用された頻度が高い上位のカテゴリとしてもよい。
次いで、履歴検索プログラム152は、操作ログに基づいて決定された候補カテゴリ(ステップS43でメモリ12に保存されているカテゴリ)と、検索ログサーバ30から取得したカテゴリとに基づいて、検索に使用するカテゴリ(検索使用カテゴリ)を決定する(ステップS62)。ここで、検索使用カテゴリの決定方法としては、任意の方法を用いてもよく、例えば、直近の複数の検索ログから最も利用されているカテゴリ(高頻度利用カテゴリ)を特定し、候補カテゴリ内に、高頻度利用カテゴリと一致するものがあれば、この候補カテゴリを検索使用カテゴリに決定してもよく、また、最近の複数の検索ログのカテゴリと、候補カテゴリとの中で、数が最も多いカテゴリを検索使用カテゴリと決定してもよい。
以上説明したように、本実施形態に係る検索システム1によると、ユーザが入力した検索条件に加えて、ユーザの操作ログに基づいたカテゴリを追加させて検索させることができるので、ユーザに手間をかけさせることなく、より広範かつ適切なカテゴリを検索に使用することができ、ユーザの所望する文書を効果的に検索できる可能性が高くなる。また、他のユーザによる過去に使用されたカテゴリを用いて検索に使用するカテゴリを決定するようにしているので、検索するユーザだけでなく、過去のユーザの検索傾向に応じて適切に検索を行うことができるので、ユーザの所望する文書をより効果的に検索することができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、モデルを使用して、文書について複数のカテゴリを評価し、その文書に対応するカテゴリを抽出するようにしていたが、文書のカテゴリを抽出する方法は、モデルを使用する方法に限られず、他の任意の方法を用いてもよい。
また、上記実施形態において、検索ログサーバ30が、検索ログを、その検索をしたユーザに対応付けて管理するようにし、ステップS61において、他のユーザ(検索をしているユーザと異なるユーザ)による検索で使用された検索ログのカテゴリのみを取得するようにしてもよく、検索しているユーザと所定の関係にある他のユーザ(例えば、同じグループ(会社、組織、部署、クラス等)に属する他のユーザ)の検索ログのカテゴリのみを取得するようにしてもよい。このようにすると、ユーザと共通する検索を実行する傾向が高い他のユーザが利用したカテゴリを利用して検索することができるので、ユーザが所望する文書を検索できる可能性がより高くなる。