以下に、本願に係る情報処理装置、情報処理方法及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略する。
〔1.実施形態〕
〔1-1.情報処理の一例〕
まず、図1を用いて、実施形態に係る情報処理の一例について説明する。図1は、実施形態に係る情報処理の一例を示す図である。図1に示す情報処理は、ユーザ端末10(図2参照)と検索サーバ20(図2参照)と生成装置50(図2参照)と情報処理装置100とによって行われる。
ユーザ端末10(図2参照)は、ユーザによって使用される情報処理装置である。ユーザ端末10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。なお、以下では、ユーザ端末10をユーザと同一視する場合がある。すなわち、以下では、ユーザをユーザ端末10と読み替えることもできる。
また、以下では、ユーザID「U1」により特定されるユーザを「ユーザU1」とする場合がある。このように、以下では、「ユーザU*(*は任意の数値)」と記載した場合、そのユーザはユーザID「U*」により特定されるユーザであることを示す。例えば、「ユーザU2」と記載した場合、そのユーザはユーザID「U2」により特定されるユーザである。
検索サーバ20(図2参照)は、検索サービスを提供するサーバ装置である。例えば、検索サーバ20が提供する検索サービスは、あらゆる情報を検索可能な総合検索サービスである。検索サーバ20は、ユーザによって入力された検索クエリに関する情報を記憶する。具体的には、検索サーバ20は、ユーザの検索履歴に関する情報を記憶する。
生成装置50(図2参照)は、学習モデルM1を生成するサーバ装置である。ここでは、生成装置50による学習モデルM1の生成処理の概要を述べる。なお、生成装置50による学習モデルM1の生成処理の詳細は後述する。具体的には、生成装置50は、ユーザによって入力された検索クエリに関する情報を検索サーバ20から取得する。続いて、生成装置50は、検索サーバ20から取得した検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリを抽出する。ここで、生成装置50は、ユーザによる1回の検索ごとに検索ボックスに入力された文字列全体をユーザによって入力された一つの検索クエリとして取り扱う。例えば、生成装置50は、ユーザU1による1回の検索で検索ボックスに「六本木 パスタ」のように複数の文字列を含む検索クエリが入力された場合は、「六本木 パスタ」全体で一つの検索クエリとして取り扱う。また、生成装置50は、同一のユーザによって各検索クエリが入力された時間の間隔が所定の時間内(例えば、2分以内)であるような複数の検索クエリを同一のユーザによって所定の時間内に入力された複数の検索クエリとして抽出する。
続いて、生成装置50は、抽出した複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルM1を生成する。具体的には、生成装置50は、抽出した複数の検索クエリの分散表現(ベクトル)が類似するように学習モデルM1を学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を含む分散表現(ベクトル)を出力する学習モデルM1を生成する。より具体的には、生成装置50は、RNN(Recurrent Neural Network)の一種であるLSTM(Long Short-Term Memory)を分散表現生成に用いたDSSM(Deep Structured Semantic Model)の技術を用いて、検索クエリから分散表現(ベクトル)を出力する学習モデルM1を生成する。例えば、生成装置50は、学習モデルM1の正解データとして、同一のユーザによって所定の時間内に入力された一対の検索クエリが類似する特徴を有するものとして、所定の検索クエリの分散表現(ベクトル)と、所定の検索クエリと対となる他の検索クエリの分散表現(ベクトル)とが、分散表現空間上で近くに存在するように学習する。なお、2つの分散表現(ベクトル)が分散表現空間上で近くに存在するように学習することは、2つの分散表現(ベクトル)が類似するように学習することと言い換えることができる。なお、以下では、学習モデルM1によって生成された検索クエリの分散表現(ベクトル)を単に「ベクトル」と記載する場合がある。
情報処理装置100は、ナレッジデータベースを提供するサーバ装置である。ここで、情報処理装置100が提供するナレッジデータベースについて説明する。ナレッジデータベースには、各種の知識が体系化、組織化された状態で登録されている。例えば、ナレッジデータベースには、登録される要素であるエンティティと、エンティティ間の関係性を示す情報(以下、「関係情報」と記載する。)とが登録されている。エンティティは、実世界における人物、物体、建築物等の主語となりうる各種の物、職業や国籍等といった属性、各種の状態や事象等、世の中における各種の物事に対応する情報である。また、関係情報は、2つのエンティティ間の関係性を示す情報である。
図1の右上方には、情報処理装置100が提供するナレッジデータベースの構造を示すグラフ(以下、適宜「ナレッジグラフ」と記載する。)が示されている。図1に示す例では、ナレッジグラフは、黒丸「●」で示すエンティティと、白丸「○」で示すノード(アイテム)と、矢印(有効エッジ)で示す関係情報とを含む。なお、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるエンティティを第1要素とし、エッジにより辿る先、すなわち終点となるエンティティを第2要素と記載する。情報処理装置100は、黒丸で示す複数のエンティティと白丸で示す複数のノード(アイテム)と矢印で示す複数の関係情報とを記憶する。各エンティティには、エンティティに対応する物事の名称や写真等、エンティティに関する各種の情報と対応するノード(アイテム)が対応付けられている。
一般的に、ナレッジデータベースにおいては、第1のエンティティと、第2のエンティティと、第1のエンティティと第2のエンティティとの間の関係性を示す関係情報とからなるトリプルと呼ばれる情報が登録されることにより、各種の知識が体系化されている。換言すると、ナレッジデータベースにおいては、主語(S)となるエンティティと、目的語(O)となるエンティティと、述語(P)となる関係情報とからなるトリプルによって、様々な知識が体系的に表されている。図1に示す例では、主語(S)となるエンティティを第1要素、目的語(O)となるエンティティを第2要素と記載する。
例えば、エンティティE1は、所定のバンド#1に対応するエンティティである。そして、バンド#1のバンド名である「バンド名#1」がアイテムI11としてエンティティE1と対応付けた状態で登録されている。また、例えば、エンティティE11は、所定の人物#11に対応するエンティティである。そして、人物#11の人名である「人名#11」がアイテムI111としてエンティティE11と対応付けた状態で登録されている。また、例えば、エンティティE12は、所定の人物#12に対応するエンティティである。そして、人物#12の人名である「人名#12」がアイテムI121としてエンティティE12と対応付けた状態で登録されている。また、例えば、エンティティE13は、所定の人物#13に対応するエンティティである。そして、人物#13の人名である「人名#13」がアイテムI131としてエンティティE13と対応付けた状態で登録されている。
また、例えば、エンティティE21は、楽器のギターに対応するエンティティである。そして、ギターの名称である「ギター」がアイテムI211としてエンティティE21と対応付けた状態で登録されている。また、例えば、エンティティE23は、楽器のベースに対応するエンティティである。そして、ベースの名称である「ベース」がアイテムI231としてエンティティE23と対応付けた状態で登録されている。すなわち、エンティティとは、各種物事の概念そのものと対応する情報である。
ここで、例えば、エンティティE1とエンティティE11とは、「所属メンバー」を示す関係情報C11によって関連付けられている。このような第1のエンティティと、第2のエンティティと、第1のエンティティと第2のエンティティとの間の関係性を示す関係情報とからなる3つ組の情報(以下、「トリプル」と記載する。)は、例えば、エンティティE1と対応するバンド#1(すなわち、バンド名が「バンド名#1」であるバンド)の所属メンバーが、エンティティE11が示す人物(すなわち、人名が「人名#11」である人物#11)である旨を示すことができる。また、例えば、エンティティE11とエンティティE21とは、「担当楽器」を示す関係情報C21によって関連付けられている。このようなトリプルは、例えば、エンティティE11と対応する人物#11(すなわち、人名が「人名#11」である人物)の担当楽器が、エンティティE21が示す楽器(すなわち、楽器名「ギター」)である旨を示すことができる。
また、以下では、トリプルID「トリプル#*」により特定されるトリプルを「トリプル#*」とする場合がある。このように、以下では、「トリプル#*(*は任意の数値)」と記載した場合、そのトリプルはトリプルID「トリプル#*」により特定されるトリプルであることを示す。例えば、「トリプル#1」と記載した場合、そのトリプルはトリプルID「トリプル#1」により特定されるトリプルである。
このようなナレッジデータベースに登録された知識を検索する場合、情報処理装置100は、以下の処理を実行する。まず、情報処理装置100は、ユーザ端末10から検索クエリとして主語と動詞を受付ける。このような場合、情報処理装置100は、検索クエリとして受付けた主語と動詞とを含むトリプルを検索し、検索したトリプルをユーザ端末10に提供する。例えば、情報処理装置100は、検索クエリとして、主語「人名#11」と述語「担当楽器」とを受付けた場合、主語「人名#11」をノード(アイテム)とするエンティティE11と、述語「担当楽器」を示す関係情報C21とを特定し、特定した、エンティティE11と、関係情報C21とを含むトリプルとして、エンティティE11、エンティティE21、および関係情報C21を特定する。そして、情報処理装置100は、特定したトリプルの内容を出力する。例えば、情報処理装置100は、人名が「人名#11」である人物の担当楽器が「ギター」である旨を検索結果として出力する。
なお、以下の説明では、人物に対応するエンティティE11~E13と、担当楽器に対応するエンティティE21、E23がナレッジデータベースに登録されている例について記載するが、実施形態は、これに限定されるものではない。以下に説明する情報処理は、任意の物事や事象と対応するエンティティが登録されているナレッジデータベースに適用可能である。また、「エンティティ」や「関係情報」という名称は、以下に説明する情報処理を限定するものではなく、ナレッジデータベースに登録される要素(すなわち、エンティティ)や、要素間の関係性を示す情報(すなわち、関係情報)であれば、任意の名称が採用されてよい。
また、情報処理装置100は、学習モデルM1を用いて、ナレッジデータベースを補正する。具体的には、情報処理装置100は、学習モデルM1のモデルデータを生成装置50から取得する。なお、以下では、学習モデルM1のモデルデータを単に学習モデルM1と記載する場合がある。続いて、情報処理装置100は、学習モデルM1を用いて、検索クエリが示す情報に対応する分散表現を生成する。続いて、情報処理装置100は、分散表現同士の類似度を算出する。このようにして、情報処理装置100は、検索クエリが示す情報間の類似性に関する類似情報を取得する。続いて、情報処理装置100は、検索クエリが示す情報間の類似性に関する類似情報に基づいて、エンティティ、関係情報、またはトリプルのうち少なくともいずれか一つをナレッジデータベースに付加する。情報処理装置100は、エンティティ、関係情報、またはトリプルのうち少なくともいずれか一つをナレッジデータベースに付加することにより、ナレッジデータベースを補正する。図1では、情報処理装置100が、点線の丸で示すエンティティE22、点線で示す関係情報C23、および、点線で囲まれた2つのエンティティE24およびエンティティE14と、エンティティ間の関係性を示す関係情報C24とからなるトリプルをナレッジベースに付加する例について説明する。
ここから、図1を用いて、情報処理の流れについて説明する。情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデル(以下、適宜「学習モデルM1」と記載する。)を用いて、検索クエリに対応するベクトルを生成する(ステップS1)。具体的には、情報処理装置100は、ナレッジデータベースを補正するのに十分な数の検索クエリを検索サーバ20から取得する。例えば、情報処理装置100は、ナレッジデータベースに含まれるエンティティの数よりも多数の検索クエリを検索サーバ20から取得する。また、情報処理装置100は、生成装置50から学習モデルM1を取得する。そして、情報処理装置100は、生成装置50から取得した学習モデルM1を用いて、検索サーバ20から取得した多数の検索クエリに対応するベクトルを生成する。
図1の左上方には、情報処理装置100が生成した検索クエリに対応するベクトルが分散表現空間にマッピングされる様子が示されている。例えば、検索クエリ「バンド名#1」に対応するベクトルを示す点と検索クエリ「人名#11」~「人名#14」に対応するベクトルを示す点とは、分散表現空間上で相対的に近くに位置する様子が示されている。すなわちこの図は、検索クエリ「バンド名#1」と検索クエリ「人名#11」~「人名#14」とは、類似する特徴を有することを意味する。また、例えば、検索クエリ「人名#11」に対応するベクトルを示す点と検索クエリ「ギター」に対応するベクトルを示す点とは、分散表現空間上で相対的に近くに位置する様子が示されている。すなわちこの図は、検索クエリ「人名#11」と検索クエリ「ギター」とは、類似する特徴を有することを意味する。また、例えば、検索クエリ「人名#12」に対応するベクトルを示す点と検索クエリ「キーボード」に対応するベクトルを示す点とは、分散表現空間上で相対的に近くに位置する様子が示されている。すなわちこの図は、検索クエリ「人名#12」と検索クエリ「キーボード」とは、類似する特徴を有することを意味する。
続いて、情報処理装置100は、検索クエリに対応するベクトルを生成すると、検索クエリが示す情報間の類似度を算出する(ステップS2)。具体的には、情報処理装置100は、生成したベクトル同士の類似度を算出する。例えば、情報処理装置100は、ベクトル同士のコサイン類似度を算出する。このようにして、情報処理装置100は、検索クエリが示す情報間の類似性に関する類似情報を取得する。
続いて、情報処理装置100は、情報間の類似度を算出すると、算出した類似度に基づいて、ナレッジデータベースを補正する(ステップS3)。ここで、情報処理装置100がナレッジデータベースを補正するとは、情報処理装置100がナレッジデータベースを更新することを意味する。具体的には、情報処理装置100がナレッジデータベースを補正するとは、情報処理装置100がエンティティやトリプル等の情報をナレッジデータベースに付加すること、又は削除することを意味する。なお、情報処理装置100がエンティティやトリプル等の情報をナレッジデータベースに付加するとは、情報処理装置100がこれらの情報を記憶部に格納することを意味する。また、情報処理装置100がエンティティやトリプル等の情報をナレッジデータベースから削除するとは、情報処理装置100がこれらの情報を記憶部から削除することを意味する。後述するように、情報処理装置100がナレッジデータベースを補正する方法には、大きく分けると、エンティティの付加、関係情報の付加、トリプルの付加、および関係情報の確度を示すスコアの付加の4種類が存在する。以下、順番に説明する。
〔1-1-1.エンティティの付加〕
情報処理装置100は、ナレッジデータベースにエンティティを付加することにより、ナレッジデータベースを補正する。図1に示す例では、情報処理装置100が、点線の丸で示すエンティティE22をナレッジデータベースに付加する方法について説明する。具体的には、情報処理装置100は、ナレッジデータベースに含まれる所定のエンティティに関する情報を取得する。より具体的には、情報処理装置100は、ナレッジデータベースに含まれるエンティティE12に関する情報を取得する。例えば、情報処理装置100は、エンティティE12に関する情報として、エンティティE12と対応付けて登録されているノード(アイテム)I121のデータ「人名#12」を取得する。
続いて、情報処理装置100は、エンティティE12に対応するデータ「人名#12」を取得すると、取得したデータ「人名#12」に対応するベクトルV12を取得する。なお、情報処理装置100は、ステップS1で、検索クエリ「人名#12」に対応するベクトルV12を生成しているものとする。また、情報処理装置100は、ステップS2で、ベクトルV12と他の検索クエリに対応するベクトルとの類似度を算出しているものとする。続いて、情報処理装置100は、ベクトルV12と他の検索クエリに対応するベクトルとの類似度を取得する。続いて、情報処理装置100は、ベクトルV12との類似度が所定の閾値を超えるベクトルが存在するか否かを判定する。例えば、情報処理装置100は、検索クエリ「人名#12」に対応するベクトルV12との類似度が所定の閾値を超えるベクトルとして、検索クエリ「キーボード」に対応するベクトルV22が存在すると判定する。情報処理装置100は、ベクトルV12とベクトルV22との類似度が所定の閾値を超えると判定すると、データ「人名#12」に紐づくエンティティE12とデータ「キーボード」に紐づくエンティティE22との関連性が高いと判定する。
続いて、情報処理装置100は、ベクトルV12との類似度が所定の閾値を超えるベクトルV22が存在すると判定すると、ベクトルV22に対応するデータ「キーボード」がナレッジデータベースに存在するか否かを判定する。例えば、情報処理装置100は、データ「キーボード」がナレッジデータベースに存在しないと判定する。続いて、情報処理装置100は、データ「キーボード」がナレッジデータベースに存在しないと判定すると、データ「キーボード」をナレッジデータベースに付加することを決定する。続いて、情報処理装置100は、データ「キーボード」をナレッジデータベースに付加することを決定すると、データ「キーボード」の種別を判定する。例えば、情報処理装置100は、辞書データ等を参照して、データ「キーボード」の種別が楽器名であると判定する。続いて、情報処理装置100は、データ「キーボード」の種別を判定すると、データ「キーボード」に対応するエンティティE22の対象を判定する。例えば、情報処理装置100は、判定したデータ「キーボード」の種別である楽器名とデータ「キーボード」とに基づいて、データ「キーボード」に対応するエンティティE22が示す対象は楽器のキーボードであると判定する。続いて、情報処理装置100は、楽器のキーボードに対応するエンティティE22がナレッジデータベースに存在するか否かを判定する。例えば、情報処理装置100は、エンティティE22がナレッジデータベースに存在しないと判定する。情報処理装置100は、エンティティE22がナレッジデータベースに存在しないと判定すると、エンティティE22をナレッジデータベースに付加することを決定する。例えば、情報処理装置100は、エンティティE22と対応付けて登録するノード(アイテム)I221としてデータ「キーボード」を付加することを決定する。なお、情報処理装置100は、既にエンティティE22がナレッジデータベースに存在する場合は、エンティティE22と対応付けて登録するノード(アイテム)I221としてデータ「キーボード」だけを付加することを決定する。
また、情報処理装置100は、エンティティE22をナレッジデータベースに付加することを決定すると、エンティティE22との関連性が高いエンティティであるエンティティE12が示す対象の種別を判定する。例えば、情報処理装置100は、データ「人名#12」の種別が人名であると判定する。続いて、情報処理装置100は、データ「人名#12」の種別が人名であるので、エンティティE12が示す対象の種別は人物であると判定する。続いて、情報処理装置100は、エンティティE12が示す対象の種別が人物であり、エンティティE22が示す対象の種別が楽器であるので、エンティティE12とエンティティE22との関係性を示す関係情報C22の種別が「担当楽器」であると判定する。例えば、情報処理装置100は、第1要素であるエンティティが示す対象の種別と、第2要素であるエンティティが示す対象の種別と、第1要素と第2要素との関係性を示す関係情報の種別とを対応付けた関係情報テーブル(図示は省略する)を記憶部120(図3参照)に記憶する。例えば、情報処理装置100は、第1要素であるエンティティが示す対象の種別「人物」と、第2要素であるエンティティが示す対象の種別「楽器」と、第1要素と第2要素との関係性を示す関係情報の種別「担当楽器」とを対応付けた関係情報テーブルを記憶部120に格納する。そして、情報処理装置100は、記憶部120に格納された関係情報テーブルを参照して、第1エンティティが示す対象の種別と第2エンティティが示す対象の種別とに基づいて、第1エンティティと第2エンティティとの関係性を示す関係情報の種別を判定する。なお、情報処理装置100は、ナレッジデータベースに関する種々の公知技術を用いて、第1エンティティと第2エンティティとの関係性を示す関係情報の種別を判定してもよい。続いて、情報処理装置100は、エンティティE22が示す対象の種別と、エンティティE12が示す対象の種別と、関係情報C22の種別とに基づいて、エンティティE12とエンティティE22と関係情報C22とからなるトリプル#22の第2要素として、エンティティE22を付加することを決定する。続いて、情報処理装置100は、トリプル#22の第2要素としてエンティティE22を付加することを決定すると、トリプル#22の第2要素としてエンティティE22をナレッジベースに付加する。
〔1-1-2.関係情報の付加〕
また、情報処理装置100は、ナレッジデータベースに関係情報を付加することにより、ナレッジデータベースを補正する。図1に示す例では、情報処理装置100が、点線で示す関係情報C23をナレッジデータベースに付加する方法について説明する。具体的には、情報処理装置100は、ナレッジデータベースに含まれる2つのエンティティに関する情報を取得する。より具体的には、情報処理装置100は、ナレッジデータベースに含まれるエンティティE13に関する情報を取得する。例えば、情報処理装置100は、ナレッジデータベースに含まれるエンティティE13と対応付けて登録されているノード(アイテム)I131のデータ「人名#13」を取得する。また、情報処理装置100は、ナレッジデータベースに含まれる他のエンティティE23に関する情報を取得する。例えば、情報処理装置100は、ナレッジデータベースに含まれるエンティティE23と対応付けて登録されているノード(アイテム)I231のデータ「ベース」を取得する。
続いて、情報処理装置100は、2つのエンティティに関する情報を取得すると、取得した2つのエンティティに紐づくデータに対応するベクトルを各々取得する。具体的には、情報処理装置100は、エンティティE13に紐づくデータ「人名#13」に対応するベクトルV13を取得する。また、情報処理装置100は、エンティティE23に紐づくデータ「ベース」に対応するベクトルV23を取得する。なお、情報処理装置100は、ステップS1で、ベクトルV13及びベクトルV23を生成しているものとする。また、情報処理装置100は、ステップS2で、ベクトルV13とベクトルV23との類似度を算出しているものとする。続いて、情報処理装置100は、ベクトルV13とベクトルV23を取得すると、ベクトルV13とベクトルV23との類似度を取得する。続いて、情報処理装置100は、算出したベクトルV13とベクトルV23との類似度が所定の閾値を超えるか否かを判定する。例えば、情報処理装置100は、算出したベクトルV13とベクトルV23との類似度が所定の閾値を超えると判定したとする。情報処理装置100は、ベクトルV13とベクトルV23との類似度が所定の閾値を超えると判定すると、データ「人名#13」に紐づくエンティティE13とデータ「ベース」に紐づくエンティティE23との関連性が高いと判定する。続いて、情報処理装置100は、エンティティE13とエンティティE23との関係性が高いと判定すると、エンティティE13とエンティティE23との関係情報C23がナレッジデータベースに存在するか否かを判定する。例えば、情報処理装置100は、関係情報C23がナレッジデータベースに存在しないと判定する。情報処理装置100は、関係情報C23がナレッジデータベースに存在しないと判定すると、関係情報C23をナレッジデータベースに付加することを決定する。
続いて、情報処理装置100は、関係情報C23をナレッジデータベースに付加することを決定すると、エンティティE13が示す対象の種別とエンティティE23が示す対象の種別を判定する。例えば、情報処理装置100は、データ「人名#13」の種別が人名であると判定する。続いて、情報処理装置100は、データ「人名#13」の種別が人名であるので、エンティティE13が示す対象の種別は人物であると判定する。また、情報処理装置100は、辞書データ等を参照して、エンティティE23が示すデータ「ベース」の種別が楽器名であると判定する。続いて、情報処理装置100は、データ「ベース」の種別が楽器名であるので、エンティティE23が示す対象の種別は楽器であると判定する。続いて、情報処理装置100は、エンティティE13が示す対象の種別が人物であり、エンティティE23が示す対象の種別が楽器であるので、エンティティE13とエンティティE23との関係性を示す関係情報C23の種別を「担当楽器」であると判定する。続いて、情報処理装置100は、エンティティE13が示す対象の種別と、エンティティE23が示す対象の種別と、関係情報C23の種別とに基づいて、エンティティE13とエンティティE23と関係情報C23とからなるトリプル#23の関係情報として、関係情報C23を付加することを決定する。続いて、情報処理装置100は、トリプル#23の関係情報として関係情報C23を付加することを決定すると、トリプル#23の関係情報として関係情報C23をナレッジベースに付加する。
〔1-1-3.トリプルの付加〕
また、情報処理装置100は、ナレッジデータベースにトリプルを付加することにより、ナレッジデータベースを補正する。図1に示す例では、情報処理装置100が、点線で囲まれた2つのエンティティE14とエンティティE24とエンティティ間の関係性を示す関係情報C24とからなるトリプル#24をナレッジデータベースに付加する方法について説明する。情報処理装置100がナレッジデータベースにトリプルを付加する方法は、大きく分けると2つある。以下、情報処理装置100がナレッジデータベースにトリプルを付加する方法を一つずつ説明する。
〔1-1-3-1.構成要素を順番に付加する〕
具体的には、情報処理装置100は、ナレッジデータベースに含まれる所定のエンティティに関する情報を取得する。より具体的には、情報処理装置100は、ナレッジデータベースに含まれるエンティティE1に関する情報を取得する。例えば、情報処理装置100は、ナレッジデータベースに含まれるエンティティE1と対応付けて登録されているノード(アイテム)I11のデータ「バンド名#1」を取得する。
続いて、情報処理装置100は、エンティティE1に対応するデータ「バンド名#1」を取得すると、データ「バンド名#1」に対応するベクトルV1を取得する。なお、情報処理装置100は、ステップS1で、ベクトルV1を生成しているものとする。また、情報処理装置100は、ステップS2で、ベクトルV1と他の検索クエリに対応するベクトルとの類似度を算出しているものとする。情報処理装置100は、ベクトルV1と他の検索クエリに対応するベクトルとの類似度を取得する。続いて、情報処理装置100は、ベクトルV1との類似度が所定の閾値を超えるベクトルに対応するデータを取得する。例えば、情報処理装置100は、ベクトルV1との類似度が所定の閾値を超えるベクトルに対応するデータとして、データ「人名#1k(k=1、2、3、4)」を取得する。
続いて、情報処理装置100は、ベクトルV1との類似度が所定の閾値を超えるベクトルに対応するデータがナレッジデータベースに存在するか否かをデータ毎に判定する。例えば、情報処理装置100は、ベクトルV1k(k=1、2、3)に対応するデータ「人名#1k(k=1、2、3)」がナレッジデータベースに存在すると判定する。一方、情報処理装置100は、ベクトルV14に対応するデータ「人名#14」がナレッジデータベースに存在しないと判定する。続いて、情報処理装置100は、ベクトルV14に対応するデータ「人名#14」がナレッジデータベースに存在しないと判定すると、データ「人名#14」をナレッジデータベースに付加することを決定する。続いて、情報処理装置100は、データ「人名#14」をナレッジデータベースに付加することを決定すると、データ「人名#14」の種別を判定する。例えば、情報処理装置100は、データ「人名#14」の種別を人名であると判定する。続いて、情報処理装置100は、データ「人名#14」の種別を判定すると、データ「人名#14」に対応するエンティティE14の対象を判定する。例えば、情報処理装置100は、判定したデータ「人名#14」の種別である人名とデータ「人名#14」とに基づいて、データ「人名#14」に対応するエンティティE14が示す対象は人物#14であると判定する。続いて、情報処理装置100は、人物#14に対応するエンティティE14がナレッジデータベースに存在するか否かを判定する。例えば、情報処理装置100は、エンティティE14がナレッジデータベースに存在しないと判定する。情報処理装置100は、エンティティE14がナレッジデータベースに存在しないと判定すると、エンティティE14をナレッジデータベースに付加することを決定する。例えば、情報処理装置100は、エンティティE14と対応付けて登録するノード(アイテム)I141としてデータ「人名#14」を付加することを決定する。
続いて、情報処理装置100は、エンティティE14をナレッジデータベースに付加することを決定すると、エンティティE1とエンティティE14との関係情報C14をナレッジデータベースに付加することを決定する。例えば、情報処理装置100は、エンティティE1が示す対象の種別が所定のバンドであり、エンティティE14が示す対象の種別が人物であるので、エンティティE1とエンティティE14との関係性を示す関係情報C14の種別を「所属メンバー」であると判定する。続いて、情報処理装置100は、エンティティE1が示す対象の種別と、エンティティE14が示す対象の種別と、関係情報C14の種別とに基づいて、エンティティE1とエンティティE14と関係情報C14とからなるトリプル#14の関係情報として、関係情報C14を付加することを決定する。続いて、情報処理装置100は、トリプル#14の関係情報として関係情報C14を付加することを決定すると、トリプル#14の関係情報として関係情報C14をナレッジベースに付加する。
続いて、情報処理装置100は、エンティティE14と関係情報C14とをナレッジベースに付加すると、「1-1-1.エンティティの付加」の項目で述べたエンティティE22の付加と同様にして、エンティティE14との関連性に基づいて、エンティティE24をナレッジベースに付加する。また、情報処理装置100は、エンティティE24を付加すると、「1-1-2.関係情報の付加」の項目で述べた関係情報C23の付加と同様にして、エンティティE14とエンティティE24との関連性に基づいて、関係情報C24をナレッジベースに付加する。このように、情報処理装置100は、エンティティE14と関係情報C14をナレッジベースに付加するのに続けて、エンティティE14とエンティティE24と関係情報C24とからなるトリプル#24をナレッジベースに付加する。
〔1-1-3-2.トリプルを丸ごと付加する〕
上記の説明では、情報処理装置100が、エンティティE1を起点として、まずエンティティE14と関係情報C14を付加し、続いて、エンティティE14を起点として、エンティティE14と関係情報C24とを付加する例について説明した。情報処理装置100は上述した例の他にも、ナレッジベースに存在する既存のトリプルに関する情報に基づいて、新たなトリプル#24をナレッジベースに付加してもよい。具体的には、情報処理装置100は、ナレッジベースに存在する既存のトリプルに関する情報として、所定のトリプルに関する情報を取得する。例えば、情報処理装置100は、ナレッジベースに存在する既存のトリプルに関する情報として、エンティティE11とエンティティE21と関係情報C21とからなるトリプル#21に関する情報を取得する。
続いて、情報処理装置100は、エンティティE1に対応するベクトルV1の近傍に、トリプル#21と類似する構造に対応するベクトルの組が存在するか否かを判定する。具体的には、情報処理装置100は、ベクトルV1との類似度が所定の閾値を超えるベクトルが存在するか否かを判定する。例えば、情報処理装置100は、ベクトルV1との類似度が所定の閾値を超えるベクトルであるベクトルV14が存在すると判定する。また、情報処理装置100は、ベクトルV1との類似度が所定の閾値を超えるベクトルであるベクトルV24が存在すると判定する。続いて、情報処理装置100は、ベクトルV1との類似度が所定の閾値を超えるベクトルが存在すると判定すると、判定したベクトルに対応するデータがナレッジベースに存在するか否かを判定する。例えば、情報処理装置100は、ベクトルV14に対応するデータ「人名#14」がナレッジベースに存在するか否かを判定する。また、情報処理装置100は、ベクトルV24に対応するデータ「ドラム」がナレッジベースに存在するか否かを判定する。例えば、情報処理装置100は、ベクトルV14に対応するデータ「人名#14」がナレッジベースに存在しないと判定する。また、情報処理装置100は、ベクトルV24に対応するデータ「ドラム」がナレッジベースに存在しないと判定する。続いて、情報処理装置100は、ベクトルV14に対応するデータ「人名#14」がナレッジベースに存在しないと判定すると、データ「人名#14」の種別を判定する。また、情報処理装置100は、ベクトルV24に対応するデータ「ドラム」がナレッジベースに存在しないと判定すると、データ「ドラム」の種別を判定する。続いて、情報処理装置100は、データ「人名#14」の種別とデータ「ドラム」の種別を判定すると、判定した各データの種別がトリプル#21を構成するエンティティE11に紐づくデータ「人名#11」の種別とエンティティE21に紐づくデータ「ギター」の種別とに対応するか否かを判定する。情報処理装置100は、データ「人名#14」の種別とデータ「人名#11」の種別とが共に人名であり、両データの種別が一致すると判定する。また、情報処理装置100は、データ「ドラム」の種別とデータ「ギター」の種別とが共に楽器名であり、両データの種別が一致すると判定する。情報処理装置100は、データの種別が一致すると判定すると、データ「人名#14」に対応するエンティティE14とデータ「ドラム」に対応するエンティティE24と関係情報C24とからなるトリプル#24をナレッジデータベースに付加する。
(スコアの付加)
四つ目に、情報処理装置100が、トリプルを構成するエンティティ間の関係性を示す関係情報の確度を示すスコアをナレッジデータベースに付加する方法について説明する。具体的には、情報処理装置100は、トリプルを構成するエンティティに紐づくデータに対応するベクトル間の類似度をエンティティ間の関係性を示す関係情報の確度を示すスコアとしてナレッジデータベースに付加する。例えば、情報処理装置100は、エンティティE11に紐づくデータ「人名#11」に対応するベクトルV11とエンティティE21に紐づくデータ「ギター」に対応するベクトルV21との類似度を取得する。続いて、情報処理装置100は、ベクトルV11とベクトルV21との類似度を関係情報C21の確度を示すスコアとしてナレッジデータベースに付加する。
上述したように、実施形態に係る情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルM1を用いて、情報間の類似性に関する類似情報を取得する。また、情報処理装置100は、取得した類似情報に基づいて、ナレッジデータベースを補正する。これにより、情報処理装置100は、ナレッジデータベースを適切に補正することができる。
〔1-2.情報処理システムの構成〕
次に、図2を用いて、実施形態に係る情報処理システムの構成について説明する。図2は、実施形態に係る情報処理システムの構成例を示す図である。図2に示すように、情報処理システム1には、ユーザ端末10と、検索サーバ20と、生成装置50と、情報処理装置100とが含まれる。ユーザ端末10と、検索サーバ20と、生成装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。なお、図2に示す情報処理システム1には、任意の数のユーザ端末10と任意の数の検索サーバ20と任意の数の生成装置50と任意の数の情報処理装置100とが含まれてもよい。
ユーザ端末10は、ユーザによって入力された検索クエリを検索サーバ20に送信する。具体的には、ユーザ端末10は、ユーザによる操作に従って、検索クエリを入力するための検索ボックスを含む検索ページを検索サーバ20から取得する。続いて、ユーザ端末10は、ユーザによって検索ボックスに文字が入力される操作に続いて、検索クエリを送信する操作が行われると、検索ページを介して検索ボックスに入力された文字を検索クエリとして検索サーバ20に送信する。例えば、ユーザ端末10は、ユーザによって検索ボックスに文字が入力される操作に続いて、検索クエリの送信ボタンが押下される操作やエンターキーが押下される操作が行われると、検索ページを介して検索ボックスに入力された文字を検索クエリとして検索サーバ20に送信する。
検索サーバ20は、ユーザ端末10から検索クエリを受け付けると、受け付けた検索クエリに応じたコンテンツであって、検索結果として出力されるコンテンツを選択する。続いて、検索サーバ20は、選択されたコンテンツを含む検索結果ページをユーザ端末10に配信する。ここで、検索サーバ20によって配信されるコンテンツは、ウェブブラウザによって表示されるウェブページに限られない。例えば、検索サーバ20によって配信されるコンテンツは、ユーザ端末10にインストールされた専用のアプリケーションによって表示されるコンテンツであってもよい。また、検索サーバ20によって配信されるコンテンツは、音楽コンテンツや画像(静止画のみならず動画を含む。)コンテンツ、テキストコンテンツ(ニュース記事やSNS(Social Networking Service)に投稿された記事を含む。)、画像とテキストを組み合わせたコンテンツ、ゲームコンテンツなど、どのようなコンテンツであってもよい。
また、検索サーバ20は、ユーザ端末10から検索クエリを受け付けると、受け付けた検索クエリと検索クエリの送信元であるユーザを識別するユーザIDと検索クエリの送信日時とを対応付けてデータベースに登録する。検索サーバ20は、生成装置50の要求に応じて、ユーザによって入力された検索クエリに関する情報を生成装置50に送信する。
生成装置50は、後述する処理を実行することにより、学習モデルを生成する。生成装置50による学習モデルの生成処理の詳細は後述する。
情報処理装置100は、図1で説明した情報処理を行うサーバ装置である。情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、情報間の類似性に関する類似情報を取得する。また、情報処理装置100は、取得した類似情報に基づいて、ナレッジデータベースを補正する。
〔1-3.情報処理装置の構成〕
次に、図3を用いて、実施形態に係る情報処理装置100の構成について説明する。図3は、実施形態に係る情報処理装置100の構成例を示す図である。図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示させるための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワークと有線または無線で接続され、例えば、ユーザ端末10と検索サーバ20と生成装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部120は、図3に示すように、モデル情報記憶部121とベクトル情報記憶部122とエンティティ情報記憶部123とトリプル情報記憶部124とスコア情報記憶部125を有する。
(モデル情報記憶部121)
モデル情報記憶部121は、生成装置50によって生成された学習モデルに関する各種の情報を記憶する。図4に、実施形態に係るモデル情報記憶部の一例を示す。図4に示す例では、モデル情報記憶部121は、「モデルID」、「モデルデータ」といった項目を有する。
「モデルID」は、生成装置50によって生成された学習モデルを識別するための識別情報を示す。「モデルデータ」は、生成装置50によって生成された学習モデルのモデルデータを示す。例えば、「モデルデータ」には、検索クエリを分散表現に変換するためのデータが格納される。
図4の1レコード目に示す例では、モデルID「M1」で識別される学習モデルは、図1に示した学習モデルM1に対応する。また、モデルデータ「MDT1」は、生成装置50によって生成された学習モデルM1のモデルデータ(モデルデータMDT1)を示す。
モデルデータMDT1は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリの分散表現を出力層から出力するよう、生成装置50を機能させてもよい。
ここで、モデルデータMDT1が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
また、モデルデータMDT1がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
生成装置50は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、分散表現の算出を行う。具体的には、モデルデータMDT1は、検索クエリが入力された場合に、分散表現を出力するように係数が設定される。生成装置50は、このようなモデルデータMDT1を用いて、分散表現を算出する。
なお、上記例では、モデルデータMDT1が、検索クエリが入力された場合に、検索クエリの分散表現を出力するモデル(以下、モデルX1という。)である例を示した。しかし、実施形態に係るモデルデータMDT1は、モデルX1にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT1は、検索クエリを入力とした際に、モデルX1が出力した分散表現を入力して学習されたモデル(以下、モデルY1という。)であってもよい。または、モデルデータMDT1は、検索クエリを入力とし、モデルY1の出力値を出力とするよう学習されたモデルであってもよい。
また、生成装置50がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT1は、GANの一部を構成するモデルであってもよい。
(ベクトル情報記憶部122)
ベクトル情報記憶部122は、検索クエリの分散表現であるベクトルに関する各種の情報を記憶する。図5に、実施形態に係るベクトル情報記憶部の一例を示す。図5に示す例では、ベクトル情報記憶部122は、「検索クエリ」、「ベクトル情報」といった項目を有する。
「検索クエリ」は、ユーザによって入力された検索クエリを示す。「ベクトル情報」は、検索クエリの分散表現であるN次元のベクトルを示す。検索クエリの分散表現であるベクトルは、例えば、128次元のベクトルである。
図5の1レコード目に示す例では、検索クエリ「バンド名#1」は、図1に示した検索クエリ「バンド名#1」に対応する。また、ベクトル情報「V1」は、図1に示した検索クエリ「バンド名#1」に対応するベクトルを示す。
(エンティティ情報記憶部123)
エンティティ情報記憶部123(図3を参照)は、エンティティに関する各種の情報を記憶する。図6に、実施形態に係るエンティティ情報記憶部の一例を示す。図6の左方に示すエンティティ情報記憶部123-Bは、図1で示した情報処理装置100による情報処理が行われる前のナレッジデータベースに係るエンティティ情報記憶部123を示す。また、図6の右方に示すエンティティ情報記憶部123-Aは、図1で示した情報処理装置100による情報処理が行われた後のナレッジデータベースに係るエンティティ情報記憶部123を示す。図6の右方に示すエンティティ情報記憶部123-Aは、図1で示した情報処理装置100による情報処理が行われたことにより、ナレッジデータベースにエンティティE14、エンティティE22、エンティティE24が付加されたことを示す。
図6に示す例では、エンティティ情報記憶部123は、「エンティティID」、「エンティティ種別」、「ノードID」、「ノード種別」、および「データ」といった項目を有する情報が登録される。「エンティティID」は、エンティティを識別する識別情報を示す。「エンティティ種別」は、エンティティが示す対象の種別を示す。「ノードID」は、エンティティに紐づくデータを識別する識別情報を示す。「ノード種別」は、エンティティに紐づくデータの種別を示す。「データ」は、エンティティに紐づくデータを示す。
図6の1レコード目に示す例では、エンティティID「E1」で識別されるエンティティ(エンティティE1)は、図1に示すエンティティE1に対応する。エンティティ種別「バンド」は、エンティティE1が示す対象の種別がバンドであることを示す。また、ノードID「I11」で識別されるノード(ノードI11)は、エンティティE1に紐づくデータを示す。ノード種別「バンド名」は、エンティティE1に紐づくデータの種別がバンド名であることを示す。データ「バンド名#1」は、エンティティE1に紐づくデータが「バンド名#1」という文字列であることを示す。
(トリプル情報記憶部124)
トリプル情報記憶部124(図3を参照)は、トリプルを示す情報に関する各種の情報を記憶する。図7に、実施形態に係るトリプル情報記憶部の一例を示す。図7の左方に示すトリプル情報記憶部124-Bは、図1で示した情報処理装置100による情報処理が行われる前のナレッジデータベースに係るトリプル情報記憶部124を示す。また、図7の右方に示すトリプル情報記憶部124-Aは、図1で示した情報処理装置100による情報処理が行われた後のナレッジデータベースに係るトリプル情報記憶部124を示す。図7の右方に示すトリプル情報記憶部124-Aは、図1で示した情報処理装置100による情報処理が行われたことにより、トリプル#22の第2要素としてエンティティE22がナレッジデータベースに付加されたことを示す。また、トリプル#23の関係情報として関係情報C23がナレッジデータベースに付加されたことを示す。また、第1要素であるエンティティE14と第2要素であるエンティティE24と担当楽器を示す関係情報C23とから成るトリプル#24がナレッジデータベースに付加されたことを示す。
図7に示す例では、トリプル情報記憶部124は、「トリプルID」、「関係情報ID」、「種別」、「第1要素」、および「第2要素」といった項目を有する情報が登録される。「トリプルID」は、トリプルを識別する識別情報を示す。「関係情報ID」は、エンティティ間の関係性を示す関係情報を識別する識別情報を示す。「種別」は、関係情報の種別を示す。「第1要素」はトリプルを構成する2つのエンティティのうちの一方のエンティティを示す。「第2要素」は、トリプルを構成する2つのエンティティのうちのもう一方のエンティティを示す。
図7の1レコード目に示す例では、トリプルID「トリプル#11」で識別されるトリプル(トリプル#11)は、第1要素であるエンティティE11と、第2要素であるエンティティE1と、エンティティE11とエンティティE1との関係性を示す関係情報である関係情報C11とから成るトリプルである。また、種別「所属メンバー」は、関係情報C11の種別が所属メンバーであることを示す。
(スコア情報記憶部125)
スコア情報記憶部125は、各トリプルに付与されたスコアに関する各種の情報を記憶する。図8に、実施形態に係るスコア情報記憶部の一例を示す。図8に示す例では、スコア情報記憶部125は、「トリプルID」および「類似度」といった項目が登録される。「トリプルID」は、トリプルを識別する識別情報を示す。「類似度」は、トリプルを構成するエンティティ間の関係性を示す関係情報の確度を示す。具体的には、「類似度」は、トリプルを構成するエンティティに紐づくデータに対応するベクトル間の類似度を示す。
(制御部130)
図3の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図3に示すように、制御部130は、生成部131と、算出部132と、取得部133と、補正部134と、検索部135を有し、以下に説明する情報処理の作用を実現または実行する。なお、制御部130の内部構成は、図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(生成部131)
生成部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、所定の情報の分散表現を生成する。具体的には、生成部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、検索クエリに対応する分散表現であるベクトルを生成する。より具体的には、生成部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルM1を生成装置50から取得する。生成部131は、学習モデルM1を取得すると、取得した学習モデルM1(モデルデータMDT1)をモデル情報記憶部121に格納する。
また、生成部131は、ナレッジデータベースを補正するのに十分な数の検索クエリを検索サーバ20から取得する。例えば、生成部131は、ナレッジデータベースに含まれるエンティティの数よりも多数の検索クエリを検索サーバ20から取得する。続いて、生成部131は、検索クエリを取得すると、取得した検索クエリを学習モデルM1に入力して、取得した検索クエリに対応する分散表現であるベクトルを生成する。生成部131は、検索クエリに対応する分散表現であるベクトルを生成すると、生成した分散表現であるベクトルを検索クエリと対応付けてベクトル情報記憶部122に格納する。
(算出部132)
算出部132は、生成部131によって生成された所定の情報の分散表現と、生成部131によって生成された所定の情報とは異なる他の情報の分散表現との類似度を算出する。具体的には、算出部132は、生成部131によって生成された検索クエリに対応する分散表現であるベクトル同士の類似度を算出する。例えば、算出部132は、ベクトル同士のコサイン類似度を算出する。なお、算出部132は、コサイン類似度に限らず、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいてベクトルの間の類似度を算出してもよい。例えば、算出部132は、ベクトル同士のユークリッド距離や双曲空間等の非ユークリッド空間中での距離、マンハッタン距離、マハラノビス距離等といった所定の距離関数の値を算出してもよい。
(取得部133)
取得部133は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、情報間の類似性に関する類似情報を取得する。具体的には、取得部133は、算出部132によって算出された類似度に基づいて、情報間の類似性に関する類似情報を取得する。例えば、取得部133は、算出部132によって算出された類似度に基づいて、所定の情報の分散表現との類似度が所定の閾値を超える分散表現が存在するか否かを判定する。続いて、取得部133は、所定の情報の分散表現との類似度が所定の閾値を超える分散表現が存在する場合には、所定の情報の分散表現との類似度が所定の閾値を超える分散表現に対応する他の情報を、所定の情報と類似する他の情報として特定する。また、取得部133は、所定の情報と、所定の情報と類似する他の情報との類似性に関する類似情報として、算出部132によって算出された所定の情報の分散表現と他の情報の分散表現との類似度を取得する。
より具体的には、取得部133は、類似情報として、ナレッジデータベースに含まれる第1要素が示す第1情報と、第1情報と類似する第2情報との類似性に関する類似情報を取得する。例えば、取得部133は、ナレッジデータベースに含まれるトリプルの第1要素である第1エンティティに関する情報を取得する。例えば、取得部133は、第1エンティティに関する情報として、第1エンティティと対応付けて登録されているノード(アイテム)の第1情報を取得する。続いて、取得部133は、第1エンティティに対応する第1情報を取得すると、生成部131によって生成された第1情報に対応する第1ベクトルを取得する。続いて、取得部133は、算出部132によって算出された第1ベクトルと他の情報に対応するベクトルとの類似度を取得する。続いて、取得部133は、第1ベクトルとの類似度が所定の閾値を超えるベクトルが存在するか否かを判定する。続いて、取得部133は、第1情報に対応するベクトルとの類似度が所定の閾値を超えるベクトルが存在すると判定すると、第1ベクトルとの類似度が所定の閾値を超える第2ベクトルに対応する情報を、第1情報と類似する第2情報として特定する。続いて、取得部133は、第1情報と第2情報とが類似すると判定すると、第1情報に紐づく第1エンティティと第2情報に紐づく第2エンティティとの関連性が高いと判定する。
また、取得部133は、類似情報として、ナレッジデータベースに含まれる第1要素が示す第1情報と、ナレッジデータベースに含まれる第2要素が示す第2情報であって、第1情報と類似する第2情報との類似性に関する類似情報を取得する。例えば、取得部133は、ナレッジデータベースに含まれる第1要素である第1エンティティに関する情報を取得する。例えば、取得部133は、第1エンティティに関する情報として、第1エンティティと対応付けて登録されているノード(アイテム)の第1情報を取得する。また、取得部133は、ナレッジデータベースに含まれる第2要素である第2エンティティに関する情報を取得する。例えば、取得部133は、第2エンティティに関する情報として、第2エンティティと対応付けて登録されているノード(アイテム)の第2情報を取得する。続いて、取得部133は、第1情報と第2情報を取得すると、生成部131によって生成された第1情報に対応する第1ベクトルと第2情報に対応する第2ベクトルを取得する。続いて、取得部133は、第1ベクトルと第2ベクトルを取得すると、算出部132によって算出された第1ベクトルと第2ベクトルとの類似度を取得する。続いて、取得部133は、第1ベクトルと第2ベクトルとの類似度が所定の閾値を超えるか否かを判定する。取得部133は、第1ベクトルと第2ベクトルとの類似度が所定の閾値を超えると判定すると、第1情報に紐づく第1エンティティと第2情報に紐づく第2エンティティとの関連性が高いと判定する。
また、取得部133は、類似情報として、第1情報と、第1情報と類似する第2情報との類似性に関する類似情報を取得する。例えば、取得部133は、ナレッジデータベースに含まれる所定のエンティティに関する情報を取得する。例えば、取得部133は、ナレッジデータベースに含まれる所定のエンティティと対応付けて登録されているノード(アイテム)の情報を取得する。続いて、取得部133は、所定のエンティティに対応する情報を取得すると、生成部131によって生成された情報に対応するベクトルを取得する。また、取得部133は、取得したベクトルと他の検索クエリに対応するベクトルとの類似度を取得する。続いて、取得部133は、取得したベクトルとの類似度が所定の閾値を超える第1ベクトルに対応する第1情報を取得する。例えば、取得部133は、取得したベクトルとの類似度が所定の閾値を超える複数の第1ベクトルに対応する複数の第1情報を取得する。
続いて、取得部133は、取得したベクトルとの類似度が所定の閾値を超える第1ベクトルに対応する第1情報がナレッジデータベースに存在するか否かを第1情報毎に判定する。続いて、取得部133は、所定の第1ベクトルに対応する所定の第1情報がナレッジデータベースに存在しないと判定すると、所定の第1情報をナレッジデータベースに付加することを決定する。続いて、取得部133は、所定の第1情報をナレッジデータベースに付加することを決定すると、所定の第1情報の種別を判定する。例えば、取得部133は、辞書データ等を参照して、所定の第1情報の種別を判定する。続いて、取得部133は、所定の第1情報の種別を判定すると、所定の第1情報に対応する第1エンティティの対象を判定する。例えば、取得部133は、所定の第1情報の種別と所定の第1情報とに基づいて、所定の第1情報に対応する第1エンティティが示す対象を判定する。続いて、取得部133は、所定の第1情報に対応する第1エンティティがナレッジデータベースに存在するか否かを判定する。取得部133は、所定の第1情報に対応する第1エンティティがナレッジデータベースに存在しないと判定すると、所定の第1情報に対応する第1エンティティをナレッジデータベースに付加することを決定する。例えば、取得部133は、第1エンティティと対応付けて登録するノード(アイテム)として所定の第1情報を付加することを決定する。続いて、取得部133は、所定の第1情報をナレッジデータベースに付加することを決定すると、辞書データ等を参照して、所定の第1情報の種別を判定する。続いて、取得部133は、所定の第1情報の種別を判定すると、所定の第1情報に対応する第1エンティティの対象を判定する。例えば、取得部133は、所定の第1情報の種別と所定の第1情報とに基づいて、所定の第1情報に対応する第1エンティティが示す対象を判定する。続いて、取得部133は、所定の第1情報に対応する第1エンティティがナレッジデータベースに存在するか否かを判定する。取得部133は、所定の第1情報に対応する第1エンティティがナレッジデータベースに存在しないと判定すると、所定の第1情報に対応する第1エンティティをナレッジデータベースに付加することを決定する。例えば、取得部133は、第1エンティティと対応付けて登録するノード(アイテム)として所定の第1情報を付加することを決定する。
また、取得部133は、算出部132によって算出された類似度を取得する。例えば、取得部133は、トリプルを構成するエンティティに紐づくデータに対応するベクトル間の類似度を取得する。例えば、取得部133は、算出部132によって算出されたトリプルを構成する第1エンティティに紐づく第1情報に対応する第1ベクトルと第2エンティティに紐づく第2情報に対応する第2ベクトルとの類似度を取得する。
また、取得部133は、入力情報として所定の検索クエリが入力された際に、出力情報として所定の検索クエリの分散表現を出力する学習モデルを用いて、類似情報を取得する。また、取得部133は、所定の時間内に続けて入力された一対の検索クエリの分散表現が類似するように学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。また、取得部133は、同一のユーザによって所定の時間内に入力された複数の検索クエリとして、所定の区切り文字で区切られた文字列を含む複数の検索クエリが類似する特徴を有するものとして学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。また、取得部133は、ランダムに取得された複数の検索クエリが相違する特徴を有するものとして学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。また、取得部133は、ランダムに取得された一対の検索クエリの分散表現が相違するように学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。
(補正部134)
補正部134は、取得部133によって取得された類似情報に基づいて、ナレッジデータベースを補正する。具体的には、補正部134は、取得部133によって取得された類似情報に基づいて、第1情報に対応する第1要素、第2情報に対応する第2要素、または第1要素と第2要素との関係を示す関係情報のうち少なくともいずれか一つをナレッジデータベースに付加する。
補正部134は、取得部133によって取得された類似情報に基づいて、第2情報に対応する第2要素をナレッジデータベースに付加する。具体的には、補正部134は、取得部133によって、第1情報に対応する第1ベクトルとの類似度が所定の閾値を超える第2ベクトルが存在すると判定すると、第2ベクトルに対応する第2情報がナレッジデータベースに存在するか否かを判定する。続いて、補正部134は、第2情報がナレッジデータベースに存在しないと判定すると、第2情報をナレッジデータベースに付加することを決定する。続いて、補正部134は、第2情報をナレッジデータベースに付加することを決定すると、第2情報の種別を判定する。例えば、補正部134は、辞書データ等を参照して、第2情報の種別を判定する。続いて、補正部134は、第2情報の種別を判定すると、第2情報に対応する第2エンティティの対象を判定する。例えば、補正部134は、判定した第2情報の種別と第2情報とに基づいて、第2エンティティが示す対象を判定する。続いて、補正部134は、第2エンティティがナレッジデータベースに存在するか否かを判定する。補正部134は、第2エンティティがナレッジデータベースに存在しないと判定すると、第2エンティティをナレッジデータベースに付加することを決定する。例えば、補正部134は、第2エンティティと対応付けて登録するノード(アイテム)として第2情報を付加することを決定する。具体的には、補正部134は、第2情報と、第2情報に対応するノード種別と、ノードIDと、第2エンティティを識別するエンティティIDとを対応付けてエンティティ情報記憶部123に記憶する。
また、補正部134は、第2エンティティをナレッジデータベースに付加することを決定すると、第2エンティティとの関連性が高いエンティティである第1情報に対応する第1エンティティが示す対象の種別を判定する。例えば、補正部134は、エンティティ情報記憶部123-Bを参照して、第1エンティティが示す対象の種別を判定する。続いて、補正部134は、第1エンティティが示す対象の種別と、第2エンティティが示す対象の種別とに基づいて、第1エンティティと第2エンティティとの関係性を示す関係情報の種別を判定する。例えば、補正部134は、第1要素であるエンティティが示す対象の種別と、第2要素であるエンティティが示す対象の種別と、第1要素と第2要素との関係性を示す関係情報の種別とを対応付けた関係情報テーブル(図示は省略する)を記憶部120(図3参照)に記憶する。例えば、補正部134は、第1要素であるエンティティが示す対象の種別「人物」と、第2要素であるエンティティが示す対象の種別「楽器」と、第1要素と第2要素との関係性を示す関係情報の種別「担当楽器」とを対応付けた関係情報テーブルを記憶部120に格納する。そして、補正部134は、記憶部120に格納された関係情報テーブルを参照して、第1エンティティが示す対象の種別と第2エンティティが示す対象の種別とに基づいて、第1エンティティと第2エンティティとの関係性を示す関係情報の種別を判定する。なお、補正部134は、ナレッジデータベースに関する種々の公知技術を用いて、第1エンティティと第2エンティティとの関係性を示す関係情報の種別を判定してもよい。続いて、補正部134は、第1エンティティが示す対象の種別と、第2エンティティが示す対象の種別と、関係情報の種別とに基づいて、第1エンティティと第2エンティティと関係情報とからなるトリプルの第2要素として、第2エンティティを付加することを決定する。続いて、補正部134は、トリプルの第2要素として第2エンティティを付加することを決定すると、トリプルの第2要素として第2エンティティをナレッジベースに付加する。具体的には、補正部134は、トリプルを識別するトリプルIDと、第2エンティティを識別するエンティティIDとを対応付けてトリプル情報記憶部124に記憶する。
また、補正部134は、取得部133によって取得された類似情報に基づいて、第1要素と第2要素との関係を示す関係情報をナレッジデータベースに付加する。具体的には、補正部134は、取得部133によって第1エンティティと第2エンティティとの関係性が高いと判定される、第1エンティティと第2エンティティとの関係情報がナレッジデータベースに存在するか否かを判定する。補正部134は、第1エンティティと第2エンティティとの関係情報がナレッジデータベースに存在しないと判定すると、第1エンティティと第2エンティティとの関係情報をナレッジデータベースに付加することを決定する。
続いて、補正部134は、第1エンティティと第2エンティティとの関係情報をナレッジデータベースに付加することを決定すると、第1エンティティが示す対象の種別と第2エンティティが示す対象の種別を判定する。例えば、補正部134は、エンティティ情報記憶部123-Bを参照して、第1エンティティが示す対象の種別を判定する。また、補正部134は、エンティティ情報記憶部123-Bを参照して、第2エンティティが示す対象の種別を判定する。続いて、補正部134は、第1エンティティが示す対象の種別と、第2エンティティが示す対象の種別とに基づいて、第1エンティティと第2エンティティとの関係性を示す関係情報の種別を判定する。例えば、補正部134は、第1要素であるエンティティが示す対象の種別と、第2要素であるエンティティが示す対象の種別と、第1要素と第2要素との関係性を示す関係情報の種別とを対応付けた関係情報テーブル(図示は省略する)を記憶部120(図3参照)に記憶する。そして、補正部134は、記憶部120に格納された関係情報テーブルを参照して、第1エンティティが示す対象の種別と第2エンティティが示す対象の種別とに基づいて、第1エンティティと第2エンティティとの関係性を示す関係情報の種別を判定する。続いて、補正部134は、第1エンティティが示す対象の種別と、第2エンティティが示す対象の種別と、関係情報の種別とに基づいて、第1エンティティと第2エンティティと関係情報とからなるトリプルの関係情報として、第1エンティティと第2エンティティとの関係性を示す関係情報を付加することを決定する。続いて、補正部134は、トリプルの関係情報として第1エンティティと第2エンティティとの関係性を示す関係情報を付加することを決定すると、トリプルの関係情報として第1エンティティと第2エンティティとの関係性を示す関係情報をナレッジベースに付加する。具体的には、補正部134は、トリプルを識別するトリプルIDと、関係情報を識別する関係情報IDと、関係情報の種別とを対応付けてトリプル情報記憶部124に記憶する。
また、補正部134は、取得部133によって取得された類似情報に基づいて、第1情報に対応する第1要素と、第2情報に対応する第2要素と、第1要素と第2要素との関係を示す関係情報とを有するトリプルをナレッジデータベースに付加する。具体的には、補正部134は、取得部133によってナレッジデータベースに含まれていない第1エンティティをナレッジデータベースに付加することが決定されると、ナレッジデータベースに含まれる所定のエンティティとナレッジデータベースに含まれていない第1エンティティとの関係情報をナレッジデータベースに付加することを決定する。例えば、補正部134は、所定のエンティティが示す対象の種別と、第1エンティティが示す対象の種別とに基づいて、所定のエンティティと第1エンティティとの関係性を示す関係情報の種別を判定する。続いて、補正部134は、ナレッジデータベースに含まれる所定のエンティティが示す対象の種別と、ナレッジデータベースに含まれていない第1エンティティが示す対象の種別と、関係情報の種別とに基づいて、所定のエンティティと第1エンティティと関係情報とからなるトリプルの関係情報として、所定のエンティティと第1エンティティとの関係性を示す関係情報を付加することを決定する。続いて、補正部134は、トリプルの関係情報として所定のエンティティと第1エンティティとの関係性を示す関係情報を付加することを決定すると、トリプルの関係情報として所定のエンティティと第1エンティティとの関係性を示す関係情報をナレッジベースに付加する。
続いて、補正部134は、所定のエンティティと第1エンティティとの関係性を示す関係情報と第1エンティティをナレッジベースに付加すると、上述した第2エンティティの付加と同様にして、付加された第1エンティティと関係性が高い第2エンティティをナレッジベースに付加する。また、補正部134は、第2エンティティを付加すると、上述した関係情報の付加と同様にして、第1エンティティと第2エンティティとの関係性を示す関係情報をナレッジベースに付加する。このように、補正部134は、所定のエンティティと第1エンティティとの関係性を示す関係情報と第1エンティティをナレッジベースに付加するのに続けて、第1エンティティと第2エンティティと第1エンティティと第2エンティティとの関係性を示す関係情報とからなるトリプルをナレッジベースに付加する。具体的には、補正部134は、トリプルを識別するトリプルIDと、第1エンティティを識別するエンティティIDと、第2エンティティを識別するエンティティIDと、関係情報を識別する関係情報IDと、関係情報の種別とを対応付けてトリプル情報記憶部124に記憶する。
上記の説明では、補正部134が、ナレッジベースに含まれる所定のエンティティを起点として、第1エンティティと、所定のエンティティと第1エンティティとの関係性を示す関係情報を付加し、続いて、付加された第1エンティティを起点として、第2エンティティと、第1エンティティと第2エンティティとの関係性を示す関係情報とを付加する例について説明した。補正部134は上述した例の他にも、ナレッジベースに存在する既存のトリプルに関する情報に基づいて、新たなトリプルをナレッジベースに付加してもよい。具体的には、補正部134は、ナレッジベースに存在する既存のトリプルに関する情報として、ナレッジベースに含まれる第1エンティティとナレッジベースに含まれる第2エンティティと関係情報とからなるトリプルに関する情報を取得する。
続いて、補正部134は、ナレッジベースに含まれる第1エンティティに対応する第1ベクトルの近傍に、ナレッジベースに含まれる第1エンティティとナレッジベースに含まれる第2エンティティと関係情報とからなるトリプルと類似する構造に対応するベクトルの組が存在するか否かを判定する。具体的には、補正部134は、第1ベクトルとの類似度が所定の閾値を超えるベクトルが存在するか否かを判定する。より具体的には、補正部134は、算出部132によって算出された類似度に基づいて、第1ベクトルとの類似度が所定の閾値を超えるベクトルが存在するか否かを判定する。例えば、補正部134は、第1ベクトルとの類似度が所定の閾値を超えるベクトルである第3ベクトルが存在すると判定する。また、補正部134は、第1ベクトルとの類似度が所定の閾値を超えるベクトルである第4ベクトルが存在すると判定する。続いて、補正部134は、第1ベクトルとの類似度が所定の閾値を超えるベクトルが存在すると判定すると、判定したベクトルに対応するデータがナレッジベースに存在するか否かを判定する。より具体的には、補正部134は、エンティティ情報記憶部123を参照して、判定したベクトルに対応するデータがナレッジベースに存在するか否かを判定する。例えば、補正部134は、第3ベクトルに対応する第3情報がナレッジベースに存在するか否かを判定する。また、補正部134は、第4ベクトルに対応する第4情報がナレッジベースに存在するか否かを判定する。補正部134は、第3ベクトルに対応する第3情報がナレッジベースに存在しないと判定すると、第3情報の種別を判定する。また、補正部134は、第4ベクトルに対応する第4情報がナレッジベースに存在しないと判定すると、第4情報の種別を判定する。例えば、補正部134は、辞書データ等を参照して、第3情報の種別と第4情報の種別を判定する。続いて、補正部134は、第3情報の種別と第4情報の種別を判定すると、判定した第3情報の種別と第4情報の種別が、ナレッジベースに含まれる第1エンティティとナレッジベースに含まれる第2エンティティと関係情報とからなるトリプルを構成する第1エンティティに紐づく第1情報の種別と第2エンティティに紐づく第2情報の種別とに対応するか否かを判定する。例えば、補正部134は、第3情報の種別と第1情報の種別とが一致するか否かを判定する。また、補正部134は、第4情報の種別と第2情報の種別とが一致するか否かを判定する。補正部134は、第3情報の種別と第1情報の種別および第4情報の種別と第2情報の種別が一致すると判定すると、第3情報に対応する第3エンティティと、第4情報に対応する第4エンティティと、第3エンティティと第4エンティティとの関係性を示す関係情報とからなるトリプルをナレッジデータベースに付加する。具体的には、補正部134は、トリプルを識別するトリプルIDと、第3エンティティを識別するエンティティIDと、第4エンティティを識別するエンティティIDと、関係情報を識別する関係情報IDと、関係情報の種別とを対応付けてトリプル情報記憶部124に記憶する。
補正部134は、算出部132によって算出された類似度に基づくスコアをトリプルに付加する。具体的には、補正部134は、取得部133によって取得されたトリプルを構成する第1エンティティに紐づく第1情報に対応する第1ベクトルと第2エンティティに紐づく第2情報に対応する第2ベクトルとの類似度を取得する。続いて、補正部134は、取得部133によって取得された第1ベクトルと第2ベクトルとの類似度を、第1エンティティと第2エンティティとの関係性を示す関係情報の確度を示すスコアとしてナレッジデータベースに付加する。具体的には、補正部134は、トリプルを識別するトリプルIDと類似度とを対応付けてスコア情報記憶部125に記憶する。
(検索部135)
検索部135は、ナレッジベースを検索する。具体的には、検索部135は、ユーザ端末10から検索クエリとして主語と動詞を受付ける。続いて、検索部135は、検索クエリとして受付けた主語と動詞とを含むトリプルを検索し、検索したトリプルをユーザ端末10に提供する。例えば、検索部135は、検索クエリとして、主語「人名#11」と述語「担当楽器」とを受付けた場合、主語「人名#11」をノード(アイテム)とするエンティティE11と、述語「担当楽器」を示す関係情報C21とを特定し、特定した、エンティティE11と、関係情報C21とを含むトリプルとして、エンティティE11、エンティティE21、および関係情報C21を特定する。そして、検索部135は、特定したトリプルの内容を出力する。例えば、検索部135は、人名が「人名#11」である人物の担当楽器が「ギター」である旨を検索結果として出力する。
〔1-4.生成処理のフロー〕
次に、図9を用いて、実施形態に係る生成処理の手順について説明する。図9は、実施形態に係る生成処理手順を示すフローチャートである。図9に示す例では、情報処理装置100は、検索クエリと学習モデルを取得する(ステップS101)。続いて、情報処理装置100は、検索クエリと学習モデルを取得すると、学習モデルを用いて、検索クエリのベクトルを生成する(ステップS102)。
〔1-5.情報処理のフロー〕
次に、図10を用いて、実施形態に係る情報処理の手順について説明する。図10は、実施形態に係る情報処理手順を示すフローチャートである。図10に示す例では、情報処理装置100は、情報間の類似性に関する類似情報を取得したか否かを判定する(ステップS201)。情報間の類似性に関する類似情報を取得していない場合(ステップS201;No)、類似情報を取得するまで待機する。
一方、情報処理装置100は、情報間の類似性に関する類似情報を取得した場合(ステップS201;Yes)、類似情報に基づいて、ナレッジデータベースを補正する(ステップS202)。
〔2.学習モデルの生成処理〕
〔2-1.生成処理の一例〕
次に、図11を用いて、学習モデルの生成処理の流れについて説明する。図11は、実施形態に係る学習モデルの生成処理の一例を示す図である。図11に示す例では、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された「六本木 パスタ」という検索クエリQ11と「六本木 イタリアン」という検索クエリQ12とから成る一対の検索クエリを抽出する(ステップS11)。
続いて、生成装置50は、抽出した検索クエリQ11を学習モデルM1に入力して、検索クエリQ11の分散表現であるベクトルBQV11を出力する。ここで、ベクトルBQV11は、学習モデルM1の出力層から出力されたばかりの検索クエリQ11の分散表現であって、学習モデルM1にフィードバックをかける前(学習前)の分散表現を示す。また、生成装置50は、抽出した検索クエリQ12を学習モデルM1に入力して、検索クエリQ12の分散表現であるベクトルBQV12を出力する。ここで、ベクトルBQV12は、学習モデルM1の出力層から出力されたばかりの検索クエリQ12の分散表現であって、学習モデルM1にフィードバックをかける前(学習前)の分散表現を示す。このようにして、生成装置50は、検索クエリQ11の分散表現であるベクトルBQV11と、検索クエリQ12の分散表現であるベクトルBQV12とを出力する(ステップS12)。
続いて、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された検索クエリQ11(「六本木 パスタ」)と検索クエリQ12(「六本木 イタリアン」)とから成る一対の検索クエリは、所定の検索意図(例えば、「ある場所で飲食店を探す」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、類似するように学習モデルM1を学習させる。例えば、学習モデルM1にフィードバックをかける前(学習前)の検索クエリQ11の分散表現であるベクトルBQV11と検索クエリQ12の分散表現であるベクトルBQV12とのなす角度の大きさをΘとする。また、学習モデルM1にフィードバックをかけた後(学習後)の検索クエリQ11の分散表現であるベクトルQV11と検索クエリQ12の分散表現であるベクトルQV12とのなす角度の大きさをΦとする。この時、生成装置50は、ΘよりもΦが小さくなるように、学習モデルM1を学習させる。例えば、生成装置50は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値を算出する。また、生成装置50は、ベクトルQV11とベクトルQV12のコサイン類似度の値を算出する。続いて、生成装置50は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値よりも、ベクトルQV11とベクトルQV12のコサイン類似度の値が大きくなるように(値が1に近づくように)学習モデルM1を学習させる。このように、生成装置50は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが類似するように学習モデルM1を学習させることで、検索クエリからベクトルを出力する学習モデルM1を生成する(ステップS13)。なお、生成装置50は、コサイン類似度に限らず、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいてベクトルの間の類似度を算出してもよい。また、生成装置50は、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて学習モデルM1を学習させてもよい。例えば、生成装置50は、ベクトル同士のユークリッド距離や双曲空間等の非ユークリッド空間中での距離、マンハッタン距離、マハラノビス距離等といった所定の距離関数の値を算出する。続いて、生成装置50は、ベクトル同士の所定の距離関数の値(すなわち、分散表現空間における距離)が小さくなるように学習モデルM1を学習させてもよい。
次に、図12を用いて、学習モデルの生成処理の流れについてより詳しく説明する。なお、図12の説明では、図11の説明と重複する部分は、適宜省略する。図12は、実施形態に係る学習モデルの生成処理を示す図である。図12に示す例では、生成装置50が生成した学習モデルM1によって出力されたベクトルが分散表現空間にマッピングされる様子が示されている。生成装置50は、所定の検索クエリの分散表現と所定の検索クエリと対となる他の検索クエリの分散表現とが分散表現空間上で近くにマッピングされるように学習モデルM1のトレーニングを行う。
図12の上段に示す例では、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された4個の検索クエリである検索クエリQ11(「六本木 パスタ」)、検索クエリQ12(「六本木 イタリアン」)、検索クエリQ13(「赤坂 パスタ」)、検索クエリQ14(「麻布 パスタ」)を抽出する。生成装置50は、同一のユーザU1によって各検索クエリが入力された時間の間隔が所定の時間内である4個の検索クエリを抽出する。生成装置50は、同一のユーザU1によって後述する各検索クエリのペアが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。生成装置50は、検索クエリが入力された順番に並べると、検索クエリQ11、検索クエリQ12、検索クエリQ13、検索クエリQ14の順番で入力された4個の検索クエリを抽出する。生成装置50は、4個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、3対の検索クエリのペアである(検索クエリQ11、検索クエリQ12)、(検索クエリQ12、検索クエリQ13)、(検索クエリQ13、検索クエリQ14)を抽出する(ステップS21-1)。なお、生成装置50は、同一のユーザU1によって全ての検索クエリが所定の時間内に入力された複数の検索クエリを抽出してもよい。そして、生成装置50は、時系列的に隣り合うか否かに関わらず、抽出した複数の検索クエリの中から2つの検索クエリを選択して、選択した2つの検索クエリを一対の検索クエリとして抽出してもよい。
続いて、生成装置50は、抽出した検索クエリQ1k(k=1、2、3、4)を学習モデルM1に入力して、検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルBQV1k(k=1、2、3、4)を出力する。ここで、ベクトルBQV1k(k=1、2、3、4)は、学習モデルM1の出力層から出力されたばかりの検索クエリQ1k(k=1、2、3、4)の分散表現であって、学習モデルM1にフィードバックをかける前(学習前)の分散表現を示す(ステップS22-1)。
続いて、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された一対の検索クエリは、所定の検索意図(例えば、「ある場所(東京都港区付近)で飲食店を探す」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、分散表現空間上で類似するように学習モデルM1を学習させる。また、生成装置50は、検索クエリQ12の分散表現(ベクトルQV12)と、検索クエリQ12と対となる検索クエリQ13の分散表現(ベクトルQV13)とが、分散表現空間上で類似するように学習モデルM1を学習させる。また、生成装置50は、検索クエリQ13の分散表現(ベクトルQV13)と、検索クエリQ13と対となる検索クエリQ14の分散表現(ベクトルQV14)とが、分散表現空間上で類似するように学習モデルM1を学習させる。このように、生成装置50は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように学習モデルM1を学習させることで、検索クエリからベクトルを出力する学習モデルM1を生成する(ステップS23-1)。
図12の上段に示す情報処理の結果として、検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルQV1k(k=1、2、3、4)が分散表現空間の近い位置にクラスタCL11としてマッピングされる様子が示されている。例えば、検索クエリQ1k(k=1、2、3、4)は、ユーザU1によって「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリの集合であると推定される。すなわち、検索クエリQ1k(k=1、2、3、4)は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。ここで、生成装置50は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図で入力された所定の検索クエリが学習モデルに入力されると、クラスタCL11の位置にマッピングされるような分散表現を出力することができる。これにより、例えば、生成装置50は、クラスタCL11の位置にマッピングされる分散表現に対応する検索クエリを抽出することにより、「ある場所(東京都港区付近)で飲食店を探す」という検索意図に応じた検索クエリを抽出することができる。したがって、生成装置50は、検索クエリの意味を適切に解釈可能とすることができる。
図12の下段に示す例では、生成装置50は、同一のユーザU2によって所定の時間内に連続して入力された3個の検索クエリである検索クエリQ21(「冷蔵庫 400L」)、検索クエリQ22(「冷蔵庫 中型」)、検索クエリQ23(「冷蔵庫 中型 おすすめ」)を抽出する。生成装置50は、検索クエリが入力された順番に並べると、検索クエリQ21、検索クエリQ22、検索クエリQ23の順番で入力された3個の検索クエリを抽出する。生成装置50は、3個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、2対の検索クエリのペアである(検索クエリQ21、検索クエリQ22)、(検索クエリQ22、検索クエリQ23)を抽出する(ステップS21-2)。
続いて、生成装置50は、抽出した検索クエリQ2m(m=1、2、3)を学習モデルM1に入力して、検索クエリQ2m(m=1、2、3)の分散表現であるベクトルBQV2m(m=1、2、3)を出力する。ここで、ベクトルBQV2m(m=1、2、3)は、学習モデルM1の出力層から出力されたばかりの検索クエリQ2m(m=1、2、3)の分散表現であって、学習モデルM1にフィードバックをかける前(学習前)の分散表現を示す(ステップS22-2)。
続いて、生成装置50は、同一のユーザU2によって所定の時間内に連続して入力された一対の検索クエリは、所定の検索意図(例えば、「中型の冷蔵庫を調べる」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ21の分散表現(ベクトルQV21)と、検索クエリQ21と対となる検索クエリQ22の分散表現(ベクトルQV22)とが、分散表現空間上で類似するように学習モデルM1を学習させる。また、生成装置50は、検索クエリQ22の分散表現(ベクトルQV22)と、検索クエリQ22と対となる検索クエリQ23の分散表現(ベクトルQV23)とが、分散表現空間上で類似するように学習モデルM1を学習させる。このように、生成装置50は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように学習モデルM1を学習させることで、検索クエリからベクトルを出力する学習モデルM1を生成する(ステップS23-2)。
図12の下段に示す情報処理の結果として、検索クエリQ2m(m=1、2、3)の分散表現であるベクトルQV2m(m=1、2、3)が分散表現空間の近い位置にクラスタCL21としてマッピングされる様子が示されている。例えば、検索クエリQ2m(m=1、2、3)は、ユーザU2によって「中型の冷蔵庫を調べる」という検索意図の下で検索された検索クエリの集合であると推定される。すなわち、Q2m(m=1、2、3)は、「中型の冷蔵庫を調べる」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。ここで、生成装置50は、「中型の冷蔵庫を調べる」という検索意図で入力された所定の検索クエリが学習モデルに入力されると、クラスタCL21の位置にマッピングされるような分散表現を出力することができる。これにより、例えば、生成装置50は、クラスタCL21の位置にマッピングされる分散表現に対応する検索クエリを抽出することにより、「中型の冷蔵庫を調べる」という検索意図に応じた検索クエリを抽出することができる。したがって、生成装置50は、検索クエリの意味を適切に解釈可能とすることができる。
また、本願発明に係る生成装置50は、ランダムに抽出された複数の検索クエリは、異なる検索意図の下で検索された検索クエリであるという点で、相互に相違する特徴を有する検索クエリであるとみなして学習モデルM1を学習させる。具体的には、生成装置50は、所定の検索クエリの分散表現と、所定の検索クエリとは無関係にランダムに抽出された検索クエリの分散表現とが分散表現空間上で遠くにマッピングされるように学習モデルM1のトレーニングを行う。図12に示す例では、生成装置50は、検索クエリQ11とは無関係にランダムに検索クエリを抽出したところ、検索クエリQ21が抽出されたとする。この場合、生成装置50は、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11とは無関係にランダムに抽出された検索クエリQ21の分散表現(ベクトルQV21)とが分散表現空間上で遠くにマッピングされるように学習モデルM1のトレーニングを行う。その結果として、「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルQV1k(k=1、2、3、4)を含むクラスタCL11と、「中型の冷蔵庫を調べる」という検索意図の下で検索された検索クエリQ2m(m=1、2、3)の分散表現であるベクトルQV2m(m=1、2、3)を含むクラスタCL21とは、分散表現空間上で遠くにマッピングされる。すなわち、本願発明に係る生成装置50は、ランダムに抽出された複数の検索クエリの分散表現が相違するように学習モデルM1を学習させることにより、検索意図が異なる検索クエリの分散表現を分散表現空間上で遠い位置に出力可能とする。
なお、生成装置50が生成した学習モデルM1によって出力されたベクトルが分散表現空間にマッピングされた結果として、上述したクラスタCL11とクラスタCL21の他にも、同一のユーザによって所定の時間内に入力された複数の検索クエリのベクトルの集合であるクラスタCL12やクラスタCL22が生成される。
上述したように、生成装置50は、ユーザによって入力された検索クエリを取得する。また、生成装置50は、取得した検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する。すなわち、本願発明に係る生成装置50は、所定の時間内に連続して入力された複数の検索クエリは、所定の検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであるとみなして学習モデルを学習させる。具体的には、生成装置50は、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現が類似するように学習モデルを学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を含む分散表現を出力する学習モデルを生成する。すなわち、本願発明に係る生成装置50は、所定の時間内に連続して入力された複数の検索クエリの分散表現が類似するように学習モデルM1を学習させることにより、所定の検索意図の下で検索された検索クエリの分散表現を分散表現空間上で近い位置に出力可能とする。これにより、生成装置50は、検索クエリを入力したユーザのコンテクストに応じて検索クエリの意味(検索意図)を出力(解釈)することを可能にする。したがって、生成装置50は、検索クエリの意味を適切に解釈可能とすることができる。さらに、生成装置50は、所定の検索クエリの特徴情報を含む分散表現の近傍にマッピングされる分散表現に対応する検索クエリを抽出することにより、所定の検索クエリが検索された検索意図に応じた検索クエリを抽出することができる。すなわち、生成装置50は、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、ユーザの検索動向を分析することを可能にする。したがって、生成装置50は、ユーザの検索動向の分析精度を高めることができる。また、生成装置50が生成した学習モデルM1を検索システムの一部として機能させることもできる。あるいは、生成装置50は、学習モデルM1によって予測された検索クエリの特徴情報を利用する他のシステム(例えば、検索エンジン)への入力情報として、学習モデルM1が出力した検索クエリの分散表現を提供することもできる。これにより、検索システムは、学習モデルM1によって予測された検索クエリの特徴情報に基づいて、検索結果として出力されるコンテンツを選択可能になる。すなわち、検索システムは、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、検索結果として出力されるコンテンツを選択可能になる。さらに、検索システムは、学習モデルM1によって予測された検索クエリの特徴情報に基づいて、検索結果として出力されるコンテンツに含まれる文字列の分散表現と検索クエリの分散表現との類似度を算出可能になる。そして、検索システムは、算出した類似度に基づいて、検索結果として出力されるコンテンツの表示順を決定可能になる。すなわち、検索システムは、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、検索結果として出力されるコンテンツの表示順を決定可能になる。したがって、生成装置50は、検索サービスにおけるユーザビリティを向上させることができる。
〔2-2.情報処理装置の構成〕
次に、図13を用いて、実施形態に係る生成装置50の構成について説明する。図13は、実施形態に係る生成装置50の構成例を示す図である。図13に示すように、生成装置50は、通信部51と、記憶部53と、制御部52とを有する。なお、生成装置50は、生成装置50の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部51)
通信部51は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部51は、ネットワークと有線または無線で接続され、例えば、ユーザ端末10と、検索サーバ20との間で情報の送受信を行う。
(記憶部53)
記憶部53は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部53は、図13に示すように、クエリ情報記憶部531と、ベクトル情報記憶部532と、モデル情報記憶部533とを有する。
(クエリ情報記憶部531)
クエリ情報記憶部531は、ユーザによって入力された検索クエリに関する各種の情報を記憶する。図14に、実施形態に係るクエリ情報記憶部の一例を示す。図14に示す例では、クエリ情報記憶部531は、「ユーザID」、「日時」、「検索クエリ」、「検索クエリID」といった項目を有する。
「ユーザID」は、検索クエリを入力したユーザを識別するための識別情報を示す。「日時」は、検索サーバがユーザから検索クエリを受け付けた日時を示す。「検索クエリ」は、ユーザによって入力された検索クエリを示す。「検索クエリID」は、ユーザによって入力された検索クエリを識別するための識別情報を示す。
図14の1レコード目に示す例では、検索クエリID「Q11」で識別される検索クエリ(検索クエリQ11)は、図11に示した検索クエリQ11に対応する。また、ユーザID「U1」は、検索クエリQ11を入力したユーザがユーザID「U1」で識別されるユーザ(ユーザU1)であることを示す。また、日時「2018/9/1 PM17:00」は、検索サーバがユーザU1から検索クエリQ11を受け付けた日時が2018年9月1日の午後17:00であることを示す。また、検索クエリ「六本木 パスタ」は、ユーザU1によって入力された検索クエリQ11を示す。具体的には、検索クエリ「六本木 パスタ」は、地名を示す「六本木」と食品の種類を示す「パスタ」の文字とが区切り文字であるスペースで区切られた文字列であることを示す。
(ベクトル情報記憶部532)
ベクトル情報記憶部532は、検索クエリの分散表現であるベクトルに関する各種の情報を記憶する。図15に、実施形態に係るベクトル情報記憶部の一例を示す。図15に示す例では、ベクトル情報記憶部532は、「ベクトルID」、「検索クエリID」、「ベクトル情報」といった項目を有する。
「ベクトルID」は、検索クエリの分散表現であるベクトルを識別するための識別情報を示す。「検索クエリID」は、ベクトルに対応する検索クエリを識別するための識別情報を示す。「ベクトル情報」は、検索クエリの分散表現であるN次元のベクトルを示す。検索クエリの分散表現であるベクトルは、例えば、128次元のベクトルである。
図15の1レコード目に示す例では、ベクトルID「QV11」で識別されるベクトル(ベクトルQV11)は、図11に示した検索クエリQ11の分散表現であるベクトルQV11に対応する。また、検索クエリID「Q11」で識別される検索クエリ(検索クエリQ11)は、ベクトルQV11に対応する検索クエリが検索クエリQ11であることを示す。また、ベクトル情報「QVDT11」は、検索クエリQ11の分散表現であるN次元のベクトルを示す。
(モデル情報記憶部533)
モデル情報記憶部533は、生成装置50によって生成された学習モデルに関する各種の情報を記憶する。図16に、実施形態に係るモデル情報記憶部の一例を示す。図16に示す例では、モデル情報記憶部533は、「モデルID」、「モデルデータ」といった項目を有する。
「モデルID」は、生成装置50によって生成された学習モデルを識別するための識別情報を示す。「モデルデータ」は、生成装置50によって生成された学習モデルのモデルデータを示す。例えば、「モデルデータ」には、検索クエリを分散表現に変換するためのデータが格納される。
図16の1レコード目に示す例では、モデルID「M1」で識別される学習モデルは、図1に示した学習モデルM1に対応する。また、モデルデータ「MDT1」は、生成装置50によって生成された学習モデルM1のモデルデータ(モデルデータMDT1)を示す。
モデルデータMDT1は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリの分散表現を出力層から出力するよう、生成装置50を機能させてもよい。
ここで、モデルデータMDT1が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
また、モデルデータMDT1がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
生成装置50は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、分散表現の算出を行う。具体的には、モデルデータMDT1は、検索クエリが入力された場合に、分散表現を出力するように係数が設定される。生成装置50は、このようなモデルデータMDT1を用いて、分散表現を算出する。
なお、上記例では、モデルデータMDT1が、検索クエリが入力された場合に、検索クエリの分散表現を出力するモデル(以下、モデルX1という。)である例を示した。しかし、実施形態に係るモデルデータMDT1は、モデルX1にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT1は、検索クエリを入力とした際に、モデルX1が出力した分散表現を入力して学習されたモデル(以下、モデルY1という。)であってもよい。または、モデルデータMDT1は、検索クエリを入力とし、モデルY1の出力値を出力とするよう学習されたモデルであってもよい。
また、生成装置50がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT1は、GANの一部を構成するモデルであってもよい。
(制御部52)
図13の説明に戻って、制御部52は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、生成装置50内部の記憶装置に記憶されている各種プログラム(生成プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部52は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
また、制御部52は、モデル情報記憶部533に記憶されている学習モデルM1(モデルデータMDT1)に従った情報処理により、入力層に入力された検索クエリに対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、分散表現を出力層から出力するよう、コンピュータを機能させる。
図13に示すように、制御部52は、取得部521と、抽出部522と、生成部523を有し、以下に説明する情報処理の作用を実現または実行する。なお、制御部52の内部構成は、図13に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部521)
取得部521は、種々の情報を取得する。具体的には、取得部521は、ユーザによって入力された検索クエリを検索サーバ20から取得する。取得部521は、ユーザによって入力された検索クエリを取得すると、取得した検索クエリをクエリ情報記憶部531に格納する。また、取得部521は、検索クエリの分散表現であるベクトルに関するベクトル情報を取得する。取得部521は、ベクトル情報を取得すると、取得したベクトル情報をベクトル情報記憶部532に格納する。
(抽出部522)
抽出部522は、種々の情報を抽出する。具体的には、抽出部522は、取得部521によって取得された検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリを抽出する。例えば、抽出部522は、同一のユーザによって各検索クエリが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。続いて、抽出部522は、同一のユーザによって所定の時間内に入力された複数の検索クエリのうち、同一のユーザによって所定の時間内に連続して入力された一対の検索クエリを抽出する。例えば、抽出部522は、同一のユーザによって各検索クエリのペアが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。例えば、抽出部522は、取得部521によって取得された検索クエリのうち、同一のユーザU1によって所定の時間内に連続して入力された4個の検索クエリである検索クエリQ11(「六本木 パスタ」)、検索クエリQ12(「六本木 イタリアン」)、検索クエリQ13(「赤坂 パスタ」)、検索クエリQ14(「麻布 パスタ」)を抽出する。抽出部522は、検索クエリが入力された順番に並べると、検索クエリQ11、検索クエリQ12、検索クエリQ13、検索クエリQ14の順番で入力された4個の検索クエリを抽出する。続いて、抽出部522は、4個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、3対の検索クエリのペアである(検索クエリQ11、検索クエリQ12)、(検索クエリQ12、検索クエリQ13)、(検索クエリQ13、検索クエリQ14)を抽出する。なお、抽出部522は、同一のユーザによって全ての検索クエリが所定の時間内に入力された複数の検索クエリを抽出してもよい。そして、抽出部522は、時系列的に隣り合うか否かに関わらず、抽出した複数の検索クエリの中から2つの検索クエリを選択して、選択した2つの検索クエリを一対の検索クエリとして抽出してもよい。
また、抽出部522は、取得部521によって取得された検索クエリのうち、所定の検索クエリと所定の検索クエリに無関係な他の検索クエリとを抽出する。例えば、抽出部522は、取得部521によって取得された検索クエリの中から、所定の検索クエリを抽出する。続いて、抽出部522は、取得部521によって取得された検索クエリの中から、所定の検索クエリとは無関係にランダムに他の検索クエリを抽出する。
(生成部523)
生成部523は、種々の情報を生成する。具体的には、生成部523は、取得部521によって取得された検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する。具体的には、生成部523は、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現が類似するように学習モデルを学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する。例えば、生成部523は、所定の時間内に続けて入力された一対の検索クエリの分散表現が類似するように学習することで、学習モデルを生成する。例えば、生成部523は、一対の検索クエリの学習前のベクトルの類似度の値を算出する。また、生成部523は、一対の検索クエリの学習後のベクトルの類似度の値を算出する。続いて、生成部523は、学習前のベクトルの類似度の値よりも、学習後のベクトルの類似度の値が大きくなるように学習モデルを学習させる。このように、生成部523は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように学習モデルを学習させることで、検索クエリからベクトルを出力する学習モデルを生成する。より具体的には、生成部523は、RNNの一種であるLSTMを分散表現生成に用いたDSSMの技術を用いて、検索クエリからベクトルを出力する学習モデルを生成する。例えば、生成部523は、学習モデルの正解データとして、同一のユーザによって所定の時間内に入力された一対の検索クエリが類似する特徴を有するものとして、所定の検索クエリのベクトルと、所定の検索クエリと対となる他の検索クエリのベクトルとが、分散表現空間上で近くに存在するように学習する。また、生成部523は、学習モデルを生成すると、学習モデルを識別する識別情報と対応付けて、生成した学習モデル(モデルデータMDT1)をモデル情報記憶部533に格納する。
〔2-3.学習モデルの一例〕
ここで、図17を用いて生成装置50が生成する学習モデルの一例について説明する。図17は、実施形態に係る学習モデルの一例を示す図である。図17に示す例では、生成装置50が生成する学習モデルM1は、3層のLSTM RNNで構成されている。図17に示す例では、抽出部522は、同一のユーザU1によって所定の時間内に連続して入力された「六本木 パスタ」という検索クエリQ11と「六本木 イタリアン」という検索クエリQ12とから成る一対の検索クエリを抽出する。生成部523は、抽出部522によって抽出されたた検索クエリQ11を学習モデルM1の入力層に入力する(ステップS41)。
続いて、生成部523は、学習モデルM1の出力層から検索クエリQ11の分散表現である256次元のベクトルBQV11を出力する。また、生成部523は、抽出部522によって抽出された検索クエリQ12を学習モデルM1の入力層に入力する。続いて、生成部523は、学習モデルM1の出力層から検索クエリQ12の分散表現である256次元のベクトルBQV12を出力する(ステップS42)。
続いて、生成部523は、連続して入力された2つの検索クエリのベクトルが類似するように学習することで、検索クエリからベクトルを出力する学習モデルM1を生成する(ステップS43)。例えば、学習モデルM1にフィードバックをかける前(学習前)の検索クエリQ11の分散表現であるベクトルBQV11と検索クエリQ12の分散表現であるベクトルBQV12とのなす角度の大きさをΘとする。また、学習モデルM1にフィードバックをかけた後(学習後)の検索クエリQ11の分散表現であるベクトルQV11と検索クエリQ12の分散表現であるベクトルQV12とのなす角度の大きさをΦとする。この時、生成部523は、ΘよりもΦが小さくなるように、学習モデルM1を学習させる。例えば、生成部523は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値を算出する。また、生成部523は、ベクトルQV11とベクトルQV12のコサイン類似度の値を算出する。続いて、生成部523は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値よりも、ベクトルQV11とベクトルQV12のコサイン類似度の値が大きくなるように(値が1に近づくように)学習モデルM1を学習させる。このように、生成部523は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように学習モデルM1を学習させることで、検索クエリからベクトルを出力する学習モデルM1を生成する。なお、生成部523は、コサイン類似度に限らず、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいてベクトルの間の類似度を算出してもよい。また、生成部523は、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて学習モデルM1を学習させてもよい。例えば、生成部523は、ベクトル同士のユークリッド距離や双曲空間等の非ユークリッド空間中での距離、マンハッタン距離、マハラノビス距離等といった所定の距離関数の値を算出する。続いて、生成部523は、ベクトル同士の所定の距離関数の値(すなわち、分散表現空間における距離)が小さくなるように学習モデルM1を学習させてもよい。
また、生成部523は、同一のユーザによって所定の時間内に入力された複数の検索クエリとして、所定の区切り文字で区切られた文字列を含む複数の検索クエリが類似する特徴を有するものとして学習することで、学習モデルを生成する。例えば、生成部523は、地名を示す「六本木」と食品の種類を示す「パスタ」の文字とが区切り文字であるスペースで区切られた検索クエリ「六本木 パスタ」と、地名を示す「六本木」と料理の種類を示す「イタリアン」の文字とが区切り文字であるスペースで区切られた検索クエリ「六本木 イタリアン」とが類似する特徴を有するものとして学習することで、学習モデルを生成する。
また、生成部523は、取得部521によって取得された検索クエリのうち、ランダムに抽出された複数の検索クエリが相違する特徴を有するものとして学習することで、学習モデルを生成する。具体的には、生成部523は、取得部521によって取得された検索クエリのうち、ランダムに抽出された一対の検索クエリの分散表現が相違するように学習することで、学習モデルを生成する。例えば、生成部523は、抽出部522によって抽出された所定の検索クエリの分散表現と、所定の検索クエリとは無関係にランダムに抽出された検索クエリの分散表現とが分散表現空間上で遠くにマッピングされるように学習モデルM1のトレーニングを行う。
〔2-4.学習モデルの生成処理のフロー〕
次に、図18を用いて、実施形態に係る学習モデルの生成処理の手順について説明する。図18は、実施形態に係る学習モデルの生成処理手順を示すフローチャートである。
図18に示す例では、生成装置50は、ユーザによって入力された検索クエリを取得する(ステップS1001)。
続いて、生成装置50は、同一のユーザによって所定の時間内に入力された複数の検索クエリを抽出する(ステップS1002)。
続いて、生成装置50は、抽出した複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する(ステップS1003)。
〔3.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部133と補正部134とを備える。取得部133は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、情報間の類似性に関する類似情報を取得する。補正部134は、取得部133によって取得された類似情報に基づいて、ナレッジデータベースを補正する。
これにより、情報処理装置100は、ナレッジデータベースを適切に補正することができる。
また、取得部133は、類似情報として、第1情報と、第1情報と類似する第2情報との類似性に関する類似情報を取得する。補正部134は、取得部133によって取得された類似情報に基づいて、第1情報に対応する第1要素、第2情報に対応する第2要素、または第1要素と第2要素との関係を示す関係情報のうち少なくともいずれか一つをナレッジデータベースに付加する。
これにより、情報処理装置100は、ナレッジデータベースの構成要素であるトリプルの第1要素、第2要素、または第1要素と第2要素との関係を示す関係情報のうち少なくともいずれか一つをナレッジデータベースに付加することができるので、ナレッジデータベースを適切に補正することができる。
また、補正部134は、取得部133によって取得された類似情報に基づいて、第1情報に対応する第1要素と、第2情報に対応する第2要素と、第1要素と第2要素との関係を示す関係情報とを有するトリプルをナレッジデータベースに付加する。
これにより、情報処理装置100は、ナレッジデータベースの構成要素であるトリプルをナレッジデータベースに付加することができるので、ナレッジデータベースを適切に補正することができる。
また、取得部133は、類似情報として、ナレッジデータベースに含まれる第1要素が示す第1情報と、第1情報と類似する第2情報との類似性に関する類似情報を取得する。補正部134は、取得部133によって取得された類似情報に基づいて、第2情報に対応する第2要素をナレッジデータベースに付加する。
これにより、情報処理装置100は、ナレッジデータベースに含まれていない第2要素をナレッジデータベースに付加することができるので、ナレッジデータベースを適切に補正することができる。
また、取得部133は、類似情報として、ナレッジデータベースに含まれる第1要素が示す第1情報と、ナレッジデータベースに含まれる第2要素が示す第2情報であって、第1情報と類似する第2情報との類似性に関する類似情報を取得する。補正部134は、取得部133によって取得された類似情報に基づいて、第1要素と第2要素との関係を示す関係情報をナレッジデータベースに付加する。
これにより、情報処理装置100は、ナレッジデータベースに含まれていない関係情報をナレッジデータベースに付加することができるので、ナレッジデータベースを適切に補正することができる。
また、実施形態に係る情報処理装置100は、生成部131と算出部132とをさらに備える。生成部131は、学習モデルを用いて、所定の情報の分散表現を生成する。算出部132は、生成部131によって生成された所定の情報の分散表現と、生成部131によって生成された所定の情報とは異なる他の情報の分散表現との類似度を算出する。補正部134は、算出部132によって算出された類似度に基づくスコアをトリプルに付加する。
これにより、情報処理装置100は、ナレッジデータベースに含まれていないトリプルをナレッジデータベースに付加することができるので、ナレッジデータベースを適切に補正することができる。
また、取得部133は、入力情報として所定の検索クエリが入力された際に、出力情報として所定の検索クエリの分散表現を出力する学習モデルを用いて、類似情報を取得する。また、取得部133は、所定の時間内に続けて入力された一対の検索クエリの分散表現が類似するように学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。また、取得部133は、同一のユーザによって所定の時間内に入力された複数の検索クエリとして、所定の区切り文字で区切られた文字列を含む複数の検索クエリが類似する特徴を有するものとして学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。また、取得部133は、ランダムに取得された複数の検索クエリが相違する特徴を有するものとして学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。また、取得部133は、ランダムに取得された一対の検索クエリの分散表現が相違するように学習することで、複数の検索クエリが有する特徴を学習した学習モデルを用いて、類似情報を取得する。
これにより、情報処理装置100は、ユーザの検索意図を考慮して、適切な特徴情報を抽出可能とする。したがって、情報処理装置100は、ナレッジデータベースを適切に補正することができる。
〔4.ハードウェア構成〕
また、上述してきた実施形態に係る情報処理装置100および生成装置50は、例えば図19に示すような構成のコンピュータ1000によって実現される。図19は、情報処理装置100および生成装置50の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM1300、HDD1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を備える。
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、所定の通信網を介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータを所定の通信網を介して他の機器へ送信する。
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または生成装置50として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130、制御部130Aまたは制御部52の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置から所定の通信網を介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔5.その他〕
また、上記実施形態及び変形例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、補正部は、補正手段や補正回路に読み替えることができる。