説明

サーバ装置、ジャンルスコア算出方法およびプログラム

【課題】他のクエリのジャンルスコアを用いてジャンルスコアを算出する。
【解決手段】検索システムは、ジャンルサーバ10、検索サーバ20およびクライアント30を有する。検索システムにおいて、ジャンルサーバ10は、クライアント30からジャンル識別子が入力されると、そのジャンル識別子に対応するクエリのジャンルスコアを出力する。ジャンルサーバ10は、記憶部11、記憶部13、生成部12、呼出部14、算出部15および出力部16を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検索クエリのジャンルを推定する技術に関する。
【背景技術】
【0002】
ネットワークにおける検索サービスが用いられている。欲しい情報をより効率的に得るためには、検索サービスの利用者が複数の単語を組み合わせるなどして、より適切なクエリを作成する必要がある。利用者の利便性を向上させるため、入力されたクエリに対して推薦クエリを提供する技術が知られている(例えば、特許文献1および2)。
【0003】
特許文献1は、情報検索サーバを開示している。特許文献1において、情報検索サーバは、ユーザによる操作履歴情報(ユーザID、捜査対象、操作内容、操作回数、評価値)を含むデータベースを有する。情報検索サーバは、入力された要求情報(検索対象の商品名やジャンル名)に対し、webページ群を抽出し、抽出したwebページ群をカテゴリに分類し、ユーザに送信する(図7)。特許文献2は、検索クエリに関するスコアを算出する技術を開示している。具体的に、特許文献2は、URLを介して複数のクエリを結びつけ、クエリの組み合わせに対してスコアを算出し、スコアに基づいて一のクエリから他のクエリを推薦することを開示している(段落0077、図11)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−326537号公報
【特許文献2】特開2009−252070号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1および2に記載された技術によっても、他のクエリのジャンルスコアを用いてジャンルスコアを算出することができなかった。
これに対し本発明は、他のクエリのジャンルスコアを用いてジャンルスコアを算出する技術を提供する。
【0006】
本発明は、検索に用いられたクエリを示すクエリノードおよび前記クエリ以外の前記検索に関する他の項目を示す中継ノードを含む複数のノードをエッジで接続したグラフを取得する第1取得手段と、クエリ、前記クエリのジャンルを示すジャンル識別子 および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書の中から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得 する第2取得手段と、前記第1取得手段により取得されたグラフに含まれるクエリノードのうち前記ジャンル辞書にジャンルスコアが記載されていないクエリを示す対象ノードの中から特定されたノードを基点ノードとして 、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記第2取得手段により取得されたジャンルスコアの中から用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出する算出手段とを有するサーバ装置を提供する。
このサーバ装置によれば、他のクエリのジャンルスコアを用いてジャンルスコアを算出することができる。
【0007】
好ましい態様において、前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード 、前記第1所在情報よりも上位の第2所在情報を示す第2所在ノード、および前記検索をしたユーザ名を示すユーザノードを含み、前記中継ノードが、前記第1所在ノードであり、前記処理は、前記中継ノードとエッジで接続された前記第2所在ノードまたは前記ユーザノードとエッジで接続された他のクエリノードが示すクエリのジャンルスコアを用いて、前記基点クエリのジャンルスコアを算出する処理であってもよい。
このサーバ装置によれば、第1所在ノードよりも上位のノードで接続されたクエリノードのジャンルスコアを用いてジャンルスコアを算出することができる。
【0008】
別の好ましい態様において、前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード、および前記第1所在情報よりも上位の第2所在情報を示す第2所在ノードを含み、前記中継ノードが、前記第1所在ノードであり、前記算出手段は、前記第2所在情報毎に、前記第2所在情報と前記ジャンルとの間の相関を示すパラメータを算出し、前記処理は、前記基点ノードと関連する第2所在ノードと関連する他のクエリノードが示すクエリのジャンルスコアおよび前記パラメータを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理であってもよい。
このサーバ装置によれば、第2所在情報とジャンルとの間の相関を示すパラメータを用いてジャンルスコアを算出することができる。
【0009】
さらに別の好ましい態様において、このサーバ装置は、検索に用いられたクエリと前記検索が行われた回数である検索回数とが蓄積された検索ログを取得する第3取得手段と、クエリが入力されると検索結果を出力する検索サーバに対し、前記検索ログに含まれるクエリを入力し、前記クエリに対する検索結果を取得する第4取得手段と、前記第3取得手段により取得された検索ログおよび前記第4取得手段により取得された検索結果を用いて前記エッジの重みを推定する推定手段とを有し、前記処理は、前記基点ノードと関連する第2所在ノードと関連する他のクエリノードが示すクエリのジャンルスコアおよび前記推定された重みを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理であってもよい。
このサーバ装置によれば、検索に用いられたクエリと前記検索が行われた回数である検索回数とが蓄積された検索ログから、ジャンルスコアを算出することができる。
【0010】
また、本発明は、検索に用いられたクエリと、前記検索により閲覧された文書の所在を階層構造により示す第1所在情報とを含む複数の項目を含む検索ログを第1記憶手段に記憶するステップと、前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、クエリ、前記クエリのジャンルを示すジャンル識別子および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップとを有するジャンルスコア算出方法を提供する。
この方法によれば、他のクエリのジャンルスコアを用いてジャンルスコアを算出することができる。
【0011】
好ましい態様において、前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード、前記第1所在情報よりも上位の第2所在情報を示す第2所在ノード、および前記検索をしたユーザ名を示すユーザノードを含み、前記中継ノードが、前記第1所在ノードであり、前記処理は、前記中継ノードとエッジで接続された前記第2所在ノードまたは前記ユーザノードとエッジで接続された他のクエリノードが示すクエリのジャンルスコアを用いて、前記基点クエリのジャンルスコアを算出する処理であってもよい。
この方法によれば、第1所在ノードよりも上位のノードで接続されたクエリノードのジャンルスコアを用いてジャンルスコアを算出することができる。
【0012】
別の好ましい態様において、前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード、および前記第1所在情報よりも上位の第2所在情報を示す第2所在ノードを含み、前記中継ノードが、前記第1所在ノードであり、前記第2所在情報毎に、前記第2所在情報と前記ジャンルとの間の相関を示すパラメータを算出するステップをさらに有し、前記処理は、前記基点ノードと関連する第2所在ノードと関連する他のクエリノードが示すクエリのジャンルスコアおよび前記パラメータを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理であってもよい。
この方法によれば、第2所在情報とジャンルとの間の相関を示すパラメータを用いてジャンルスコアを算出することができる。
【0013】
さらに、本発明は、検索に用いられたクエリと、前記検索が行われた回数とを含む検索ログを第1記憶手段に記憶するステップと、クエリが入力されると検索結果を出力する検索サーバに対し、前記第1記憶手段に記憶されている検索ログに含まれるクエリを入力し、前記クエリに対する検索結果を取得するステップと、前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、前記第1記憶手段に記憶されている検索ログおよび前記取得された検索結果を用いて前記エッジの重みを推定するステップと、クエリ、前記クエリのジャンルを示すジャンル識別子および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、かつ前記推定された重みを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップとを有するジャンルスコア算出方法を提供する。
この方法によれば、検索に用いられたクエリと前記検索が行われた回数である検索回数とが蓄積された検索ログから、ジャンルスコアを算出することができる。
【0014】
さらに、本発明は、コンピュータに、検索に用いられたクエリと、前記検索により閲覧された文書の所在を階層構造により示す第1所在情報とを含む複数の項目を含む検索ログを第1記憶手段に記憶するステップと、前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、クエリ、前記クエリのジャンルを示すジャンル識別子 および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップとを実行させるためのプログラムを提供する。
このプログラムによれば、他のクエリのジャンルスコアを用いてジャンルスコアを算出することができる。
【0015】
さらに、本発明は、コンピュータに、検索に用いられたクエリと、前記検索が行われた回数とを含む検索ログを第1記憶手段に記憶するステップと、クエリが入力されると検索結果を出力する検索サーバに対し、前記第1記憶手段に記憶されている検索ログに含まれるクエリを入力し、前記クエリに対する検索結果を取得するステップと、前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、前記第1記憶手段に記憶されている検索ログおよび前記取得された検索結果を用いて前記エッジの重みを推定するステップと、クエリ、前記クエリのジャンルを示すジャンル識別子 および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、かつ前記推定された重みを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップとを実行させるためのプログラムを提供する。
このプログラムによれば、他のクエリのジャンルスコアを用いてジャンルスコアを算出することができる。
【図面の簡単な説明】
【0016】
【図1】一実施形態に係る検索システム1の構成を示す図である。
【図2】検索ログを例示する図である。
【図3】グラフを例示する図である。
【図4】グラフの生成処理を説明する図である。
【図5】ジャンル辞書を例示する図である。
【図6】ジャンルサーバ10のハードウェア構成を示す図である。
【図7】ジャンルスコア算出処理を示すフローチャートである。
【図8】この例で取得されたグラフを示す図である。
【図9】図8のグラフの付随データを示す図である。
【図10】ジャンルスコア算出処理の一例を示すフローチャートである。
【図11】ジャンルサーバ10からの出力データを例示する図である。
【図12】対比例としてのグラフを示す図である。
【図13】変形例1に係るグラフを例示する図である。
【図14】図13のグラフに付随するデータを示す図である。
【図15】変形例2に係る動作を示すフローチャートである。
【図16】変形例2に係るグラフを例示する図である。
【図17】図16のグラフに付随するデータを示す図である。
【図18】変形例3に係るグラフを例示する図である。
【図19】変形例4に係る検索システム1の構成を示す図である。
【図20】変形例4に係る検索ログを例示する図である。
【図21】検索結果を例示する図である。
【図22】算出された推定値を含むテーブルを例示する図である。
【発明を実施するための形態】
【0017】
1.構成
図1は、一実施形態に係る検索システム1の構成を示す図である。検索システム1は、ジャンルサーバ10、検索サーバ20およびクライアント30を有する。検索システム1において、ジャンルサーバ10は、クライアント30からジャンル識別子が入力されると、そのジャンル識別子に対応するクエリのジャンルスコアを出力する。
【0018】
ジャンルサーバ10は、機能要素として、記憶部11、記憶部13、生成部12(第3取得手段、第4取得手段、および推定手段の一例)、呼出部14、算出部15(第1取得手段、第2取得手段、および算出手段の一例)および出力部16を有する。記憶部11は、検索ログを記憶する。検索ログは、検索のクエリと検索の結果として閲覧された文書の識別子とを含む複数の項目のデータが蓄積されたログである。
【0019】
図2は、検索ログを例示する図である。この例で、検索ログは複数のデータセット(レコード)を含む。各データセットは、複数の項目に区分されたデータを含む。項目としては、ユーザ名、クエリ、URL(Uniform Resource Locator)、タイムスタンプ、順位、第1位URL、第2位URL、および第3位URLが用いられる。検索される文書は、インターネット上に存在する文書である。ここで、「文書」とは、HTML(HyperText Markup Language)ファイル、音声ファイル、画像ファイルその他のあらゆる形式のファイルをいう。文書の所在は、階層構造を用いた所在情報であるURL(第1所在情報の一例)によって示される。ユーザ名は、検索を行ったユーザを示す。クエリは、文書の検索に用いられた語を示す。URLは、検索により抽出された複数の文書の中からユーザが閲覧(選択)した文書の所在を示す。タイムスタンプは、検索を行った時刻を示す。順位は、ユーザが閲覧した文書の、検索結果における順位を示す。第1位URLは、検索結果において順位が第1位の文書の所在を示す。第2位URLおよび第3位URLについても同様である。図2の例で、最上行のデータセットは、ユーザ名「u1」のユーザが、2010年1月25日0時0分38秒にクエリ「q1」を用いて検索を行ったことを示している。さらに、この検索では、URL「s1」、「s2」、および「s4」の文書が、検索結果において第1−3位として提示され、ユーザは、その中からURL「s1」で示される文書(検索結果が第1位の文書)を閲覧したことが示されている。
【0020】
再び図1を参照する。生成部12は、記憶部11に記憶されている検索ログから、グラフを生成する。ここで、「グラフ」とは、複数のノードの接続関係をエッジ(リンク)により表した情報、またはその視覚的な表現をいう。
【0021】
図3は、グラフを例示する図である。丸印はノードを、実線はエッジをそれぞれ示している。この例では、クエリとドメイン(第2所在情報の一例)がノードとして用いられている。以下、クエリのノードを「クエリノード」といい、ドメインのノードを「ドメインノード」(第2所在ノードの一例)という。他のノードについても同様である。ドメインを基準にして見ると、例えば、ドメインノードd1にはクエリノードq1およびq2が接続されており、ドメインノードd2にはクエリノードq3が接続されている。あるいは、クエリを基準にして見ると、クエリノードq3にはドメインノードd2,d3,およびd5が接続されている。このグラフから、クエリq1を入力して、ドメインd1に属する文書をユーザが閲覧したことが検索ログに記録されていることが読み取れる。
【0022】
図4は、グラフの生成処理を説明する図である。ここでは、図2に示される検索ログからグラフを生成する例を説明する。図4中、上段の表は、図2の検索ログに対応している。グラフは以下のように生成される。生成部12は、記憶部11から検索ログを読み出す。生成部12は、読み出した検索ログからノードを抽出する。ここでは、ユーザ名、クエリ、URL、およびドメインがノードとして抽出される。これらの項目は、階層的に配置される。階層は、下位から順に、ユーザ名、クエリ、URL、およびドメインという構造を有している。どの項目をノードとして抽出するか、および、ノードの階層構造はあらかじめ決められている。ドメインは、URLから抽出される。URLは、「aaa://bbb.ccc.ddd/eee/fff」のように、所定の書式で階層構造が記述される。ドメインは、このうちの階層構造が上位の一部、具体的にはURLの先頭から、「://」の次の最初の「/」の前までの文字列である。この例では、「aaa://bbb.ccc.ddd」がドメインである。この例でドメインはURLより階層が上位の概念であり、単一のURLから複数のドメインが抽出されることはない(すなわち、単一のURLに複数のドメインが対応することはない)。生成部12は、データセット毎にエッジを生成する。図4の例では、第1番目のデータセットは、ユーザ名「u1」、クエリ「q1」、およびURL「s1」を含んでいる。URL「s1」からドメイン「d1」が抽出される。生成部12は、第1番目のデータセットに対し、ノードu1、ノードq1、ノードs1、およびノードd1をそれぞれエッジで接続する。エッジは、隣接する階層のノード間に設けられる。例えば、ユーザノードとクエリノードは階層が隣接しているのでエッジで接続される。ユーザノードとURLノード(第1所在ノードの一例)は階層が隣接していない(間にクエリノードが存在する)ので、エッジで直接結ばれない。図4の第2番目のデータセットは、ユーザ名「u1」、クエリ「q1」、およびURL「s2」を含んでいる。URL「s2」からドメイン「d2」が抽出される。生成部12は、第2番目のデータセットに対し、ノードu1、ノードq1、ノードs2、およびノードd2をそれぞれエッジで接続する。以下同様に、すべてのデータセットに対して、ノードがエッジで接続される。
【0023】
生成部12は、さらに、グラフに付随する付随データを検索ログから生成する。付随データは、ジャンルスコアの算出に用いられるデータを含む。付随データの詳細は後述する。
【0024】
再び図1を参照する。記憶部13は、ジャンル辞書を記憶する。ジャンル辞書は、クエリとジャンルの関連性を示すデータベースである。
【0025】
図5は、ジャンル辞書を例示する図である。ジャンル辞書は、複数のデータセットを含む。各データセットは、複数の項目に区分されたデータを含む。項目としては、クエリ、ジャンル識別子、ジャンル、およびジャンルスコアが用いられる。ジャンルは、文書の分類または種類を示す。ジャンル識別子は、ジャンルの識別子である。ジャンルスコアは、クエリとジャンルとの関連性の高さを示す。この例では、ジャンルスコアの最高点は1.00であり、最低点は0.00である。例えばジャンルスコアが1.00である場合、そのクエリとそのジャンルが高い関連性を有する。図5の第1番目のデータセットは、クエリ「q1」がジャンル「お笑い」(=ジャンル識別子「1567」)に関連しており、そのジャンルスコアが1.00であることを示している。ジャンルスコアの算出は、PageRank、HITS algorithm、SALSA、またはTrustRankその他の周知のアルゴリズムにより行われる。ジャンルスコアの算出は、ジャンルサーバ10(算出部15)によって行われてもよいし、検索サーバ20等ジャンルサーバ10以外の装置によって行われてもよい。
【0026】
再び図1を参照する。呼出部14は、クライアント30から引数としてジャンル識別子を受け取る。呼出部14は、受け取ったジャンル識別子に対応するクエリを、記憶部13に記憶されているジャンル辞書に含まれるクエリの中から抽出する。呼出部14は、抽出したクエリを算出部15に出力する。
【0027】
算出部15は、呼出部14から入力されたクエリについて、ジャンルスコアを算出する。出力部16は、算出部15により算出されたジャンルスコアをクライアント30に出力する。
【0028】
図6は、ジャンルサーバ10のハードウェア構成を示す図である。ジャンルサーバ10は、制御部110、記憶部120、入力部130、表示部140、通信部150を有する。制御部110は、他の構成要素を制御する。制御部110は、CPU(Central Processing Unit)111、RAM(Random Access Memory)112およびROM(Read Only Memory)113を有する。CPU111は、種々の演算を行う装置である。RAM112は、CPU111がプログラムを実行する際の作業エリアとして機能する記憶装置である。ROM113は、プログラムやデータを記憶する記憶装置である。記憶部120は、内蔵フラッシュメモリや、HDD(Hard Disk Drive)、着脱式のメモリカード等の不揮発性の記憶装置を含む。記憶部120は、種々のプログラムおよびデータを記憶する。制御部110が記憶部120に記憶されているジャンルスコア算出プログラムを実行することにより、図1の機能が実現される。記憶部11、記憶部13等、情報を記憶する機能は、RAM112や記憶部120に記憶領域を確保し、この記憶領域に情報を記憶する。
【0029】
入力部130は、制御部110に情報を入力する。入力部130は、キーボードおよびマウス等の入力装置を含む。表示部140は、情報を表示する。表示部140は、LCD(Liquid Crystal Display)や、ELディスプレイ等の表示装置を含む。通信部150は、ネットワークを介した通信を行う。
【0030】
ジャンルスコア算出プログラムを実行している制御部110は、生成部12、呼出部14、および算出部15の一例である。通信部150は、出力部16の一例である。制御部110と協働している記憶部120は、記憶部11および記憶部13の一例である。
【0031】
検索サーバ20は、クライアント30等の他の装置からの検索要求に応じて、検索結果を出力する。検索要求は、クエリを含む。検索結果は、そのクエリを用いて検索された文書のURLおよびその文書の順位を含む。検索サーバ20は、この機能を実現するためのハードウェア要素(CPU、ROM、RAM、記憶部、入出力部など)およびソフトウェアを有する(図示略)。
【0032】
クライアント30は、ユーザによって操作される装置、例えばパーソナルコンピュータまたは携帯電話機である。クライアント30は、ユーザから入力されたクエリを含む検索要求を検索サーバ20に送信する。クライアント30は、検索サーバ20から送信された検索結果を表示する。また、クライアント30は、ジャンル識別子を含むジャンルスコアの算出要求を、ジャンルサーバ10に送信する。クライアント30は、ジャンルサーバ10から送信されたジャンルスコアを用いて、クエリの提案を行う。クライアント30は、この機能を実現するためのハードウェア要素(CPU、ROM、RAM、記憶部、入出力部、表示部など)およびソフトウェアを有する(図示略)。
【0033】
2.動作
図7は、検索システム1におけるジャンルスコア算出処理を示すフローチャートである。この例では、図7のフローが開始される以前に記憶部13は図5に示されるジャンル辞書を記憶している。
【0034】
ステップS100において、ジャンルサーバ10は、検索ログを蓄積する。すなわち、記憶部11は、検索サーバから検索ログを受け取り、受け取った検索ログを、記憶している検索ログに追加して蓄積する。検索ログの蓄積は、検索サーバ20において検索が行われる度、または、前回の蓄積から一定期間経過後など、所定のタイミングで行われる。
【0035】
ステップS110において、呼出部14は、クライアント30からジャンル識別子を取得する。ジャンル識別子は、クライアント30から送信されるジャンルスコアの算出要求に含まれる。ここでは、呼出部14が取得したジャンル識別子が「1567」であった場合を例に説明する。この場合、呼出部14は、ジャンル辞書(図5)に含まれるデータセットの中から、取得したジャンル識別子に対応するクエリを抽出する(ステップS120)。この例では、クエリq1、q3およびq4が抽出される。呼出部14は、抽出したクエリおよびそのジャンルスコアを含むデータセットを、算出部15に出力する。
【0036】
ステップS130において、生成部12は、記憶部11に記憶されている検索ログを用いてグラフおよび付随データを生成する。
ステップS140において、算出部15は、生成部12が生成したグラフを用いて、他のクエリからジャンルスコアを伝播させることによって、対象となるクエリのジャンルスコアを算出する。詳細には以下のとおりである。まず、算出部15は、生成部12からグラフを取得する。
【0037】
図8は、この例で取得されたグラフを示す図である。この例で、グラフは、クエリノードおよびドメインノードを含んでいる。クエリノードは、クエリq1、q2、q3、およびq4のノードを含んでいる。ドメインノードは、ドメインd1、d2およびd3のノードを含んでいる。クエリノードq1は、ドメインノードd1およびd2と接続されている。クエリノードq2は、ドメインノードd1およびd2と接続されている。クエリノードq3は、ドメインノードd1と接続されている。クエリノードq4は、ドメインノードd2およびd3と接続されている。
【0038】
図9は、図8のグラフの付随データを示す図である。付随データは、複数のデータセットを含む。各データセットは、クエリ、ドメイン、ユニークユーザ数(NUU)、ユニークユーザ率(RUU)、および検索回数(Search)のデータを含む。ユニークユーザ数は、対応するクエリを用いて検索された文書のうち、対応するドメインに属する文書を閲覧したユニークユーザ数を示す。ユニークユーザとは、ある文書を特定の期間のうちに訪れた人のユニークな数をいう。同一期間内に同一人物がその文書を例えば5回閲覧した場合でも、ユニークユーザ数は1人である。図9の第1番目のデータセットは、クエリq1を用いて検索された文書のうち、ドメインd1に属する文書を閲覧したユニークユーザ数が90人であることを示している。ユニークユーザ率は、対応するクエリを用いて検索された文書のうち、対応するドメインに属する文書を閲覧したユニークユーザの割合を示す。図9の第1番目のデータセットは、クエリq1を用いて検索された文書のうち、ドメインd1に属する文書を閲覧したユニークユーザの割合が0.9(=90%)であることを示している。これは、クエリq1を用いて検索された文書を閲覧した全ユニークユーザ(90+10=100人)のうち、ドメインd1に属する文書を閲覧したユニークユーザ(90人)が占める割合である。検索回数は、対応するクエリを用いて検索が行われた回数を示す。図9の第1番目のデータセットは、クエリq1を用いて200回の検索が行われたことを示す。
【0039】
再び図7を参照し、ステップS140の処理を引き続き説明する。算出部15は、クエリおよびジャンルスコアを含むデータセットを呼出部14から取得する。ステップS130において、算出部15は、取得したデータセットに含まれるクエリのうち対象となるクエリについて、グラフの付随データを用いてジャンルスコアを算出する処理を行う。この例では、算出部15は、クエリq1、q2およびq3のそれぞれについて、ジャンルスコアを算出する。
【0040】
図10は、ステップS140のジャンルスコア算出処理の一例を示すフローチャートである。ステップS200において、算出部15は、グラフに含まれるすべてのクエリについて、ジャンルスコアの初期値を決定する。初期値は、以下のとおり決定される。まず、ステップS110において出力されたデータセットに含まれるクエリ(クエリq1、q2、q4)については、このデータセットに含まれるジャンルスコアが初期値として用いられる。次に、このデータセットに含まれないクエリ(クエリq3)、すなわち、ジャンル辞書にジャンルスコアが記載されていないクエリについては、初期値として0.00が用いられる。この例では、図5のジャンル辞書に基づいて、クエリq1−q4のジャンルスコアの初期値JSiniが次式(1)のように決定される。
【数1】

