以下に、本願に係る抽出装置、抽出方法、及び抽出プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る抽出装置、抽出方法、及び抽出プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.抽出処理〕
図1を用いて、実施形態に係る抽出処理の一例について説明する。図1は、実施形態に係る抽出処理の一例を示す図である。図1では、抽出装置100がウェブページ(単に「ページ」とする場合がある)をそのリンク関係に基づいてグラフ構造化したグラフデータ(グラフ情報)を検索することにより、類似するウェブページ(類似ウェブページ)を抽出する場合を示す。また、図1では、抽出装置100は、各ウェブページをベクトル化したベクトルデータ(単に「ベクトル」とする場合がある)を用いて、各ウェブページ間の類似度を比較する。なお、抽出装置100が用いる情報は、ベクトルに限らず、各ウェブページの類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、抽出装置100は、各ウェブページに対応する所定のデータや値を用いてウェブページをグラフ構造化したグラフ情報を用いてもよい。例えば、抽出装置100は、各ウェブページから生成された所定の数値(例えば2進数の値や16進数の値)を用いてウェブページをグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。
〔1−1.グラフ情報について〕
また、抽出装置100は、図1中のグラフ情報GR11に示すように、各ベクトル(ノード)が有向エッジにより連結されたグラフデータを対象に抽出処理を行う。なお、図1中のグラフ情報GR11に示すようなグラフ情報は、抽出装置100が生成してもよいし、抽出装置100は、図1中のグラフ情報GR11に示すようなグラフ情報を情報提供装置50(図3参照)等の他の外部装置から取得してもよい。
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。
例えば、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2つのノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。
ここで、上記のノード「A」からの有向エッジがノード「B」に連結される関係は、グラフ情報のノードをウェブページとみなした場合における、ノード「A」に対応するウェブページからノード「B」に対応するウェブページへのリンクが貼られている関係に対応する。言い換えると、参照元をノード「A」とし、参照先をノード「B」とするエッジは、ノード「A」に対応するウェブページからノード「B」に対応するウェブページへのリンクに対応する。つまり、参照元をノード「A」とし、参照先をノード「B」とする関係は、ノード「A」に対応するウェブページがノード「B」に対応するウェブページをリンク先に含むことに対応する。抽出装置100は、上記のようなウェブページのリンク関係と類似の構造を有するグラフ情報GR11を用いて類似ウェブページ(以下、「類似ページ」ともいう)を抽出する。なお、ウェブページのリンク関係とグラフ情報のエッジの連結関係の対応の詳細は、図2を用いて後述する。
なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。また、各ノードを連結するエッジは、ウェブページのリンク関係を表現可能であれば、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て双方向エッジであってもよい。例えば、相互にリンクが貼られている2つのノード間は、方向のないエッジや双方向エッジで連結されてもよい。すなわち、互いに相手をリンク先とする2つのノード間は、方向のないエッジや双方向エッジで連結されてもよい。
例えば、抽出装置100は、数百万〜数億単位のウェブページに対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。図1の例では、説明を簡単にするために、9個のノードを図示して処理の概要を説明する。例えば、抽出装置100は、図1中のグラフ情報GR11に示すように、ノードN1、N2、N3等に示すような複数のノード(ベクトル)を含むグラフ情報を取得する。また、図1の例では、グラフ情報GR11における各ノードは、そのノードに対応するウェブページのリンク先に対応するノードへのエッジ(出力エッジ)が連結される。まず、この点について図2を用いて説明する。図2は、ウェブページのリンクとグラフ情報との関係を示す図である。
〔1−1−1.ウェブページのリンクのグラフ構造化〕
図1の例において用いるグラフ情報GR11は、ウェブページをノードとし、ウェブページのリンクをエッジとみなして生成される。ここでは、抽出装置100がグラフ情報GR11を生成する場合を一例として説明するが、グラフ情報GR11は情報提供装置50等の他の情報処理装置が生成してもよい。
図2の例では、グラフ情報GR11は、ウェブ空間情報WS11から生成される。なお、ウェブ空間情報WS11は、図5中のウェブページ情報記憶部121に示すような各ウェブページのリンク先を示す情報を基に各ウェブページのリンク関係を概念的に示す図である。図2では、各ウェブページ間を接続するリンクLKにより各ページ間のリンク関係を示す。
図2では、ページPG1〜PG3、PG11、PG50、PG90、PG211、PG246、PG618の9個のウェブページのみを図示し、そのリンク関係を基に説明するが、ウェブ空間情報WS11には数百万〜数億単位のウェブページが含まれる。また、このように「ページPG*(*は任意の数値)」と記載した場合、そのページ(ウェブページ)はページID「PG*」により識別されるページであることを示す。例えば、「ページPG1」と記載した場合、そのページはページID「PG1」により識別されるページである。
図2の例では、ページPG1は、ページPG2やページPG50等をリンク先に含むページであることを示す。例えば、図2中のページPG1を矢元とし、ページPG2を矢先とするリンクLKが、ページPG1がページPG2をリンク先とすることを示す。
また、図2の例では、ページPG3は、ページPG1やページPG11やページPG618等をリンク先に含むページであることを示す。例えば、図2中のページPG3を矢元とし、ページPG11を矢先とするリンクLKが、ページPG3がページPG11をリンク先とすることを示す。また、図2の例では、図2中のページPG11を矢元とし、ページPG3を矢先とするリンクLKが、ページPG11がページPG3をリンク先としていることを示す。すなわち、図2の例では、ページPG3とページPG11とは互いに他をリンク先としているページであることを示す。
上記のような各ウェブページのリンクに基づく接続関係(参照関係)は、グラフ構造における有向エッジの連結関係に対応する。そこで、抽出装置100は、各ウェブページのリンク関係を反映(写像)したグラフ情報を生成する(ステップS51)。例えば、抽出装置100は、ウェブページをノードとし、リンクをエッジとして、ウェブ空間情報をマッピングしたグラフ情報を生成する。
図2の例では、抽出装置100は、ウェブ空間情報WS11からグラフ情報GR11を生成する。例えば、抽出装置100は、ウェブページ情報記憶部121(図5参照)中のウェブページやウェブページのリンク先を示す情報から、グラフ情報記憶部123(図7参照)中のグラフ情報を生成する。例えば、抽出装置100は、ページPG1のノードN1とし、ページPG2をN2とするようなグラフ情報GR11を生成する。なお、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
また、例えば、抽出装置100は、ページPG1のページPG2をリンク先とする情報を基に、ノードN1の参照先にノードN2が含まれることを示すエッジ情報を生成する。具体的には、抽出装置100は、ノードN1を参照元とし、ノードN2を参照先とするエッジE11を示す情報を生成する。なお、このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE11」と記載した場合、そのエッジはエッジID「E11」により識別されるエッジである。例えば、ノードN1を参照元とし、ノードN2を参照先として連結されるエッジE11により、ノードN1からノードN2に辿ることが可能となる。この場合、有向エッジであるエッジE11は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN2を中心として識別される場合、入力エッジとなる。
また、例えば、抽出装置100は、ページPG3のページPG1をリンク先とする情報を基に、ノードN3の参照先にノードN1が含まれることを示すエッジ情報を生成する。具体的には、抽出装置100は、ノードN3を参照元とし、ノードN1を参照先とするエッジE31を示す情報を生成する。上記のような処理により、抽出装置100は、ウェブ空間情報WS11からグラフ情報GR11を生成し、グラフ情報記憶部123(図7参照)に格納する。
また、図2中のグラフ情報GR11は、ユークリッド空間であってもよい。また、図2に示すグラフ情報GR11は、各ベクトル間の距離等の説明のための概念的な図であり、グラフ情報GR11は、多次元空間である。例えば、図2に示すグラフ情報GR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。
本実施形態においては、グラフ情報GR11における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象(ウェブページ)の類似性が、グラフ情報GR11内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1に示す例においては、グラフ情報GR11における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフ情報GR11における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図2中のグラフ情報GR11において、ノードN11と、ノードN211とは近接している、すなわち距離が短い。そのため、ノードN11に対応するオブジェクト(ウェブページ)と、ノードN211に対応するオブジェクト(ウェブページ)とは類似度が高いことを示す。
また、例えば、図2中のグラフ情報GR11において、ノードN1と、ノードN2とは遠隔にある、すなわち距離が長い。そのため、ノードN1に対応するオブジェクト(ウェブページ)と、ノードN2に対応するオブジェクト(ウェブページ)とは類似度が低いことを示す。このように、グラフ情報GR11は、ベクトルの類似度ではなく、ウェブページとしてのリンク関係を基にエッジが連結されているため、ベクトルの類似度に関わらずエッジが連結されたグラフ構造となる。
なお、図2の例では、説明のために、各ウェブページや各ノードの配置は、ベクトル化した際の類似度が高い程近くに位置するように図示するが、抽出装置100は、ページ情報をベクトル化する前においては各ノード間の距離(類似度)は不明であるものとする。
このように、抽出装置100は、ウェブ空間情報WS11からグラフ情報GR11を生成し、そのグラフ情報GR11を基に類似ページを検索する。
〔1−2.処理例〕
ここから、抽出装置100は、ユーザからクエリ情報として、一のウェブページのページ情報を取得し、一のウェブページに類似するウェブページに関する情報提供を行う場合を一例として説明する。なお、クエリ情報は、ページ情報に限らず、キーワード(文字列)等の種々の情報であってもよい。図1の例では、端末装置10は、ユーザU1により利用される。例えば、ユーザU1は、端末装置10においてウェブブラウザであるブラウザBWを用いてウェブページ(コンテンツ)を閲覧しているユーザであるものとする。図1の例では、ユーザU1が閲覧中のページPG11がページPG11に類似するウェブページの情報を所望する場合を示す。
まず、ユーザU1がブラウザBWを用いてページPG11を閲覧中の端末装置10は、ページPG11のページ情報PD11をクエリ情報として抽出装置100へ送信する。例えば、ユーザU1は、閲覧中のページPG11に類似するウェブページの閲覧を所望し、ページPG11のページ情報PD11を抽出装置100へ送信するように端末装置10を操作する。例えば、ユーザU1は、ブラウザBWの類似ページの検索機能や他のアプリケーションにより、閲覧中のページPG11の類似ページの情報を抽出装置100へ要求してもよい。なお、上記は一例であり、抽出装置100は、どのような処理により、検索対象となるページを特定する情報を取得してもよい。
例えば、端末装置10は、ブラウザBWに表示されたページPG11のページ情報PD11を抽出装置100へ送信する。図1の例では、ページ情報PD11等は、文字情報、画像情報、動画情報、及び音声情報等に関する情報を含む。なお、抽出装置100がページ情報PD11を取得済みである場合、端末装置10は、ページPG11を特定する情報を抽出装置100へ送信してもよい。そして、ページPG11を特定する情報(例えばページID等)を取得した抽出装置100は、記憶部120からページ情報PD11を取得してもよい。
また、図1の例では、端末装置10は、閲覧中のページ(以下、「閲覧ページ」ともいう)を特定する情報を抽出装置100へ送信する。例えば、端末装置10は、ユーザU1がページPG11を閲覧中であることを示す情報を抽出装置100へ送信する。例えば、端末装置10は、ステップS11において、ブラウザBWにページPG11が表示中であることを示す情報を抽出装置100へ送信する。例えば、端末装置10は、ページPG11を識別するページID「PG11」を抽出装置100へ送信する。なお、抽出装置100がユーザU1の閲覧ページがページPG11であることを特定可能であれば、端末装置10は、抽出装置100にどのような情報を送信してもよい。
そして、抽出装置100は、クエリ情報と閲覧ページを特定する情報を取得する(ステップS11)。図1の例では、抽出装置100は、端末装置10からページPG11に関するページ情報PD11とページPG11を特定する情報(ページID)を取得する。
そして、抽出装置100は、検索開始の起点となる起点ノードを決定する(ステップS12)。図1の例では、抽出装置100は、起点基準情報記憶部122に記憶された起点決定の基準となる情報に基づいて、起点ノードを決定する。図1の例では、抽出装置100は、基準ID「CR1」により識別される起点基準(起点基準CR1)を用いて、起点ノードを決定する。なお、図1の例では、起点基準CR1を用いると設定されている場合を示すが、抽出装置100は、他の基準(起点基準CR2)を用いて起点ノードを決定してもよい。例えば、抽出装置100は、ランダムに起点基準を選択して、その選択した起点基準を用いてもよい。
図1の例では、起点基準CR1は、「閲覧中」すなわち、ユーザが閲覧中のウェブページを検索開始の起点とすることを示す。そのため、抽出装置100は、起点基準CR1に基づいて、ユーザU1が閲覧中であるページPG11に対応するノードN11を起点ノードに決定する。なお、起点基準情報記憶部122に記憶された起点決定の基準となる情報を用いずに、検索開始時にグラフ情報GR11からランダムに1つ以上のノードを選択し、それを起点ベクトルとしてもよいし、または、予め指定された1つ以上のノードを起点ベクトルとしても良い。
そして、抽出装置100は、ページPG11に類似するウェブページ(類似ページ)を検索する(ステップS13)。例えば、抽出装置100は、グラフ情報記憶部123(図7参照)からウェブページに関するグラフ情報GR11を取得する。ここで、図1の例では、グラフ情報GR11では、ノードに対応するウェブページのページ情報がベクトル化された情報が含まれていない。そこで、抽出装置100は、各ノードに対応するウェブページのページ情報をリアルタイムに順次ベクトル化して、ベクトルを比較し、比較に基づくベクトル間の類似関係を基にページPG11の類似ページを検索する。これにより、抽出装置100は、ベクトルデータを記憶することにより、記憶するデータ量の増大を抑制することができる。
まず、抽出装置100は、クエリ情報としてのページ情報からグラフ情報の探索に用いるベクトルを生成する。図1の例では、抽出装置100は、処理群PS11に示すような処理により、ページPG11に対応するベクトルを生成する。抽出装置100は、ページPG11に関するページ情報PD11をモデルM1に入力する(ステップS14−1)。具体的には、抽出装置100は、ページPG11のページ情報PD11をモデルM1に入力する。そして、抽出装置100は、ページ情報PD11の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS14−2)。例えば、抽出装置100は、ページ情報PD11が入力されたモデルM1中の各要素を用いて、ベクトルデータVD11を生成する。
〔1−2−1.ベクトルの生成例〕
ここで、各ノード(ウェブページ)に対応するベクトルの生成の一例について説明する。例えば、ウェブページ情報(ページ情報)が数値データであれば、それをベクトルデータとして、そのまま扱うことも可能である。しかし、ウェブページが、テキスト、画像、または、音声であるため、ベクトルデータへの変換が必要となる。そこで、図1の例では、抽出装置100は、各ウェブページのウェブページ情報(ページ情報)から抽出された特徴量により多次元(N次元)のベクトルを生成する。
例えば、抽出装置100は、ページ情報の特徴を抽出するモデルを用いて各ウェブページのページ情報からN次元ベクトルを生成してもよい。図1の例では、抽出装置100は、モデル情報記憶部124(図8参照)に示すように、モデルID「M1」により識別されるモデル(モデルM1)を用いて、各ウェブページのページ情報からベクトルを生成する。上記のように、「モデルM*(*は任意の数値)」と記載した場合、そのモデルはモデルID「M*」により識別されるモデルであることを示す。例えば、「モデルM1」と記載した場合、そのモデルはモデルID「M1」により識別されるモデルである。また、モデル情報記憶部124に示すように、モデルM1は用途「特徴抽出(ウェブページ)」、すなわちウェブページのデータからの特徴抽出のために用いられるモデルであり、その具体的なモデルデータが「モデルデータMDT1」であることを示す。
例えば、抽出装置100は、モデルM1に任意のウェブページのページ情報を入力することにより、モデルM1中の各要素(ニューロン)の値を演算し、入力したページ情報と同様の情報を出力する。例えば、抽出装置100は、中間層の各要素(ニューロン)の値を特徴量として抽出し、各ウェブページに対応するN次元のベクトルデータを生成してもよい。
ここで、図11を用いて、各ウェブページに対応するベクトルデータの生成の一例を示す。図11は、実施形態に係る特徴量の抽出の一例を示す図である。図11は、モデルM1の概念図である。なお、図11では、各要素(ニューロン)の各接続関係を示す線の図示を省略する。図11に示すように、モデルM1は、入力層ILと、中間層CLと、出力層OLとを含む。例えば、モデルM1の入力層ILは、ページ情報が入力される層である。また、出力層OLは、入力層ILへの入力に応じて、入力されたページ情報と同様の情報を出力される層である。
また、例えば、中間層CLの中央部の最も圧縮された圧縮層RPは、入力されたページ情報の特徴を表現する層である。例えば、モデルM1の中間層CLにおいて、入力層ILから圧縮層RPまでの間は、エンコードの処理を行う部分に対応する。モデルM1の中間層CLにおいて、入力層ILから圧縮層RPまでの間は、入力されたページ情報の特徴を圧縮する処理を行う部分に対応する。例えば、モデルM1の中間層CLにおいて、圧縮層RPから出力層OLまでの間は、デコードの処理を行う部分に対応する。モデルM1の中間層CLにおいて、圧縮層RPから出力層OLまでの間は、圧縮されたページ情報を復元する処理を行う部分に対応する。
例えば、抽出装置100は、圧縮層RPに含まれるニューロンNL1やニューロンNL2等の情報をベクトルに用いてもよい。例えば、抽出装置100は、あるウェブページのページ情報が入力された場合に、算出されるニューロンNL1に対応する値VE1やニューロンNL2に対応する値VE2をベクトルの要素(一の次元の値)として抽出してもよい。例えば、抽出装置100は、あるウェブページのページ情報が入力された場合に、算出されるニューロンNL1に対応する値VE1をそのウェブページのベクトルの1次元目の要素として抽出してもよい。また、例えば、抽出装置100は、あるウェブページのページ情報が入力された場合に、算出されるニューロンNL2に対応する値VE2をそのウェブページのベクトルの2次元目の要素として抽出してもよい。このように、抽出装置100は、各ウェブページのページ情報をモデルM1に入力することにより、各ウェブページに対応するベクトルを生成してもよい。なお、抽出装置100は、各ウェブページに対応するベクトルを情報提供装置50等の他の外部装置から取得してもよい。なお、抽出装置100は、ベクトルの各要素として、各ニューロンに対応する値自体を用いてもよいし、各ニューロンに対応する値に所定の係数を乗算した値を用いてもよい。また、図1の例では説明を簡単にするために、ベクトルの各要素(値)が整数である場合を示すが、ベクトルの各要素(値)は、小数点以下の数値を含む実数であってもよい。
なお、抽出装置100は、圧縮層RPの要素(ニューロン)に限らず、中間層CL中の他の要素(ニューロン)の情報をベクトルに用いてもよい。例えば、抽出装置100は、エンコード部分のニューロンNL3やデコード部分のニューロンNL4等の情報をベクトルに用いてもよい。例えば、抽出装置100は、あるウェブページのページ情報が入力された場合に、算出されるニューロンNL3に対応する値VE3やニューロンNL4に対応する値VE4をベクトルの要素(一の次元の値)として抽出してもよい。なお、上記は、一例であり、抽出装置100は、オートエンコーダに限らず、種々のモデルを用いて、ページ情報からの特徴抽出を行ってもよい。例えば、抽出装置100は、所定のカテゴリに属するウェブページと所定のカテゴリに属さないウェブページを識別するように学習させたモデルを生成して、その中間層をベクトルデータとして抽出しても良い。また、例えば、トリプレットロス(triplet loss)といった類似性を学習する方法によりモデルを生成しても良い。また、抽出装置100は、モデルを用いずに、特徴抽出を行ってもよい。例えば、抽出装置100は、抽出装置100の管理者等が設定して特徴(素性)に対応する情報をページ情報から抽出し、ベクトルを生成してもよい。例えば、抽出装置100は、文字情報、画像情報、動画情報、及び音声情報等の特徴(素性)に対応する情報をページ情報から抽出し、ベクトルを生成してもよい。
また、例えば、抽出装置100は、情報提供装置50等の他の外部装置からモデルM1を取得してもよい。なお、抽出装置100は、ウェブページ情報記憶部121(図5参照)に記憶された各ウェブページのページ情報PD1、PD2、PD3等を入力として、モデルM1を生成してもよい。例えば、端末装置10は、各ウェブページのページ情報PD1、PD2、PD3等を入力として、モデルM1を生成してもよい。例えば、ページ情報PD1、PD2、PD3等は、文字情報、画像情報、動画情報、及び音声情報等を含んでもよい。例えば、ページ情報PD1、PD2、PD3等のページ情報は、対応するウェブページの記事の文字情報や、その記事に対応する画像や動画や音声に関する情報を含んでもよい。また、例えば、ページ情報PD1、PD2、PD3等が、文章や単語群である場合、抽出装置100は、Word2VecやDoc2Vecのようなアルゴリズム等を用いて、ベクトルを生成してもよい。例えば、抽出装置100は、ページ情報PD1、PD2、PD3等から、Doc2Vecを用いてベクトルを生成してもよい。なお、抽出装置100は、Doc2Vecを用いる場合、ページ情報中の文字情報のみを用いてもよい。また、抽出装置100は、クエリ情報がキーワードの場合、Word2Vecでベクトル化したベクトルデータを用いて、検索を行ってもよい。この場合、抽出装置100は、例えば、各ウェブページの文字情報をDoc2Vecでベクトル化したベクトルデータを生成し、検索を行ってもよい。例えば、抽出装置100は、キーワードであるクエリ情報からWord2VecによりN次元のクエリベクトルを生成し、各ウェブページの文字情報からDoc2VecによりN次元のページベクトルを生成し、クエリベクトルとページベクトルとの比較に基づいて、類似ページの検索を行ってもよい。なお、上記は一例であり、抽出装置100は、従来技術や種々の情報を適宜用いて、キーワードのクエリ情報に基づいて類似ウェブページを抽出してもよい。
抽出装置100は、ウェブページのページ情報(ウェブページデータ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力されたページ情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するモデルM1を生成してもよい。なお、抽出装置100は、ベクトル生成に用いるモデルを情報提供装置50等の他の外部装置から取得してもよい。
図1の例では、抽出装置100は、ページ情報PD11が入力されたモデルM1中の各要素の値を用いて、ベクトルデータVD11(単に「ベクトルVD11」ともいう)を生成する。例えば、抽出装置100は、ページPG11のページ情報PD11が入力された場合における、モデルM1のニューロンNL1に対応する値VE1(図11参照)やニューロンNL2に対応する値VE2(図11参照)を用いて、ベクトルを生成する。例えば、抽出装置100は、ページPG11のページ情報PD11が入力された場合に、算出されるニューロンNL1に対応する値VE1をベクトルVD11の1次元目の要素として抽出してもよい。また、例えば、抽出装置100は、あるウェブページのページ情報が入力された場合に、算出されるニューロンNL2に対応する値VE2をベクトルVD11の2次元目の要素として、ベクトルVD11を生成する。図1の例では、抽出装置100は、1次元目の要素が「3」であり、2次元目の要素が「1」であるようなベクトルVD11を生成する。
また、図1の例では、抽出装置100は、クエリ情報が起点ノードとなるノードN11に対応するページPG11と同一であるため、起点ノードについては、ベクトルデータの生成や類似度算出等の処理は行わない。例えば、抽出装置100は、起点ノードが起点基準CR2に基づくページPG99に対応するノードN99である場合、クエリ情報に対応するページPG11と異なるため、起点ノードに対応するベクトルデータの生成や類似度算出等の処理も行う。
次に、抽出装置100は、起点ノードとなるノードN11から出力エッジが連結されたノードに対応するベクトルを生成する。図1の例では、抽出装置100は、処理群PS12に示すような処理により、ノードN11からエッジE111が連結されたノードN3(ページPG3)に対応するベクトルを生成する。抽出装置100は、ページPG3に関するページ情報PD3をモデルM1に入力する(ステップS14−3)。具体的には、抽出装置100は、ページPG3のページ情報PD3をモデルM1に入力する。そして、抽出装置100は、ページ情報PD3の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS14−4)。例えば、抽出装置100は、ステップS14−2と同様に、ページ情報PD3が入力されたモデルM1中の各要素を用いて、ベクトルデータVD3を生成する。図1の例では、抽出装置100は、1次元目の要素が「2」であり、2次元目の要素が「0」であるようなベクトルVD3を生成する。
そして、抽出装置100は、クエリ情報に対応するベクトルデータVD11とノードN3のベクトルデータVD3とに基づいて、ページPG11とページPG3との類似度を算出する。ここで、ベクトルデータ間の距離は、ウェブページの類似性を示し、距離が近いほど類似している。そのため、例えば、抽出装置100は、クエリ情報に対応するベクトルデータVD11とノードN3のベクトルデータVD3との間の距離を算出し、算出した距離をページPG11とページPG3との類似度(「類似度SM3」とする)と決定する。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。
そして、抽出装置100は、ノードN3から出力エッジが連結されたノードに対応するベクトルを生成する。図1の例では、抽出装置100は、処理群PS13に示すような処理により、ノードN3からエッジE31が連結されたノードN1(ページPG1)に対応するベクトルを生成する。抽出装置100は、ページPG1に関するページ情報PD1をモデルM1に入力する(ステップS14−5)。具体的には、抽出装置100は、ページPG1のページ情報PD1をモデルM1に入力する。そして、抽出装置100は、ページ情報PD1の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS14−6)。例えば、抽出装置100は、ステップS14−2と同様に、ページ情報PD1が入力されたモデルM1中の各要素を用いて、ベクトルデータVD1を生成する。図1の例では、抽出装置100は、1次元目の要素が「1」であり、2次元目の要素が「1」であるようなベクトルVD1を生成する。
そして、抽出装置100は、クエリ情報に対応するベクトルデータVD11とノードN1のベクトルデータVD1とに基づいて、ページPG11とページPG1との類似度を算出する。例えば、抽出装置100は、クエリ情報に対応するベクトルデータVD11とノードN1のベクトルデータVD1との間の距離を算出し、算出した距離をページPG11とページPG1との類似度(「類似度SM1」とする)と決定する。例えば、抽出装置100は、類似度SM3と類似度SM1との比較に基づいて、ページPG3とページPG1とがクエリ情報としてのページPG11との類似度に応じて順位付けされたリストを生成してもよい。図1の例では、抽出装置100は、ページPG3の方がページPG1よりもページPG11に類似しているため、ページPG3の順位をページPG1の順位よりも高くしたリスト(「リストLT」とする)を生成してもよい。
また、図1の例では、ノードN3からエッジE32が連結されたノードN11は起点ノードであり、既に処理済みのノードであるためベクトルの生成や類似度算出の処理を行わない。そして、図1の例では、抽出装置100は、処理群PS14に示すような処理により、ノードN3からエッジE33が連結されたノードN618(ページPG618)に対応するベクトルを生成する。抽出装置100は、ページPG618に関するページ情報PD618をモデルM1に入力する(ステップS14−7)。具体的には、抽出装置100は、ページPG618のページ情報PD618をモデルM1に入力する。そして、抽出装置100は、ページ情報PD618の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS14−8)。例えば、抽出装置100は、ステップS14−2と同様に、ページ情報PD618が入力されたモデルM1中の各要素を用いて、ベクトルデータVD618を生成する。図1の例では、抽出装置100は、1次元目の要素が「0」であり、2次元目の要素が「0」であるようなベクトルVD618を生成する。
そして、抽出装置100は、クエリ情報に対応するベクトルデータVD11とノードN618のベクトルデータVD618とに基づいて、ページPG11とページPG618との類似度を算出する。例えば、抽出装置100は、クエリ情報に対応するベクトルデータVD11とノードN618のベクトルデータVD618との間の距離を算出し、算出した距離をページPG11とページPG618との類似度(「類似度SM618」とする)と決定する。例えば、抽出装置100は、類似度SM618に基づいて、リストLTを更新してもよい。図1の例では、抽出装置100は、ページPG618がページPG1よりもページPG11に類似しているため、ページPG618の順位をページPG1の順位よりも高くしたリストLTを生成してもよい。また、抽出装置100は、ページPG3がページPG618よりもページPG11に類似しているため、ページPG3、ページPG618、ページPG1の順で並んだリストLTを生成してもよい。
そして、上記のような処理を繰り返すことにより、抽出装置100は、ページPG11に類似するウェブページを抽出する。例えば、抽出装置100は、ノードN11(ページPG11)の出力エッジが連結されるノードと、ノードN618(ページPG618)の出力エッジが連結されるノードとのいずれを先に処理するかを、クエリ情報との類似度に基づいて決定してもよい。例えば、抽出装置100は、クエリ情報との類似度が高い、すなわちクエリ情報と類似しているノードの連結先を先に処理すると決定してもよい。例えば、抽出装置100は、ページPG618の方がページPG11よりもページPG11に類似しているため、ノードN618(ページPG618)の出力エッジが連結されるノードを先に処理すると決定する。そして、抽出装置100は、処理対象となったノードに対応するページ情報を、モデルM1を用いてリアルタイムに順次ベクトル化し、クエリ情報との類似度を算出する。そして、抽出装置100は、クエリ情報との類似度に基づいて、各ページを順位付けしたリストLTを生成する。
なお、検索処理を終了するかを適宜の条件により決定してもよい。例えば、抽出装置100は、検索の起点ノードから所定数のエッジまでの範囲を検索範囲としてもよい。例えば、抽出装置100は、検索の起点ノードからエッジを4本まで辿って到達可能な範囲を検索範囲としてもよい。例えば、抽出装置100は、検索対象として処理したノード数が所定の閾値(例えば100や1000等)を超えるまで処理を繰り返してもよい。
図1の例では、説明を簡単にするために、抽出装置100は、検索の起点となるノードN11からエッジを4本まで辿って到達可能な範囲を検索範囲とする場合を示す。この場合、抽出装置100は、エッジE111、エッジE31、エッジE11と3本のエッジを辿って到達可能なノードN2の参照先となるノードN90、N246、N211等までを検索範囲とする。すなわち、抽出装置100は、ノードN11から4本のエッジを辿って到達可能なノードN90、N246、N211等までを検索範囲とする。
抽出装置100は、所定のフラグ等を用いて、処理対象となるノードが起点ノードからエッジを何本辿って到達したかを特定可能にしてもよい。例えば、抽出装置100は、ノード毎に対応付けたフラグを用いて、そのノードに到達するまでに辿ったエッジの本数を特定可能にしてもよい。例えば、抽出装置100は、参照元のノードのフラグをインクリメント(1加算した)した値を参照先のノードのフラグとすることにより、そのノードに到達するまでに辿ったエッジの本数を特定可能にしてもよい。例えば、抽出装置100は、処理対象としたノードのフラグが4より大きい場合、そのエッジの処理を行わず次のノードの処理対象としてもよい。図1の例では、上述のような処理を繰り返すことにより、抽出装置100は、クエリ情報であるページPG11に類似する方からページPG211、ページPG3、ページPG618、ページPG2の順で並んだリストLTを生成してもよい。
このように、抽出装置100は、グラフ情報GR11を検索することにより、ページPG11の類似ページを抽出する(ステップS15)。図1の例では、上記のように、抽出装置100は、ノードN11を起点として、グラフ情報GR11を探索することにより、ノードN211やノードN3を類似ページとして抽出する。図1の例では、抽出装置100は、リストLTから類似度が高い方から順に類似ページを抽出する。例えば、抽出装置100は、所定数(例えば、2個や10個等)のノードを類似ページとして抽出する。例えば、抽出装置100は、所定数が2個である場合、ページPG11に最も類似するページPG211と2番目に類似するページPG3を類似ページとして抽出する。
なお、上記は一例であり、抽出装置100は、種々の情報や基準を用いて類似ページを抽出してもよい。例えば、抽出装置100は、非特許文献1に開示されるような近傍検索の技術等の種々の従来技術を適宜用いて、ページPG11の類似ページを検索してもよい。例えば、抽出装置100は、図12に示すような検索処理により、ページPG11の類似ページを抽出してもよいが、詳細は後述する。
そして、抽出装置100は、抽出した類似ページに関する情報を提供する(ステップS16)。図1の例では、抽出装置100は、ノードN211に対応するページPG211を示す情報や、ノードN3に対応するページPG3を示す情報をユーザU1が利用する端末装置10に提供する。抽出装置100は、ノードN211に対応するページPG211を示す情報や、ノードN3に対応するページPG3を示す情報をユーザU1が利用する端末装置10に送信(配信)する。例えば、抽出装置100は、ウェブページ#211や、ウェブページ#3をページPG11に類似するウェブページとしてユーザU1が利用する端末装置10に提供する。例えば、抽出装置100は、ウェブページ#211や、ウェブページ#3をページPG11に類似するウェブページとしてユーザU1が利用する端末装置10に送信(配信)する。
上述したように、抽出装置100は、ウェブページのリンク関係に基づくグラフ情報GR11を用いて、ユーザU1から取得したページPG11の類似ページを抽出する。例えば、抽出装置100は、起点基準CR1を用いて、ページPG11の類似ページを抽出する際のグラフ情報GR11における起点ベクトルを決定する。そして、抽出装置100は、決定した起点ベクトルを起点としてグラフ情報GR11を探索することにより、ページPG11の類似ページを抽出する。これにより、抽出装置100は、類似のウェブページを適切に抽出することができる。例えば、ディープラーニングといった手法で、ウェブページを識別するという方法もあるが、ウェブページを構成する多種多様な要素が存在する場合においては、各要素の事例が少ないので、学習ができずに識別精度を向上させることが難しいという問題がある。例えば、ディープラーニングといった学習手法で生成したモデルを用いて、そのモデルにウェブページの情報を入力し、出力されたスコアからそのウェブページがどのカテゴリ等に属するかを識別するという方法もあるが、多種多様な要素が存在する場合においては、各要素の事例が少ないため、モデルの精度を向上させることが難しく、識別精度を向上させることが難しい。一方で、抽出装置100は、ウェブページのリンク関係に基づいてグラフ構造を形成する。そして、抽出装置100は、検索の際には、各ノードに対応するページ情報をリアルタイムにベクトル化し、クエリ情報と各ノードとの類似度を用いて検索を行うことにより、あるウェブページに類似する類似ページを適切に抽出することができる。そのため、抽出装置100は、あるウェブページがどのようなウェブページに類似するかを精度よく識別することができる。なお、抽出装置100は、リアルタイムにベクトル化する場合に限らず、例えば予め各ウェブページをベクトル化したデータを用いてもよい。
〔1−3.インデックス情報〕
なお、抽出装置100は、種々のインデックス情報を用いて、グラフ情報を検索してもよい。また、例えば、抽出装置100は、検索時に用いるインデックスデータを生成してもよい。例えば、抽出装置100は、高次元ベクトルを検索する検索インデックスをインデックスデータとして生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
例えば、抽出装置100は、ツリー構造(木構造)に関する検索インデックスをインデックスデータとして生成してもよい。例えば、抽出装置100は、kd木(k-dimensional tree)に関する検索インデックスをインデックスデータとして生成してもよい。例えば、抽出装置100は、VP木(Vantage-Point tree)に関する検索インデックスをインデックスデータとして生成してもよい。
また、例えば、抽出装置100は、その他の木構造を有するインデックスデータとして生成してもよい。例えば、抽出装置100は、木構造のインデックスデータのリーフがグラフデータに接続する種々のインデックスデータを生成してもよい。例えば、抽出装置100は、木構造のインデックスデータのリーフがグラフデータ中のノードに対応する種々のインデックスデータを生成してもよい。また、抽出装置100は、このようなインデックスデータを用いて検索を行う場合、インデックスデータを辿って到達したリーフ(ノード)からグラフデータを探索してもよい。
なお、上述したようなインデックスデータは一例であり、抽出装置100は、グラフデータ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、抽出装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、インデックスデータを生成してもよい。例えば、抽出装置100は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、抽出装置100は、非特許文献1に記載されるようなグラフ型の検索インデックスに関する情報をインデックス情報として用いてもよい。抽出装置100は、上述のようなインデックスデータとグラフデータとを用いることにより、所定の対象に関するより効率的な検索を可能にすることができる。
〔2.抽出システムの構成〕
図3に示すように、抽出システム1は、端末装置10と、情報提供装置50と、抽出装置100とが含まれる。端末装置10と、情報提供装置50と、抽出装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図3は、実施形態に係る抽出システムの構成例を示す図である。なお、図3に示した抽出システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の抽出装置100が含まれてもよい。
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。図1の例では、端末装置10は、ユーザU1が利用するノートパソコンである場合を示す。例えば、端末装置10は、ブラウザBWに表示されたウェブページ(コンテンツ)のページ情報を収集し、ページ情報を抽出装置100へ送信する。
抽出装置100は、起点ベクトルを起点としてグラフ情報を検索することにより、複数のウェブページのうち、一のウェブページに類似するウェブページである類似ページを抽出する情報処理装置である。例えば、抽出装置100は、一のウェブページに関するページ情報を取得し、ページ情報と、グラフ情報の検索の起点となる起点ベクトルに関する情報とに基づいて、起点ベクトルを決定する。
抽出装置100は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、抽出装置100は、端末装置10から一のウェブページのページ情報(以下、「クエリ情報」や「クエリ」ともいう)を取得すると、クエリに類似するウェブページ(ベクトル情報等)を検索し、検索結果を端末装置10に提供する。図1の例では、抽出装置100は、端末装置10から一のウェブページのページ情報を取得すると、一のウェブページに類似するウェブページを検索し、検索結果を類似のウェブページとして端末装置10に提供する。また、例えば、抽出装置100が端末装置10に提供するデータは、ウェブページの名称やウェブページのページ情報自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。
情報提供装置50は、抽出装置100に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集したページ情報等が格納されてもよい。例えば、情報提供装置50は、グラフ情報やインデックス情報やモデル等の種々の情報を抽出装置100に提供する情報処理装置である。
〔3.抽出装置の構成〕
次に、図4を用いて、実施形態に係る抽出装置100の構成について説明する。図4は、実施形態に係る抽出装置の構成例を示す図である。図4に示すように、抽出装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、抽出装置100は、抽出装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図3中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図4に示すように、ウェブページ情報記憶部121と、起点基準情報記憶部122と、グラフ情報記憶部123と、モデル情報記憶部124とを有する。
(ウェブページ情報記憶部121)
実施形態に係るウェブページ情報記憶部121は、ウェブページ(オブジェクト)に関する各種情報を記憶する。例えば、ウェブページ情報記憶部121は、ページIDやベクトルデータを記憶する。図5は、実施形態に係るウェブページ情報記憶部の一例を示す図である。図5に示すウェブページ情報記憶部121は、「ページID」、「ウェブページ」、「ページ情報」、「URL」、「リンク先」といった項目が含まれる。
「ページID」は、ウェブページ(オブジェクト)を識別するための識別情報を示す。また、「ウェブページ」は、ページIDにより識別されるウェブページの具体的な名称や内容等を示す。なお、図5の例では、ウェブページを「ウェブページ#1」といった抽象的な符号で示すが、各ウェブページは、どのようなウェブページであるかを示す情報やウェブページの提供元を示す情報やそのウェブページが含まれるウェブサイトを示す情報等が含まれてもよい。
「ページ情報」は、ページIDにより識別されるウェブページに関する情報(ページ情報)を示す。なお、図5の例では、ページ情報を「PD1」といった抽象的な符号で示すが、各ページ情報は、ページIDにより識別されるウェブページの文字情報、画像情報、動画情報、及び音声情報等の種々のウェブページに関する情報を含む。「URL」は、ページIDにより識別されるウェブページのURLを示す。なお、図5の例では、「URL」を「URL1」といった抽象的な符号で示すが、各ページ情報は、ページIDにより識別されるウェブページの具体的にURL、例えば、「www.XXX.co.…」といった具体的なURLを示す情報が記憶される。「リンク先」は、ページIDにより識別されるウェブページのリンク先を示す。例えば、「リンク先」は、ページIDにより識別されるウェブページに含まれるリンク(ハイパーリンク)が参照するウェブページを示す。なお、図5の例では、「リンク先」に、「PG2」等のウェブページのページIDを図示するが、「リンク先」には、リンク先のウェブページが特定可能であればどのような情報が記憶されてもよい。
例えば、図5の例では、ページID「PG1」により識別されるウェブページ(オブジェクト)は、ウェブページ#1であり、ページ情報PD1が含まれることを示す。また、ページID「PG1」により識別されるウェブページ(ページPG1)は、URLが「URL1」であり、リンク先にページPG2やページPG50が含まれることを示す。
なお、ウェブページ情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(起点基準情報記憶部122)
実施形態に係る起点基準情報記憶部122は、検索の開始の起点を決定する基準に関する各種情報を記憶する。図6は、実施形態に係る起点基準情報記憶部の一例を示す図である。図6の例では、起点基準情報記憶部122は、「基準ID」、「起点基準」等といった項目が含まれる。
「基準ID」は、ウェブページ(オブジェクト)を探索する際の起点を決定する基準を識別するための識別情報を示す。また、「起点基準」は、基準IDにより識別される起点基準の具体的な内容等を示す。
例えば、図6の例では、基準ID「CR1」により識別される起点基準(起点基準CR1)は、「閲覧中」であることを示す。すなわち、起点基準CR1は、ユーザが閲覧中のウェブページを検索開始の起点とすることを示す。また、例えば、図6の例では、基準ID「CR2」により識別される起点基準(起点基準CR2)は、「ページPG99(URL99)」であることを示す。すなわち、起点基準CR2は、ページPG99を検索開始の起点とすることを示す。例えば、ページPG99は、有名なサイトのトップページであってもよい。
なお、起点基準情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフ情報に関する各種情報を記憶する。図7は、実施形態に係るグラフ情報記憶部の一例を示す図である。図7の例では、グラフ情報記憶部123は、「ノードID」、「ページID」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「ページID」は、ウェブページ(オブジェクト)を識別するための識別情報を示す。
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図7の例では、「エッジ情報」は、エッジが有向エッジである場合を示し、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図7の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
例えば、図7の例では、ノードID「N1」により識別されるノード(ベクトル)は、ページID「PG1」により識別されるウェブページ(オブジェクト)に対応することを示す。また、ノードID「N1」により識別されるノードからは、エッジID「E11」により識別されるエッジが、ノードID「N2」により識別されるノード(ベクトル)に連結されることを示す。すなわち、図7の例では、ノードID「N1」により識別されるノード(ベクトル)からはノードID「N2」により識別されるノード(ベクトル)に辿ることができることを示す。
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。
(モデル情報記憶部124)
実施形態に係るモデル情報記憶部124は、モデルに関する情報を記憶する。例えば、モデル情報記憶部124は、生成処理により生成されたモデル情報(モデルデータ)を記憶する。図8は、実施形態に係るモデル情報記憶部の一例を示す図である。図8に示すモデル情報記憶部124は、「モデルID」、「用途」、「モデルデータ」といった項目が含まれる。なお、図8では、モデルM1のみを図示するが、M2、M21、M22等、各用途に応じて多数のモデル情報が記憶されてもよい。
「モデルID」は、モデルを識別するための識別情報を示す。例えば、モデルID「M1」により識別されるモデルは、図1の例に示したモデルM1に対応する。「用途」は、対応するモデルの用途を示す。また、「モデルデータ」は、対応付けられた対応するモデルのデータを示す。例えば、「モデルデータ」には、各層におけるノードと、各ノードが採用する関数と、ノードの接続関係と、ノード間の接続に対して設定される接続係数とを含む情報が含まれる。
例えば、図8に示す例において、モデルID「M1」により識別されるモデル(モデルM1)は、用途が「特徴抽出(ウェブページ)」であり、入力されたページ情報からの特徴の抽出に用いられることを示す。また、モデルM1のモデルデータは、モデルデータMDT1であることを示す。
モデルM1(モデルデータMDT1)は、所定のウェブページのページ情報(ページ情報)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力されたページ情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するよう、コンピュータを機能させるためのモデルである。
また、モデルM1、M2等がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、例えば、モデルM1、M2が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
ここで、モデルM21、M22等が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、例えば、モデルM21、M22が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
なお、モデル情報記憶部124は、上記に限らず、目的に応じて種々のモデル情報を記憶してもよい。
(制御部130)
図4の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、抽出装置100内部の記憶装置に記憶されている各種プログラム(抽出プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。制御部130は、モデル情報記憶部124に記憶されているモデルM1等に従った情報処理により、ウェブページのページ情報(ウェブページデータ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力されたページ情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力する。
図4に示すように、制御部130は、取得部131と、生成部132と、決定部133と、抽出部134と、提供部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図4に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、ウェブページ情報記憶部121や、起点基準情報記憶部122や、グラフ情報記憶部123や、モデル情報記憶部124等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
取得部131は、複数のウェブページの各々に対応する複数のノードが複数のウェブページのリンクに対応するエッジで連結されたグラフ情報と、検索に関するクエリ情報とを取得する。また、取得部131は、一のウェブページの情報をクエリ情報として取得する。また、取得部131は、文字列情報をクエリ情報として取得する。また、取得部131は、ユーザが利用する端末装置10からクエリ情報に関するページ情報を取得する。
また、取得部131は、複数のウェブページに関する情報を所定のモデルに入力することにより、抽出される複数のウェブページの各々の特徴量を要素とする複数のベクトルが、複数のウェブページのリンクに対応するエッジで連結されたグラフ情報を取得してもよい。
例えば、取得部131は、データ検索の対象となる複数のノード(ベクトル)を取得する。例えば、取得部131は、複数のノードと、複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群を取得する。
例えば、取得部131は、外部の情報処理装置からグラフ情報(グラフデータ)を取得する。例えば、取得部131は、グラフ情報記憶部123からグラフ情報を取得する。例えば、取得部131は、グラフ情報を取得する。図1の例では、取得部131は、グラフ情報GR11を取得する。
また、取得部131は、ユーザが利用する端末装置10から一のウェブページに関するページ情報を取得する。例えば、取得部131は、検索クエリとして、一のウェブページのページ情報を取得する。例えば、取得部131は、ウェブページに関する検索クエリを取得する。取得部131は、ユーザU1が端末装置10で閲覧中のウェブページであるページPG11のページ情報PD11をクエリ情報として取得する。
例えば、取得部131は、一のウェブページに関するページ情報(ウェブページデータ)を取得する。例えば、取得部131は、端末装置10からページPG11のページ情報PD11を取得する。例えば、取得部131は、グラフ情報記憶部123からウェブページに関するグラフ情報GR11を取得する。また、例えば、取得部131は、起点基準情報記憶部122(図6参照)から、グラフ情報GR11における検索の起点となるノード(起点ベクトル)の決定に用いる起点基準情報を取得する。
図1の例では、取得部131は、クエリ情報と閲覧ページを特定する情報を取得する。例えば、取得部131は、端末装置10からページPG11に関するページ情報PD11とページPG11を特定する情報(ページID)を取得する。
(生成部132)
生成部132は、各種情報を生成する。例えば、生成部132は、ウェブページ情報記憶部121に記憶された学習データ(ページ情報)を用いて、モデル情報記憶部124に示すようなモデルを生成する。例えば、生成部132は、取得部131により取得された学習データに基づいて、入力したページ情報と同様の情報を出力するモデル(オートエンコーダ)を生成する。例えば、生成部132は、入力するページ情報自体を正解情報として、入力したページ情報と同様の情報を出力するモデル(オートエンコーダ)を生成する。
例えば、生成部132は、モデルM1等を生成し、生成したモデルM1等をモデル情報記憶部124に格納する。なお、生成部132は、いかなる学習アルゴリズムを用いてモデルM1を生成してもよい。例えば、生成部132は、ニューラルネットワーク(neural network)等の学習アルゴリズムを用いてモデルM1を生成する。一例として、生成部132がニューラルネットワークを用いてモデルM1等を生成する場合、モデルM1等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
生成部132は、ウェブページのページ情報(ウェブページデータ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力されたページ情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するモデルを生成する。
例えば、生成部132は、学習データに基づいてモデルを生成する。例えば、生成部132は、学習データに基づいてモデルを生成する。例えば、生成部132は、ウェブページ情報記憶部121中のページ情報PD1、PD2等を学習データ(教師データ)として、学習を行うことにより、モデルを生成する。
例えば、生成部132は、ページ情報PD1が入力された場合に、モデルM1がページ情報PD1と同様の情報を出力するように、学習処理を行う。例えば、生成部132は、ページ情報PD2が入力された場合に、モデルM1がページ情報PD2と同様の情報を出力するように、学習処理を行う。
なお、生成部132は、オートエンコーダとしてのM1に限らず、種々の学習アルゴリズムを用いて種々のモデルを生成してもよい。例えば、生成部132は、Word2Vecのような単語からベクトルを生成するモデルM21やDoc2Vecのような文章からベクトルを生成するM22等を生成してもよい。例えば、生成部132は、クエリ情報がキーワード等の文字列である場合、Word2Vecのような単語からベクトルを生成するモデルM21を用いて、クエリ情報からベクトルを生成してもよい。また、例えば、生成部132は、クエリ情報がウェブページ等の文章である場合、Doc2Vecのような文章からベクトルを生成するM22を用いて、クエリ情報からベクトルを生成してもよい。例えば、生成部132は、クエリ情報がウェブページに含まれる文章である場合、Doc2Vecのような文章からベクトルを生成するM22を用いて、クエリ情報からベクトルを生成してもよい。例えば、生成部132は、ニューラルネットワーク(neural network)、サポートベクターマシン(SVM)、クラスタリング、強化学習等の学習アルゴリズムを用いてモデルM21、M22等を生成する。一例として、生成部132がニューラルネットワークを用いてモデルM21、M22等を生成する場合、モデルM21、M22等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
生成部132は、モデルを生成し、生成したモデルをモデル情報記憶部124に格納する。なお、抽出装置100は、情報提供装置50等の他の外部装置からモデルを取得する場合、生成部132を有しなくてもよい。
図1の例では、生成部132は、ページ情報の特徴を抽出するモデルを用いて各ウェブページのページ情報からN次元ベクトルを生成する。生成部132は、モデル情報記憶部124(図8参照)に示すモデルM1を用いて、各ウェブページのページ情報からベクトルを生成する。
また、生成部132はクエリ情報としてのページ情報からグラフ情報の探索に用いるベクトルを生成する。図1の例では、生成部132は、処理群PS11に示すような処理により、ページPG11に対応するベクトルを生成する。生成部132は、ページPG11に関するページ情報PD11をモデルM1に入力する。具体的には、生成部132は、ページPG11のページ情報PD11をモデルM1に入力する。そして、生成部132は、ページ情報PD11の入力後のモデルM1中の情報を用いて、ベクトルを生成する。例えば、生成部132は、ページ情報PD11が入力されたモデルM1中の各要素を用いて、ベクトルデータVD11を生成する。
図1の例では、生成部132は、ページ情報PD11が入力されたモデルM1中の各要素の値を用いて、ベクトルVD11を生成する。例えば、生成部132は、ページPG11のページ情報PD11が入力された場合における、モデルM1のニューロンNL1に対応する値VE1(図11参照)やニューロンNL2に対応する値VE2(図11参照)を用いて、ベクトルを生成する。例えば、生成部132は、ページPG11のページ情報PD11が入力された場合に、算出されるニューロンNL1に対応する値VE1をベクトルVD11の1次元目の要素として抽出してもよい。また、例えば、生成部132は、あるウェブページのページ情報が入力された場合に、算出されるニューロンNL2に対応する値VE2をベクトルVD11の2次元目の要素として、ベクトルVD11を生成する。図1の例では、生成部132は、1次元目の要素が「3」であり、2次元目の要素が「1」であるようなベクトルVD11を生成する。
図1の例では、生成部132は、起点ノードとなるノードN11から出力エッジが連結されたノードに対応するベクトルを生成する。図1の例では、生成部132は、処理群PS12に示すような処理により、ノードN11からエッジE111が連結されたノードN3(ページPG3)に対応するベクトルを生成する。抽出装置100は、ページPG3に関するページ情報PD3をモデルM1に入力する。具体的には、生成部132は、ページPG3のページ情報PD3をモデルM1に入力する。そして、生成部132は、ページ情報PD3の入力後のモデルM1中の情報を用いて、ベクトルを生成する。例えば、生成部132は、ページ情報PD3が入力されたモデルM1中の各要素を用いて、ベクトルデータVD3を生成する。生成部132は、1次元目の要素が「2」であり、2次元目の要素が「0」であるようなベクトルVD3を生成する。
例えば、生成部132は、モデルM21を用いて各ウェブページのページ情報からN次元ベクトルを生成してもよい。例えば、生成部132は、ウェブページに対応するページ情報をモデルM21に入力し、各ウェブページのページ情報からベクトルを生成する。例えば、生成部132は、モデルM21にウェブページのページ情報を入力することにより、モデルM21中の各要素(ニューロン)の値を演算し、入力したページ情報に対応するスコアを出力する。例えば、生成部132は、モデルM21の中間層の各要素(ニューロン)の値を特徴量として抽出し、各ウェブページに対応するN次元のベクトルデータを生成してもよい。
(決定部133)
決定部133は、各種情報を決定する。決定部133は、取得部131により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて、グラフ情報の検索の起点となる起点ノードを決定する。また、決定部133は、所定のウェブページに対応するノードを起点ノードとして決定する。また、決定部133は、検索を行うユーザが閲覧中のウェブページに対応するノードを起点ノードとして決定する。
図1の例では、決定部133は、一のウェブページ(クエリ)に対応する起点ベクトルを決定(特定)するために、起点基準情報記憶部122に記憶された起点基準情報を用いる。図1の例では、決定部133は、起点基準情報記憶部122に記憶された起点決定の基準となる情報に基づいて、起点ノードを決定する。図1の例では、決定部133は、基準ID「CR1」により識別される起点基準(起点基準CR1)を用いて、起点ノードを決定する。決定部133は、起点基準CR1に基づいて、ユーザU1が閲覧中であるページPG11に対応するノードN11を起点ノードに決定する。
例えば、決定部133は、ページPG11のベクトルVD11に対応する起点ベクトルを決定(特定)するために、インデックス情報を用いてもよい。決定部133は、木構造型のインデックス情報を用いて、グラフ情報GR11における起点ベクトルを決定してもよい。
(抽出部134)
抽出部134は、各種情報を抽出する。例えば、抽出部134は、ウェブページ情報記憶部121や、起点基準情報記憶部122や、グラフ情報記憶部123や、モデル情報記憶部124等から、各種情報を抽出する。例えば、抽出部134は、取得部131により取得された情報に基づいて、各種情報を抽出する。抽出部134は、取得部131により取得されたクエリ情報と、複数のウェブページとに基づいて、複数のウェブページのうち、クエリ情報に類似するウェブページである類似ウェブページを抽出する。抽出部134は、取得部131により取得されたクエリ情報に対応するベクトルであるクエリベクトルと、複数のウェブページに対応する複数のページベクトルとに基づいて、複数のウェブページのうち、クエリ情報に類似するウェブページである類似ページを抽出する。抽出部134は、クエリベクトルと、複数のウェブページに対応する複数のページベクトルとに基づいて、複数のウェブページのうち、クエリベクトルにページベクトルが類似するウェブページである類似ウェブページを抽出する。
また、抽出部134は、クエリベクトルとページベクトルとの比較に基づいて、類似ページを抽出する。抽出部134は、決定部133により取得された起点ノードを起点としてグラフ情報を検索することにより、複数のウェブページのうち、クエリ情報に類似するウェブページである類似ページを抽出する。また、抽出部134は、複数のウェブページの各々の特徴を示す複数のページベクトルに基づいて、類似ページを抽出する。
また、抽出部134は、所定のモデルを用いて複数のウェブページの各々から抽出された特徴量を要素とする複数のページベクトルに基づいて、類似ページを抽出する。また、抽出部134は、複数のウェブページに関する情報を所定のモデルに入力することにより、抽出される複数のウェブページの各々の特徴量を要素とする複数のページベクトルに基づいて、類似ページを抽出する。例えば、抽出部134は、各ノードのベクトル情報から各ノード(ベクトル)間を連結するエッジの長さ(距離)の情報を算出し、算出した長さ(距離)の情報を用いてもよい。
図1の例では、抽出部134は、グラフ情報GR11を検索することにより、ページPG11の類似ページを抽出する。抽出部134は、ノードN11を起点として、グラフ情報GR11を探索することにより、ノードN211やノードN3を類似ページとして抽出する。抽出部134は、リストLTから類似度が高い方から順に類似ページを抽出する。抽出部134は、所定数(例えば、2個や10個等)のノードを類似ページとして抽出する。抽出部134は、所定数が2個である場合、ページPG11に最も類似するページPG211と2番目に類似するページPG3を類似ページとして抽出する。
(提供部135)
提供部135は、各種情報を提供する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を送信する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を配信する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を提供する。提供部135は、抽出部134により抽出された類似ページに基づいて、所定のサービスを提供する。また、提供部135は、類似ページに関する情報提供サービスを提供する。提供部135は、端末装置10に類似ページに関する情報を提供する。
例えば、提供部135は、クエリに対応するオブジェクトIDを検索結果として提供する。例えば、提供部135は、抽出部134により選択されたオブジェクトIDを情報提供装置50へ提供する。提供部135は、抽出部134により選択されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。また、提供部135は、生成部132により生成されたモデルを外部の情報処理装置へ提供してもよい。
図1の例では、提供部135は、抽出した類似ページに関する情報を提供する。例えば、提供部135は、ノードN211に対応するページPG211を示す情報や、ノードN3に対応するページPG3を示す情報をユーザU1が利用する端末装置10に提供する。例えば、提供部135は、ウェブページ#211や、ウェブページ#3をページPG11に類似するウェブページとしてユーザU1が利用する端末装置10に提供する。
〔4.抽出処理のフロー〕
次に、図9を用いて、実施形態に係る抽出システム1による抽出処理の手順について説明する。図9は、実施形態に係る抽出処理の一例を示すフローチャートである。
図9に示すように、抽出装置100は、検索に関するクエリ情報を取得する(ステップS101)。図1の例では、抽出装置100は、端末装置10からユーザU1が閲覧中のページPG11に関するページ情報PD11を取得する。
抽出装置100は、ウェブページに関するグラフ情報を取得する(ステップS102)。例えば、抽出装置100は、グラフ情報記憶部123からウェブページに関するグラフ情報GR11を取得する。
そして、抽出装置100は、モデルを用いてクエリ情報からベクトルを生成する(ステップS103)。図1の例では、抽出装置100は、モデル情報記憶部124に記憶されたモデルM1を用いて、ページ情報PD11からベクトルVD11を生成する。
そして、抽出装置100は、所定の基準に基づいて起点ベクトルを決定する(ステップS104)。図1の例では、抽出装置100は、起点基準情報記憶部122に記憶された起点基準CR1を用いて、起点ベクトルをユーザU1が閲覧中のページPG11に対応するノードN11に決定する。
そして、抽出装置100は、グラフ情報を検索することにより、一のウェブページの類似ウェブページを抽出する(ステップS105)。図1の例では、抽出装置100は、ノードN11を起点として、グラフ情報GR11を探索することにより、ノードN211やノードN3を類似ページとして抽出する。
そして、抽出装置100は、抽出した類似ウェブページに関する情報を提供する(ステップS106)。図1の例では、抽出装置100は、ノードN211に対応するウェブページ#211や、ノードN3に対応するウェブページ#3をページPG11に類似するウェブページとしてユーザU1が利用する端末装置10に提供する。
〔5.生成処理のフロー〕
次に、図10を用いて、実施形態に係る抽出システム1による生成処理の手順について説明する。図10は、実施形態に係る生成処理の一例を示すフローチャートである。
図10に示すように、抽出装置100は、学習データを取得する(ステップS201)。例えば、抽出装置100は、ウェブページ情報記憶部121から学習データを取得する。例えば、抽出装置100は、ウェブページ情報記憶部121からページ情報PD1、PD2等を学習データとして取得する。
その後、抽出装置100は、学習データに基づきモデルを生成する(ステップS202)。例えば、抽出装置100は、ウェブページ情報記憶部121から学習データを用いてモデルM1を生成する。例えば、抽出装置100は、入力層に入力される情報(ページ情報)と同様の情報(ページ情報)を出力層から出力するようにモデルM1を生成する。例えば、抽出装置100は、ウェブページのページ情報を入力とするオートエンコーダとしてのモデルM1を生成する。
〔6.検索例〕
ここで、上述したグラフ情報を用いた検索の一例を示す。なお、グラフ情報(グラフデータ)を用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図12を一例として説明する。図12は、グラフデータ(グラフ情報)を用いた検索処理の一例を示すフローチャートである。また、以下でいうオブジェクトは、ベクトルやノードと読み替えてもよい。なお、以下では、抽出装置100が検索処理を行うものとして説明するが、検索処理は他の装置により行われてもよい。例えば、抽出装置100は、検索クエリとして、一のウェブページのページ情報から生成されたベクトルデータを用いる。例えば、抽出装置100は、一のウェブページのページ情報から生成されたベクトルデータとインデックス情報とに基づいて決定された起点ベクトルを起点としてグラフデータを検索する。図1の例では、抽出装置100は、ユーザが閲覧中のページPG11に基づいて決定された起点ベクトルであるノードN11(すなわちページPG11)を起点としてグラフ情報GR11を検索する。
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、グラフ情報GR11等)であってもよい。例えば、抽出装置100は、k近傍検索処理を実行する。
例えば、抽出装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、抽出装置100は、ルートノード(起点ベクトル)として選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。図1の例では、抽出装置100は、起点ベクトルであるノードN11等を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。
次に、抽出装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。図1の例では、抽出装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトであるベクトルVD11との距離が最も短いオブジェクトを抽出し、オブジェクトsとする。例えば、抽出装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、ベクトルVD11との距離が最も短いノードN3を抽出し、オブジェクトsとする。例えば、抽出装置100は、ルートノード(起点ベクトル)として選択されたオブジェクト(ノード)のみがオブジェクト集合Sの要素の場合には、結果的にルートノード(起点ベクトル)がオブジェクトsとして抽出される。次に、抽出装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。
次に、抽出装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、抽出装置100は、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS305)、処理を終了する。例えば、抽出装置100は、オブジェクト集合Rに含まれるノードに対応するウェブページと、検索クエリとの距離(類似度)が、所定の条件を満たさない場合、εの値を大きくすることにより、検索範囲を大きくしてもよい。例えば、抽出装置100は、オブジェクト集合Rに含まれるノードのうち、最も検索クエリとの距離が長いノードと、検索クエリとの距離が所定の閾値未満である場合、εの値を大きくすることにより、検索範囲を大きくして、再度処理を繰り返してもよい。例えば、抽出装置100は、オブジェクト集合Rに含まれるノードの数が所定数ksに満たない場合、εの値を大きくすることにより、検索範囲を大きくして、再度処理を繰り返してもよい。
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、抽出装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
次に、抽出装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、抽出装置100は、オブジェクトuをオブジェクト集合Sに追加する(ステップS308)。
次に、抽出装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合(ステップS309:No)、抽出装置100は、ステップS315の判定(処理)を行う。
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、抽出装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、抽出装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ks=2やks=10等の種々の設定であってもよい。
オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、抽出装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。
次に、抽出装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、抽出装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
そして、抽出装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、抽出装置100は、ステップS306に戻って処理を繰り返す。
オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えた場合(ステップS315:Yes)、抽出装置100は、オブジェクト集合Sが空集合であるか否かを判定する(ステップS316)。オブジェクト集合Sが空集合でない場合(ステップS316:No)、抽出装置100は、ステップS302に戻って処理を繰り返す。また、オブジェクト集合Sが空集合である場合(ステップS316:Yes)、抽出装置100は、オブジェクト集合Rを出力し、処理を終了する(ステップS317)。例えば、抽出装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置10等へ提供してもよい。図1の例では、抽出装置100は、オブジェクト集合Rに含まれるノードN211やノードN3を検索クエリ(ページPG11のベクトルVD11)に対応する検索結果として、検索を行った端末装置10等へ提供してもよい。例えば、抽出装置100は、ノードN211に対応するウェブページ#211や、ノードN3に対応するウェブページ#3をページPG11に類似するウェブページとしてユーザU1が利用する端末装置10に提供する。
〔7.効果〕
上述してきたように、実施形態に係る抽出装置100は、取得部131と、抽出部134とを有する。取得部131は、複数のウェブページの各々に対応する複数のノードが複数のウェブページのリンクに対応するエッジで連結されたグラフ情報と、検索に関するクエリ情報とを取得する。抽出部134は、取得部131により取得されたクエリ情報と、複数のウェブページとに基づいて、複数のウェブページのうち、クエリ情報に類似するウェブページである類似ウェブページを抽出する。
このように、実施形態に係る抽出装置100は、ウェブページのリンクの関係に基づくグラフ情報を検索し、複数のウェブページのうち、クエリに類似するウェブページである類似ウェブページを抽出することにより、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100は、決定部133を有する。決定部133は、取得部131により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて、グラフ情報の検索の起点となる起点ノードを決定する。抽出部134は、決定部133により取得された起点ノードを起点としてグラフ情報を検索することにより、複数のウェブページのうち、類似ウェブページを抽出する。
このように、実施形態に係る抽出装置100は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定することにより、ウェブページのリンクの関係に基づくグラフ情報を効率的に検索し、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、決定部133は、所定のウェブページに対応するノードを起点ノードとして決定する。
このように、実施形態に係る抽出装置100は、所定のウェブページに対応するノードを起点ノードとして決定することにより、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、決定部133は、検索を行うユーザが閲覧中のウェブページに対応するノードを起点ノードとして決定する。
このように、実施形態に係る抽出装置100は、検索を行うユーザが閲覧中のウェブページに対応するノードを起点ノードとして決定することにより、ユーザが閲覧している情報を基にグラフを検索できるため、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、抽出部134は、取得部131により取得されたクエリ情報に対応するベクトルであるクエリベクトルと、複数のウェブページに対応する複数のページベクトルとに基づいて、複数のウェブページのうち、クエリベクトルにページベクトルが類似する類似ウェブページを抽出する。
このように、実施形態に係る抽出装置100は、ウェブページのリンクの関係に基づくグラフ情報を検索し、複数のウェブページのうち、クエリベクトルにページベクトルが類似するウェブページである類似ウェブページを抽出することにより、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、抽出部134は、クエリベクトルとページベクトルとの比較に基づいて、類似ウェブページを抽出する。
このように、実施形態に係る抽出装置100は、クエリベクトルとページベクトルとの比較に基づいて、類似ウェブページを抽出することにより、ウェブページのリンクの関係に基づくグラフ情報を利用しつつ、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、抽出部134は、複数のウェブページの各々の特徴を示す複数のページベクトルに基づいて、類似ウェブページを抽出する。
このように、実施形態に係る抽出装置100は、複数のウェブページの各々の特徴を示す複数のページベクトルに基づいて、類似ウェブページを抽出することにより、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、抽出部134は、所定のモデルを用いて複数のウェブページの各々から抽出された特徴量を要素とする複数のページベクトルに基づいて、類似ウェブページを抽出する。
このように、実施形態に係る抽出装置100は、所定のモデルを用いて複数のウェブページの各々から抽出された特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得することにより、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、抽出部134は、複数のウェブページに関する情報を所定のモデルに入力することにより、抽出される複数のウェブページの各々の特徴量を要素とする複数のページベクトルに基づいて、類似ウェブページを抽出する。
このように、実施形態に係る抽出装置100は、複数のウェブページに関する情報を所定のモデルに入力することにより、抽出される複数のウェブページの各々の特徴量を要素とする複数のページベクトルに基づいて、類似ウェブページを抽出することにより、類似のウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、取得部131は、一のウェブページの情報をクエリ情報として取得する。
このように、実施形態に係る抽出装置100は、一のウェブページの情報をクエリ情報として取得することにより、一のウェブページに類似するウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100において、取得部131は、文字列情報をクエリ情報として取得する。
このように、実施形態に係る抽出装置100は、文字列情報をクエリ情報として取得することにより、検索キーワード等の文字列情報に類似するウェブページを適切に抽出することができる。
また、実施形態に係る抽出装置100は、提供部135を有する。提供部135は、抽出部134により抽出された類似ウェブページに基づいて、所定のサービスを提供する。
このように、実施形態に係る抽出装置100は、抽出した類似ウェブページに基づいて、所定のサービスを提供することにより、類似のウェブページに関する情報を用いたサービスを適切に提供することができる。
また、実施形態に係る抽出装置100において、提供部135は、類似ウェブページに関する情報提供サービスを提供する。
このように、実施形態に係る抽出装置100は、類似ウェブページに関する情報提供サービスを提供することにより、類似のウェブページに関する情報を用いたサービスを適切に提供することができる。
また、実施形態に係る抽出装置100において、取得部131は、ユーザが利用する端末装置10からクエリ情報に関するページ情報を取得する。提供部135は、端末装置10に類似ウェブページに関する情報を提供する。
このように、実施形態に係る抽出装置100は、ユーザが利用する端末装置10からクエリ情報に関するページ情報を取得し、端末装置10に類似ウェブページに関する情報を提供することにより、類似のウェブページに関する情報を用いたサービスを適切に提供することができる。
〔8.ハードウェア構成〕
上述してきた実施形態に係る抽出装置100は、例えば図13に示すような構成のコンピュータ1000によって実現される。図13は、抽出装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る抽出装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムまたはデータ(例えば、モデルM1(モデルデータMDT1))を実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムまたはデータ(例えば、モデルM1(モデルデータMDT1))を記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔9.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。