(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-14
(45)【発行日】2022-10-24
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
G06F 16/00 20190101AFI20221017BHJP
G06Q 30/02 20120101ALI20221017BHJP
【FI】
G06F16/00
G06Q30/02 310
(21)【出願番号】P 2018047320
(22)【出願日】2018-03-14
【審査請求日】2020-03-09
【審判番号】
【審判請求日】2021-12-16
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】塚本 浩司
(72)【発明者】
【氏名】岩崎 雅二郎
【合議体】
【審判長】須田 勝巳
【審判官】林 毅
【審判官】山崎 慎一
(56)【参考文献】
【文献】特開2017-129901(JP,A)
【文献】特開2011-90351(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F16/00
G06Q30/02
(57)【特許請求の範囲】
【請求項1】
複数のアイテムの各々に対応する複数のノードと、
前記複数のアイテムのユーザビリティに関する第1の観点及び
前記複数のアイテムの収益性に関する第2の観点を含む複数の観点の各々に対応する複数のエッジ群であって、
前記ノードの各々を前記第1の観点に基づいてベクトル化したベクトルの類似性に応じて前記ノード間を連結するエッジを含む第1のエッジ群と、
前記ノードの各々を前記第2の観点に基づいてベクトル化したベクトルの類似性に応じて前記ノード間を連結するエッジを含む第2のエッジ群を少なくとも含む複数のエッジ群とを含むグラフ情報と、アイテムに関するクエリ情報を取得する取得部と、
前記取得部により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて
、一の観点に対応するインデックス情報に基づいて決定された
、前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を前記複数のエッジ群によるノード間の連結に基づいて検索することにより、前記複数のアイテムのうち、前記クエリ情報と類似性を有するアイテムである類似アイテムを抽出する検索部と、
を備えたことを特徴とする情報処理装置。
【請求項2】
前記起点ノードの決定に用いる
前記インデックス情報に基づいて、前記起点ノードを決定する決定部、
を備え、
前記検索部は、
前記決定部により決定された前記起点ノードを起点として、前記類似アイテムを抽出する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記決定部は、
木構造型の前記インデックス情報に基づいて、前記起点ノードを決定する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記決定部は、
前
記一の観点に対応する前記インデックス情報に基づいて、前記起点ノードを決定する
ことを特徴とする請求項2または請求項3に記載の情報処理装置。
【請求項5】
前記取得部は、
一のアイテムに関するアイテム情報を前記クエリ情報として取得する
ことを特徴とする請求項1~
4のいずれか1項に記載の情報処理装置。
【請求項6】
前記取得部は、
ユーザに関するユーザ情報を前記クエリ情報として取得する
ことを特徴とする請求項1~
5のいずれか1項に記載の情報処理装置。
【請求項7】
前記検索部により抽出された前記類似アイテムに基づいて、所定のサービスを提供する提供部、
をさらに備えたことを特徴とする請求項1~
6のいずれか1項に記載の情報処理装置。
【請求項8】
前記提供部は、
前記類似アイテムに基づいて、情報提供サービスを提供する
ことを特徴とする請求項
7に記載の情報処理装置。
【請求項9】
コンピュータが実行する情報処理方法であって、
複数のアイテムの各々に対応する複数のノードと、
前記複数のアイテムのユーザビリティに関する第1の観点及び
前記複数のアイテムの収益性に関する第2の観点を含む複数の観点の各々に対応する複数のエッジ群であって、
前記ノードの各々を前記第1の観点に基づいてベクトル化したベクトルの類似性に応じて前記ノード間を連結するエッジを含む第1のエッジ群と、
前記ノードの各々を前記第2の観点に基づいてベクトル化したベクトルの類似性に応じて前記ノード間を連結するエッジを含む第2のエッジ群を少なくとも含む複数のエッジ群とを含むグラフ情報と、アイテムに関するクエリ情報を取得する取得工程と、
前記取得工程により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて
、一の観点に対応するインデックス情報に基づいて決定された
、前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を前記複数のエッジ群によるノード間の連結に基づいて検索することにより、前記複数のアイテムのうち、前記クエリ情報と類似性を有するアイテムである類似アイテムを抽出する検索工程と、
を含んだことを特徴とする情報処理方法。
【請求項10】
複数のアイテムの各々に対応する複数のノードと、
前記複数のアイテムのユーザビリティに関する第1の観点及び
前記複数のアイテムの収益性に関する第2の観点を含む複数の観点の各々に対応する複数のエッジ群であって、
前記ノードの各々を前記第1の観点に基づいてベクトル化したベクトルの類似性に応じて前記ノード間を連結するエッジを含む第1のエッジ群と、
前記ノードの各々を前記第2の観点に基づいてベクトル化したベクトルの類似性に応じて前記ノード間を連結するエッジを含む第2のエッジ群を少なくとも含む複数のエッジ群とを含むグラフ情報と、アイテムに関するクエリ情報を取得する取得手順と、
前記取得手順により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて
、一の観点に対応するインデックス情報に基づいて決定された
、前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を前記複数のエッジ群によるノード間の連結に基づいて検索することにより、前記複数のアイテムのうち、前記クエリ情報と類似性を有するアイテムである類似アイテムを抽出する検索手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、ニュース記事等のコンテンツや商品等の種々のアイテムを抽出する技術が提供されている。例えば、他のカテゴリに属する概念間の相対的な関係を考慮した上で、概念間の類似性を推定する技術が提供されている。このような技術において推定された概念間の類似性に基づいて、アイテムの配信等の種々のサービスが提供される。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】岩崎雅二郎 "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索", 情報処理学会論文誌, 2011/2, Vol. 52, No. 2. pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記の従来技術では、適切なアイテムを抽出することが難しい場合がある。例えば、他のカテゴリに属する概念間の類似性を推定するだけでは、所望の情報を抽出することが難しい。例えば、同じカテゴリに属する情報の類似性を推定することができるとは限らず、このような場合、所望の情報を抽出することが難しい。
【0006】
本願は、上記に鑑みてなされたものであって、適切なアイテムを抽出する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本願に係る情報処理装置は、複数のアイテムの各々に対応する複数のノードと、複数の観点の各々に対応する複数のエッジ群であって、各エッジ群に対応する観点に基づく前記複数のアイテムの類似性に応じて前記複数のノードを連結する複数のエッジ群とを含むグラフ情報と、アイテムに関するクエリ情報を取得する取得部と、前記取得部により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて決定された前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を前記複数のエッジ群によるノード間の連結に基づいて検索することにより、前記複数のアイテムのうち、前記クエリ情報と類似性を有するアイテムである類似アイテムを抽出する検索部と、を備えたことを特徴とする。
【発明の効果】
【0008】
実施形態の一態様によれば、適切なアイテムを抽出することができるという効果を奏する。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態に係る情報処理の一例を示す図である。
【
図2】
図2は、実施形態に係る情報処理の一例を示す図である。
【
図3】
図3は、実施形態に係るグラフ情報を概念的に示す図である。
【
図4】
図4は、実施形態に係る情報処理システムの構成例を示す図である。
【
図5】
図5は、実施形態に係る情報処理装置の構成例を示す図である。
【
図6】
図6は、実施形態に係るアイテム記憶部の一例を示す図である。
【
図7】
図7は、実施形態に係るインデックス情報記憶部の一例を示す図である。
【
図8】
図8は、実施形態に係るグラフ情報記憶部の一例を示す図である。
【
図9】
図9は、実施形態に係るモデル情報記憶部の一例を示す図である。
【
図10】
図10は、実施形態に係る情報処理の一例を示すフローチャートである。
【
図11】
図11は、実施形態に係る生成処理の一例を示すフローチャートである。
【
図12】
図12は、実施形態に係るベクトルデータの生成の一例を示す図である。
【
図13】
図13は、グラフ情報を用いた検索処理の一例を示すフローチャートである。
【
図14】
図14は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【0010】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0011】
(実施形態)
〔1.情報処理〕
図1及び
図2を用いて、実施形態に係る情報処理の一例について説明する。
図1及び
図2は、実施形態に係る情報処理の一例を示す図である。
図1及び
図2では、情報処理装置100がアイテムの一例として記事コンテンツをグラフ構造化したグラフデータ(グラフ情報)を検索することにより、類似するアイテムである類似アイテムを抽出する場合を示す。
図1及び
図2では、情報処理装置100は、各アイテムに対応するベクトルデータ(「ベクトル情報」や、単に「ベクトル」ともいう)を用いてアイテムをグラフ構造化したグラフ情報を用いる。なお、情報処理装置100が用いる情報は、ベクトルに限らず、各アイテムの類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各アイテムに対応する所定のデータや値を用いてアイテムをグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各アイテムから生成された所定の数値(例えば2進数の値や16進数の値)を用いてアイテムをグラフ構造化したグラフ情報を用いてもよい。また、
図1及び
図2の例では、記事コンテンツをアイテムの一例として示すが、アイテムは、記事コンテンツに限らず、商品や動画コンテンツ等の種々の対象であってもよい。例えば、アイテムは、所定の電子商取引で提供される商品等であってもよい。すなわち、対象とするアイテム(オブジェクト)は、各アイテム間の類似性を表現可能であれば、どのようなアイテム(情報)であってもよい。
【0012】
〔1-1.グラフ情報について〕
詳細は
図1及び
図2において詳述するが、情報処理装置100は、複数の観点(以下、「ターゲット」ともいう)の各々に対応する複数のエッジ群により複数のノードが連結されたグラフ情報を用いて処理を行う。以下では、異なる2つの観点の各々に対応する2つのエッジ群により複数のノードが連結されたグラフ情報を用いて処理を行う場合を示す。具体的には、2つのエッジ群のうち、第1のエッジ群は、ユーザビリティの観点でのアイテムの類似度に応じて、アイテム(ノード)を連結するエッジ群(以下、「エッジ群EG11」と記載する場合がある)である。また、2つのエッジ群のうち、第2のエッジ群は、収益性の観点でのアイテムの類似度に応じて、アイテム(ノード)を連結するエッジ群(以下、「エッジ群EG12」と記載する場合がある)である。なお、エッジ群は2つに限らず、3つ以上の観点の各々に対応する3つ以上のエッジ群であってもよい。
【0013】
また、各エッジ群は、対応する観点におけるノード(ベクトル)の類似度に応じて、ノードを連結するが、各ノードに対応するベクトルは、各観点に応じて値が変動する。例えば、エッジ群EG11に対応するユーザビリティの観点での各アイテムのベクトルと、エッジ群EG12に対応する収益性の観点での各アイテムのベクトルとは値が異なる。このように、アイテムを捉える観点に応じてノード間の距離が変動し、複数の観点での類似関係(近接関係)を同時に図示することができないため、各観点での類似関係をノードの位置で示す場合は、観点ごとに図示する。例えば、
図1及び
図2の例では、グラフ情報GR11-1は、ユーザビリティの観点での各アイテムの類似関係を位置で示し、グラフ情報GR11-2は、収益性の観点での各アイテムの類似関係を位置で示す。なお、ノードの類似関係を考慮せず、ノード間のエッジによる連結関係を図示する場合は、
図3中のグラフ情報GR11-0のように図示するが、詳細は後述する。
【0014】
また、以下では、各観点に対応する各アイテム(ノード)のベクトル及び各エッジ群によるアイテム(ノード)間の連結等の情報を含むグラフ情報をグラフ情報GR11と記載する。なお、グラフ情報GR11には、各エッジ群に含まれるエッジの距離(長さ)の情報が含まれてもよい。例えば、以下の説明において、グラフ情報GR11と記載した場合、
図3中のグラフ情報GR11-0、GR11-1、GR11-2の情報を含んだグラフ情報であるものとする。例えば、グラフ情報GR11は、各ノードに、観点ごとのベクトルやエッジの連結を示す情報を対応付けた情報を含んでもよい。例えば、グラフ情報GR11は、各ノードに、ユーザビリティに対応するベクトルと収益性に対応するベクトルや、エッジ群EG11、EG12による連結関係を示す情報を対応付けた情報を含んでもよい。
【0015】
まず、ユーザビリティの観点でノードが連結されたグラフ情報GR11-1を一例として、
図1及び
図2で用いるグラフ情報の概要について説明する。グラフ情報GR11-1は、複数の基準のうち、ユーザビリティをターゲットとしてアイテム情報(アイテムデータ)をグラフ構造化したグラフ情報である。ここでいう、ターゲットとは、モデルやグラフ情報を生成する際の観点であってもよい。すなわち、ターゲットとは、モデルやグラフ情報がどのような観点でアイテム情報の類似性を見出すかを示す情報であってもよい。例えば、ターゲットとは、モデルやグラフ情報が何を対象とするものであるかを示す情報であってもよい。また、ターゲットとは、モデルやグラフ情報が用いられる目的や用途であってもよい。
【0016】
グラフ情報GR11-1は、ユーザビリティの観点に基づいてアイテム情報(アイテムデータ)をグラフ構造化したグラフ情報である。グラフ情報GR11-1には、各アイテムに対応するノードやユーザビリティに対応するエッジ群EG11のエッジが含まれる。例えば、情報処理装置100は、
図2中のグラフ情報GR11-1に示すように、各ベクトル(ノード)が有向エッジにより連結されたグラフデータを対象に情報処理を行う。なお、
図2中のグラフ情報GR11-1に示すようなグラフ情報は、情報処理装置100が生成してもよいし、情報処理装置100は、
図2中のグラフ情報GR11-1に示すようなグラフ情報を情報提供装置50(
図4参照)等の他の外部装置から取得してもよい。
【0017】
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て双方向エッジであってもよい。
【0018】
例えば、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2つのノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。
【0019】
例えば、情報処理装置100は、数百万~数億単位のアイテムに対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。
図2の例では、説明を簡単にするために、9個のノードを図示して処理の概要を説明する。例えば、情報処理装置100は、
図2中のグラフ情報GR11-1に示すように、ノードN1、N2、N3等に示すような複数のノード(ベクトル)を含むグラフ情報を取得する。また、
図2の例では、グラフ情報GR11-1における各ノードは、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結される。例えば、所定数は、目的や用途等に応じて、2や5や10や100等の種々の値であってもよい。例えば、所定数が2である場合、ノードN1からは、ノードN1からの距離が最も近いノード及び2番目に距離が近い2つのノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。例えば、情報処理装置100は、下記の式(1)を用いてベクトル間の距離を算出してもよい。
【0020】
また、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
【0021】
また、
図2中のグラフ情報GR11-1では、ノードN1は、ノードN312へ向かう有向エッジであるエッジE12が連結される。すなわち、ノードN1は、ノードN312とエッジE12により連結される。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE12」と記載した場合、そのエッジはエッジID「E12」により識別されるエッジである。例えば、ノードN1を参照元とし、ノードN312を参照先として連結されるエッジE12により、ノードN1からノードN312に辿ることが可能となる。この場合、有向エッジであるエッジE12は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN312を中心として識別される場合、入力エッジとなる。また、
図2のグラフ情報GR11-1中の双方向矢印は、両方のノードから他方のノードへの有向エッジが連結されることを示す。例えば、グラフ情報GR11-1中のノードN83とノードN693との間の双方向矢印は、ノードN83からノードN693へ向かう有向エッジと、ノードN693からノードN83へ向かう有向エッジとの2つのエッジが連結されることを示す。
【0022】
また、
図2中のグラフ情報GR11-1は、ユークリッド空間であってもよい。また、
図2に示すグラフ情報GR11-1は、各ベクトル間の距離等の説明のための概念的な図であり、グラフ情報GR11-1は、多次元空間である。例えば、
図2に示すグラフ情報GR11-1は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。
【0023】
ここで、ベクトルデータ間の距離は、アイテムの類似性を示し、距離が近いほど類似している。本実施形態においては、グラフ情報GR11-1における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象(アイテム)の類似性が、グラフ情報GR11-1内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、
図2に示す例においては、グラフ情報GR11-1における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフ情報GR11-1における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、
図2中のグラフ情報GR11-1において、ノードID「N3」により識別されるノードと、ノードID「N693」により識別されるノードとは近接している、すなわち距離が短い。そのため、ノードID「N3」により識別されるノードに対応するオブジェクトと、ノードID「N693」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。この場合、例えば、ノードID「N3」により識別されるノードに対応するオブジェクトと、ノードID「N693」により識別されるノードに対応するオブジェクトとは、ユーザビリティの観点においては類似度が高いことを示す。
【0024】
また、例えば、
図2中のグラフ情報GR11-1において、ノードID「N312」により識別されるノードと、ノードID「N2」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードID「N312」により識別されるノードに対応するオブジェクトと、ノードID「N2」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。この場合、例えば、ノードID「N2」により識別されるノードに対応するオブジェクトと、ノードID「N312」により識別されるノードに対応するオブジェクトとは、ユーザビリティの観点においては類似度が低いことを示す。
【0025】
〔1-2.ベクトルの生成例〕
また、ここでいう、各ノード(ベクトル)は、各オブジェクト(アイテム)に対応する。アイテム情報が様々な観点に対応するアイテムの状態を示す数値データであれば、それをベクトルデータとして、そのまま扱うことも可能である。しかし、アイテム情報が、テキスト、画像、または、音声であったりする場合には、ベクトルデータへの変換が必要となる。そこで、
図1の例では、各アイテムのアイテム情報から抽出された特徴量により生成された多次元(N次元)のベクトルがオブジェクトであってもよい。
図1及び
図2の例では、各アイテムのアイテムデータ(アイテム情報)から抽出された特徴量により生成された多次元(N次元)のベクトルがオブジェクトであってもよい。
図1及び
図2の例では、情報処理装置100は、複数の基準ごとに生成されるベクトルを用いる。例えば、情報処理装置100は、各アイテムについて、ユーザビリティ、収益性等の観点ごとに生成された多次元(N次元)のベクトルを用いる。例えば、
図1中のグラフ情報GR11-1は、各ノード(アイテム)についてターゲット「ユーザビリティ」の観点で生成されたベクトルの類似度に応じてノードがエッジ群EG11により連結されたグラフ構造を示す。例えば、
図1中のグラフ情報GR11-2は、各ノード(アイテム)についてターゲット「収益性」の観点で生成されたベクトルの類似度に応じてノードがエッジ群EG12により連結されたグラフ構造を示す。なお、情報処理装置100は、ターゲット「ユーザビリティ」やターゲット「収益性」に限らず、種々の観点で処理を行ってもよいが、この点については後述する。
【0026】
例えば、情報処理装置100は、ターゲットごとに生成されたモデルを用いて各アイテム情報からN次元ベクトルを生成してもよい。
図1及び
図2の例では、情報処理装置100は、モデル情報記憶部124(
図9参照)に示すように、モデルID「M1」により識別されるモデル(モデルM1)を用いて、各アイテムのアイテムデータからベクトルを生成する。上記のように、「モデルM*(*は任意の数値)」と記載した場合、そのモデルはモデルID「M*」により識別されるモデルであることを示す。例えば、「モデルM1」と記載した場合、そのモデルはモデルID「M1」により識別されるモデルである。また、モデル情報記憶部124に示すように、モデルM1はターゲット「ユーザビリティ」、すなわちユーザビリティの観点での各特徴量の重みの導出(生成)のために用いられるモデルである。
【0027】
例えば、情報処理装置100は、各アイテム情報と各ターゲットに対応するモデルとを用いて、各ターゲットに対応する各アイテムのベクトルデータを生成してもよい。情報処理装置100は、アイテム#1のアイテム情報IMD1と、ターゲット「ユーザビリティ」に対応するモデルM1とを用いて、ターゲット「ユーザビリティ」に対応するアイテム#1のN次元のベクトルデータを生成してもよい。
【0028】
ここで、
図12を用いて、各アイテムのアイテムに対応するベクトルデータの生成の一例を示す。
図12は、実施形態に係るベクトルデータの生成の一例を示す図である。
図12中のモデル式MFMに示す「y=w1*x1+w2*x2+・・・+wn*xn」(nは任意の数値、N次元ベクトルの場合、n=N)の式は、n個の特徴量(素性)とその重みとを含むモデルの式を示す。例えば、モデルM1、M2等は、モデル式MFMの形式により表現される。例えば、情報処理装置100は、モデル式MFM中の各特徴量とその重みとの組合せをベクトルの各次元の要素として、N次元ベクトルを生成する。例えば、情報処理装置100は、
図12中のベクトル形式VFMに示すように、「w1*x1」をベクトルの1次元目の要素とし、「w2*x2」をベクトルの2次元目の要素とし、「wn*xn」をベクトルのn次元目の要素としたN次元ベクトルを生成する。
【0029】
次に、アイテムのアイテム情報と各ターゲットに対応するモデルとを用いたベクトルの生成の例を説明する。具体的には、情報処理装置100がアイテム#1について、ターゲット「ユーザビリティ」に対応するベクトルデータVD1-1と、ターゲット「ユーザビリティ」に対応するベクトルデータVD1-2を生成する場合を示す。
【0030】
まず、
図12中のモデル情報記憶部124について説明する。「ターゲットID」は、どのような観点をターゲット(目的)とするかを識別するための識別情報を示す。また、「ターゲット」は、ターゲットIDにより識別されるターゲットの具体的な名称や内容等を示す。すなわい、「ターゲット」は、対応するモデルがどのような観点に基づくかを示す。「特徴量#1」~「特徴量#3」の各々は、各モデルの一つの特徴量(要素)を示す。なお、
図12の例では、説明のために、各特徴量の項目に括弧書きで各特徴量に対応する対象を示す。例えば、「特徴量#1」の下に示す「(単語#1)」は、「特徴量#1」に対応する対象が単語#1であることを示す。例えば、「特徴量#1」~「特徴量#3」等に対応する特徴については、予め設定されたものであってもよい。なお、
図12では、「特徴量#3」までを図示するが、特徴量がn個(nは任意の数値)である場合、各モデルには、「特徴量#1」~「特徴量#n」のn個の特徴量が含まれる。例えば、特徴量が5千個である場合、各モデルには、「特徴量#1」~「特徴量#5000」の5千個の特徴量が含まれる。例えば、「特徴量#1」~「特徴量#3」等に対応する特徴については、情報処理装置100の管理者等が設定してもよい。例えば、情報処理装置100は、「特徴量#1」を「単語#1」と設定され、「特徴量#2」を「単語#2」と設定され、「特徴量#3」を「画像」と設定されたことを示す設定情報を、情報処理装置100の管理者等の入力により取得してもよい。また、例えば、情報処理装置100は、上記のような設定情報を、外部の情報処理装置(情報提供装置50等)から取得してもよい。
【0031】
例えば、
図12に示す例において、モデルM1は、ターゲット「ユーザビリティ」に対応するモデルであることを示す。また、例えば、
図12に示す例において、モデルM2は、ターゲット「収益性」に対応するモデルであることを示す。
【0032】
例えば、
図12に示す例において、各モデルの特徴量#1は単語#1に対応する特徴量(素性)であることを示す。また、例えば、
図12に示す例において、各モデルの特徴量#2は単語#2に対応する特徴量であることを示す。また、例えば、
図12に示す例において、各モデルの特徴量#3は画像に対応する特徴量であることを示す。
【0033】
また、
図12中のアイテム情報一覧ILTは、アイテム情報から生成される情報であって、ベクトルの生成に用いられる情報(以下、「ベクトル用情報」ともいう)を示す。アイテム#1における単語#1の値(x1)は「1」であることを示す。例えば、情報処理装置100は、アイテム#1における単語#1の出現頻度が所定の閾値(例えば5回等)以上である場合、アイテム#1における単語#1(特徴量#1)の値(x1)を「1」と決定する。また、アイテム#1における単語#2の値(x2)は「0」であることを示す。例えば、情報処理装置100は、アイテム#1における単語#2の出現頻度が所定の閾値(例えば3回等)未満である場合、アイテム#1における単語#2(特徴量#2)の値(x2)を「0」と決定する。また、アイテム#1における画像の値(x3)は「1」であることを示す。例えば、情報処理装置100は、アイテム#1に画像が含まれる場合、アイテム#1における画像(特徴量#3)の値(x3)を「1」と決定する。
【0034】
この場合、情報処理装置100は、ベクトル用情報一覧VLT1に示すように、「x1=1」、「x2=0」、「x3=1」等の各次元の変数(変項)に入力される値を決定する。例えば、情報処理装置100は、アイテム#1のアイテム情報IMD1等に含まれる文字情報を形態素解析等の自然言語処理技術を適宜用いて解析することにより、単語(キーワード)を抽出し、各単語の出現頻度を計数(カウント)してもよい。例えば、情報処理装置100は、アイテム#1のアイテム情報IMD1から抽出された単語の情報に基づいて、アイテム#1における各単語の出現頻度を計数する。また、情報処理装置100は、アイテム#1のアイテム情報IMD1等に含まれる画像情報に基づいて、画像情報の有無を判定してもよい。
【0035】
また、
図12に示す例において、モデルM1は、特徴量#1の重みが「0.02」、特徴量#2の重みが「0.05」、特徴量#3の重みが「0.01」等であることを示す。この場合、情報処理装置100は、重み情報一覧WLT1に示すように、「w1=0.02」、「w2=0.05」、「w3=0.01」等、ターゲット「ユーザビリティ」に対応する各次元の重みの値を決定する。
【0036】
そして、情報処理装置100は、「w1」を「0.02」とし、「x1」を「1」とし、「w2」を「0.05」とし、「x2」を「0」とし、「w3」を「0.01」とし、「x3」を「1」とした中間ベクトルSB1-1を生成する。そして、情報処理装置100は、次元ごとに特徴量と重みとを乗算することにより、各次元の要素を算出する。これにより、情報処理装置100は、1次元目の値が「0.02」であり、2次元目の値が「0」であり、3次元目の値が「0.01」であるベクトルVD1-1を生成する。すなわち、情報処理装置100は、
図12中に示すように「0.02,0,0.01,…」のような、ターゲット「ユーザビリティ」に対応するベクトルVD1-1を生成する。
【0037】
また、モデルM2は、特徴量#1の重みが「0.01」、特徴量#2の重みが「0」、特徴量#3の重みが「0.06」等であることを示す。この場合、情報処理装置100は、重み情報一覧WLT2に示すように、「w1=0.01」、「w2=0」、「w3=0.06」等、ターゲット「収益性」に対応する各次元の重みの値を決定する。
【0038】
そして、情報処理装置100は、「w1」を「0.01」とし、「x1」を「1」とし、「w2」を「0」とし、「x2」を「0」とし、「w3」を「0.06」とし、「x3」を「1」とした中間ベクトルSB1-2を生成する。そして、情報処理装置100は、次元ごとに特徴量と重みとを乗算することにより、各次元の要素を算出する。これにより、情報処理装置100は、1次元目の値が「0.01」であり、2次元目の値が「0」であり、3次元目の値が「0.06」であるベクトルVD1-2を生成する。すなわち、情報処理装置100は、
図12中に示すように「0.01,0,0.06,…」のような、ターゲット「収益性」に対応するベクトルVD1-2を生成する。
【0039】
このように、情報処理装置100は、1つのアイテムについて、複数の基準の各々に基づく複数のベクトルを生成する。なお、上記は一例であり、情報処理装置100は、種々の情報を適宜用いて、1つのアイテムについて、複数の各々に基づく複数のベクトルを生成してもよい。なお、情報処理装置100は、情報提供装置50等の他の外部装置からモデルM1、M2等を取得してもよい。
【0040】
また、情報処理装置100は、生成したベクトルをアイテム情報記憶部121(
図6参照)等の記憶部120(
図5参照)に記憶してもよいし、ベクトルを用いる際に随時生成してもよい。例えば、情報処理装置100は、ベクトル間の距離計算等のベクトルを用いた処理を行う際に、アイテム情報記憶部121に記憶されたベクトル用情報やモデル情報記憶部124(
図9参照)に重み情報を含むモデルを用いて、ベクトルを生成してもよい。情報処理装置100は、ベクトル間の距離計算時に、ベクトル用情報とモデルとを用いて、ベクトルを生成してもよい。また、情報処理装置100は、ベクトル用情報をベクトルとして用いてもよい。
【0041】
また、例えば、情報処理装置100は、オートエンコーダ等の種々のモデルを用いて、アイテム情報からの特徴抽出を行い、その特徴を用いてベクトルの生成を行なってもよい。例えば、情報処理装置100は、ターゲット「ユーザビリティ」に適したアイテム情報からオートエンコーダにより特徴抽出を行い、その特徴を用いてターゲット「ユーザビリティ」に対応するベクトルの生成を行なってもよい。例えば、情報処理装置100は、ターゲット「収益性」に適したアイテム情報からオートエンコーダにより特徴抽出を行い、その特徴を用いてターゲット「収益性」に対応するベクトルの生成を行なってもよい。例えば、所定の目的に適したアイテム情報と適さないアイテム情報を識別するように学習させたモデルを生成して、その中間層をベクトルデータとして抽出しても良い。また、例えば、トリプレットロス(triplet loss)といった類似性を学習する方法によりモデルを生成してもよい。例えば、情報処理装置100は、記事コンテンツの特徴(素性)に対応する情報をアイテム情報から抽出し、ベクトルを生成してもよい。
【0042】
なお、情報処理装置100は、アイテム情報記憶部121(
図6参照)に記憶された各アイテムのアイテム情報IMD1、IMD2、IMD83等を入力として、モデルを生成してもよい。情報処理装置100は、各アイテムのアイテム情報IMD1、IMD2、IMD83等を入力とし、各ターゲットに対応する正解情報にモデルの出力値が近づくように学習することにより、各ターゲットに対応するモデルを生成してもよい。情報処理装置100は、各アイテムのアイテム情報IMD1、IMD2、IMD83等を入力とし、ターゲット「ユーザビリティ」に対応する正解情報にモデルの出力値が近づくように学習することにより、ターゲット「ユーザビリティ」に対応するモデルを生成してもよい。例えば、アイテム情報IMD1、IMD2、IMD83等は、対応するアイテム中の記事コンテンツ全体であってもよい。また、例えば、アイテム情報IMD1、IMD2、IMD83等は、対応するアイテムのタイトルや本文等の文章から抽出された各要素、例えばアイテムに含まれる単語の一覧や単語の出現頻度等を示す情報であってもよい。また、例えば、アイテム情報IMD1、IMD2、IMD83等が、文章や単語群である場合、情報処理装置100は、Word2VecやDoc2Vecのようなアルゴリズム等を用いて、ベクトルを生成してもよい。例えば、情報処理装置100は、アイテム情報IMD1、IMD2、IMD83等から、Doc2Vecを用いてベクトルを生成してもよい。
【0043】
情報処理装置100は、アイテムのアイテム情報(アイテムデータ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力されたログ情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、所定のターゲット(目的)に適したアイテムかどうかを示すスコアの値を出力層から出力するモデルを生成してもよい。また、情報処理装置100は、ベクトル生成に用いるモデルを情報提供装置50等の他の外部装置から取得してもよい。
【0044】
〔1-3.処理例〕
ここから、情報処理装置100は、ユーザが閲覧した記事コンテンツである一のアイテムのアイテム情報を取得し、一のアイテムに対応する対象アイテムを抽出し、対象アイテムの情報をユーザに提供する場合を一例として説明する。
図1の例では、端末装置10は、記事コンテンツを閲覧するユーザU1が利用する。
【0045】
例えば、ユーザU1は、端末装置10を操作することにより、所定の記事コンテンツであるアイテムXを端末装置10に表示させ、アイテムXを閲覧する。例えば、ユーザU1は、アイテムXのタイトルを選択(クリック)することにより、端末装置10にアイテムXの記事全体を含む情報を端末装置10に表示させ、アイテムXを閲覧する。そして、端末装置10は、ユーザU1がアイテムXを選択(クリック)したことに応じて、アイテムXに関する情報をクエリ情報として情報処理装置100へ送信する。なお、端末装置10は、ユーザU1がアイテムXを選択(クリック)したことを示す履歴情報を情報処理装置100に送信してもよい。そして、端末装置10からユーザU1がアイテムXを選択したことを示す情報を受信した情報処理装置100は、アイテムXに関する情報をユーザU1への対象アイテムを抽出するためのクエリ情報として用いてもよい。
【0046】
図1の例では、端末装置10は、アイテムXのアイテム情報IMD11を、クエリ情報として情報処理装置100へ送信する。例えば、アイテム情報IMD11は、アイテムXの記事全体の情報であってもよい。また、例えば、端末装置10は、アイテムXを特定する情報と、アイテムXのアイテムの文章から抽出された各要素、例えばアイテムXのアイテムに含まれる単語の一覧や単語の出現頻度や画像の有無等を示す情報(ベクトル用情報)を、クエリ情報として情報処理装置100へ送信してもよい。なお、端末装置10は、アイテムXをユーザU1が選択(クリック)したことを示す情報のみを情報処理装置100へ送信してもよい。そして、ユーザU1が選択(クリック)を取得した情報処理装置100は、その情報と記憶部120(
図5参照)や他の外部装置(情報提供装置50等)から取得した情報を基に対象アイテムを抽出してもよい。
【0047】
そして、情報処理装置100は、アイテムに関するクエリ情報を取得する(ステップS11)。
図1の例では、情報処理装置100は、端末装置10からアイテムXに関するアイテム情報IMD11を、クエリ情報として取得する。
【0048】
そして、情報処理装置100は、ターゲットを決定する(ステップS12)。
図1の例では、ユーザが選択(クリック)したアイテムを基に類似アイテムを抽出するため、情報処理装置100は、ターゲットをユーザビリティと決定する。例えば、情報処理装置100は、ユーザが選択したくなるようなアイテムをユーザに提供し、ユーザのユーザビリティを向上させるために、ターゲットをユーザビリティと決定する。例えば、情報処理装置100は、提供する記事コンテンツがユーザにとって適切なものである可能性が高くなり、ユーザのユーザビリティを向上させるために、ターゲットをユーザビリティと決定する。情報処理装置100は、ユーザU1が選択したアイテムXに類似するようなアイテムをユーザU1に推奨するために、ターゲットをユーザビリティと決定する。情報処理装置100は、種々の情報を適宜用いてターゲットを決定する。情報処理装置100は、種々の基準に基づいてターゲットを決定する。例えば、情報処理装置100は、収益性を向上させる場合、ターゲットを収益性と決定する。なお、情報処理装置100は、ターゲットを決定しなくてもよい。例えば、情報処理装置100は、ターゲットを決定せずに、適宜の方法により検索の起点となるノード(以下、「起点ノード」や「起点ベクトル」ともいう)を決定し、各観点に基づいた類似アイテムを抽出してもよい。
【0049】
そして、情報処理装置100は、インデックスを決定する(ステップS13)。情報処理装置100は、ターゲット「ユーザビリティ」に対応するインデックスIND11やターゲット「収益性」に対応するインデックスIND12のうち、起点ノードの決定に用いるインデックスを決定する。
図1の例では、情報処理装置100は、複数グラフ情報群GINFに示すように、ターゲット「ユーザビリティ」に対応する検索用情報群INF11中のインデックスIND11やターゲット「収益性」に対応する検索用情報群INF12中のインデックスIND12のうち、検索に用いる情報を決定する。
図1の例では、情報処理装置100は、ターゲット「ユーザビリティ」に対応するインデックスIND11を用いると決定する。
【0050】
なお、情報処理装置100は、上記に限らず、種々のインデックス情報を用いてもよい。情報処理装置100は、ベクトル用情報を対象としたインデックス情報を用いてもよい。例えば、情報処理装置100は、各観点の重みを加味する前の各アイテムの素性(特徴量)のみの情報であるベクトル用情報を対象としたインデックス情報を用いてもよい。この場合、情報処理装置100は、各観点の重みを各アイテムの素性(特徴量)のみに基づいて起点ノードを決定することができる。
【0051】
そして、情報処理装置100は、類似アイテムを抽出する抽出処理を行う(ステップS14)。情報処理装置100は、取得したアイテムXのアイテム情報IMD11に基づいて、アイテムに類似する類似アイテムを抽出する抽出処理を行う。
図1の例では、情報処理装置100は、アイテム情報IMD11を用いて抽出処理を行う。
【0052】
ここから、
図2を用いて、抽出処理の具体例を説明する。
図2に示すように、情報処理装置100は、アイテムXの情報からグラフ情報の探索に用いるベクトルを生成する。
図2の例では、情報処理装置100は、処理群PS11に示すような処理により、アイテムXに対応するベクトルを生成する。
【0053】
まず、情報処理装置100は、アイテムXのベクトル用情報を生成する(ステップS14-1)。情報処理装置100は、アイテムXのアイテム情報IMD11からアイテムXのベクトル用情報を生成する。
【0054】
例えば、情報処理装置100は、アイテムXのアイテム情報IMD11等に含まれる文字情報を形態素解析等の自然言語処理技術を適宜用いて解析することにより、単語(キーワード)を抽出し、各単語の出現頻度を計数(カウント)してもよい。また、情報処理装置100は、アイテムXのアイテム情報IMD11等に含まれる画像情報に基づいて、画像情報の有無を判定してもよい。
【0055】
例えば、情報処理装置100は、アイテムXのアイテム情報IMD11から抽出された単語の情報に基づいて、アイテムXにおける各単語の出現頻度を計数する。情報処理装置100は、アイテムXにおける単語#1の出現頻度を5回であると計数する。そして、情報処理装置100は、アイテムXにおける単語#1の出現頻度を10回が所定の閾値(例えば5回等)以上であると判定し、アイテムXにおける単語#1(特徴量#1)の値(x1)を「1」と決定する。
【0056】
また、情報処理装置100は、アイテムXにおける単語#2の出現頻度を4回であると計数する。そして、情報処理装置100は、アイテムXにおける単語#2の出現頻度を5回が所定の閾値(例えば3回等)以上であると判定し、アイテムXにおける単語#2(特徴量#2)の値(x2)を「1」と決定する。また、情報処理装置100は、アイテム情報IMD11に画像情報が含まれているかどうかを判定する。
図2の例では、情報処理装置100は、アイテムXには画像情報が含まれないと判定し、アイテムXにおける単語#3(特徴量#3)の値(x3)を「0」と決定する。このように、情報処理装置100は、「x1=1」、「x2=1」、「x3=0」等の各次元の変数に入力される値を決定する。
【0057】
そして、情報処理装置100は、
図2中のベクトル用情報一覧FVD11に示すように、「(1,1,0,…)」であるアイテムXのベクトル用情報を生成する。情報処理装置100は、1次元目に対応する値が「1」、2次元目に対応する値が「1」、3次元目に対応する値が「0」等であるベクトル用情報を生成する。
【0058】
そして、情報処理装置100は、ベクトル用情報と、各ターゲットに対応するモデルの重み情報とを用いて、ベクトルを生成する(ステップS14-2)。
図2の例では、情報処理装置100は、ターゲット「ユーザビリティ」に対応するモデルM1の重み情報やターゲット「収益性」に対応するモデルM2の重み情報を用いて、複数の観点(ターゲット)の各々に対応する複数のベクトルを生成する。
【0059】
まず、情報処理装置100は、アイテムXのベクトル用情報と、ターゲット「ユーザビリティ」に対応するモデルM1の重み情報とを用いて、アイテムXのベクトル(以下、「ベクトルVD11」ともいう)を生成する。情報処理装置100は、
図2中の重み情報一覧WDT1に示すように、「(0.02,0.05,0.01,…)」であるモデルM1の重み情報を用いて、アイテムXのベクトルVD11を生成する。情報処理装置100は、1次元目に対応する値が「0.02」、2次元目に対応する値が「0.05」、3次元目に対応する値が「0.01」等である重み情報を用いて、ベクトルVD11を生成する。すなわち、情報処理装置100は、「w1=0.02」、「w2=0.05」、「w3=0.01」等のモデルM1の重み情報を用いて、ベクトルVD11を生成する。
【0060】
具体的には、情報処理装置100は、
図12中のベクトル形式VFMに示すように、「w1*x1」をベクトルの1次元目の要素とし、「w2*x2」をベクトルの2次元目の要素とし、「wn*xn」をベクトルのn次元目の要素としたベクトルVD11を生成する。情報処理装置100は、「w1」を「0.02」とし、「x1」を「1」とし、「w2」を「0.05」とし、「x2」を「1」とし、「w3」を「0.01」とし、「x3」を「0」として、ベクトルVD11を生成する。そして、情報処理装置100は、次元ごとに特徴量と重みとを乗算することにより、各次元の要素を算出する。これにより、情報処理装置100は、1次元目の値が「0.02」であり、2次元目の値が「0.05」であり、3次元目の値が「0」であるベクトルVD11を生成する。すなわち、情報処理装置100は、「0.02,0.05,0,…」のような、ターゲット「ユーザビリティ」に対応するアイテムXのベクトルVD11を生成する。
【0061】
また、情報処理装置100は、アイテムXのベクトル用情報と、ターゲット「収益性」に対応するモデルM2の重み情報とを用いて、アイテムXのベクトル(以下、「ベクトルVD12」ともいう)を生成する。情報処理装置100は、
図2中の重み情報一覧WDT2に示すように、「(0.01,0,0.06,…)」であるモデルM2の重み情報を用いて、アイテムXのベクトルVD12を生成する。情報処理装置100は、1次元目に対応する値が「0.01」、2次元目に対応する値が「0」、3次元目に対応する値が「0.06」等である重み情報を用いて、ベクトルVD12を生成する。すなわち、情報処理装置100は、「w1=0.01」、「w2=0」、「w3=0.06」等のモデルM2の重み情報を用いて、ベクトルVD12を生成する。情報処理装置100は、「0.01,0,0,…」のような、ターゲット「収益性」に対応するアイテムXのベクトルVD12を生成する。
【0062】
そして、情報処理装置100は、アイテムXに類似するアイテム(類似アイテム)を検索する(ステップS14-3)。例えば、情報処理装置100は、非特許文献1に開示されるような近傍検索の技術等の種々の従来技術を適宜用いて、アイテムXの類似アイテムを検索してもよい。
【0063】
図2の例では、情報処理装置100は、グラフ情報GR11(グラフ情報GR11-1のみ図示)を用いてアイテムXの類似アイテムを検索する。情報処理装置100は、記憶部120(
図5参照)からグラフ情報GR11に必要な各種情報を取得する。例えば、情報処理装置100は、グラフ情報記憶部123(
図8参照)からターゲット「ユーザビリティ」に対応するグラフ情報GR11-1やターゲット「収益性」に対応するグラフ情報GR11-2を取得する。
【0064】
また、情報処理装置100は、検索用情報群INF11に示すように、インデックス情報IND11を用いて起点ノードを決定する。また、例えば、情報処理装置100は、インデックス情報記憶部122(
図7参照)から、グラフ情報GR11における検索の起点となるノード(起点ベクトル)の決定に用いるインデックス情報IND11を取得する。具体的には、情報処理装置100は、インデックスデータセット122-1(
図7参照)からターゲット「ユーザビリティ」に対応するインデックス情報IND11を取得する。なお、インデックス情報IND11は、情報処理装置100が生成してもよいし、情報処理装置100は、インデックス情報IND11を情報提供装置50等の他の外部装置から取得してもよい。
【0065】
そして、情報処理装置100は、一のアイテム(クエリ)に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。
図2の例では、情報処理装置100は、アイテムXのベクトルVD11に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。すなわち、情報処理装置100は、ベクトルVD11とインデックス情報IND11とを用いて、グラフ情報GR11における起点ベクトルを決定する。
【0066】
図2中のインデックス情報IND11は、
図7中のインデックス情報記憶部122に示す階層構造を有する。例えば、インデックス情報IND11は、ルートRTの直下に位置する第1階層のノード(ベクトル)が、節点VT1、VT2等であることを示す。また、例えば、インデックス情報IND11は、節点VT2の直下の第2階層のノードが、節点VT2-1~VT2-4(図示せず)であることを示す。また、例えば、インデックス情報IND11は、節点VT2-2の直下の第3階層のノードが、ノードN83、ノードN516、すなわちグラフ情報GR11中のノード(ベクトル)であることを示す。
【0067】
例えば、情報処理装置100は、
図2中のインデックス情報IND11に示すような木構造型のインデックス情報を用いて、グラフ情報GR11における起点ベクトルを決定する(ステップS14-4)。
図2の例では、情報処理装置100は、ベクトルVD11を生成した後、インデックス情報IND11を上から下へ辿ることにより、インデックス情報IND11の近傍候補となる起点ベクトルを特定することにより、効率的に検索クエリ(一のアイテム)に対応する起点ベクトルを決定することができる。
【0068】
例えば、情報処理装置100は、インデックス情報IND11をルートRTからリーフノード(グラフ情報GR11中のノード(ベクトル))まで辿ることにより、ベクトルVD11に対応する起点ベクトルを決定してもよい。
図2の例では、例えば、情報処理装置100は、インデックス情報IND11をルートRTからノードN83まで辿ることにより、ノードN83を起点ベクトルとして決定する。例えば、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、インデックス情報IND11をルートRTからリーフノードまで辿ることにより、辿りついたリーフノードを起点ベクトルとして決定してもよい。例えば、情報処理装置100は、ベクトルVD11との類似度に基づいて、インデックス情報IND11を下へ辿ることにより、起点ベクトルを決定してもよい。
【0069】
例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のいずれの節点に辿るかを、ベクトルVD11と節点VT1、VT2との類似度に基づいて決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のうち、ベクトルVD11との類似度が最も高い節点VT2へ辿ると決定してもよい。また、例えば、情報処理装置100は、節点VT2から節点VT2-1~VT2-4等のうち、ベクトルVD11との類似度が最も高い節点VT2-2へ辿ると決定してもよい。また、例えば、情報処理装置100は、節点VT2-2からノードN83、ノードN516等のうち、ベクトルVD11との類似度が最も高い節点ノードN83へ辿ると決定してもよい。
【0070】
なお、
図2の例では、説明を簡単にするために、起点ベクトルを1つ決定する場合を示すが、情報処理装置100は、複数個の起点ベクトルを決定してもよい。例えば、情報処理装置100は、ノードN83、ノードN516、ノードN10等の複数個のベクトル(ノード)を起点ベクトルとして決定してもよい。なお、インデックス情報IND11を用いずに、検索開始時にグラフ情報GR11からランダムに1つ以上のノードを選択し、それを起点ベクトルとしてもよいし、または、予め指定された1つ以上のノードを起点ベクトルとしてもよい。
【0071】
そして、情報処理装置100は、グラフ情報GR11を検索することにより、アイテムXの類似アイテムを抽出する(ステップS14-5)。例えば、情報処理装置100は、複数のエッジ群のうち、所定の閾値以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。情報処理装置100は、複数のエッジ群EG11、EG12の2つのエッジ群のうち、2つ以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。すなわち、
図2の例では、情報処理装置100は、複数のエッジ群EG11、EG12の2つのエッジ群の両方のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。情報処理装置100は、複数のエッジ群EG11、EG12の各々に対応する複数のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。
【0072】
情報処理装置100は、
図3に示すようなグラフ情報GR11-0~GR11-2等を含むグラフ情報GR11に基づいて、複数のエッジ群EG11、EG12の2つのエッジ群の両方のエッジが連結されるノード間を辿る。
図3は、実施形態に係るグラフ情報を概念的に示す図である。
図3中のグラフ情報GR11では、エッジ群EG11を実線で示し、エッジ群EG12を点線で示す。
【0073】
図3中のグラフ情報GR11-0は、グラフ情報記憶部123(
図8参照)に記憶された情報に基づく、各ノードと各エッジ群のエッジによる連結関係を視覚的に示す情報である。グラフ情報GR11-0は、ノードN1からの出力エッジであり、ユーザビリティ(TID1)に対応するエッジであるエッジE11が、ノードN7に連結されることを示す。すなわち、ノードN1のアイテム#1は、ユーザビリティの観点でノードN7のアイテム#7に類似することを示す。
【0074】
また、グラフ情報GR11-0は、ノードN2からの出力エッジであり、収益性(TID2)に対応するエッジであるエッジE21-2が、ノードN3に連結されることを示す。すなわち、ノードN2のアイテム#2は、収益性の観点でノードN3のアイテム#3に類似することを示す。
【0075】
また、グラフ情報GR11-0は、ノードN83からの出力エッジであり、ユーザビリティ(TID1)に対応するエッジであるエッジE831が、ノードN67に連結されることを示す。すなわち、ノードN831のアイテム#831は、ユーザビリティの観点でノードN67のアイテム#67に類似することを示す。また、グラフ情報GR11-0は、ノードN83からの出力エッジであり、収益性(TID2)に対応するエッジであるエッジE831-2が、ノードN67に連結されることを示す。すなわち、ノードN831のアイテム#831は、収益性の観点でノードN67のアイテム#67に類似することを示す。このように、グラフ情報GR11-0は、ノードN83からは、ユーザビリティ(TID1)及び収益性(TID2)の2つの観点に対応する2つの出力エッジがノードN67に連結されていることを示す。
【0076】
なお、グラフ情報GR11-0は、各ノード間のエッジの連結関係を示すための図であり、ノードの位置関係は、ノードに対応するアイテムの類似関係を示すものではない。例えば、グラフ情報GR11-0中に示すエッジE21やエッジE831等の長さは、連結するノード間の類似度を示すものではない。言い換えると、グラフ情報GR11-0中に示すエッジE21がエッジE831よりも短いことは、ノードNとノードN36との類似度が、ノードN67とノードN83との類似度より大きいことを示すものではない。
【0077】
図3中のグラフ情報GR11-1やグラフ情報GR11-2は、アイテム情報記憶部121(
図6参照)に記憶された情報やモデル情報記憶部121(
図9参照)に記憶された情報に基づく、各ノード間の距離関係を反映した連結関係を視覚的に示す情報である。
【0078】
グラフ情報GR11-1は、アイテム情報記憶部121に記憶された各アイテムのベクトル用情報やモデル情報記憶部121に記憶されたモデルM1の重み情報に基づく、ユーザビリティ(TID1)の観点における各ノードの関係を視覚的に示す情報である。すなわち、グラフ情報GR11-1は、ユーザビリティ(TID1)の観点での各ノード(アイテム)のベクトルに基づくノードの位置関係やエッジ群EG11での連結関係を示す。言い換えると、グラフ情報GR11-1は、グラフ情報GR11-0にユーザビリティ(TID1)の観点での距離概念を導入し、複数のエッジ群のうち、ユーザビリティ(TID1)に対応するエッジ群EG11のみを図示したものである。
【0079】
例えば、情報処理装置100は、グラフ情報GR11-0の情報の一部や各アイテムのベクトル用情報やモデル情報MLT1に示すようなモデルM1の情報により、グラフ情報GR11-1に示すような情報を生成する。グラフ情報GR11-1は、ノードN2からの出力エッジであり、ユーザビリティ(TID1)に対応するエッジであるエッジE21が、ノードN36に連結されることを示す。すなわち、ノードN2のアイテム#2は、ユーザビリティの観点でノードN36のアイテム#36に類似することを示す。
【0080】
グラフ情報GR11-2は、アイテム情報記憶部121に記憶された各アイテムのベクトル用情報やモデル情報記憶部121に記憶されたモデルM2の重み情報に基づく、収益性(TID2)の観点における各ノードの関係を視覚的に示す情報である。すなわち、グラフ情報GR11-2は、収益性(TID2)の観点での各ノード(アイテム)のベクトルに基づくノードの位置関係やエッジ群EG12での連結関係を示す。言い換えると、グラフ情報GR11-2は、グラフ情報GR11-0に収益性(TID2)の観点での距離概念を導入し、複数のエッジ群のうち、収益性(TID2)に対応するエッジ群EG12のみを図示したものである。
【0081】
例えば、情報処理装置100は、グラフ情報GR11-0の情報の一部や各アイテムのベクトル用情報やモデル情報MLT2に示すようなモデルM2の情報により、グラフ情報GR11-2に示すような情報を生成する。グラフ情報GR11-2は、ノードN1からの出力エッジであり、収益性(TID2)に対応するエッジであるエッジE11-2が、ノードN25に連結されることを示す。すなわち、ノードN1のアイテム#1は、収益性の観点でノードN25のアイテム#25に類似することを示す。
【0082】
情報処理装置100は、
図3に示すようなグラフ情報GR11を用いて、アイテムXの類似アイテムを抽出する。
図2の例では、情報処理装置100は、複数のエッジ群EG11、EG12の2つのエッジ群の両方のエッジ(以下、「両観点エッジ」とする場合がある)が連結されるノード間を辿ることにより、ノードN83の近傍に位置するノードを類似アイテムとして抽出する。例えば、情報処理装置100は、ノードN83からの両観点エッジが連結されたノードを類似アイテムとして抽出する。例えば、情報処理装置100は、ノードN83を起点として、両観点エッジが連結されたノードを辿ることにより、ノードN83から到達可能なノードを類似アイテムとして抽出する。例えば、情報処理装置100は、所定数(例えば、2個や10個等)のノードを類似アイテムとして抽出する。例えば、情報処理装置100は、
図13に示すような検索処理により、アイテムXの類似アイテムを抽出してもよいが、詳細は後述する。
図1及び
図2の例では、情報処理装置100は、ノードN83を起点として、グラフ情報GR11を探索することにより、ノードN83やノードN67を類似アイテムとして抽出する。
【0083】
そして、抽出装置100は、抽出した類似アイテムに関する情報を提供する(ステップS15)。
図1の例では、抽出装置100は、ノードN83に対応するアイテム#83や、ノードN67に対応するアイテム#67をアイテムXに類似するアイテムとしてユーザU1が利用する端末装置10に提供する。
【0084】
上述したように、情報処理装置100は、グラフ情報GR11やインデックス情報IND11を用いて、ユーザU1から取得したアイテムXの類似アイテムを抽出する。具体的には、情報処理装置100は、複数の観点でのエッジが連結されたノード間のみを辿ることにより、複数の観点での類似性に基づく類似アイテムを抽出することができる。そのため、情報処理装置100は、複数の観点を考慮した類似アイテムを抽出することができるため、適切なアイテムを抽出することができる。例えば、情報処理装置100は、ユーザビリティの観点のエッジと収益性の観点のエッジとの両方が連結されたノード間のみを辿ることにより、ユーザビリティと収益性との両方を満足するアイテムを抽出することができるため、適切なアイテムを抽出することができる。また、情報処理装置100は、グラフ情報GR11を探索することにより、類似するアイテムを高速に抽出することができる。
【0085】
そして、情報処理装置100は、抽出した類似アイテムに関する情報を端末装置10に送信する。これにより、情報処理装置100は、ユーザに対して適切なアイテムの推奨を行うことができる。
【0086】
例えば、情報処理装置100は、アイテムXと類似性を有するアイテム(類似アイテム)が、例えばアイテムXと一見関係が無いように見える場合であっても、グラフ情報を用いることで、アイテムXの類似アイテムとして抽出でき、適切なアイテムを抽出することができる。例えば、ディープラーニングといった手法で、特定のアイテムYYに類似する等の所定の目的に適したアイテムを識別するという方法もあるが、所定の目的に適するかに影響する多種多様な要素が存在する場合においては、各要素の事例が少ないので、学習ができずに識別精度を向上させることが難しいという問題がある。例えば、ディープラーニングといった学習手法で生成したモデルを用いて、そのモデルにアイテムの情報を入力し、出力されたスコアからそのアイテムが所定の目的に適するかを識別するという方法もあるが、多種多様な要素が存在する場合においては、各要素の事例が少ないため、モデルの精度を向上させることが難しく、識別精度を向上させることが難しい。一方で、情報処理装置100は、各アイテムから抽出した特徴を基に生成した複数のベクトルのグラフ構造化したグラフ情報を用いて検索を行うことにより、アイテムのベクトルの比較によりアイテム間の類似度を判定し、一のアイテムが複数のアイテムに含まれるかどうかを適切に判定することができる。
【0087】
〔1-4.検索の基準(条件)〕
なお、上述した例では、情報処理装置100が両観点エッジにより連結されたノード間のみを辿ることにより、類似アイテムを抽出する場合を示したが、情報処理装置100は、種々の条件に基づいて辿るノードを決定してもよい。
【0088】
〔1-4―1.距離〕
例えば、情報処理装置100は、ノード間の距離を算出し、算出した距離に応じて、辿るノードを決定してもよい。例えば、情報処理装置100は、下記の式(1)を用いて、2つのベクトル間の距離を算出してもよい。
【0089】
d = ((a1-a2)2+(b1-b2)2+(c1-c2)2+…)1/2 …(1)
【0090】
ここで、上記式(1)の左辺中の距離「d」は、2つのベクトル間の距離を示す。上記式(1)の右辺中の「a1」は、一方のベクトルの1次元目に対応する。上記式(1)の右辺中の「a2」は、他方のベクトルの1次元目に対応する。また、上記式(1)の右辺中の「b1」は、一方のベクトルの2次元目に対応する。上記式(1)の右辺中の「b2」は、他方のベクトルの2次元目に対応する。上記式(1)では、次元ごとの差分の二乗の総和を二分の一乗することにより距離「d」を算出する。上記式(1)により算出される距離「d」が小さい(0に近い)程、2つのベクトルが類似する。
【0091】
例えば、情報処理装置100は、ユーザビリティ(TID1)の観点で、アイテムXとアイテム#83との間の距離を算出する場合、上記式(1)に基づいて以下の式(2)のように算出する。
【0092】
d1 = ((0.02-0.02)2+(0.05-0)2+(0-0.01)2+…)1/2 …(2)
【0093】
ここで、上記式(2)の左辺中の距離「d1」(以下、「第1距離d1」とする)は、ユーザビリティ(TID1)の観点におけるアイテムXのベクトルVD11とアイテム#83のベクトルVD1-1との間の距離を示す。上記式(2)のように、情報処理装置100は、ユーザビリティ(TID1)の観点におけるアイテムXとアイテム#83との間の距離を算出する。以下、ユーザビリティ(TID1)の観点におけるノード間の距離を「第1距離」とする。
【0094】
また、例えば、情報処理装置100は、収益性(TID2)の観点で、アイテムXとアイテム#83との間の距離を算出する場合、上記式(1)に基づいて以下の式(3)のように算出する。
【0095】
d2 = ((0.01-0.01)2+(0-0)2+(0-0.06)2+…)1/2 …(3)
【0096】
ここで、上記式(3)の左辺中の距離「d2」は、収益性(TID2)の観点におけるアイテムXのベクトルVD11とアイテム#83のベクトルVD1-1との間の距離を示す。上記式(2)のように、情報処理装置100は、収益性(TID2)の観点におけるアイテムXとアイテム#83との間の距離を算出する。以下、収益性(TID2)の観点におけるノード間の距離を「第2距離」とする。
【0097】
例えば、情報処理装置100は、各観点で算出した距離に基づく距離(以下、「判定用距離」とする)が所定の条件を満たす場合、そのノード間を辿ると決定してもよい。情報処理装置100は、判定用距離が所定の閾値未満であれば、そのノード間を辿ると決定してもよい。例えば、情報処理装置100は、第1距離と第2距離の平均を判定用距離として算出してもよい。
【0098】
また、情報処理装置100は、下記の式(1)と同等である下記の式(4)を用いて、2つのベクトル間の距離を算出してもよい。
【0099】
d = ((w1(x11-x12))2+(w2(x21-x22))2+…)1/2 …(4)
【0100】
ここで、上記式(4)の左辺中の距離「d」は、2つのベクトル間の距離を示す。上記式(4)の右辺中の「w1」は、ベクトルの1次元目に対応する特徴量の重みに対応する。上記式(4)の右辺中の「x11」は、一方のベクトル用情報の1次元目に対応する。上記式(4)の右辺中の「x12」は、他方のベクトル用情報の1次元目に対応する。上記式(4)の右辺中の「w2」は、ベクトルの2次元目に対応する特徴量の重みに対応する。上記式(4)の右辺中の「x21」は、一方のベクトル用情報の2次元目に対応する。上記式(4)の右辺中の「x22」は、他方のベクトル用情報の2次元目に対応する。上記式(4)では、次元ごとの差分に重みを乗算した値の二乗の総和を二分の一乗することにより距離「d」を算出する。上記式(1)により算出される距離「d」が小さい(0に近い)程、2つのベクトルが類似する。なお、上記距離の算出は一例であり、情報処理装置100は、種々の方法により2つのベクトル間の距離を算出してもよい。すなわち、情報処理装置100は、種々の距離関数を用いて2つのベクトル間の距離を算出してもよい。例えば、下記の式(5)により距離を算出してもよい。下記の式(5)では、次元ごとの差分の二乗に重みを乗算した値の総和を二分の一乗することにより距離「d」を算出する。
【0101】
d = (w1(x11-x12)2+w2(x21-x22)2+…)1/2 …(5)
【0102】
また、情報処理装置100は、1つのエッジのみが連結されたノード間であっても、距離を算出し、算出した距離に基づく距離(判定用距離)が所定の閾値未満であれば、そのノード間を辿ってもよい。
【0103】
〔1-4―2.エッジ数〕
また、情報処理装置100は、複数のエッジ群のエッジが所定閾値以上連結されるノード間を辿ってもよい。すなわち、情報処理装置100は、複数のエッジ群のうち、所定閾値以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出してもよい。このように、情報処理装置100は、ノードを辿る条件として、ノード間を連結するエッジの数を用いてもよい。
【0104】
上記の例では、情報処理装置100は、2つの観点に対応するエッジ群EG11、EG12を含むグラフ情報GR11を用いて、ユーザビリティ(TID1)のエッジと収益性(TID2)のエッジとが連結されるノード間を辿ることにより、類似アイテムを抽出する。このように、情報処理装置100は、2つの観点に対応するエッジ群EG11、EG12を含むグラフ情報GR11において、2つの観点に対応する2つのエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。情報処理装置100は、複数のエッジ群の各々に対応する複数のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。情報処理装置100は、グラフに含まれる全観点のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。
【0105】
例えば、情報処理装置100は、3つの観点に対応するエッジ群を含むグラフにおいて、所定の閾値(例えば「2」等)以上の観点に対応するエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。例えば、情報処理装置100は、5つの観点に対応するエッジ群を含むグラフにおいて、3つ以上の観点に対応するエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。
【0106】
また、例えば、情報処理装置100は、ノードを辿る条件として、ノード間を連結するエッジの割合を用いてもよい。例えば、情報処理装置100は、複数の観点に対応する複数のエッジ群を含むグラフにおいて、ノード間を連結するエッジ数が所定の割合(例えば50%以上等)以上である場合、そのノード間を辿ることにより、類似アイテムを抽出する。例えば、情報処理装置100は、10の観点に対応する複数のエッジ群を含むグラフにおいて、ノード間を連結するエッジ数が6である場合、ノード間を連結するエッジの割合が「60%(=6/10*100)であり条件「50%」以上であるため、そのノード間を辿ると決定する。
【0107】
なお、上記は一例であり、情報処理装置100は、種々の条件を適宜用いて、ノード間のみを辿ることにより、類似アイテムを抽出してもよい。例えば、情報処理装置100は、ノード間を連結するエッジの数や、ノード間の距離等を組み合わせた条件を満たす場合に、そのノード間を辿ると決定してもよい。例えば、グラフに4つの観点の各々に対応する4つのエッジ群が含まれる場合、情報処理装置100は、ノード間を連結するエッジの数が第1閾値(例えば、「3」等)以上であり、4つの観点ごとに算出したノード間の距離に基づくノード間の判定用距離が第2閾値(例えば、「1」等)未満であることを示す条件(複数条件)を満たす場合に、そのノード間を辿ると決定してもよい。
【0108】
〔1-5.クエリ情報〕
図1の例では、説明を簡単にするために、ユーザU1が選択(クリック)したアイテムXのアイテム情報をクエリ情報として、類似アイテムを検索する場合を示したが、クエリ情報は、種々の情報であってもよい。なお、クエリ情報は、ユーザの端末装置10から取得する場合に限らず、検索処理に用いられる情報であればどのように取得されてもよく、情報処理装置100が記憶部120(
図5参照)に記憶した情報等を用いてもよい。例えば、情報処理装置100は、ユーザの端末装置10からアイテムの要求があった場合に、そのユーザの行動履歴に含まれるアイテムに関する情報をクエリ情報として、ユーザへの対象アイテムを抽出してもよい。例えば、情報処理装置100は、ユーザの端末装置10から記事コンテンツであるアイテムの要求があった場合に、そのユーザが過去に閲覧したアイテムに関する情報をクエリ情報として、ユーザへの対象アイテムを抽出してもよい。
【0109】
〔1-5-1.ユーザ情報〕
例えば、クエリ情報は、対象アイテムを抽出するユーザ(提供先ユーザ)のユーザ情報であってもよい。例えば、情報処理装置100は、ユーザについて、各特徴量に対応する対象に対する関心の有無に応じて、ユーザのベクトル用情報を生成してもよい。
【0110】
例えば、情報処理装置100は、「単語#1」に対応する対象に提供先ユーザが関心を有する場合、その提供先ユーザのベクトル用情報中の「x1」の値を「1」としてもよい。例えば、「単語#1」が「サッカー」である場合、情報処理装置100は、サッカーに提供先ユーザが関心を有する場合、その提供先ユーザのベクトル用情報中の「x1」の値を「1」としてもよい。
【0111】
例えば、情報処理装置100は、記憶部120(
図5参照)に各ユーザのユーザ情報を記憶してもよい。例えば、情報処理装置100は、記憶部120に各ユーザのユーザ情報を記憶してもよい。情報処理装置100は、記憶部120に各ユーザの属性情報を記憶してもよい。情報処理装置100は、記憶部120に各ユーザのサイコグラフィック属性やデモグラフィック属性を記憶してもよい。情報処理装置100は、記憶部120に各ユーザの関心のある対象を示す情報やユーザの価値観、ライフスタイル、性格、嗜好等の情報を記憶してもよい。情報処理装置100は、記憶部120に各ユーザの年齢、性別、居住地等の情報を記憶してもよい。
【0112】
例えば、情報処理装置100は、「単語#2」に対応する対象に提供先ユーザが関心を有しない場合、その提供先ユーザのベクトル用情報中の「x2」の値を「0」としてもよい。例えば、「単語#2」が「野球」である場合、情報処理装置100は、野球に提供先ユーザが関心を有しない場合、その提供先ユーザのベクトル用情報中の「x2」の値を「0」としてもよい。
【0113】
そして、情報処理装置100は、「x1」の値「1」や「x2」の値「0」等の情報と、用いるモデルの重みとに基づいて、提供先ユーザに対応するベクトルデータを生成する。そして、情報処理装置100は、そのベクトルデータを用いてグラフ情報を検索することにより、提供先ユーザに類似性を有する類似アイテムを抽出する。そして、情報処理装置100は、抽出した類似アイテムを提供先ユーザへ提供する。これにより、情報処理装置100は、ユーザの情報をクエリ情報として、ユーザに適切な対象アイテムに関する情報を提供することができる。
【0114】
〔1-5-2.新規追加アイテム〕
例えば、クエリ情報は、新規追加されたアイテムのアイテム情報であってもよい。この場合、例えば、情報処理装置100は、新たなアイテム(以下、「新規アイテムYY」とする)が追加された場合、新規アイテムYYのアイテム情報をクエリ情報として、新規アイテムYYの類似アイテムを抽出してもよい。
【0115】
例えば、情報処理装置100は、類似アイテムについて閲覧した履歴があるユーザに対して、新規アイテムYYを推奨してもよい。例えば、情報処理装置100は、記憶部120に各ユーザのアイテムの閲覧履歴を記憶してもよい。例えば、情報処理装置100は、所定期間内に新規アイテムYYの類似アイテムを閲覧した履歴があるユーザに対して、新規アイテムYYを推奨してもよい。
【0116】
上記のように、情報処理装置100は、抽出された類似アイテムを基に、対象アイテムを提供するユーザを決定することができる。したがって、情報処理装置100は、対象アイテムの提供に適したユーザを決定することができる。これにより、情報処理装置100は、新規追加されたアイテムのアイテム情報をクエリ情報として、ユーザに適切な対象アイテムに関する情報を提供することができる。
【0117】
〔1-6.インデックス情報〕
図1及び
図2の例に示すインデックス情報(インデックスデータ)は一例であり、情報処理装置100は、種々のインデックス情報を用いて、グラフ情報を検索してもよい。また、例えば、情報処理装置100は、検索時に用いるインデックスデータを生成してもよい。例えば、情報処理装置100は、高次元ベクトルを検索する検索インデックスをインデックスデータとして生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【0118】
例えば、情報処理装置100は、
図1に示すようなツリー構造(木構造)に関する検索インデックスをインデックスデータとして生成してもよい。例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索インデックスをインデックスデータとして生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索インデックスをインデックスデータとして生成してもよい。
【0119】
また、例えば、情報処理装置100は、その他の木構造を有するインデックスデータとして生成してもよい。例えば、情報処理装置100は、木構造のインデックスデータのリーフがグラフデータに接続する種々のインデックスデータを生成してもよい。例えば、情報処理装置100は、木構造のインデックスデータのリーフがグラフデータ中のノードに対応する種々のインデックスデータを生成してもよい。また、情報処理装置100は、このようなインデックスデータを用いて検索を行う場合、インデックスデータを辿って到達したリーフ(ノード)からグラフデータを探索してもよい。
【0120】
なお、上述したようなインデックスデータは一例であり、情報処理装置100は、グラフデータ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、インデックスデータを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、情報処理装置100は、非特許文献1に記載されるようなグラフ型の検索インデックスに関する情報をインデックス情報として用いてもよい。情報処理装置100は、上述のようなインデックスデータとグラフデータとを用いることにより、所定の対象に関するより効率的な検索を可能にすることができる。
【0121】
〔1-7.ターゲット(観点)〕
図1及び
図2の例では、ターゲット「ユーザビリティ」とターゲット「収益性」との2つのターゲット(観点)を一例として示したが、ターゲット(観点)は種々の観点であってもよい。例えば、
図1及び
図2の例では、ターゲット(観点)としてのユーザビリティがユーザの興味や関心の観点である場合を示した。すなわち、
図1及び
図2の例では、ターゲット「ユーザビリティ」はユーザの興味や関心に関する観点であり、情報処理装置100は、複数のアイテムに対するユーザの興味や関心に関する類似性に応じて、複数のアイテムが連結されたグラフ情報GR11-1を用いて処理を行う場合を示した。しかしながら、ターゲット「ユーザビリティ」は、ユーザの関心や興味に限らず、ユーザの操作性や視認性などユーザの利便性に関する観点であってもよい。例えば、情報処理装置100は、ターゲット「関心・興味」やターゲット「操作性」等の複数のユーザビリティの観点ごとに生成されたグラフ情報やインデックス情報を用いてもよい。
【0122】
また、ターゲット(観点)は、上記に限らず、時間的な観点や地理的な観点等の種々の観点であってもよい。例えば、情報処理装置100は、複数の時間帯の各々に対応する複数のグラフを用いて、処理を行ってもよい。例えば、情報処理装置100は、昼の時間帯に対応するグラフ(「昼用グラフ」とする)や夜の時間帯に対応するグラフ(「夜用グラフ」とする)等の複数のグラフを用いて、処理を行ってもよい。例えば、情報処理装置100は、12時から18時迄の時間帯用の昼用グラフや18時から24時迄の時間帯用の夜用グラフやその他の時間帯(0時から12時迄)用の他のグラフ等の複数のグラフを用いて、処理を行ってもよい。例えば、情報処理装置100は、14時においてユーザへの対象アイテムに関するサービスを提供する場合、昼用グラフを用いて検索処理を行って、対象アイテムを抽出してもよい。
【0123】
また、例えば、情報処理装置100は、A地域(「A地域用グラフ」とする)に対応するグラフやB地域に対応するグラフ(「B地域用グラフ」とする)等の複数のグラフを用いて、処理を行ってもよい。例えば、情報処理装置100は、A地域に位置するユーザへの対象アイテムに関するサービスを提供する場合、A地域用グラフを用いて検索処理を行って、対象アイテムを抽出してもよい。例えば、情報処理装置100は、B地域に位置するユーザへの対象アイテムに関するサービスを提供する場合、B地域用グラフを用いて検索処理を行って、対象アイテムを抽出してもよい。
【0124】
〔1-8.アイテム〕
図1及び
図2の例では、記事コンテンツをアイテムの一例として示したが、アイテムは、記事コンテンツに限らず、種々の対象であってもよい。例えば、アイテムは、商品またはサービス(「商品等」とする)や楽曲(音楽コンテンツ)等の種々の対象であってもよい。例えば、アイテムは、所定の電子商取引で提供される商品等であってもよい。
【0125】
例えば、情報処理装置100は、所定の電子商取引で提供される商品等がアイテムである場合、商品等に関する情報(「商品情報」とする)を入力とするモデルを用いて、各商品等のベクトルを生成してもよい。例えば、情報処理装置100は、各商品等の商品情報を入力として、モデルを生成してもよい。例えば、商品等がアイテムである場合におけるアイテム情報である商品情報は、商品カテゴリ、タイトル、説明文、画像情報、製造元、サイズ等に関する情報を含んでもよい。例えば、商品情報の商品情報は、対応する商品の商品カテゴリが飲料水や酒類や調味料等のいずれであるかを示す情報を含んでもよい。例えば、商品情報の商品情報は、対応する商品の商品カテゴリがビールやワインやケッチャプやソース等のいずれであるかを示す詳細な商品カテゴリを示す情報を含んでもよい。
【0126】
また、例えば、商品情報は、対応する商品が撮像された画像情報を含んでもよい。例えば、商品情報は、対応する商品の製造元がどのメーカであるかを示す情報を含んでもよい。例えば、商品情報は、対応する商品の内容量等どのようなサイズであるかを示す情報を含んでもよい。例えば、商品情報は、対応する商品のターゲットとするユーザが20代であることを示す情報や対応する商品のターゲットとするユーザが女性であることを示す情報等の商品のターゲットを示す情報を含んでもよい。なお、上記は一例であり、アイテム情報である商品情報には、どのような情報が含まれてもよい。すなわち、情報処理装置100は、アイテムとなる対象に応じて、アイテム情報を適宜用いて、処理を行ってもよい。
【0127】
〔2.情報処理システムの構成〕
図4に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。
図4は、実施形態に係る情報処理システムの構成例を示す図である。なお、
図4に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
【0128】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。例えば、端末装置10は、アイテム情報を収集し、アイテム情報を情報処理装置100へ送信する。
【0129】
情報処理装置100は、起点ベクトルを起点としてグラフ情報を検索することにより、複数のアイテムのうち、一のアイテムに類似するアイテムである類似アイテムを抽出する情報処理装置である。例えば、情報処理装置100は、一のアイテムに関するアイテム情報を取得し、アイテムに対応するグラフ情報を取得する。例えば、情報処理装置100は、一のアイテムに関するアイテム情報を取得し、アイテム情報と、グラフ情報の検索の起点となる起点ベクトルに関する情報とに基づいて、起点ベクトルを決定する。
【0130】
情報処理装置100は、種々の情報処理を行う情報処理装置である。情報処理装置100は、グラフ情報を複数のエッジ群によるノード間の連結に基づいて検索することにより、複数のアイテムのうち、クエリ情報と類似性を有するアイテムである類似アイテムを抽出する情報処理装置である。情報処理装置100は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報処理装置100は、端末装置10から一のアイテムのアイテム情報(以下、「クエリ情報」や「クエリ」ともいう)を取得すると、クエリに類似するアイテム(ベクトル情報等)を検索し、検索結果に基づく情報を端末装置10に提供する。
図1の例では、情報処理装置100は、端末装置10から一のアイテムのアイテム情報を取得すると、一のアイテムに類似するアイテムを検索し、検索結果を端末装置10に提供する。また、例えば、情報処理装置100が端末装置10に提供するデータは、アイテムの名称やアイテム自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。
【0131】
また、情報処理装置100は、ベクトルデータ等の種々のデータを生成する。情報処理装置100は、文字情報を形態素解析等の自然言語処理技術を適宜用いて解析することにより、文字情報から重要な単語(キーワード)を抽出する。
【0132】
情報提供装置50は、情報処理装置100に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集したアイテム等が格納されてもよい。例えば、情報提供装置50は、グラフ情報やインデックス情報やモデル等の種々の情報を情報処理装置100に提供する情報処理装置である。
【0133】
〔3.情報処理装置の構成〕
次に、
図5を用いて、実施形態に係る情報処理装置100の構成について説明する。
図5は、実施形態に係る情報処理装置の構成例を示す図である。
図5に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0134】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば
図4中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
【0135】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、
図5に示すように、アイテム情報記憶部121と、インデックス情報記憶部122と、グラフ情報記憶部123と、モデル情報記憶部124とを有する。なお、記憶部120は、各ユーザの属性情報等を含むユーザ情報を記憶してもよい。また、記憶部120は、各ユーザの記事コンテンツであるアイテムの閲覧履歴等の各ユーザの行動情報を記憶してもよい。
【0136】
(アイテム情報記憶部121)
実施形態に係るアイテム情報記憶部121は、アイテム(オブジェクト)に関する各種情報を記憶する。例えば、アイテム情報記憶部121は、アイテム情報を記憶する。また、例えば、アイテム情報記憶部121は、モデルの生成に用いる情報(学習データ)を記憶する。
図6は、実施形態に係るアイテム記憶部の一例を示す図である。
図6に示すアイテム情報記憶部121は、「アイテムID」、「アイテム」、「アイテム情報」、「ベクトル用情報」、「正解情報」といった項目が含まれる。
【0137】
図6の例では、「ベクトル用情報」には、「単語#1」、「単語#2」、「画像」といった項目が含まれる。なお、
図6の例では、対象を「単語#1」、「単語#2」といった抽象的な符号で示すが、各対象は、具体的な名前、名称等であってもよい。例えば、「単語#1」や「単語#2」等は、「○○棋士」、「ダイエット」、「サッカー」等の具体的な対象を示す情報(文字列)であってもよい。
【0138】
また、「単語#1」には、「出現頻度」、「値(x1)」といった項目が含まれる。また、「単語#2」には、「出現頻度」、「値(x2)」といった項目が含まれる。また、「画像」には、「有無」、「値(x3)」といった項目が含まれる。また、「正解情報」には、「ユーザビリティ(TID1)」、「収益性(TID2)」といった項目が含まれる。
【0139】
「アイテムID」は、アイテム(オブジェクト)を識別するための識別情報を示す。また、「アイテム」は、アイテムIDにより識別されるアイテムの具体的な名称や内容等を示す。なお、
図6の例では、アイテムを「アイテム#1」といった抽象的な符号で示すが、各アイテムは、アイテムの名称等が含まれてもよい。
【0140】
「アイテム情報」は、アイテムIDにより識別されるアイテムの情報を示す。なお、
図6の例では、アイテム情報を「IMD1」といった抽象的な符号で示すが、実際には、アイテム情報、または、その格納場所を示すファイルパス名などが格納される。例えば、アイテムが記事コンテンツである場合、「アイテム情報」には、文字情報や画像情報を含む記事自体、または、その格納場所を示すファイルパス名などが格納される。また、「アイテム情報」には、アイテムの文章やアイテムの文章から抽出された各要素、例えばアイテムに含まれる単語の一覧や単語の出現頻度等を示す情報等が含まれてもよい。
【0141】
「ベクトル用情報」は、ベクトルデータの生成の基となる情報を示す。例えば、「ベクトル用情報」には、アイテム情報から抽出されたアイテムの特徴を示す情報が含まれる。例えば、「ベクトル用情報」には、モデルの各特徴量に対応する情報が含まれる。例えば、「ベクトル用情報」には、「y=w1*x1+w2*x2+・・・+wn*xn」で示されるモデルの各特徴量に対応するx1やx2等といった変数に入力される値を示す情報が含まれる。
【0142】
「正解情報」は、モデルの生成時に用いられる正解情報を示す。「正解情報」には、各ターゲットに対応するモデルの生成時に用いられる各ターゲットに対応する正解情報が含まれる。例えば、「ユーザビリティ(TID1)」には、ターゲット「ユーザビリティ」に対応するモデルM1の生成に用いられる正解情報を示す。例えば、「収益性(TID2)」には、ターゲット「収益性」に対応するモデルM2の生成に用いられる正解情報を示す。
【0143】
例えば、
図6の例では、アイテムID「IM1」により識別されるアイテム(オブジェクト)は、アイテム#1であることを示す。また、アイテム#1のアイテム情報は、アイテム情報IMD1であることを示す。
【0144】
また、アイテム#1における単語#1の出現頻度は「FR1-1」であることを示す。なお、
図6の例では、出現頻度を「FR1-1」といった抽象的な符号で示すが、出現頻度FR1-1は、具体的な数値等であってもよい。例えば、出現頻度FR1-1は、「3」や「10」等の具体的な回数を示す情報(数値)であってもよい。また、アイテム#1における単語#1の値(x1)は「1」であることを示す。アイテム#1の場合、「y=w1*x1+w2*x2+・・・+wn*xn」における変数「x1」の値が「1」になることを示す。
【0145】
また、アイテム#1における単語#2の出現頻度は「FR1-2」であることを示す。なお、
図6の例では、出現頻度を「FR1-2」といった抽象的な符号で示すが、出現頻度FR1-2は、具体的な数値等であってもよい。例えば、出現頻度FR1-2は、「1」や「5」等の具体的な回数を示す情報(数値)であってもよい。また、アイテム#1における単語#2の値(x2)は「0」であることを示す。アイテム#1の場合、「y=w1*x1+w2*x2+・・・+wn*xn」における変数「x2」の値が「0」になることを示す。
【0146】
また、アイテム#1における画像の有無は「EX1」であることを示す。なお、
図6の例では、有無を「EX1」といった抽象的な符号で示すが、有無EX1は、画像の有り無しを示す具体的な情報であってもよい。例えば、有無EX1は、「有」や「無」等の具体的な情報であってもよい。例えば、有無EX1は、画像有りを示す「1」や画像無しを示す「0」等の情報(数値)であってもよい。また、アイテム#1における画像の値(x3)は「1」であることを示す。アイテム#1の場合、「y=w1*x1+w2*x2+・・・+wn*xn」における変数「x3」の値が「1」になることを示す。
【0147】
また、アイテム#1のターゲット「ユーザビリティ」に対応する正解情報が「0」であることを示す。アイテム#1のアイテム情報IMD1が、ターゲット「ユーザビリティ」に対応するモデルM1の学習データとして用いられる場合、その正解情報が「0」であることを示す。アイテム#1のクリック率(CTR:Click Through Rate)が所定の閾値(例えば1%等)未満である場合、記事コンテンツであるアイテム#1のターゲット「ユーザビリティ」に対応する正解情報を「0」としてもよい。また、記事コンテンツであるアイテム#1のクリック率が所定の閾値以上である場合、アイテム#1のターゲット「ユーザビリティ」に対応する正解情報を「1」としてもよい。なお、情報処理装置100は、アイテムのクリック率が所定の閾値未満である場合、アイテムのクリック率の比率を正解情報としてもよい。例えば、情報処理装置100は、アイテム#83のクリック率が「0.3%」であり、所定の閾値が「0.5%」未満である場合、ターゲット「ユーザビリティ」に対応するアイテム#83の正解情報を「0.6(=0.3/0.5)」とする。
【0148】
なお、上記は一例であり、各正解情報は適宜の手段により決定されてもよい。例えば、ユーザビリティの基準は、CTRに限らず、ユーザがアイテム(記事コンテンツ)を閲覧した時間等であってもよい。例えば、ユーザがアイテムを閲覧した時間が所定の閾値(例えば5分等)未満である場合、正解情報を「0」とし、ユーザがアイテムを閲覧した時間が所定の閾値以上である場合、正解情報を「1」としてもよい。
【0149】
また、アイテム#1のターゲット「収益性」に対応する正解情報が「0」であることを示す。アイテム#1のアイテム情報IMD1が、ターゲット「収益性」に対応するモデルM1の学習データとして用いられる場合、その正解情報が「0」であることを示す。アイテム#1の顧客転換率(CVR:Conversion Rate)が所定の閾値(例えば0.1%等)未満である場合、アイテム#1のターゲット「収益性」に対応する正解情報を「0」としてもよい。また、アイテム#1の顧客転換率が所定の閾値以上である場合、アイテム#1のターゲット「収益性」に対応する正解情報を「1」としてもよい。なお、情報処理装置100は、アイテムの顧客転換率が所定の閾値未満である場合、アイテムの顧客転換率の比率を正解情報としてもよい。例えば、情報処理装置100は、アイテム#83の顧客転換率が「0.02%」であり、所定の閾値が「0.1%」未満である場合、ターゲット「収益性」に対応するアイテム#83の正解情報を「0.2(=0.02/0.1)」とする。
【0150】
例えば、収益性の基準は、CVRに限らず、アイテム(記事コンテンツ)の配信により得られる広告収入等であってもよい。例えば、アイテムの配信による広告収入が所定の閾値(例えばX円等)未満である場合、正解情報を「0」とし、アイテムの配信による広告収入が所定の閾値以上である場合、正解情報を「1」としてもよい
【0151】
なお、上記は一例であり、各正解情報は適宜の手段により決定されてもよい。また、正解情報は「0」、「1」に限らず、例えば「0.2」や「0.567」等の小数点以下を含む数値であってもよい。
【0152】
また、アイテム情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。アイテム情報記憶部121は、各アイテムのカテゴリを示す情報を記憶してもよい。アイテム情報記憶部121は、記事コンテンツであるアイテムのカテゴリが「経済」、「スポーツ」、「芸能」等のいずれであるかを示す情報を記憶してもよい。
【0153】
また、例えば、アイテム情報記憶部121は、各アイテムと各ターゲットとの組合せごとにベクトル情報(ベクトルデータ)を記憶してもよい。例えば、アイテム情報記憶部121は、
図12に示すような処理により生成された各アイテムと各ターゲットとの組合せごとにベクトル情報(ベクトルデータ)を記憶してもよい。この場合、アイテムIDにより識別されるアイテム(オブジェクト)のアイテムには、各ターゲットに対応するベクトル情報が対応付けられて記憶される。すなわち、アイテム(オブジェクト)を識別するアイテムIDに対して、オブジェクトに対応するアイテムの複数のベクトルデータであって、複数のターゲットの各々に対応する複数のベクトルデータが対応付けられて登録されている。
【0154】
(インデックス情報記憶部122)
実施形態に係るインデックス情報記憶部122は、インデックスに関する各種情報を記憶する。
図7は、実施形態に係るインデックス情報記憶部の一例を示す図である。具体的には、
図7の例では、インデックス情報記憶部122は、ツリー構造のインデックス情報を示す。
図7の例では、インデックス情報記憶部122は、インデックスデータセット122-1やインデックスデータセット122-2等のようにターゲットごとに情報(テーブル)を記憶する。
図7に示すインデックスデータセット122、122-2等は、「ターゲット」、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目を含む。なお、「第1階層」~「第3階層」に限らず、インデックスの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
【0155】
図7の例では、インデックスデータセット122-1は、ターゲットID「TID1」により識別されるターゲット「ユーザビリティ」に対応し、インデックスデータセット122-2は、ターゲットID「TID2」により識別されるターゲット「収益性」に対応する。例えば、ターゲット「ユーザビリティ」は、ユーザビリティをターゲット(目的)とするグラフ情報のインデックス情報であることを示す。例えば、ターゲット「収益性」は、収益性をターゲット(目的)とするグラフ情報のインデックス情報であることを示す。
【0156】
具体的には、インデックスデータセット122-1には、ターゲット「ユーザビリティ」に対応するインデックスに関する情報(インデックス情報IND11)が記憶される。また、インデックスデータセット122-2には、ターゲット「収益性」に対応するインデックスに関する情報(インデックス情報IND12)が記憶される。
【0157】
「ターゲット」は、対応するインデックスデータセットが対象とする観点(ターゲット)を示す。「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、インデックスの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、インデックスの根(ルート)に直接結ばれる階層に対応するノードとなる。
【0158】
「第2階層」は、インデックスの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、インデックスの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
【0159】
例えば、
図7に示す例においては、インデックス情報記憶部122のうち、インデックスデータセット122-1には、
図1中のインデックス情報IND11に対応する情報が記憶される。例えば、インデックスデータセット122-1は、第1階層のノードが、節点VT1~VT3等であることを示す。なお、インデックスデータセット122、122-2等には、各節点に対応するベクトルの値が記憶されてもよい。
【0160】
また、例えば、インデックスデータセット122-1は、節点VT2の直下の第2階層のノードが、節点VT2-1~VT2-4であることを示す。また、例えば、インデックスデータセット122-1は、節点VT2-2の直下の第3階層のノードが、ノードN83、ノードN516のグラフ情報GR11中のノード(ベクトル)であることを示す。
【0161】
なお、インデックス情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0162】
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフ情報に関する各種情報を記憶する。
図8は、実施形態に係るグラフ情報記憶部の一例を示す図である。
図8の例では、グラフ情報記憶部123は、「ノードID」、「アイテムID」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「ユーザビリティ(TID1)」や「収益性(TID2)」といった各観点(ターゲット)に対応する項目を有する。「ユーザビリティ(TID1)」や「収益性(TID2)」は、「エッジID」や「参照先」といった項目を有する。
【0163】
図8の例では、項目「ユーザビリティ(TID1)」に対応して記憶されるエッジ群(エッジ群EG11)が、ターゲット「ユーザビリティ」に対応するエッジ群を示す。例えば、項目「ユーザビリティ(TID1)」に対応するエッジ群EG11は、「-」以下の文字列を含まないエッジIDにより識別される。例えば、エッジ群EG11には、エッジID「E11」や「E22」等のエッジIDにより識別されるエッジが含まれる。例えば、ターゲット「ユーザビリティ」は、ユーザビリティの観点でノードを連結するエッジ群(グラフ情報)であることを示す。すなわち、エッジ群EG11は、ユーザビリティに関するモデル(モデルM1)を用いてアイテムがベクトル化された場合のアイテム間の類似性に基づいて、アイテム(ノード)を連結するエッジ群であることを示す。
【0164】
また、
図8の例では、項目「収益性(TID2)」に対応して記憶されるエッジ群(エッジ群EG12)が、ターゲット「収益性」に対応するエッジ群を示す。例えば、項目「収益性(TID2)」に対応するエッジ群EG12は、「-」に続く文字列(数値)が「2」であるエッジIDにより識別される。例えば、エッジ群EG12には、エッジID「E11-2」や「E22-2」等のエッジIDにより識別されるエッジが含まれる。例えば、ターゲット「収益性」は、収益性の観点でノードを連結するエッジ群(グラフ情報)であることを示す。すなわち、エッジ群EG12は、収益性に関するモデル(モデルM2)を用いてアイテムがベクトル化された場合のアイテム間の類似性に基づいて、アイテム(ノード)を連結するエッジ群であることを示す。
【0165】
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「アイテムID」は、アイテムを識別するための識別情報を示す。
【0166】
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。
図8の例では、「エッジ情報」は、エッジが有向エッジである場合を示し、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。「ユーザビリティ(TID1)」や「収益性(TID2)」は、エッジを連結する観点を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、
図8の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
【0167】
例えば、
図8の例では、ノードID「N1」により識別されるノード(ベクトル)は、アイテムID「IM1」により識別されるアイテム(オブジェクト)に対応することを示す。
【0168】
ユーザビリティ(TID1)に対応するエッジ群EG11では、ノードID「N1」により識別されるノードからは、エッジID「E12」により識別されるエッジが、ノードID「N312」により識別されるノード(ベクトル)に連結されることを示す。すなわち、
図8の例では、ターゲット「ユーザビリティ」の観点でノードを連結するエッジ群EG11では、ノードID「N1」により識別されるノード(ベクトル)からはノードID「N312」により識別されるノード(ベクトル)に辿ることができることを示す。
【0169】
また、収益性(TID2)に対応するエッジ群EG12では、ノードID「N1」により識別されるノードからは、エッジID「E12-2」により識別されるエッジが、ノードID「N3」により識別されるノード(ベクトル)に連結されることを示す。すなわち、
図8の例では、ターゲット「収益性」の観点でノードを連結するエッジ群EG12では、ノードID「N1」により識別されるノード(ベクトル)からはノードID「N3」により識別されるノード(ベクトル)に辿ることができることを示す。
【0170】
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。
【0171】
(モデル情報記憶部124)
実施形態に係るモデル情報記憶部124は、モデルに関する情報を記憶する。例えば、モデル情報記憶部124は、生成処理により生成されたモデル情報(モデルデータ)を記憶する。
図9は、実施形態に係るモデル情報記憶部の一例を示す図である。
図9に示すモデル情報記憶部124では、各ターゲットに対応するモデルが記憶される。
図9に示すモデル情報記憶部124は、モデル情報として、各モデルM1、M2等に対応させて「特徴量#1」~「特徴量#3」等といった項目を有する。モデル情報記憶部124には、モデルM1、M2の2つのモデルに限らず、各ターゲット等に応じて多数(例えば10や100等)のモデルが記憶されてもよい。
【0172】
「ターゲットID」は、ターゲット(目的)を識別するための識別情報を示す。また、「ターゲット」は、ターゲットIDにより識別されるターゲットの具体的な名称や内容等を示す。例えば、「ターゲット」は、どのような観点をターゲットにするかを示す具体的な情報であってもよい。「特徴量#1」~「特徴量#3」の各々は、各モデルの一つの特徴量(要素)を示す。なお、
図9の例では、説明のために、各特徴量の項目に括弧書きで各特徴量に対応する対象を示す。例えば、「特徴量#1」の下に示す「(単語#1)」は、「特徴量#1」に対応する対象が単語#1であることを示す。なお、
図9の例では、対象を「単語#1」、「単語#2」といった抽象的な符号で示すが、各対象は、具体的な名前、名称等であってもよい。例えば、「単語#1」や「単語#2」等は、「○○棋士」、「ダイエット」、「サッカー」等の具体的な対象を示す情報(文字列)であってもよい。なお、各特徴量に対応する対象が不明であってもよい。
【0173】
例えば、
図9に示す例において、モデルM1は、ターゲット「ユーザビリティ」に対応するモデルであることを示す。また、例えば、
図9に示す例において、モデルM2は、ターゲット「収益性」に対応するモデルであることを示す。
【0174】
例えば、
図9に示す例において、各モデルの特徴量#1は単語#1に対応する特徴量(素性)であることを示す。また、例えば、
図9に示す例において、各モデルの特徴量#2は単語#2に対応する特徴量であることを示す。また、例えば、
図9に示す例において、各モデルの特徴量#3は画像に対応する特徴量であることを示す。
【0175】
例えば、モデルM1、M2等は「y=w1*x1+w2*x2+・・・+wn*xn」で示す回帰モデルで実現される。
図9における各特徴量に対応するx1やx2等といった入力データ(xn)に対応する。また、各特徴量の重みは、xnに対応する係数wnに対応する。この場合、例えば、モデルM1、M2等の特徴量#1がx1に対応し、特徴量#1に格納された値がw1に対応する。また、x1には、入力されたアイテムデータにおける特徴量#1を示す情報に基づく値が対応する。例えば、モデルM1、M2等の特徴量#2がx2に対応し、特徴量#2に格納された値がw2に対応する。また、x2には、入力されたアイテムデータにおける特徴量#2を示す情報に基づく値が対応する。
【0176】
例えば、
図9に示す例において、モデルM1は、特徴量#1の重みが「0.02」、特徴量#2の重みが「0.05」、特徴量#3の重みが「0.01」等であることを示す。例えば、モデルM1に対応するターゲット「ユーザビリティ」においては、特徴量#1~特徴量#3のうちでは、重みが最大である特徴量#2に対応する単語#2が、最も影響が大きいことを示す。また、モデルM2は、特徴量#1の重みが「0.01」、特徴量#2の重みが「0」、特徴量#3の重みが「0.06」等であることを示す。例えば、モデルM2に対応するターゲット「収益性」においては、特徴量#1~特徴量#3のうちでは、重みが最大である特徴量#2に対応する単語#2が、最も影響が小さいことを示す。
【0177】
例えば、モデルの特徴量(素性)がm次元のベクトルで表現される場合、特徴量数はm個になり、特徴量#1~特徴量#mの重みが記憶される。
【0178】
なお、モデル情報記憶部124には上記に限らず、種々の情報が記憶されてもよい。例えば、モデル情報記憶部124には、多層のモデルの情報が記憶されてもよい。例えば、モデル情報記憶部124には、各層におけるノードと、各ノードが採用する関数と、ノードの接続関係と、ノード間の接続に対して設定される接続係数とを含む情報が含まれるモデルデータが記憶されてもよい。
【0179】
例えば、モデル情報記憶部124には、アイテムのアイテム情報(アイテムデータ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力されたアイテム情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、所定の目的に適したアイテムかどうかを示すスコアの値を出力層から出力するよう、コンピュータを機能させるためのモデル(「モデルX」とする)の情報(モデルデータ)が記憶されてもよい。
【0180】
例えば、モデルXがDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現される場合、例えば、モデルXが含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。例えば、上記のような回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
【0181】
なお、モデル情報記憶部124は、上記に限らず、目的に応じて種々のモデル情報を記憶してもよい。
【0182】
(制御部130)
図5の説明に戻って、制御部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要素の重みとに基づく演算を行うことにより、所定の目的に適したアイテムかどうかを示すスコアの値を出力層から出力する。
【0183】
図5に示すように、制御部130は、取得部131と、生成部132と、決定部133と、検索部134と、提供部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、
図5に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0184】
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、アイテム情報記憶部121や、インデックス情報記憶部122や、グラフ情報記憶部123や、モデル情報記憶部124等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
【0185】
取得部131は、複数のアイテムの各々に対応する複数のノードと、複数の観点の各々に対応する複数のエッジ群であって、各エッジ群に対応する観点に基づく複数のアイテムの類似性に応じて複数のノードを連結する複数のエッジ群とを含むグラフ情報を取得する。取得部131は、複数のアイテムの各々に対応する複数のベクトルの類似性であって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。
【0186】
取得部131は、複数のアイテムの各々の特徴を示す複数のベクトルであって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。取得部131は、複数のアイテムの各々から抽出された特徴量を要素とする複数のベクトルであって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。取得部131は、一の観点に対応する所定のモデルの特徴量と重みとに基づく複数のベクトルの類似性であって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。
【0187】
取得部131は、複数のアイテムの各々に対応する複数のベクトルと、複数の観点の各々に対応する複数のエッジ群であって、各エッジ群に対応する観点に基づく複数のアイテムの類似性に応じて複数のベクトルを連結する複数のエッジ群とを含むグラフ情報を取得する。
【0188】
取得部131は、アイテムに関するクエリ情報を取得する。取得部131は、複数のアイテムのユーザビリティに関する類似性に応じて複数のアイテムを連結するエッジ群を含む複数のエッジ群を取得する。取得部131は、複数のアイテムの収益性に関する類似性に応じて複数のアイテムを連結するエッジ群を含む複数のエッジ群を取得する。
【0189】
また、取得部131は、ユーザが利用する端末装置10から情報を取得する。また、取得部131は、一のアイテムに関するアイテム情報をクエリ情報として取得する。取得部131は、ユーザに関するユーザ情報をクエリ情報として取得する。取得部131は、記憶部120(
図5参照)や外部装置からクエリ情報を取得する。取得部131は、ユーザが利用する端末装置10からクエリ情報を取得する。
【0190】
例えば、取得部131は、データ検索の対象となる複数のノード(ベクトル)を取得する。例えば、取得部131は、複数のノードと、複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群を取得する。
【0191】
例えば、取得部131は、外部の情報処理装置からグラフ情報(グラフデータ)を取得する。例えば、取得部131は、グラフ情報記憶部123からグラフ情報を取得する。例えば、取得部131は、グラフ情報を取得する。
図1及び
図2の例では、取得部131は、グラフ情報GR11を取得する。
【0192】
例えば、取得部131は、外部の情報処理装置からインデックス情報(インデックスデータ)を取得する。例えば、取得部131は、インデックス情報記憶部122からインデックス情報を取得する。例えば、取得部131は、木構造型のインデックス情報を取得する。
図1及び
図2の例では、取得部131は、インデックス情報IND11を取得する。
【0193】
また、取得部131は、ユーザが利用する端末装置10からアイテムを取得する。例えば、取得部131は、検索クエリとして、一のアイテムのアイテム情報を取得する。
【0194】
取得部131は、一のアイテムに関するアイテム情報(アイテム情報)を取得する。
図1及び
図2の例では、取得部131は、アイテムに関するクエリ情報を取得する。取得部131は、端末装置10からアイテムXに関するアイテム情報IMD11を、クエリ情報として取得する。取得部131は、端末装置10からアイテムXに関するアイテム情報を取得する。例えば、取得部131は、アイテムに関する検索クエリを取得する。取得部131は、ユーザU1がアイテムXを閲覧したことを示す情報を取得する。
【0195】
図1及び
図2の例では、記憶部120(
図5参照)からグラフ情報GR11に必要な各種情報を取得する。例えば、取得部131は、アイテム情報記憶部121(
図6参照)やグラフ情報記憶部123(
図8参照)やモデル情報記憶部121(
図9参照)からグラフ情報GR11に必要な各種情報を取得する。例えば、取得部131は、グラフ情報記憶部123(
図8参照)からターゲット「ユーザビリティ」に対応するエッジ群やターゲット「収益性」に対応するエッジ群を含むグラフ情報を取得する。
【0196】
また、例えば、取得部131は、インデックス情報記憶部122(
図7参照)から、グラフ情報GR11における検索の起点となるノードの決定に用いるインデックス情報IND11を取得する。具体的には、取得部131は、インデックスデータセット122-1(
図7参照)からターゲット「ユーザビリティ」に対応するインデックス情報IND11を取得する。なお、インデックス情報IND11は、取得部131が生成してもよいし、取得部131は、インデックス情報IND11を情報提供装置50等の他の外部装置から取得してもよい。
【0197】
(生成部132)
生成部132は、各種情報を生成する。例えば、生成部132は、記憶部120に記憶された情報)を用いて、モデル情報記憶部124に示すようなモデルを生成する。例えば、生成部132は、アイテム情報記憶部121に記憶された情報(学習データ)を用いて、モデル情報記憶部124に示すようなモデルを生成する。生成部132は、アイテム情報に基づいてターゲットごとのモデルを生成する。例えば、生成部132は、アイテム情報に基づいて生成したベクトル用情報と、正解情報とに基づいて、ターゲットごとのモデルを生成する。例えば、生成部132は、決定部133により決定された情報を用いて、モデルを生成する。例えば、生成部132は、検索部134により検索(抽出)された情報を用いて、モデルを生成する。
【0198】
生成部132は、「単語#1」、「単語#2」、「画像」等のアイテム情報に含まれる要素を特徴量(素性)とするモデルを生成する。例えば、生成部132は、ターゲット「ユーザビリティ」に対応するモデルM1を生成する場合、ユーザに選択(クリック)されたアイテムに多く含まれていた要素の重みが重くなるように学習し、モデルを生成する。
【0199】
生成部132は、ターゲット「ユーザビリティ」に対応する正解情報との組合せを学習データとしてターゲット「ユーザビリティ」に対応するモデルM1を生成する。例えば、生成部132は、ターゲット「ユーザビリティ」に対応するモデルM1を生成する場合、単語#1の出現頻度が所定の閾値以上であるアイテムが、ユーザに選択(クリック)されている場合、「特徴量#1(単語#1)」の重みが重くなるように学習し、モデルM1を生成する。なお、生成部132は、各モデルが出力する値が0~1の範囲になるように各モデルを正規化してもよい。
図1及び
図2の例では、生成部132は、各モデルが出力する値が0~1の範囲になるように正規化された各モデルを用いてもよい。
【0200】
例えば、生成部132は、アイテム#1やアイテム#2のベクトル用情報と、ターゲット「ユーザビリティ」に対応する正解情報とを用いてモデルM1を生成する。例えば、生成部132は、アイテム#1やアイテム#2のベクトル用情報をモデルM1中の対応する変数「x1」~「xn」に入力し、出力値「y」が正解情報の値に近づくように、各重み「w1」~「wn」の値を学習する。
【0201】
生成部132は、
図6中のアイテム情報記憶部121に示すユーザビリティ(TID1)に対応する正解情報が「1」であるアイテム(「正例アイテム」とする)については、モデルM1に正例アイテムの情報(ベクトル用情報)が入力された場合に、モデルM1が出力するスコアが「1」に近づくように、学習処理を行う。例えば、生成部132は、ユーザビリティ(TID1)について、正例アイテムであるアイテム#2の情報(ベクトル用情報)が入力された場合に、モデルM1が出力するスコアが「1」に近づくように、学習処理を行う。
【0202】
生成部132は、
図6中のアイテム情報記憶部121に示すユーザビリティ(TID1)に対応する正解情報が「0」であるアイテム(「負例アイテム」とする)については、モデルM1に負例アイテムの情報(ベクトル用情報)が入力された場合に、モデルM1が出力するスコアが「0」に近づくように、学習処理を行う。例えば、生成部132は、ユーザビリティ(TID1)について、正例アイテムであるアイテム#1の情報(ベクトル用情報)が入力された場合に、モデルM1が出力するスコアが「0」に近づくように、学習処理を行う。
【0203】
生成部132は、
図6中のアイテム情報記憶部121に示す収益性(TID2)に対応する正解情報が「1」である正例アイテムについては、モデルM2に正例アイテムの情報(ベクトル用情報)が入力された場合に、モデルM2が出力するスコアが「1」に近づくように、学習処理を行う。例えば、生成部132は、収益性(TID2)について、正例アイテムであるアイテム#1の情報(ベクトル用情報)が入力された場合に、モデルM2が出力するスコアが「1」に近づくように、学習処理を行う。
【0204】
生成部132は、
図6中のアイテム情報記憶部121に示す収益性(TID2)に対応する正解情報が「0」である負例アイテムについては、モデルM2に負例アイテムの情報(ベクトル用情報)が入力された場合に、モデルM2が出力するスコアが「0」に近づくように、学習処理を行う。例えば、生成部132は、収益性(TID2)について、正例アイテムであるアイテム#2の情報(ベクトル用情報)が入力された場合に、モデルM2が出力するスコアが「0」に近づくように、学習処理を行う。
【0205】
なお、生成部132は、
図6中のアイテム情報記憶部121に示すように、「0」や「1」以外の値の正解情報を用いてモデルを学習してもよい。例えば、生成部132は、アイテム#83に対応する正解情報のように、「0.6」や「0.2」のような0から1の範囲の値の正解情報を用いてモデルを学習してもよい。例えば、生成部132は、ユーザビリティ(TID1)について、正解情報が「0.6」であるアイテム#83の情報(ベクトル用情報)が入力された場合に、モデルM1が出力するスコアが「0.6」に近づくように、学習処理を行う。また、例えば、生成部132は、収益性(TID2)について、正解情報が「0.2」であるアイテム#83の情報(ベクトル用情報)が入力された場合に、モデルM1が出力するスコアが「0.2」に近づくように、学習処理を行う。
【0206】
生成部132は、モデルM1、M2等を生成し、生成したモデルM1、M2等をモデル情報記憶部124に格納する。生成部132は、上記に限らず、いかなる学習アルゴリズムを用いてモデルM1を生成してもよい。
【0207】
なお、生成部132は、モデルM1、M2に限らず、他のターゲットに対応するモデルM3、M4等を生成してもよい。例えば、生成部132は、種々の学習アルゴリズムを用いてモデルを生成してもよい。例えば、生成部132は、ニューラルネットワーク(neural network)、サポートベクターマシン(SVM)、クラスタリング、強化学習等の学習アルゴリズムを用いてモデルを生成する。一例として、生成部132がニューラルネットワークを用いてモデル等を生成する場合、モデル等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
【0208】
例えば、生成部132は、取得部131により取得された学習データに基づいて、入力したログ情報と同様の情報を出力するモデル(オートエンコーダ)を生成してもよい。例えば、生成部132は、入力するログ情報自体を正解情報として、入力したログ情報と同様の情報を出力するモデル(オートエンコーダ)を生成してもよい。例えば、生成部132は、ニューラルネットワーク(neural network)等の学習アルゴリズムを用いてモデルM1を生成する。一例として、生成部132がニューラルネットワークを用いてモデルM1等を生成する場合、モデルM1等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
【0209】
生成部132は、アイテムに関する情報が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力されたアイテム情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、所定の目的に適したアイテムかどうかを示すスコアの値を出力層から出力するモデルを生成する。
【0210】
例えば、生成部132は、学習データに基づいてモデルを生成する。例えば、生成部132は、学習データに基づいてモデルを生成する。例えば、生成部132は、アイテム情報記憶部121中のアイテム情報IMD1、IMD2等を学習データ(教師データ)として、学習を行なうことにより、モデルを生成する。
【0211】
例えば、生成部132は、アイテム情報IMD1が入力された場合に、モデルM1がアイテム情報IMD1と同様の情報を出力するように、学習処理を行う。例えば、生成部132は、アイテム情報IMD2が入力された場合に、モデルM1がアイテム情報IMD2と同様の情報を出力するように、学習処理を行う。生成部132は、モデルを生成し、生成したモデルをモデル情報記憶部124に格納する。なお、情報処理装置100は、情報提供装置50等の他の外部装置からモデルを取得する場合、生成部132を有しなくてもよい。
【0212】
生成部132は、
図12中のモデル式MFM中の各特徴量とその重みとの組合せをベクトルの各次元の要素として、N次元ベクトルを生成する。例えば、生成部132は、
図12中のベクトル形式VFMに示すように、「w1*x1」をベクトルの1次元目の要素とし、「w2*x2」をベクトルの2次元目の要素とし、「wn*xn」をベクトルのn次元目の要素としたN次元ベクトルを生成する。
【0213】
生成部132がアイテム#1について、ターゲット「ユーザビリティ」に対応するベクトルデータVD1-1と、ターゲット「ユーザビリティ」に対応するベクトルデータVD1-2を生成する。
【0214】
生成部132は、「w1」を「0.02」とし、「x1」を「1」とし、「w2」を「0.05」とし、「x2」を「0」とし、「w3」を「0.01」とし、「x3」を「1」とした中間ベクトルSB1-1を生成する。そして、生成部132は、次元ごとに特徴量と重みとを乗算することにより、各次元の要素を算出する。これにより、生成部132は、1次元目の値が「0.02」であり、2次元目の値が「0」であり、3次元目の値が「0.01」であるベクトルVD1-1を生成する。すなわち、生成部132は、
図12中に示すように「0.02,0,0.01,…」のような、ターゲット「ユーザビリティ」に対応するベクトルVD1-1を生成する。
【0215】
生成部132は、「w1」を「0.01」とし、「x1」を「1」とし、「w2」を「0」とし、「x2」を「0」とし、「w3」を「0.06」とし、「x3」を「1」とした中間ベクトルSB1-2を生成する。そして、生成部132は、次元ごとに特徴量と重みとを乗算することにより、各次元の要素を算出する。これにより、生成部132は、1次元目の値が「0.01」であり、2次元目の値が「0」であり、3次元目の値が「0.06」であるベクトルVD1-2を生成する。すなわち、生成部132は、
図12中に示すように「0.01,0,0.06,…」のような、ターゲット「収益性」に対応するベクトルVD1-2を生成する。
【0216】
図1及び
図2の例では、生成部132は、アイテムXの情報からグラフ情報の探索に用いるベクトルを生成する。
図2の例では、生成部132は、処理群PS11に示すような処理により、アイテムXに対応するベクトルを生成する。生成部132は、アイテムXのベクトル用情報を生成する。生成部132は、アイテムXのアイテム情報IMD11からアイテムXのベクトル用情報を生成する。生成部132は、
図2中のベクトル用情報一覧FVD11に示すように、「(1,1,0,…)」であるアイテムXのベクトル用情報を生成する。生成部132は、1次元目に対応する値が「1」、2次元目に対応する値が「1」、3次元目に対応する値が「0」等であるベクトル用情報を生成する。
【0217】
そして、生成部132は、ベクトル用情報と、ターゲットに対応するモデルの重み情報とを用いて、ベクトルを生成する。
図2の例では、生成部132は、アイテムXのベクトル用情報と、ターゲット「ユーザビリティ」に対応するモデルM1の重み情報とを用いて、アイテムXのベクトル(以下、「ベクトルVD11」ともいう)を生成する生成部132は、
図2中の重み情報一覧WDT1に示すように、「(0.02,0.05,0.01,…)」であるモデルM1の重み情報を用いて、アイテムXのベクトルVD11を生成する。生成部132は、1次元目に対応する値が「0.02」、2次元目に対応する値が「0.05」、3次元目に対応する値が「0.01」等である重み情報を用いて、ベクトルVD11を生成する。すなわち、生成部132は、「w1=0.02」、「w2=0.05」、「w3=0.01」等のモデルM1の重み情報を用いて、ベクトルVD11を生成する。
【0218】
具体的には、生成部132は、
図12中のベクトル形式VFMに示すように、「w1*x1」をベクトルの1次元目の要素とし、「w2*x2」をベクトルの2次元目の要素とし、「wn*xn」をベクトルのn次元目の要素としたベクトルVD11を生成する。生成部132は、「w1」を「0.02」とし、「x1」を「1」とし、「w2」を「0.05」とし、「x2」を「1」とし、「w3」を「0.01」とし、「x3」を「0」として、ベクトルVD11を生成する。そして、生成部132は、次元ごとに特徴量と重みとを乗算することにより、各次元の要素を算出する。これにより、生成部132は、1次元目の値が「0.02」であり、2次元目の値が「0.05」であり、3次元目の値が「0」であるベクトルVD11を生成する。すなわち、生成部132は、「0.02,0.05,0,…」のような、ターゲット「ユーザビリティ」に対応するアイテムXのベクトルVD11を生成する。
【0219】
(決定部133)
決定部133は、各種情報を決定する。決定部133は、取得部131により取得された情報を用いて種々の情報を決定する。決定部133は、生成部132により生成された情報を用いて種々の情報を決定する。決定部133は、検索部134により検索(抽出)された情報を用いて種々の情報を決定する。決定部133は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定する。決定部133は、木構造型のインデックス情報に基づいて、起点ノードを決定する。例えば、決定部133は、取得部131により取得された一のアイテムに関する情報と、グラフ情報の検索の起点となる起点ベクトルに関する情報とに基づいて、起点ベクトルを決定する。また、決定部133は、起点ベクトルの決定に用いるインデックス情報に基づいて、起点ベクトルを決定する。また、決定部133は、木構造型のインデックス情報に基づいて、起点ベクトルを決定する。例えば、決定部133は、アイテム情報と、グラフ情報の検索の起点ベクトルの決定の基準となる情報とに基づいて、起点ベクトルを決定する。決定部133は、複数のエッジ群のうち、検索に用いるエッジ群を決定する。
【0220】
図1及び
図2の例では、決定部133は、一のアイテム(クエリ)に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。
図1及び
図2の例では、決定部133は、アイテムXのベクトルVD11に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。すなわち、決定部133は、ベクトルVD11とインデックス情報IND11とを用いて、グラフ情報GR11における起点ベクトルを決定する。
【0221】
例えば、決定部133は、
図2中のインデックス情報IND11に示すような木構造型のインデックス情報を用いて、グラフ情報GR11における起点ベクトルを決定する。
図1及び
図2の例では、決定部133は、ベクトルVD11を生成した後、インデックス情報IND11を上から下へ辿ることにより、インデックス情報IND11の近傍候補となる起点ベクトルを特定することにより、効率的に検索クエリ(一のアイテム)に対応する起点ベクトルを決定することができる。
【0222】
例えば、決定部133は、インデックス情報IND11をルートRTからリーフノード(グラフ情報GR11中のノード(ベクトル))まで辿ることにより、ベクトルVD11に対応する起点ベクトルを決定してもよい。
図1及び
図2の例では、例えば、決定部133は、インデックス情報IND11をルートRTからノードN83まで辿ることにより、ノードN83を起点ベクトルとして決定する。
【0223】
決定部133は、複数の観点の各々に対応する複数のインデックス情報のうち、一の観点に対応するインデックス情報に基づいて、起点ノードを決定する。決定部133は、ターゲット「ユーザビリティ」に対応するインデックスIND11を、検索に用いるインデックスに決定する。
【0224】
図1の例では、決定部133は、ターゲットを決定する。決定部133は、ターゲットをユーザビリティと決定する。例えば、決定部133は、ユーザが選択したくなるようなアイテムをユーザに提供し、ユーザのユーザビリティを向上させるために、ターゲットをユーザビリティと決定する。例えば、決定部133は、提供する記事コンテンツがユーザにとって適切なものである可能性が高くなり、ユーザのユーザビリティを向上させるために、ターゲットをユーザビリティと決定する。決定部133は、ユーザU1が選択したアイテムXに類似するようなアイテムをユーザU1に推奨するために、ターゲットをユーザビリティと決定する。決定部133は、種々の情報を適宜用いてターゲットを決定する。決定部133は、種々の基準に基づいてターゲットを決定する。例えば、決定部133は、収益性を向上させる場合、ターゲットを収益性と決定する。なお、決定部133は、ターゲットを決定しなくてもよい。例えば、決定部133は、ターゲットを決定せずに、適宜の方法により検索の起点となる起点ノードを決定し、各観点に基づいた類似アイテムを抽出してもよい。
【0225】
決定部133は、インデックスを決定する。決定部133は、ターゲット「ユーザビリティ」に対応するインデックスIND11やターゲット「収益性」に対応するインデックスIND12のうち、起点ノードの決定に用いるインデックスを決定する。
図1の例では、決定部133は、複数グラフ情報群GINFに示すように、ターゲット「ユーザビリティ」に対応する検索用情報群INF11中のインデックスIND11やターゲット「収益性」に対応する検索用情報群INF12中のインデックスIND12のうち、検索に用いる情報を決定する。決定部133は、ターゲット「ユーザビリティ」に対応するインデックスIND11を用いると決定する。
【0226】
例えば、決定部133は、アイテムXのアイテム情報IMD11から抽出された単語の情報に基づいて、アイテムXにおける各単語の出現頻度を計数する。決定部133は、アイテムXにおける単語#1の出現頻度を5回であると計数する。そして、決定部133は、アイテムXにおける単語#1の出現頻度を10回が所定の閾値(例えば5回等)以上であると判定し、アイテムXにおける単語#1(特徴量#1)の値(x1)を「1」と決定する。
【0227】
また、決定部133は、アイテムXにおける単語#2の出現頻度を4回であると計数する。そして、決定部133は、アイテムXにおける単語#2の出現頻度を5回が所定の閾値(例えば3回等)以上であると判定し、アイテムXにおける単語#2(特徴量#2)の値(x2)を「1」と決定する。また、決定部133は、アイテム情報IMD11に画像情報が含まれているかどうかを判定する。
図2の例では、決定部133は、アイテムXには画像情報が含まれないと判定し、アイテムXにおける単語#3(特徴量#3)の値(x3)を「0」と決定する。このように、決定部133は、「x1=1」、「x2=1」、「x3=0」等の各次元の変数に入力される値を決定する。
【0228】
(検索部134)
検索部134は、各種情報を抽出する。例えば、検索部134は、各種判定処理を行う。例えば、検索部134は、取得部131により取得された情報を用いて、各種情報を判定する。例えば、検索部134は、記憶部120に記憶された各種情報を検索する。例えば、検索部134は、各種情報を用いて算出処理を行う。例えば、検索部134は、ベクトルに関する情報を用いて、ベクトル間の距離を算出する。検索部134は、取得部131により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点としてグラフ情報を検索することにより、複数のアイテムのうち、一のアイテムに類似するアイテムである類似アイテムを抽出する。検索部134は、決定部133により決定された起点ノードを起点として、類似アイテムを抽出する。検索部134は、取得部131により取得されたグラフ情報の複数のベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ベクトルを起点としてグラフ情報を検索することにより、複数のアイテムのうち、一のアイテムに類似するアイテムである類似アイテムを抽出する。例えば、検索部134は、決定部133により決定された起点ベクトルを起点としてグラフ情報を検索することにより、複数のアイテムのうち、一のアイテムに類似するアイテムである類似アイテムを抽出する。例えば、検索部134は、グラフ情報記憶部123に記憶された各ノード(ベクトル)間を連結するエッジの長さ(距離)の情報を用いてもよいし、各ノードのベクトル情報から各ノード(ベクトル)間を連結するエッジの長さ(距離)の情報を算出し、算出した長さ(距離)の情報を用いてもよい。
【0229】
検索部134は、取得部131により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、グラフ情報を検索することにより、複数のアイテムのうち、クエリ情報と類似性を有するアイテムである類似アイテムを抽出する。検索部134は、取得部131により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、グラフ情報を複数のエッジ群によるノード間の連結に基づいて検索することにより、複数のアイテムのうち、クエリ情報と類似性を有するアイテムである類似アイテムを抽出する。検索部134は、決定部133により決定された一のグラフ情報を用いて、類似アイテムを抽出する。
【0230】
検索部134は、取得部131により取得されたグラフ情報の複数のベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ベクトルを起点としてグラフ情報を検索することにより、複数のアイテムのうち、一のアイテムに類似するアイテムである類似アイテムを抽出する。検索部134は、各種情報を抽出する。例えば、検索部134は、決定部133により決定された起点ベクトルを起点としてグラフ情報を検索することにより、複数のアイテムのうち、一のアイテムに類似するアイテムである類似アイテムを抽出する。
【0231】
検索部134は、複数のエッジ群のうち、所定の閾値以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。検索部134は、複数のエッジ群の各々に対応する複数のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。
【0232】
図1及び
図2の例では、検索部134は、グラフ情報GR11を用いてアイテムXの類似アイテムを検索する。検索部134は、グラフ情報GR11を検索することにより、アイテムXの類似アイテムを抽出する。例えば、検索部134は、複数のエッジ群のうち、所定の閾値以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。検索部134は、複数のエッジ群EG11、EG12の2つのエッジ群のうち、2つ以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。すなわち、
図2の例では、検索部134は、複数のエッジ群EG11、EG12の2つのエッジ群の両方のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。検索部134は、複数のエッジ群EG11、EG12の各々に対応する複数のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。
【0233】
検索部134は、
図3に示すようなグラフ情報GR11を用いて、アイテムXの類似アイテムを抽出する。
図2の例では、検索部134は、複数のエッジ群EG11、EG12の2つのエッジ群の両方のエッジ(両観点エッジ)が連結されるノード間を辿ることにより、ノードN83の近傍に位置するノードを類似アイテムとして抽出する。例えば、検索部134は、ノードN83からの両観点エッジが連結されたノードを類似アイテムとして抽出する。例えば、検索部134は、ノードN83を起点として、両観点エッジが連結されたノードを辿ることにより、ノードN83から到達可能なノードを類似アイテムとして抽出する。例えば、検索部134は、所定数(例えば、2個や10個等)のノードを類似アイテムとして抽出する。例えば、検索部134は、
図13に示すような検索処理により、アイテムXの類似アイテムを抽出してもよい。
図1及び
図2の例では、検索部134は、ノードN83を起点として、グラフ情報GR11を探索することにより、ノードN83やノードN67を類似アイテムとして抽出する。
【0234】
(提供部135)
提供部135は、各種情報を提供する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を送信する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を配信する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を提供する。提供部135は、検索部134により抽出された類似アイテムに基づいて、所定のサービスを提供する。また、提供部135は、類似アイテムに関する情報提供サービスを提供する。提供部135は、端末装置10に類似アイテムに関する情報を提供する。
【0235】
提供部135は、検索部134により抽出された類似アイテムに基づいて、所定のサービスを提供する。提供部135は、類似アイテムに基づいて、情報提供サービスを提供する。提供部135は、類似アイテムに関する情報を端末装置10に配信する。提供部135は、類似アイテムに関する情報を端末装置10に送信する。
【0236】
図1及び
図2の例では、提供部135は、検索部134により抽出された類似アイテムに関する情報を提供する。提供部135は、ノードN83に対応するアイテム#83や、ノードN67に対応するアイテム#67をアイテムXに類似するアイテムとしてユーザU1が利用する端末装置10に提供する。提供部135は、アイテム#83やアイテム#67を示す情報を端末装置10に配信する。提供部135は、アイテム#83やアイテム#67を示す情報を端末装置10に送信する。
【0237】
例えば、提供部135は、クエリに対応するオブジェクトIDを検索結果として提供する。例えば、提供部135は、検索部134により選択されたオブジェクトIDを情報提供装置50へ提供する。提供部135は、検索部134により選択されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。また、提供部135は、生成部132により生成されたモデルを外部の情報処理装置へ提供してもよい。
【0238】
〔4.情報処理のフロー〕
次に、
図10を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。
図10は、実施形態に係る情報処理の一例を示すフローチャートである。
【0239】
図10に示すように、情報処理装置100は、アイテムに関するクエリ情報を取得する(ステップS101)。例えば、情報処理装置100は、アイテムの検索に関するクエリ情報を取得する。例えば、情報処理装置100は、一のアイテムに関するアイテム情報をクエリ情報として取得する。
図1及び
図2の例では、情報処理装置100は、端末装置10からアイテムXに関するアイテム情報IMD11を取得する。
【0240】
情報処理装置100は、所定の基準に基づいて、インデックスを決定する(ステップS102)。情報処理装置100は、インデックスをターゲット「ユーザビリティ」に対応するインデックスに決定する。例えば、情報処理装置100は、インデックス情報記憶部122のうち、ターゲット「ユーザビリティ」に対応するインデックスIND11を取得する。
【0241】
そして、情報処理装置100は、各モデルを用いてクエリ情報からベクトルを生成する(ステップS103)。例えば、情報処理装置100は、モデルを用いてクエリ情報に対応する一のアイテムのアイテム情報からベクトルを生成する。
図1及び
図2の例では、情報処理装置100は、モデル情報記憶部124に記憶されたモデルM1やモデルM2を用いて、アイテム情報IMD11からベクトルVD11やベクトルVD12を生成する。
【0242】
そして、情報処理装置100は、生成したベクトルとインデックス情報を用いて起点ベクトルを決定する(ステップS104)。
図1及び
図2の例では、情報処理装置100は、ベクトルVD11と、インデックス情報IND11とを用いて、起点ベクトルをノードN83に決定する。
【0243】
そして、情報処理装置100は、グラフ情報を検索することにより、クエリ情報の類似アイテムを抽出する(ステップS105)。
図1及び
図2の例では、情報処理装置100は、ノードN83を起点として、グラフ情報GR11を探索することにより、ノードN83やノードN67を類似アイテムとして抽出する。情報処理装置100は、ノードN83を起点として、ユーザビリティ(TID1)及び収益性(TID2)の両方の観点のエッジが連結されたノード間を辿ることにより、ノードN83やノードN67を類似アイテムとして抽出する。
【0244】
そして、情報処理装置100は、抽出した類似アイテムに関する情報を提供する(ステップS106)。
図1及び
図2の例では、情報処理装置100は、例えばアイテム#83やアイテム#67を示す情報をユーザU1が利用する端末装置10に提供する。
【0245】
〔5.生成処理のフロー〕
次に、
図11を用いて、実施形態に係る情報処理システム1による生成処理の手順について説明する。
図11は、実施形態に係る生成処理の一例を示すフローチャートである。
【0246】
図11に示すように、情報処理装置100は、学習データを取得する(ステップS201)。例えば、情報処理装置100は、アイテム情報記憶部121から学習データを取得する。例えば、情報処理装置100は、アイテム情報記憶部121からアイテム#1やアイテム#2のベクトル用情報や正解情報等を学習データとして取得する。
【0247】
その後、情報処理装置100は、学習データに基づきモデルを生成する(ステップS202)。例えば、情報処理装置100は、アイテム#1やアイテム#2のベクトル用情報と、ターゲット「ユーザビリティ」に対応する正解情報とを用いてモデルM1を生成する。例えば、情報処理装置100は、アイテム#1やアイテム#2のベクトル用情報をモデルM1中の対応する変数「x1」~「xn」に入力し、出力値「y」が正解情報の値に近づくように、各重み「w1」~「wn」の値を学習する。
【0248】
〔6.検索例〕
ここで、上述したグラフ情報を用いた検索の一例を示す。なお、グラフ情報(グラフデータ)を用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、
図13を一例として説明する。
図13は、グラフデータ(グラフ情報)を用いた検索処理の一例を示すフローチャートである。また、以下でいうオブジェクトは、ベクトルやノードと読み替えてもよい。以下に説明する検索処理は、例えば情報処理装置100の検索部134によって行われる。なお、以下では、情報処理装置100が検索処理を行うものとして説明するが、検索処理は他の装置により行われてもよい。例えば、情報処理装置100は、検索クエリとして、一のアイテムのアイテム情報(アイテムデータ)から生成されたベクトルデータを用いる。例えば、情報処理装置100は、一のアイテムのアイテム情報(アイテムデータ)から生成されたベクトルデータとインデックス情報とに基づいて決定された起点ベクトルを起点としてグラフデータを検索する。
図1及び
図2の例では、情報処理装置100は、アイテムXのベクトルVD11とインデックス情報IND11とに基づいて決定された起点ベクトルであるノードN83を起点としてグラフ情報GR11を検索する。
【0249】
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍オブジェクト集合N(G,y)は、ターゲット「ユーザビリティ」のエッジ群のエッジ及びターゲット「収益性」のエッジ群のエッジの2つのエッジにより、ノードyと関連付けられている近傍のオブジェクトの集合であってもよい。「G」は、所定のグラフデータ(例えば、グラフ情報GR11等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
【0250】
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、ルートノード(起点ベクトル)として選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。
図1及び
図2の例では、情報処理装置100は、起点ベクトルであるノードN83等を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。
【0251】
次に、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。
図1及び
図2の例では、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする。例えば、情報処理装置100は、ベクトルVD11と一のオブジェクトのターゲット「ユーザビリティ」に対応するベクトルとに基づく第1の距離を算出する。そして、例えば、情報処理装置100は、ベクトルVD12と一のオブジェクトのターゲット「収益性」に対応するベクトルとに基づく第2の距離を算出する。そして、情報処理装置100は、第1の距離及び第2の距離の平均を検索クエリオブジェクトと一のオブジェクトとの間の距離としてもよい。情報処理装置100は、第1の距離及び第2の距離の平均を、検索クエリオブジェクトと一のオブジェクトとの間の距離dとしてもよい。このように、情報処理装置100は、複数の観点の各々に対応する複数の距離に基づいて、検索クエリオブジェクトと他のオブジェクトとの間の距離を算出してもよい。また、情報処理装置100は、種々の方法により、検索クエリオブジェクトと他のオブジェクトとの間の距離を取得してもよい。例えば、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトとの距離が最も短いノードN83を抽出し、オブジェクトsとする。例えば、情報処理装置100は、ルートノード(起点ベクトル)として選択されたオブジェクト(ノード)のみがオブジェクト集合Sの要素の場合には、結果的にルートノード(起点ベクトル)がオブジェクトsとして抽出される。次に、情報処理装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。
【0252】
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)をこえる(超える)か否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)をこえる場合(ステップS304:Yes)、情報処理装置100は、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS305)、処理を終了する。
【0253】
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
【0254】
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Sに追加する(ステップS308)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、情報処理装置100は、ステップS309の判定(処理)を行う。
【0255】
次に、情報処理装置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:No)、情報処理装置100は、ステップS315の判定(処理)を行う。
【0256】
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksをこえるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ks=2やks=10等の種々の設定であってもよい。オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
【0257】
オブジェクト集合Rに含まれるオブジェクト数がksをこえる場合(ステップS311:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。
【0258】
次に、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
【0259】
そして、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
【0260】
オブジェクト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及び
図2の例では、情報処理装置100は、オブジェクト集合Rに含まれるノードN83やノードN67を検索クエリ(アイテムX)に対応する検索結果として、ユーザU1が利用する端末装置10等へ提供してもよい。例えば、情報処理装置100は、ノードN83に対応するアイテム#83や、ノードN67に対応するアイテム#67を、ユーザビリティに加えて収益性でもアイテムXに類似するアイテムとしてユーザU1が利用する端末装置10に提供する。
【0261】
〔7.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、検索部134とを有する。取得部131は、複数のアイテムの各々に対応する複数のノードと、複数の観点の各々に対応する複数のエッジ群であって、各エッジ群に対応する観点に基づく複数のアイテムの類似性に応じて複数のノードを連結する複数のエッジ群とを含むグラフ情報と、アイテムに関するクエリ情報を取得する。検索部134は、取得部131により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、グラフ情報を複数のエッジ群によるノード間の連結に基づいて検索することにより、複数のアイテムのうち、クエリ情報と類似性を有するアイテムである類似アイテムを抽出する。
【0262】
このように、実施形態に係る情報処理装置100は、複数の観点の各々に対応する複数のエッジ群によるノード間の連結に基づいて検索することにより、複数のアイテムのうち、クエリ情報と類似性を有するアイテムである類似アイテムを抽出することにより、適切なアイテムを抽出することができる。
【0263】
また、実施形態に係る情報処理装置100は、決定部133を有する。決定部133は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定する。検索部134は、決定部133により決定された起点ノードを起点として、類似アイテムを抽出する。
【0264】
このように、実施形態に係る情報処理装置100は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定することにより、適切なアイテムを抽出することができる。
【0265】
また、実施形態に係る情報処理装置100において、決定部133は、木構造型のインデックス情報に基づいて、起点ノードを決定する。
【0266】
このように、実施形態に係る情報処理装置100は、木構造型のインデックス情報に基づいて、起点ノードを決定することにより、適切なアイテムを抽出することができる。
【0267】
また、実施形態に係る情報処理装置100において、決定部133は、複数の観点の各々に対応する複数のインデックス情報のうち、一の観点に対応するインデックス情報に基づいて、起点ノードを決定する。
【0268】
このように、実施形態に係る情報処理装置100は、複数の観点の各々に対応する複数のインデックス情報のうち、一の観点に対応するインデックス情報に基づいて、起点ノードを決定することにより、適切なアイテムを抽出することができる。
【0269】
また、実施形態に係る情報処理装置100において、取得部131は、複数のアイテムの各々に対応する複数のベクトルの類似性であって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。
【0270】
このように、実施形態に係る情報処理装置100は、複数のアイテムの各々に対応する複数のベクトルの類似性であって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得することにより、適切なアイテムを抽出することができる。
【0271】
また、実施形態に係る情報処理装置100において、取得部131は、複数のアイテムの各々の特徴を示す複数のベクトルであって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。
【0272】
このように、実施形態に係る情報処理装置100は、複数のアイテムの各々の特徴を示す複数のベクトルであって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得することにより、適切なアイテムを抽出することができる。
【0273】
また、実施形態に係る情報処理装置100において、取得部131は、複数のアイテムの各々から抽出された特徴量を要素とする複数のベクトルであって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。
【0274】
このように、実施形態に係る情報処理装置100は、複数のアイテムの各々から抽出された特徴量を要素とする複数のベクトルであって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得することにより、適切なアイテムを抽出することができる。
【0275】
また、実施形態に係る情報処理装置100において、取得部131は、一の観点に対応する所定のモデルの特徴量と重みとに基づく複数のベクトルの類似性であって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得する。
【0276】
このように、実施形態に係る情報処理装置100は、一の観点に対応する所定のモデルの特徴量と重みとに基づく複数のベクトルの類似性であって、一の観点に基づく複数のベクトルの類似性に応じて複数のノードを連結する一のエッジ群を含む複数のエッジ群を取得することにより、異なる複数の基準に応じて適切なアイテムを抽出することができる。
【0277】
また、実施形態に係る情報処理装置100において、取得部131は、複数のアイテムのユーザビリティに関する類似性に応じて複数のアイテムを連結するエッジ群を含む複数のエッジ群を取得する。
【0278】
このように、実施形態に係る情報処理装置100は、複数のアイテムのユーザビリティに関する類似性に応じて複数のアイテムを連結するエッジ群を含む複数のエッジ群を取得することにより、各アイテムのユーザビリティに応じて適切なアイテムを抽出することができる。
【0279】
また、実施形態に係る情報処理装置100において、取得部131は、複数のアイテムの収益性に関する類似性に応じて複数のアイテムを連結するエッジ群を含む複数のエッジ群を取得する。
【0280】
このように、実施形態に係る情報処理装置100は、複数のアイテムの収益性に関する類似性に応じて複数のアイテムを連結するエッジ群を含む複数のエッジ群を取得することにより、各アイテムの収益性に応じて適切なアイテムを抽出することができる。
【0281】
また、実施形態に係る情報処理装置100において、検索部134は、複数のエッジ群のうち、所定の閾値以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。
【0282】
このように、実施形態に係る情報処理装置100は、複数のエッジ群のうち、所定の閾値以上の複数のエッジ群のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出することにより、複数の観点に応じて適切なアイテムを抽出することができる。
【0283】
また、実施形態に係る情報処理装置100において、検索部134は、複数のエッジ群の各々に対応する複数のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出する。
【0284】
このように、実施形態に係る情報処理装置100は、複数のエッジ群の各々に対応する複数のエッジが連結されるノード間を辿ることにより、類似アイテムを抽出することにより、各アイテムのユーザビリティに応じて適切なアイテムを抽出することができる。
【0285】
また、実施形態に係る情報処理装置100において、取得部131は、一のアイテムに関するアイテム情報をクエリ情報として取得する。
【0286】
このように、実施形態に係る情報処理装置100は、一のアイテムに関するアイテム情報をクエリ情報として取得することにより、適切なアイテムを抽出することができる。
【0287】
また、実施形態に係る情報処理装置100において、取得部131は、ユーザに関するユーザ情報をクエリ情報として取得する。
【0288】
このように、実施形態に係る情報処理装置100は、ユーザに関するユーザ情報をクエリ情報として取得することにより、適切なアイテムを抽出することができる。
【0289】
また、実施形態に係る情報処理装置100は、提供部135を有する。提供部135は、検索部134により抽出された類似アイテムに基づいて、所定のサービスを提供する。
【0290】
このように、実施形態に係る情報処理装置100は類似アイテムに基づいて、所定のサービスを提供することにより、類似アイテムに関する情報を用いたサービスを適切に提供することができる。
【0291】
また、実施形態に係る情報処理装置100において、提供部135は、類似アイテムに基づいて、情報提供サービスを提供する。
【0292】
このように、実施形態に係る情報処理装置100は、類似アイテムに基づいて、情報提供サービスを提供することにより、類似アイテムに関する情報を用いたサービスを適切に提供することができる。
【0293】
〔8.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば
図14に示すような構成のコンピュータ1000によって実現される。
図14は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
【0294】
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0295】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
【0296】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
【0297】
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0298】
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムまたはデータ(例えば、モデルM1(モデルデータMDT1))を実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムまたはデータ(例えば、モデルM1(モデルデータMDT1))を記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
【0299】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0300】
〔9.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0301】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0302】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0303】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0304】
1 情報処理システム
100 情報処理装置
121 アイテム情報記憶部
122 インデックス情報記憶部
123 グラフ情報記憶部
124 モデル情報記憶部
130 制御部
131 取得部
132 生成部
133 決定部
134 検索部
135 提供部
10 端末装置
50 情報提供装置
N ネットワーク