【0041】
ステップS210において、算出部15は、ジャンルスコアの伝播処理の対象となるクエリ(以下「対象クエリ」という)を特定する。算出部15は、所定の条件を満たすクエリを、対象クエリとして特定する。この例では、「ジャンルスコアの初期値がゼロである」(=ジャンル辞書にジャンルスコアが記録されてない)という条件が、対象クエリを特定する条件として用いられる。式(1)の例では、クエリq3だけが伝播処理の対象として特定され、クエリq1、q2およびq4は伝播処理の対象とはならない。ここで、「ジャンルスコアの伝播」とは、あるクエリのジャンルスコアを、他のクエリのジャンルスコアを用いて算出することをいう。例えば、クエリq1およびq3のジャンルスコアを用いてクエリq2のジャンルスコアを算出することを、「クエリq1およびq3のジャンルスコアをクエリq2に伝播させる」という。
【0042】
ステップS220において、算出部15は、対象クエリの中から、基点となるクエリを特定する。以下、基点となるクエリを「基点クエリ」といい、基点クエリのノードを「基点ノード」という。基点クエリは、あらかじめ決められたアルゴリズムにより決定される。このアルゴリズムは、例えば、対象クエリの中から、クエリを順番に一つずつ基点クエリとして特定するアルゴリズムである。この場合、対象クエリはアイウエオ順、アルファベット順、文字コード順、またはID番号順などの規則にしたがってソートされる。この例では、対象クエリがクエリq2だけなので、クエリq2が基点クエリとして特定される。
【0043】
ステップS230において、算出部15は、基点クエリを含む経路についてエッジの重みを算出する。ここで、「経路」とは、グラフ上の2つのノードについて、エッジおよびノードを介した接続関係をいう。図8の例で、クエリノードq2は、クエリノードq1およびq3と、ドメインノードを介して接続されている。この接続は、以下の(A)〜(C)の3つの経路を含んでいる。
(A)ドメインノードd1を中継ノードとしてクエリノードq1と接続される経路A。
(B)ドメインノードd1を中継ノードとしてクエリノードq3と接続される経路B。
(C)ドメインノードd2を中継ノードとしてクエリノードq1と接続される経路C。
これらの経路は、中継ノードとなるノードによって以下の2つに分類される。
(1)ドメインノードd1を中継ノードとする経路群1(経路AおよびB)。
(2)ドメインノードd2を中継ノードとする経路群2(経路C)。
【0044】
算出部15は、基点ノードqrと、中継ノードであるドメインノードdjと、他のクエリノードqiとを結ぶ経路のエッジの重みPqi,dj,qrを、次式(2)により算出する。
【数2】

ここで、RUUqi,djは、クエリqiを用いて検索された文書の中からドメインdjに属する文書を閲覧したユニークユーザの割合を示す。
【0045】
ステップS240において、算出部15は、次式(3)により、基点クエリqrのジャンルスコアJS(qr)を算出する。すなわち、算出部15は、他のクエリのジャンルスコアを起点クエリに伝播させる。
【数3】

ここで、Searchqiは、クエリqiを用いて検索が行われた回数を示す。なお、式(3)においてqiはqi=qrとなる場合を含まない。
【0046】
式(2)および式(3)を用いた計算例を、基点クエリがクエリq2である場合を例として具体的に説明する。算出部15は、各経路について、式(2)を用いてエッジの重みPを算出する。
【数4】

次に、算出部15は、式(3)を用いてジャンルスコアJSを算出する。ここでは紙面の都合により、経路群1と経路群2を分けて計算する。まず、経路群1については、
【数5】

である。経路群2については、
【数6】

である。式(5)および式(6)から、
【数7】

が得られる。
【0047】
ステップS250において、算出部15は、すべての対象クエリについて、そのクエリを基点クエリとしてジャンルスコアの伝播処理を行ったか判断する。まだ基点クエリとなっていない対象クエリがあった場合(S250:NO)、算出部15は、処理をステップS220に移行する。すべての対象クエリを基点クエリとして伝播処理が行われた場合(S250:YES)、算出部15は、処理をステップS260に移行する。
【0048】
ステップS260において、算出部15は、終了条件が満たされたか判断する。終了条件が満たされたと判断された場合(S260:YES)、算出部15は、図10の処理を終了する。終了条件が満たされていないと判断された場合(S260:NO)、算出部15は、処理を再びステップS220に移行する。この例で、終了条件は、(1)ジャンルスコアが収束した、および(2)ステップS220−250の処理を一定回数(例えば10周)繰り返した、という条件の少なくともいずれか一方が満たされた、という条件である。
【0049】
例えば、対象クエリがq1、q2、…、q10の10個である場合、まずクエリq1を対象クエリとして、ジャンルスコアの伝播処理が行われる。次に、クエリq2を対象クエリとして、ジャンルスコアの伝播処理が行われる。以下同様に、クエリq10まで、一つずつ順番に対象クエリとして、ジャンルスコアの伝播処理が行われる。クエリq1、q2、…、q10の各々について1回ずつ伝播処理が終了したとき、「伝播処理を1周させた」という。伝播処理を1周させると、終了条件が満たされたか判断される。終了条件が満たされていなかった場合、第2周の伝播処理が行われる。以下、終了条件が満たされるまで、第3周、第4周、…と伝播処理が繰り返し行われる。
【0050】
ふたたび図7を参照する。ステップS150において、出力部16は、ジャンルスコアを含むデータをクライアント30に出力する。さらに、出力部16は、更新されたジャンルスコアをジャンル辞書に書き込む。
【0051】
図11は、ジャンルサーバ10からの出力データを例示する図である。出力データは、複数のデータセットを含む。各データセットは、クエリと、そのクエリのジャンルスコアとを含む。クライアント30は、ジャンルサーバ10から出力データを受信する。こうして、クライアント30は、ジャンルスコアの算出要求に対してジャンルスコアを得ることができる。クライアント30は、受信した出力データに含まれるクエリのうち、所定の条件を満たすもの(例えば、ジャンルスコアが上位の5件)を、推薦クエリとして表示する。
【0052】
図12は、対比例としてのグラフを示す図である。この対比例で、グラフは、クエリノードおよびURLノードを含んでいる。このグラフに基づいて、式(2)および(3)を用いてジャンルスコアを算出することも可能である(この場合、数式中のドメインノードに関する項はURLノードに置き換えられる)。しかし、URLノードを用いた場合、ドメインノードを用いた場合と比較してエッジの密度は粗となる。これは、多くの場合、検索サービスを通して検索できる文書がスパース(まばら、わずか)であることによる。ある2つのクエリについて、一方のクエリから他方のクエリにジャンルスコアを伝播させようとした場合、これらのクエリのクエリノードが共通のURLノードに接続されていないと、ジャンルスコアを伝播させることができない。すなわち、図12のグラフを用いた場合、共通のURLノードに接続されていないクエリノードに対しては、ジャンルスコアを伝播させることができないという問題がある。これに対し、ジャンルサーバ10によれば、共通のURLノードに接続されていないクエリノードであっても、共通のドメインノードに接続されているクエリノードに対しては、ジャンルスコアを伝播させることができる。このような構成により、より柔軟にグラフを作成することが可能になる。また、ジャンルスコアの算出の際に複数のクエリからジャンルスコアが伝播される場合には、複数のクエリとの関連性を示す指標を一時に算出することができる。
【0053】
別の対比例として、検索ログの内容が制限される場合がある。例えば、クエリ毎の検索回数はログとして記録されるが、ユーザ毎の検索行動履歴または文書毎の閲覧率はログとして記録されない場合がある。このような制限は、例えばハードウェアまたはソフトウェアのリソース不足または検索サーバの仕様に起因する。例えば、文書毎の閲覧率がログとして記録されることが前提となっており、これを用いて文書毎の重要度を算出し、さらに重要度を用いてジャンルスコアを算出する技術は、検索ログの内容が制限される環境には適用できないという問題がある。これに対し、ジャンルサーバ10によれば、ユーザ毎の検索行動履歴または文書毎の閲覧率がログとして記録されない場合であっても、ジャンルスコアを伝播させることができる。
【0054】
以上で説明したように、ジャンルサーバ10によれば、従来ジャンルスコアを算出することができなかったクエリについても、ジャンルスコアを算出することができる。ドメインノードを含むグラフを用いた場合には、URLノードを用いた場合と比較して、より広範囲にジャンルスコアを伝播させることができる。
【0055】
3.他の実施形態
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち、2つ以上のものが組み合わせて用いられてもよい。
【0056】
3−1.変形例1
図13は、変形例1に係るグラフを例示する図である。生成部12が生成するグラフの構造は、図3で例示したものに限定されない。図13の例で、グラフは、クエリノード、URLノードおよびドメインノードを含む。これらのノードは、階層的に配置されている。この例では、下位から、クエリノード、URLノード、ドメインノードの順で配置されている。この例では、算出部15は、クエリノードとURLノードのエッジも考慮して、ジャンルスコアを伝播する。
【0057】
図14は、図13のグラフに付随するデータを示す図である。このデータは、複数のデータセットを含む。各データセットは、クエリ、URL、ドメイン、NUU、RUU、検索回数、およびページビュー(PV)のデータを含む。この例で、ユニークユーザ数は、対応するクエリを用いて検索された文書のうち、対応するURLにある文書を閲覧したユニークユーザ数を示す。図14の第1番目のデータセットは、クエリq1を用いて検索された文書のうち、URLs1にある文書を閲覧したユニークユーザが90人いたことを示している。また、ページビューは、対応するURLにある文書が閲覧された回数を示す。図14の第1番目のデータセットは、URLs1にある文書が80回閲覧されたことを示す。
【0058】
算出部15は、式(2)に代わり次式(8)に従ってエッジの重みPを算出する。
【数8】

次に、算出部15は、式(3)に従ってジャンルスコアJSを算出する。
【0059】
ここで、クエリq2が基点クエリである場合を例に、計算の具体例を示す。図14のデータと式(2)から、エッジの重みPq1,s1,d1,s2,q2は以下のとおり算出される。
【数9】

さらに、式(3)から、ジャンルスコアJSは以下のとおり算出される。
【数10】

【0060】
3−2.変形例2
ジャンルスコアを算出する式は式(3)に限定されない。重み付け係数を用いて式(3)が修正されてもよい。変形例2では、次式(11)によりジャンルスコアが算出される。
【数11】

ここで、係数Weightdjは、ドメインdjと対象となるジャンルとの間の相関を示すパラメータ(以下「伝播調整パラメータ」という)である。この例で、係数Weightdjは、相関係数βであり、ジャンルスコアJS、検索回数Search、ユニークユーザ率RUUの関数である。
【数12】

以下、式(11)によるジャンルスコアの算出を、具体例を用いて説明する。
【0061】
図15は、検索システム1の変形例2に係る動作を示すフローチャートである。図15のフローは、ステップS220とS230との間にステップS300が挿入されている点において図10のフローチャートと相違している。ステップS300において、算出部15は、式(12)に従って、各ドメインについて伝播調整パラメータを算出する。ステップS240において、算出部15は、式(11)に従ってジャンルスコアを算出する。以下、計算の具体例を説明する。
【0062】
図16は、変形例2に係るグラフを例示する図である。この例のグラフは、図13のグラフと同じ階層構造を有している。
【0063】
図17は、図16のグラフに付随するデータを示す図である。このデータは、複数のデータセットを含む。各データセットは、クエリ、URL、ドメイン、NUU、RUU、および検索回数のデータを含む。
【0064】
算出部15は、ステップS300において伝播調整パラメータWeightを算出する。図17のデータと式(12)から、伝播調整パラメータWeightd2は以下のとおり算出される。
【数13】

ここでは、Weightd2=0.001であった場合を例に説明する。
【0065】
算出部15は、ステップS230において式(2)に従ってエッジの重みPを算出する。ここで、クエリq2が基点クエリである場合を例に、計算の具体例を示す。図17のデータと式(2)から、エッジの重みPq1,q2は以下のとおり算出される。
【数14】

【0066】
算出部15は、ステップS240においてジャンルスコアJSを算出する。図17のデータと式(11)から、ジャンルスコアJS(q2)は以下のとおり算出される。
【数15】

【0067】
別の例で、図16のグラフでクエリノードq2とクエリノードq4がドメインノードd4に属するURLノードを介して接続されていた場合、ジャンルスコアJS(q2)は以下のとおり算出される。
【数16】

【0068】
例えばWikipedia(登録商標)のような特定のジャンルとの関連性が薄い文書があった場合、従来のように単にクエリノードとURLノードだけを含むグラフを用いたのでは、ジャンルとの関連性を正確に評価できなかった。例えば、図12のグラフだけを用いてジャンル辞書を用いなかった場合、あるURL(すなわち文書そのもの)が特定のジャンルに属するかどうかを判断するのは容易ではない。一例として、Wikipediaのような辞書サイトがある。辞書サイトは種々のジャンルのクエリに紐付いていると考えられるので、特定の単一のジャンルを有さない場合がある。URLノードとクエリノードの繋がりだけを考慮した場合、特定のジャンルを有さないURLノードを介してジャンルスコアが伝播されるという問題がある。ジャンルサーバ10によれば、共通するジャンルに関連付けられたクエリノードからジャンルスコアが伝播される。本変形例の構成によれば、ドメイン毎に集約された伝播調整パラメータを用いることで伝播されるジャンルスコアをドメイン単位で抑制し、より精度の高いジャンルスコアを算出することができる。
【0069】
3−3.変形例3
図18は、変形例3に係るグラフを例示する図である。図18の例で、グラフは、クエリノード、URLノード、ドメインノードおよびユーザノードを含む。これらのノードは、階層的に配置されている。この例では、下位から、クエリノード、URLノード、ドメインノードおよびユーザノードの順で配置されている。ドメインノードとユーザノードは同じ階層に配置されている。
【0070】
この例で、ジャンルスコアは、ドメインノードを介する経路に加え、URLノードおよびユーザノードを介して伝播される。例えば、クエリq1のジャンルスコアは、URLノードs2、ユーザノードu2、およびURLノードs3を介して、クエリq2に伝播される。クエリq2のジャンルスコアは、変形例2で説明したように、ドメインノードを基準とする重み付け係数を用いて算出される。
【0071】
この構成によれば、クエリノードはURLノードまたはユーザノードを介して伝播されるので、単にクエリノードとURLノードとのみを含むグラフを用いた場合と比較して、より網羅性の高いグラフが生成される。すなわち、より多くのクエリにジャンルスコアを与えることが可能である。
【0072】
3−4.変形例4
図19は、変形例4に係る検索システム1の構成を示す図である。この例で、ジャンルサーバ10は、図1の構成に加え、さらに記憶部17を有する。記憶部17は、生成部12が生成したグラフのデータを記憶する。
【0073】
図20は、変形例4に係る検索ログを例示する図である。この例の検索ログにおいて、各データセットは、クエリおよび検索回数のデータを含むが、ユーザおよび閲覧された文書(URL)のデータは含まれていない。上述の実施形態において、エッジの重みPは、クエリの検索回数や、文書を閲覧したユニークユーザ数を用いて算出された。しかし、この例のように、検索ログがユーザおよび閲覧された文書(URL)のデータを含んでいない場合には、上述の実施形態と同様の方法ではエッジの重みPを算出することができない。そこでこの例で、生成部12は、記憶部11に記憶されている検索ログに加え、検索サーバ20から取得したデータを用いて、グラフを生成する。詳細には以下のとおりである。
【0074】
生成部12は、記憶部11から検索ログを取得する。生成部12は、取得した検索ログから、クエリを抽出する。図20の例では、クエリq1およびq2が抽出される。生成部12は、抽出したクエリを含む検索要求を、検索サーバ20に送信する。生成部12(ジャンルサーバ10)から検索要求を受信すると、検索サーバ20は、検索を行い、その結果をジャンルサーバ10に送信する。
【0075】
図21は、検索結果を例示する図である。この例で、検索結果は、複数のデータセットを含む。各データセットは、クエリ、URL、および順位のデータを含む。図21の例で第1−第2番目のデータセットは、クエリq1を用いて検索を行うと、URLs1の文書が第1位、URLs2の文書が第2位であることを示している。
【0076】
生成部12は、検索結果から、欠損データの推定値を算出する。欠損データとは、ジャンルスコアの算出に用いられるデータのうち、検索ログに含まれていないデータをいう。例えば、式(2)および(3)に従ってジャンルスコアを算出する場合、ユニークユーザ率RUUが欠損データである。欠損データの推定値は、例えば以下のように算出される。各URLには、順位に応じて検索回数が割り当てられる。例えば、第1位:第2位=2:1の割合で検索回数が割り当てられる。図20の例では、158回が、URLs1(第1位の文書)とURLs2(第2位の文書)に2:1の割合でユニークユーザ数が割り当てられる。すなわち、生成部12は、クエリq1を用いて行われた全158回の検索のうち、105.33人のユニークユーザがURLs1に割り当てられ、52.67人のユニークユーザがURLs2に割り当てられる。生成部12は、このようにして割り当てられたユニークユーザ数を用いて、ユニークユーザ率の推定値を算出する。
【0077】
図22は、算出された推定値を含むテーブルを例示する図である。生成部12は、このようにして算出されたユニークユーザ率の推定値を用いてグラフの付随データを生成する。
【0078】
この構成によれば、検索ログが図2に例示したデータを完全に含んでいない場合であっても、欠損しているデータを推定することにより、ジャンルスコアを算出することができる。
【0079】
3−5.他の変形例
検索ログの生成は、ジャンルサーバ10自身によって行われてもよいし、ジャンルサーバ10以外の装置(例えば検索サーバ20)によって行われてもよい。ジャンルサーバ10が検索ログを生成する場合、検索サーバ20は、検索を行う度に、検索結果をジャンルサーバ10に送信する。ジャンルサーバ10の算出部15は、受信した検索結果を、記憶部11に記憶されている検索ログに追加する。検索サーバ20が検索ログを生成する場合、検索サーバ20は、検索ログを記憶する記憶部を有している。検索サーバ20は、検索を行う度に、検索結果を検索ログに追加する。検索サーバ20は、所定のタイミング(前回検索ログを送信してから一定期間経過後や、ジャンルサーバ10から要求があった時など)で、検索ログをジャンルサーバ10に送信する。ジャンルサーバ10の記憶部11は、受信した検索ログを記憶する。
【0080】
検索ログの書式は、図2で例示したものに限定されない。例えば、図2の例では、検索の結果として得られた文書のURLが第1位〜第3位まで記録されているが、記録されるURLの数はこれに限定されない。検索ログに記録されるURLの数は、例えば、システムの構成(例えばハードウェアリソースの量)により制限される。
【0081】
また、ジャンルサーバ10は、記憶部11を有していなくてもよい。この場合、ジャンルサーバ10とは異なる別の装置が、記憶部11を有する。ジャンルサーバ10は、検索ログにアクセスするときは、その別の装置を介して検索ログにアクセスする。
【0082】
ジャンル識別子の指定方法は、実施形態で説明したものに限定されない。すなわち、呼出部14への入力はジャンル識別子に限定されない。ジャンル識別子ではなく、クエリが呼出部14に入力されてもよい。この場合、呼出部14は、ジャンル辞書を参照し、入力されたクエリに対応するジャンルと同じジャンルに対応するクエリを抽出する。図5の例では、クエリq1が入力されると、呼出部14は、クエリq1に対応するジャンル(「お笑い」)と同じジャンルに対応する、クエリq3およびq4を抽出する。
【0083】
検索対象となる文書は、インターネット上のファイルに限定されない。ローカルネットワークまたはスタンドアローンコンピュータ上のファイルに対し、実施形態で説明したジャンルスコア算出技術が適用されてもよい。例えばスタンドアローンコンピュータ上のファイルに対してこのジャンルスコア算出技術を適用する場合、ジャンルサーバ10、検索サーバ20およびクライアント30としての機能をすべて、単一のコンピュータが有する。URLは、ドライブ名およびフォルダ(ディレクトリ)名を含めたファイル名に読み替えられる。ドメインは、より上位の階層のフォルダ名に読み替えられる。
【0084】
URLからドメインを抽出する方法は、実施形態で説明したものに限定されない。例えば、URLの先頭から、「://」の次の2番目の「/」の前までの文字列がドメインとして抽出されてもよい。この場合、URLが「aaa://bbb.ccc.ddd/eee/fff」であったときは、「aaa://bbb.ccc.ddd/eee」という文字列がドメインとして抽出される。
【0085】
ジャンル辞書のデータ構造は図5に示されるものに限定されない。例えば、ジャンル識別子とジャンルのうちどちらか一方は省略されてもよい。あるいは、一のクエリに複数のジャンルが関連付けられていてもよい。この場合、複数のジャンルが関連づけられたクエリに対して、呼出部14は、ステップS120において、対象となっているジャンルを含むデータセットだけを抽出する。
【0086】
ジャンル識別子(ジャンルスコアの算出要求)の入力元と、ジャンルスコアの出力先の装置は同一でなくてもよい。例えば、ジャンルサーバ10は、ジャンル識別子の入力元であるクライアント30とは別の装置に、ジャンルスコアを出力してもよい。あるいは、ジャンルサーバ10は、クライアント30とは別の装置から入力されたジャンル識別子に対して、クライアント30にジャンルスコアを出力してもよい。
【0087】
グラフのデータ構造は実施形態で説明したものに限定されない。実施形態で付随データとして説明したテーブルだけが、グラフとして処理されてもよい。
【0088】
対象クエリを特定する条件は、実施形態で説明したものに限定されない。実施形態において、算出部15は、ジャンルスコアの初期値がゼロのクエリを対象クエリとしたが、ジャンルスコアの初期値が所定のしきい値以下のクエリを対象クエリとしてもよい。あるいは、算出部15は、ジャンルスコアの初期値を算出せず、単にジャンル辞書にジャンルスコアが記載されていないクエリを対象クエリとしてもよい。さらに別の例で、算出部15は、ユーザにより指定されたクエリを対象クエリとして特定してもよい。
【0089】
中継ノードとなるノードは、ドメインノードに限定されない。ユーザノード、URLノード等、ドメインノード以外のノードが中継ノードとなってもよい。
【0090】
エッジの重み(すなわちノード間の繋がりの強さ)の算出に用いられるアルゴリズムは実施形態で説明したものに限定されない。例えば、ハイパーリンクの構造分析に用いられるPageRank、HITS algorithm、SALSA、またはTrustRankなど、周知のアルゴリズムが用いられてもよい。
また、エッジの重みは、グラフを生成する際にあわせて計算されてもよい。すなわち、図10のフローにおいて、ステップS230の処理は、ステップS220−S250の処理ループの外側にあってもよい。
【0091】
ジャンルスコア算出処理のフローは、図7に示されるものに限定されない。例えば、ステップS150におけるジャンル辞書の書き込み、すなわちジャンル辞書の更新は省略されてもよい。また別の例で、ステップS120の処理とステップS130の処理の順番は入れ替えられてもよい。
【0092】
ジャンルスコアの算出要求(ジャンル識別子)を送信する装置と、この要求に対する応答を受信する装置とは異なっていてもよい。
【0093】
クライアント30におけるジャンルスコアの利用方法は、クエリの推薦に限定されない。ジャンルスコアを表示する処理、またはジャンルを推薦する処理等、クエリの推薦以外の処理が行われてもよい。
【0094】
図1に示される機能を実現するためのハードウェア構成は、図6で説明されたものに限定されない。例えば、汎用のCPUに代わり、特定の処理を行うプロセッサが用いられてもよい。
【0095】
上述の実施形態においてCPU111によって実行されるプログラムは、磁気記録媒体(磁気テープ、磁気ディスク(HDD、FD(Flexible Disk))など)、光記録媒体(光ディスク(CD(Compact Disk)、DVD(Digital Versatile Disk))など)、光磁気記録媒体、半導体メモリ(フラッシュROMなど)などのコンピュータ読取り可能な記録媒体に記憶した状態で提供されてもよい。また、このプログラムは、インターネットのようなネットワーク経由でダウンロードされてもよい。
【符号の説明】
【0096】
1…検索システム、10…ジャンルサーバ、11…記憶部、12…生成部、13…記憶部、14…呼出部、15…算出部、16…出力部、17…記憶部、20…検索サーバ、30…クライアント、110…制御部、111…CPU、112…RAM、113…ROM、120…記憶部、130…入力部、140…表示部、150…通信部

【特許請求の範囲】
【請求項1】
検索に用いられたクエリを示すクエリノードおよび前記クエリ以外の前記検索に関する他の項目を示す中継ノードを含む複数のノードをエッジで接続したグラフを取得する第1取得手段と、
クエリ、前記クエリのジャンルを示すジャンル識別子および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書の中から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得する第2取得手段と、
前記第1取得手段により取得されたグラフに含まれるクエリノードのうち前記ジャンル辞書にジャンルスコアが記載されていないクエリを示す対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記第2取得手段により取得されたジャンルスコアの中から用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出する算出手段と
を有するサーバ装置。
【請求項2】
前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード、前記第1所在情報よりも上位の第2所在情報を示す第2所在ノード、および前記検索をしたユーザ名を示すユーザノードを含み、
前記中継ノードが、前記第1所在ノードであり、
前記処理は、前記中継ノードとエッジで接続された前記第2所在ノードまたは前記ユーザノードとエッジで接続された他のクエリノードが示すクエリのジャンルスコアを用いて、前記基点クエリのジャンルスコアを算出する処理である
ことを特徴とする請求項1に記載のサーバ装置。
【請求項3】
前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード、および前記第1所在情報よりも上位の第2所在情報を示す第2所在ノードを含み、
前記中継ノードが、前記第1所在ノードであり、
前記算出手段は、前記第2所在情報毎に、前記第2所在情報と前記ジャンルとの間の相関を示すパラメータを算出し、
前記処理は、前記基点ノードと関連する第2所在ノードと関連する他のクエリノードが示すクエリのジャンルスコアおよび前記パラメータを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理である
ことを特徴とする請求項1に記載のサーバ装置。
【請求項4】
検索に用いられたクエリと前記検索が行われた回数である検索回数とが蓄積された検索ログを取得する第3取得手段と、
クエリが入力されると検索結果を出力する検索サーバに対し、前記検索ログに含まれるクエリを入力し、前記クエリに対する検索結果を取得する第4取得手段と、
前記第3取得手段により取得された検索ログおよび前記第4取得手段により取得された検索結果を用いて前記エッジの重みを推定する推定手段と
を有し、
前記処理は、前記基点ノードと関連する第2所在ノードと関連する他のクエリノードが示すクエリのジャンルスコアおよび前記推定された重みを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理である
ことを特徴とする請求項1に記載のサーバ装置。
【請求項5】
検索に用いられたクエリと、前記検索により閲覧された文書の所在を階層構造により示す第1所在情報とを含む複数の項目を含む検索ログを第1記憶手段に記憶するステップと、
前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、
前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、
クエリ、前記クエリのジャンルを示すジャンル識別子および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、
前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップと
を有するジャンルスコア算出方法。
【請求項6】
前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード、前記第1所在情報よりも上位の第2所在情報を示す第2所在ノード、および前記検索をしたユーザ名を示すユーザノードを含み、
前記中継ノードが、前記第1所在ノードであり、
前記処理は、前記中継ノードとエッジで接続された前記第2所在ノードまたは前記ユーザノードとエッジで接続された他のクエリノードが示すクエリのジャンルスコアを用いて、前記基点クエリのジャンルスコアを算出する処理である
ことを特徴とする請求項5に記載のジャンルスコア算出方法。
【請求項7】
前記複数のノードが、前記検索の結果ユーザに閲覧された文書の所在を階層構造を用いて示す第1所在情報を示す第1所在ノード、および前記第1所在情報よりも上位の第2所在情報を示す第2所在ノードを含み、
前記中継ノードが、前記第1所在ノードであり、
前記第2所在情報毎に、前記第2所在情報と前記ジャンルとの間の相関を示すパラメータを算出するステップをさらに有し、
前記処理は、前記基点ノードと関連する第2所在ノードと関連する他のクエリノードが示すクエリのジャンルスコアおよび前記パラメータを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理である
ことを特徴とする請求項5に記載のジャンルスコア算出方法。
【請求項8】
検索に用いられたクエリと、前記検索が行われた回数とを含む検索ログを第1記憶手段に記憶するステップと、
クエリが入力されると検索結果を出力する検索サーバに対し、前記第1記憶手段に記憶されている検索ログに含まれるクエリを入力し、前記クエリに対する検索結果を取得するステップと、
前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、
前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、
前記第1記憶手段に記憶されている検索ログおよび前記取得された検索結果を用いて前記エッジの重みを推定するステップと、
クエリ、前記クエリのジャンルを示すジャンル識別子および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、
前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、かつ前記推定された重みを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップと
を有するジャンルスコア算出方法。
【請求項9】
コンピュータに、
検索に用いられたクエリと、前記検索により閲覧された文書の所在を階層構造により示す第1所在情報とを含む複数の項目を含む検索ログを第1記憶手段に記憶するステップと、
前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、
前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、
クエリ、前記クエリのジャンルを示すジャンル識別子および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、
前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップと
を実行させるためのプログラム。
【請求項10】
コンピュータに、
検索に用いられたクエリと、前記検索が行われた回数とを含む検索ログを第1記憶手段に記憶するステップと、
クエリが入力されると検索結果を出力する検索サーバに対し、前記第1記憶手段に記憶されている検索ログに含まれるクエリを入力し、前記クエリに対する検索結果を取得するステップと、
前記第1記憶手段に記憶されている検索ログに含まれる項目のうち、前記クエリおよび前記クエリ以外の他の項目をノードとして抽出するステップと、
前記抽出されたクエリを示すクエリノードと、前記抽出された他の項目を示す中継ノードとエッジで接続したグラフを生成するステップと、
前記第1記憶手段に記憶されている検索ログおよび前記取得された検索結果を用いて前記エッジの重みを推定するステップと、
クエリ、前記クエリのジャンルを示すジャンル識別子および前記クエリと前記ジャンルとの関連性の高さを示すジャンルスコアを含むジャンル辞書を記憶した第2記憶手段から、指定されたジャンル識別子に対応するジャンルスコアおよびクエリを取得するステップと、
前記生成されたグラフに含まれるクエリノードのうち所定の条件を満たす対象ノードの中から特定されたノードを基点ノードとして、前記基点ノードと前記中継ノードを介してエッジで接続された他のクエリノードが示すクエリのジャンルスコアを、前記取得されたジャンルスコアの中から用いて、かつ前記推定された重みを用いて、前記基点ノードのクエリのジャンルスコアを算出する処理を、終了条件が満たされるまで前記基点ノードを更新しながら繰り返し行い、複数のクエリのジャンルスコアを算出するステップと
を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate