以下に、本願に係る情報処理装置、情報処理方法及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略する。
〔1.情報処理の一例〕
まず、図1と図2を用いて、実施形態に係る情報処理の一例について説明する。図1と図2は、実施形態に係る情報処理の一例を示す図である。図1と図2に示す情報処理は、ユーザ端末10(図3参照)と検索サーバ50(図3参照)と情報処理装置100(図3参照)とによって行われる。
ユーザ端末10は、ユーザによって使用される情報処理装置である。ユーザ端末10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。なお、以下では、ユーザ端末10をユーザと同一視する場合がある。すなわち、以下では、ユーザをユーザ端末10と読み替えることもできる。
また、以下では、ユーザID「U1」により特定されるユーザを「ユーザU1」とする場合がある。このように、以下では、「ユーザU*(*は任意の数値)」と記載した場合、そのユーザはユーザID「U*」により特定されるユーザであることを示す。例えば、「ユーザU2」と記載した場合、そのユーザはユーザID「U2」により特定されるユーザである。
検索サーバ50は、検索サービスを提供するサーバ装置である。例えば、検索サーバ50が提供する検索サービスは、あらゆる情報を検索可能な総合検索サービスである。検索サーバ50は、ユーザによって入力された検索クエリに関する情報を記憶する。具体的には、検索サーバ50は、ユーザの検索履歴に関する情報を記憶する。
情報処理装置100は、第1学習モデル(以下、適宜「第1モデル」と記載する。)を生成するサーバ装置である。具体的には、情報処理装置100は、ユーザによって入力された検索クエリに関する情報を検索サーバ50から取得する。続いて、情報処理装置100は、検索サーバ50から取得した検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリを抽出する。ここで、情報処理装置100は、ユーザによる1回の検索ごとに検索ボックスに入力された文字群全体をユーザによって入力された一つの検索クエリとして取り扱う。例えば、情報処理装置100は、ユーザU1による1回の検索で検索ボックスに「六本木 パスタ」のように複数の文字群を含む検索クエリが入力された場合は、「六本木 パスタ」全体で一つの検索クエリとして取り扱う。また、情報処理装置100は、同一のユーザによって各検索クエリが入力された時間の間隔が所定の時間内(例えば、2分以内)であるような複数の検索クエリを同一のユーザによって所定の時間内に入力された複数の検索クエリとして抽出する。続いて、情報処理装置100は、抽出した複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する第1学習モデルを生成する。具体的には、情報処理装置100は、抽出した複数の検索クエリの分散表現が類似するように第1学習モデルを学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を含む分散表現(ベクトル)を出力する第1学習モデルを生成する。より具体的には、情報処理装置100は、再帰的ニューラルネットワークとも呼ばれるRNN(Recurrent Neural Network)の一種であるLSTM(Long Short-Term Memory)を分散表現生成に用いたDSSM(Deep Structured Semantic Model)の技術を用いて、検索クエリから分散表現(ベクトル)を出力する第1学習モデルを生成する。なお、以下では、RNNの拡張版のモデルとしてのLSTMを「LSTM‐RNN」と記載する。また、RNNの隠れ層(中間層)に置き換えられる層としてのLSTMを「LSTM層」と記載する。図1に示す例では、各ステップの縦に並んだ3つのブロックの各ブロックをLSTM層と記載する。例えば、情報処理装置100は、第1学習モデルの正解データとして、同一のユーザによって所定の時間内に入力された一対の検索クエリが類似する特徴を有するものとして、所定の検索クエリの分散表現(ベクトル)と、所定の検索クエリと対となる他の検索クエリの分散表現(ベクトル)とが類似するように学習する。
また、情報処理装置100は、第2学習モデル(以下、適宜「第2モデル」と記載する。)を生成する。具体的には、情報処理装置100は、第1学習モデルを用いて、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを生成する。より具体的には、情報処理装置100は、第1学習モデルを生成すると、生成した第1学習モデル(第1学習モデルM1のモデルデータMDT1)を取得する。情報処理装置100は、第1モデルM1を取得すると、取得した第1モデルM1を用いて、第2学習モデルM2を生成する。情報処理装置100は、第1モデルM1を再学習させることにより、第1モデルM1とは学習モデルの重みである接続係数が異なる第2学習モデルM2を生成する。例えば、情報処理装置100は、検索クエリが学習モデルに入力された際に、学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルM2を生成する。
また、情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、第1入力情報から第1入力情報の特徴を示す第1特徴情報を予測する。そして、情報処理装置100は、情報処理装置100が第2入力情報から第2入力情報の特徴を示す第2特徴情報を予測する予測処理に用いる情報として、第1特徴情報の予測処理の途中経過に関する情報である経過情報を記憶する。
ここから、図1を用いて、情報処理の流れについて説明する。図1は、実施形態に係る情報処理の一例を示す図である。図1では、情報処理装置100が、第2学習モデルM2を用いて、第1検索クエリから第1検索クエリが属するカテゴリを予測する例について説明する。また、情報処理装置100が、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、第1検索クエリが属するカテゴリの予測処理の途中経過に関する情報である経過情報を記憶する例について説明する。なお、第2検索クエリは、第1検索クエリよりも後に第2学習モデルM2に入力される検索クエリを指す。
図1には、情報処理装置100が生成した第2学習モデルM2が示されている。第2学習モデルM2は、3層のLSTM‐RNNで構成されている。図1に示す「LSTM」の文字の右側にある各層は、LSTM‐RNNである各層を示す。すなわち、図1に示す「LSTM」の文字の右側にある縦3つの層で示す3つのLSTM‐RNNのセットが、第2学習モデルM2を示す。ここで、LSTM‐RNNは、RNN(Recurrent Neural Network)の一種である。RNNは、入力層と隠れ層と出力層とからなるニューラルネットワークであって、隠れ層に戻り値があるのが特徴である。そして、LSTM‐RNNは、RNNの隠れ層をLSTM層で置換えたニューラルネットワークである。図1は、LSTM層が隠れ層の値を再び隠れ層に入力する操作を処理の進行方向に展開した図である。例えば、縦3つのLSTM層のセットからなる第2学習モデルM2に「六」の文字が入力された処理ステップを「ステップ1」とする。続いて、第2学習モデルM2に「本」の文字が入力された処理ステップを「ステップ2」とする。続いて、第2学習モデルM2に「木」の文字が入力された処理ステップを「ステップ3」とする。続いて、第2学習モデルM2に「□」の文字が入力された処理ステップを「ステップ4」とする。続いて、第2学習モデルM2に「パ」の文字が入力された処理ステップを「ステップ5」とする。続いて、第2学習モデルM2に「ス」の文字が入力された処理ステップを「ステップ6」とする。続いて、第2学習モデルM2に「タ」の文字が入力された処理ステップを「ステップ7」とする。このように、第2学習モデルM2は、時系列データである文字群を、先頭から一文字ずつ順次処理する。
図1に示す例では、情報処理装置100は、地名を示す「六本木」と料理の種類を示す「パスタ」とが区切り文字であるスペースで区切られた文字群である第1検索クエリ「六本木 パスタ」を先頭から一文字ずつ第2学習モデルM2に入力する(ステップS1)。図1に示すように、第2学習モデルM2は、文字群である第1検索クエリ「六本木 パスタ」を、先頭から一文字ずつ順次処理する。
続いて、情報処理装置100は、情報処理装置100が第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、第1検索クエリ「六本木 パスタ」が属するカテゴリの予測処理の途中経過に関する情報である経過情報を記憶する。具体的には、情報処理装置100は、ニューラルネットの処理で用いられる第2学習モデルM2の内部状態に関する情報を記憶する。一般的に、ニューラルネットの処理で用いられる学習モデルの内部状態に関する情報には、大きく分けると、接続係数(重み、パラメータ又はウェイト等とも称される)に関する情報とアクティベーション(activation)に関する情報の2種類が存在する。ここで、アクティベーション(activation)とは、ニューラルネットによる計算が行われる中での、各層の中間的な計算結果を指す。情報処理装置100は、第2学習モデルM2の内部状態に関する情報として、第2学習モデルM2のアクティベーション(activation)に関する情報を記憶する。すなわち、情報処理装置100は、第2学習モデルM2の内部状態に関する情報として、第2学習モデルM2を構成する各層(各LSTM層)の中間的な計算結果に関する情報を記憶する。図1に示す例では、情報処理装置100は、第2学習モデルM2を構成する3層のLSTM層の各層(各LSTM層)の中間的な計算結果に関する情報を記憶する。例えば、情報処理装置100は、第1検索クエリ「六本木 パスタ」が所定の区切り文字であるスペース(以下、スペースを適宜記号「□」で記載する。)を含むか否かを判定する。続いて、情報処理装置100は、第1検索クエリ「六本木 パスタ」が所定の区切り文字であるスペースを含む場合、地名を示す「六本木」と区切り文字であるスペースからなる文字群「六本木□」に対応する経過情報を記憶部120(図3参照)に記憶する(ステップS2)。具体的には、情報処理装置100は、文字群「六本木□」に対応する経過情報として、処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報を記憶する。より具体的には、情報処理装置100は、文字群「六本木□」に対応する経過情報として、処理ステップ「ステップ4」における第2学習モデルM2のアクティベーション(activation)に関する情報を記憶する。すなわち、情報処理装置100は、処理ステップ「ステップ4」における第2学習モデルM2を構成する各層の中間的な計算結果に関する情報を記憶する。図1に示す例では、情報処理装置100は、処理ステップ「ステップ4」における第2学習モデルM2を構成する3層のLSTM層の各層(各LSTM層)の中間的な計算結果であるベクトル(例えば、2048次元のベクトル)の値を3セット分(3層分)記憶する。
続いて、情報処理装置100は、経過情報を記憶すると、第1検索クエリ「六本木 パスタ」の分散表現を出力する(ステップS3)。なお、情報処理装置100は、第1検索クエリ「六本木 パスタ」と全く同じ検索クエリが入力された場合に備えて、第1検索クエリ「六本木 パスタ」に対応する分散表現を記憶部120(図3参照)に記憶する。
情報処理装置100は、第1検索クエリ「六本木 パスタ」の分散表現を抽出して出力すると、第2学習モデルM2の出力データとして、第1検索クエリ「六本木 パスタ」の分散表現が各カテゴリに分類される確率をカテゴリ毎に出力する(ステップS4)。例えば、情報処理装置100は、第1検索クエリ「六本木 パスタ」の分散表現が、CAT11(「飲食店を探す」)に属する確率を「90(%)」、CAT12(「商品を探す」)に属する確率を「0(%)」、CAT13(「飲食店を予約する」)に属する確率を「10(%)」、CAT14(「商品を購入する」)に属する確率を「0(%)」と出力する。なお、検索クエリがCAT11(「飲食店を探す」)に属することは、検索クエリが飲食店を探す意図で入力された検索クエリであることを示す。また、CAT12(「商品を探す」)に属することは、検索クエリが商品を探す意図で入力された検索クエリであることを示す。また、検索クエリがCAT13(「飲食店を予約する」)に属することは、検索クエリが飲食店を予約する意図で入力された検索クエリであることを示す。また、検索クエリがCAT14(「商品を購入する」)に属することは、検索クエリが商品を購入する意図で入力された検索クエリであることを示す。
次に、図2を用いて、情報処理の流れについて説明する。図2は、実施形態に係る情報処理の一例を示す図である。図2は、図1に示す情報処理の後に行われる情報処理を示す。図2に示す例では、情報処理装置100は、地名を示す「六本木」と料理の種類を示す「お好み焼き」とが区切り文字であるスペースで区切られた文字群である第2検索クエリ「六本木 お好み焼き」を先頭から一文字ずつ第2学習モデルM2に入力する(ステップS5)。
続いて、情報処理装置100は、記憶部120に記憶されている経過情報の中に、第2検索クエリ「六本木 お好み焼き」と一部又は全部が共通する文字群に対応する経過情報が存在するか否かを判定する。例えば、情報処理装置100は、記憶部120に記憶されている文字群の中に、第2検索クエリ「六本木 お好み焼き」と一致する文字群が存在するか否かを判定する。情報処理装置100は、第2検索クエリ「六本木 お好み焼き」と一致する文字群が存在しないと判定したとする。続いて、情報処理装置100は、記憶部120に記憶されている文字群の中に、第2検索クエリ「六本木 お好み焼き」に含まれる文字群「六本木□」と共通する文字群「六本木□」が存在するか否かを判定する。情報処理装置100は、第2検索クエリ「六本木 お好み焼き」に含まれる文字群「六本木□」と共通する文字群「六本木□」が存在すると判定したとする。続いて、情報処理装置100は、共通する文字群「六本木□」が存在すると判定すると、共通する文字群「六本木□」に対応する経過情報を記憶部120から取得する(ステップS6)。具体的には、情報処理装置100は、文字群「六本木□」に対応する経過情報として、図1の処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報を取得する。より具体的には、情報処理装置100は、文字群「六本木□」に対応する経過情報として、図1の処理ステップ「ステップ4」における第2学習モデルM2のアクティベーション(activation)に関する情報を取得する。すなわち、情報処理装置100は、図1の処理ステップ「ステップ4」における第2学習モデルM2を構成する各層の中間的な計算結果に関する情報を取得する。図2に示す例では、情報処理装置100は、図1の処理ステップ「ステップ4」における第2学習モデルM2を構成する3層のLSTM層の各層(各LSTM層)の中間的な計算結果であるベクトル(例えば、2048次元のベクトル)の値を3セット分(3層分)取得する。
続いて、情報処理装置100は、文字群「六本木□」に対応する経過情報を取得すると、取得した文字群「六本木□」に対応する経過情報を用いて、第2検索クエリ「六本木 お好み焼き」の分散表現を出力する(ステップS7)。具体的には、情報処理装置100は、図1の処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報を取得すると、処理ステップ「ステップ4」における第2学習モデルM2の内部状態を再現する。続いて、情報処理装置100は、処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報に基づいて、第2検索クエリ「六本木 お好み焼き」の文字群「お好み焼き」以降の予測処理を開始する。すなわち、情報処理装置100は、処理ステップ「ステップ4」における第2学習モデルM2を構成する各層の中間的な計算結果に関する情報に基づいて、第2検索クエリ「六本木 お好み焼き」の文字群「お好み焼き」以降の予測処理を開始する。そして、情報処理装置100は、第2検索クエリ「六本木 お好み焼き」の分散表現を出力する。
続いて、情報処理装置100は、第2検索クエリ「六本木 お好み焼き」の分散表現を抽出して出力すると、第2学習モデルM2の出力データとして、第2検索クエリ「六本木 お好み焼き」の分散表現が各カテゴリに分類される確率をカテゴリ毎に出力する(ステップS8)。例えば、情報処理装置100は、第2検索クエリ「六本木 お好み焼き」の分散表現が、CAT11(「飲食店を探す」)に属する確率を「90(%)」、CAT12(「商品を探す」)に属する確率を「0(%)」、CAT13(「飲食店を予約する」)に属する確率を「10(%)」、CAT14(「商品を購入する」)に属する確率を「0(%)」と出力する。
上述したように、情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、第1入力情報から第1入力情報の特徴を示す第1特徴情報を予測する。そして、情報処理装置100は、第2入力情報から第2入力情報の特徴を示す第2特徴情報を予測する予測処理に用いる情報として、第1特徴情報の予測処理の途中経過に関する情報である経過情報を記憶する。これにより、情報処理装置100は、予測処理の途中経過まで予測結果を覚えておいて、必要に応じてキャッシングを取得し途中から処理を開始することができる。すなわち、情報処理装置100は、前に行った計算結果を用いて、効率よく特徴情報の予測処理を行うことができる。したがって、情報処理装置100は、情報の意味を効率よく解釈可能とすることができる。
なお、図1では、情報処理装置100が、検索クエリがスペース等の区切り文字を含む文字群である場合について、スペース等の区切り文字で区切られた単位ごとに第2学習モデルM2の内部状態に関する情報を記憶する例について説明した。しかしながら、情報処理装置100は、スペース等の区切り文字に限られず、検索クエリをどこで区切り、第2学習モデルM2の内部状態に関する情報をどのような単位で記憶してもよい。具体的には、情報処理装置100は、第1検索クエリが一定のルール(又は一定の手順)で区分できるか否かを判定する。例えば、情報処理装置100は、形態素解析を用いて第1検索クエリが区分できるか否かを判定する。また、例えば、情報処理装置100は、BPE(Byte pair encoding)を用いて第1検索クエリが区分できるか否かを判定する。続いて、情報処理装置100は、第1検索クエリが一定のルール(又は一定の手順)で区分できると判定した場合、第1検索クエリを一定のルール(又は一定の手順)で区分した単位ごとに第2学習モデルM2の内部状態に関する情報を記憶する。例えば、情報処理装置100は、形態素解析を用いて第1検索クエリを区分できると判定した場合、形態素解析を用いて第1検索クエリを区分した単位ごとに第2学習モデルM2の内部状態に関する情報を記憶する。また、例えば、情報処理装置100は、BPEを用いて第1検索クエリを区分できると判定した場合、BPEを用いて第1検索クエリを区分した単位ごとに第2学習モデルM2の内部状態に関する情報を記憶する。
また、図2では、情報処理装置100が、第2検索クエリ「六本木 お好み焼き」と共通する文字群が記憶部120に一つ(文字群「六本木□」)しか存在しない場合について、第2検索クエリと共通する文字群「六本木□」に対応する経過情報を取得する例について説明した。ここでは、第2検索クエリと共通する文字群が記憶部120に複数存在する場合について説明する。具体的には、第2検索クエリ「六本木□お好み焼き□おすすめ」が入力された時点において、第2検索クエリと共通する文字群として、文字群「六本木□お好み焼き□」と文字群「六本木□」の2つが記憶部120に存在する場合を考える。情報処理装置100は、記憶部120を参照して、第2検索クエリと共通する文字群が複数存在すると判定した場合には、複数の文字群の間に包含関係があるか否かを判定する。例えば、情報処理装置100は、文字群「六本木□お好み焼き□」と文字群「六本木□」との間に包含関係があるか否かを判定する。続いて、情報処理装置100は、複数の文字群の間に包含関係があると判定した場合、複数の文字群の中から他の文字群をいずれも包含する文字群を選択する。続いて、情報処理装置100は、選択した文字群に対応する経過情報を記憶部120から取得する。例えば、情報処理装置100は、文字群「六本木□お好み焼き□」と文字群「六本木□」との間には、文字群「六本木□お好み焼き□」が文字群「六本木□」を含む(文字群「六本木□」が文字群「六本木□お好み焼き□」に包含される)関係があると判定する。続いて、情報処理装置100は、文字群「六本木□お好み焼き□」と文字群「六本木□」との間に、文字群「六本木□お好み焼き□」が文字群「六本木□」を含む包含関係があると判定すると、文字群「六本木□」を含む文字群「六本木□お好み焼き□」を選択する。続いて、情報処理装置100は、選択した文字群「六本木□お好み焼き□」に対応する経過情報を記憶部120から取得する。なお、図2では、第2学習モデルM2がLSTM‐RNNであるため、第2検索クエリと共通する文字群が複数存在する場合には、文字群の間に必ず包含関係が存在する。そのため、情報処理装置100は、第2検索クエリと共通する文字群が複数存在する場合には、最も長い文字群(文字数が最も多い文字群)を選択する。そして、情報処理装置100は、選択した最長の文字群に対応する経過情報を記憶部120から取得する。
〔2.情報処理システムの構成〕
次に、図2を用いて、実施形態に係る情報処理システムの構成について説明する。図2は、実施形態に係る情報処理システムの構成例を示す図である。図2に示すように、情報処理システム1には、ユーザ端末10と、検索サーバ50と、情報処理装置100とが含まれる。ユーザ端末10と、検索サーバ50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。なお、図2に示す情報処理システム1には、任意の数のユーザ端末10と任意の数の検索サーバ50と任意の数の情報処理装置100とが含まれてもよい。
ユーザ端末10は、ユーザによって入力された検索クエリを検索サーバ50に送信する。具体的には、ユーザ端末10は、ユーザによる操作に従って、検索クエリを入力するための検索ボックスを含む検索ページを検索サーバ50から取得する。続いて、ユーザ端末10は、ユーザによって検索ボックスに文字が入力される操作に続いて、検索クエリを送信する操作が行われると、検索ページを介して検索ボックスに入力された文字を検索クエリとして検索サーバ50に送信する。例えば、ユーザ端末10は、ユーザによって検索ボックスに文字が入力される操作に続いて、検索クエリの送信ボタンが押下される操作やエンターキーが押下される操作が行われると、検索ページを介して検索ボックスに入力された文字を検索クエリとして検索サーバ50に送信する。
検索サーバ50は、ユーザ端末10から検索クエリを受け付けると、受け付けた検索クエリに応じたコンテンツであって、検索結果として出力されるコンテンツを選択する。続いて、検索サーバ50は、選択されたコンテンツを含む検索結果ページをユーザ端末10に配信する。ここで、検索サーバ50によって配信されるコンテンツは、ウェブブラウザによって表示されるウェブページに限られない。例えば、検索サーバ50によって配信されるコンテンツは、ユーザ端末10にインストールされた専用のアプリケーションによって表示されるコンテンツであってもよい。また、検索サーバ50によって配信されるコンテンツは、音楽コンテンツや画像(静止画のみならず動画を含む。)コンテンツ、テキストコンテンツ(ニュース記事やSNS(Social Networking Service)に投稿された記事を含む。)、画像とテキストを組み合わせたコンテンツ、ゲームコンテンツなど、どのようなコンテンツであってもよい。
また、検索サーバ50は、ユーザ端末10から検索クエリを受け付けると、受け付けた検索クエリと検索クエリの送信元であるユーザを識別するユーザIDと検索クエリの送信日時とを対応付けてデータベースに登録する。検索サーバ50は、情報処理装置100の要求に応じて、ユーザによって入力された検索クエリに関する情報を情報処理装置100に送信する。
また、ユーザ端末10は、ユーザによって入力された検索クエリを情報処理装置100に送信する。具体的には、ユーザ端末10は、ユーザによる操作に従って、検索クエリを入力するための検索ボックスを含むコンテンツを情報処理装置100から取得する。続いて、ユーザ端末10は、ユーザによって検索ボックスに文字が入力される操作に続いて、検索クエリを送信する操作が行われると、コンテンツを介して検索ボックスに入力された文字群を検索クエリとして情報処理装置100に送信する。例えば、ユーザ端末10は、ユーザによって検索ボックスに文字が入力される操作に続いて、検索クエリの送信ボタンが押下される操作やエンターキーが押下される操作が行われると、コンテンツを介して検索ボックスに入力された文字群を検索クエリとして情報処理装置100に送信する。
情報処理装置100は、図1で説明した情報処理を行うサーバ装置である。情報処理装置100は、第1学習モデルを生成する。また、情報処理装置100は、第1学習モデルを用いて、第2学習モデルを生成する。情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、第1入力情報から第1入力情報の特徴を示す第1特徴情報を予測する。そして、情報処理装置100は、第2入力情報から第2入力情報の特徴を示す第2特徴情報を予測する予測処理に用いる情報として、第1特徴情報の予測処理の途中経過に関する情報である経過情報を記憶する。
〔3.情報処理装置の構成〕
次に、図3を用いて、実施形態に係る情報処理装置100の構成について説明する。図3は、実施形態に係る情報処理装置100の構成例を示す図である。図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示させるための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワークと有線または無線で接続され、例えば、ユーザ端末10と検索サーバ50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部120は、図3に示すように、クエリ情報記憶部121とカテゴリ情報記憶部122と分類定義記憶部123とモデル情報記憶部124と経過情報記憶部125を有する。
(クエリ情報記憶部121)
クエリ情報記憶部121は、ユーザによって入力された検索クエリに関する各種の情報を記憶する。図5に、実施形態に係るクエリ情報記憶部の一例を示す。図5に示す例では、クエリ情報記憶部121は、「ユーザID」、「日時」、「検索クエリ」、「検索クエリID」といった項目を有する。
「ユーザID」は、検索クエリを入力したユーザを識別するための識別情報を示す。「日時」は、検索サーバがユーザから検索クエリを受け付けた日時を示す。「検索クエリ」は、ユーザによって入力された検索クエリを示す。「検索クエリID」は、ユーザによって入力された検索クエリを識別するための識別情報を示す。
図5の1レコード目に示す例では、検索クエリID「Q11」で識別される検索クエリ(検索クエリQ11)は、図1に示した検索クエリ「六本木 パスタ」に対応する。また、ユーザID「U1」は、検索クエリQ11を入力したユーザがユーザID「U1」で識別されるユーザ(ユーザU1)であることを示す。また、日時「2018/9/1 PM17:00」は、検索サーバがユーザU1から検索クエリQ11を受け付けた日時が2018年9月1日の午後17:00であることを示す。また、検索クエリ「六本木 パスタ」は、ユーザU1によって入力された検索クエリQ11を示す。
(カテゴリ情報記憶部122)
カテゴリ情報記憶部122は、検索クエリと検索クエリが属するカテゴリに関する各種の情報を記憶する。図6に、実施形態に係るカテゴリ情報記憶部の一例を示す。図6に示す例では、カテゴリ情報記憶部122は、「検索クエリID」、「大分類ID」、「小分類ID」といった項目を有する。
「検索クエリID」は、ユーザによって入力された検索クエリを識別するための識別情報を示す。「大分類ID」、ユーザによって入力された検索クエリが分類されるカテゴリの大分類を識別するための識別情報を示す。「小分類ID」ユーザによって入力された検索クエリが分類されるカテゴリの小分類を識別するための識別情報を示す。
図6の1レコード目に示す例では、検索クエリID「Q11」で識別される検索クエリ(検索クエリQ11)は、図1に示した検索クエリ「六本木 パスタ」に対応する。
(分類定義記憶部123)
分類定義記憶部123は、検索クエリが分類されるカテゴリの定義に関する各種の情報を記憶する。図7に、実施形態に係る分類定義記憶部の一例を示す。図7に示す例では、分類定義記憶部123は、「大分類ID」、「大分類」、「小分類ID」、「小分類」といった項目を有する。
「大分類」は、検索クエリが分類されるカテゴリの大分類を示す。「大分類ID」は、大分類を識別するための識別情報を示す。図7に示す例では、大分類「購買行動系」は、図1の下段に示す例で説明した大分類に対応する。大分類「購買行動系」は、検索クエリをユーザの購買行動に基づいて分類するカテゴリの大分類を示す。図7に示す例では、大分類「購買行動系」は、さらに4つの小分類を有する。大分類ID「CAT1」は、大分類「購買行動系」を識別するための識別情報を示す。
「小分類」、検索クエリが分類されるカテゴリの小分類を示す。「小分類ID」は、小分類を識別するための識別情報を示す。図7に示す例では、小分類「飲食店を探す」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって飲食店を探す意図で入力された検索クエリであることを示す。小分類ID「CAT11」は、小分類「飲食店を探す」を識別するための識別情報を示す。
小分類「商品を探す」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって商品を探す意図で入力された検索クエリであることを示す。小分類ID「CAT12」は、小分類「商品を探す」を識別するための識別情報を示す。
小分類「飲食店を予約」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって飲食店を予約する意図で入力された検索クエリであることを示す。小分類ID「CAT13」は、小分類「飲食店を予約」を識別するための識別情報を示す。
小分類「商品を購入」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって商品を購入する意図で入力された検索クエリであることを示す。小分類ID「CAT14」は、小分類「商品を購入」を識別するための識別情報を示す。
(モデル情報記憶部124)
モデル情報記憶部124は、情報処理装置100によって生成された学習モデルに関する各種の情報を記憶する。図8に、実施形態に係るモデル情報記憶部の一例を示す。図8に示す例では、モデル情報記憶部124は、「モデルID」、「モデルデータ」といった項目を有する。
「モデルID」は、情報処理装置100によって生成された学習モデルを識別するための識別情報を示す。「モデルデータ」は、情報処理装置100によって生成された学習モデルのモデルデータを示す。例えば、「モデルデータ」には、検索クエリを分散表現に変換するためのデータが格納される。
図8の1レコード目に示す例では、モデルID「M1」で識別される学習モデルは、第1モデルM1に対応する。また、モデルデータ「MDT1」は、情報処理装置100によって生成された第1モデルM1のモデルデータ(モデルデータMDT1)を示す。なお、第1モデルM1の生成処理の詳細については、後述する。
モデルデータMDT1は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリの分散表現を出力層から出力するよう、情報処理装置100を機能させてもよい。
ここで、モデルデータ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要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
情報処理装置100は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、分散表現の算出を行う。具体的には、モデルデータMDT1は、検索クエリが入力された場合に、分散表現を出力するように係数が設定される。情報処理装置100は、このようなモデルデータMDT1を用いて、分散表現を算出する。
なお、上記例では、モデルデータMDT1が、検索クエリが入力された場合に、検索クエリの分散表現を出力するモデル(以下、モデルX1という。)である例を示した。しかし、実施形態に係るモデルデータMDT1は、モデルX1にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT1は、検索クエリを入力とし、モデルX1が出力する分散表現を出力とするよう学習されたモデル(以下、モデルY1という。)であってもよい。または、モデルデータMDT1は、検索クエリを入力とし、モデルY1の出力値を出力とするよう学習されたモデルであってもよい。
また、情報処理装置100がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT1は、GANの一部を構成するモデルであってもよい。
図8の2レコード目に示す例では、モデルID「M2」で識別される学習モデルは、図1に示した第2モデルM2に対応する。また、モデルデータ「MDT2」は、情報処理装置100によって生成された第2モデルM2のモデルデータ(モデルデータMDT2)を示す。なお、第2モデルM2の生成処理の詳細については、後述する。
モデルデータMDT2は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリが各カテゴリに属する確率を出力層から出力するよう、情報処理装置100を機能させてもよい。
ここで、モデルデータMDT2が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、モデルデータMDT2が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
また、モデルデータMDT2がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、モデルデータMDT2が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
情報処理装置100は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、検索クエリが各カテゴリに属する確率の算出を行う。具体的には、モデルデータMDT2は、検索クエリが入力された場合に、検索クエリが各カテゴリに属する確率を出力するように係数が設定される。情報処理装置100は、このようなモデルデータMDT2を用いて、検索クエリが各カテゴリに属する確率を算出する。
なお、上記例では、モデルデータMDT2が、検索クエリが入力された場合に、検索クエリが各カテゴリに属する確率を出力するモデル(以下、モデルX2という。)である例を示した。しかし、実施形態に係るモデルデータMDT2は、モデルX2にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT2は、検索クエリを入力とし、モデルX2が出力する確率を出力とするよう学習されたモデル(以下、モデルY2という。)であってもよい。または、モデルデータMDT2は、検索クエリを入力とし、モデルY2の出力値を出力とするよう学習されたモデルであってもよい。
また、情報処理装置100がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT2は、GANの一部を構成するモデルであってもよい。
(経過情報記憶部125)
図9に、実施形態に係る経過情報記憶部の一例を示す。図9に示す例では、経過情報記憶部125は、「文字群」、「経過情報」、「日時」といった項目を有する。
「文字群」は、第1入力情報に含まれる所定の区切り文字で区切られた文字群を示す。「経過情報」は、第1入力情報に含まれる所定の区切り文字で区切られた文字群毎に対応する予測処理の途中経過に関する情報である経過情報を示す。具体的には、「経過情報」は、第2学習モデルM2の内部状態に関する情報を示す。より具体的には、「経過情報」は、第2学習モデルM2のアクティベーション(activation)に関する情報を示す。例えば、「経過情報」は、第2学習モデルM2を構成する各層(各LSTM層)の中間的な計算結果に関する情報を示す。図1に示す例では、「経過情報」は、第2学習モデルM2を構成する3層のLSTM層の各層(各LSTM層)の中間的な計算結果に関する情報を示す。「日時」は、文字群に対応する経過情報が記憶された日時を示す。
図9の1レコード目に示す例では、文字群「六本木□」は、図1に示した文字群「六本木□」に対応する。また、経過情報「CDT11」は、文字群「六本木□」に対応する予測処理の途中経過に関する情報である経過情報を示す。また、日時「日時#11」は、文字群「六本木□」に対応する経過情報「CDT11」が記憶された日時が「日時#11」であることを示す。
(制御部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を有し、以下に説明する情報処理の作用を実現または実行する。なお、制御部130の内部構成は、図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、種々の情報を取得する。具体的には、取得部131は、ユーザによって入力された検索クエリに関する情報を検索サーバ50から取得する。取得部131は、ユーザによって入力された検索クエリに関する情報を取得すると、取得した検索クエリに関する情報をクエリ情報記憶部121に格納する。
また、取得部131は、検索クエリと検索クエリが属するカテゴリに関する正解データであるカテゴリ情報を取得する。例えば、取得部131は、情報処理装置100の管理者によってあらかじめ用意されたカテゴリ情報を取得する。取得部131は、カテゴリ情報を取得すると、取得したカテゴリ情報をカテゴリ情報記憶部122に格納する。
あるいは、取得部131は、検索クエリと検索クエリが属するカテゴリに関する正解データを生成してもよい。具体的には、取得部131は、検索クエリを検索したユーザの検索後の行動に基づいて、検索クエリが属する正解カテゴリを決定する。より具体的には、取得部131は、所定の検索クエリを検索したユーザによる所定の検索クエリの検索後の検索履歴に関する情報を検索サーバ50から取得する。続いて、取得部131は、所定の検索クエリの検索後の検索履歴に関する情報に基づいて、検索後に所定の行動を起こしたユーザの割合を算出する。続いて、取得部131は、所定の検索クエリを検索したユーザに対して、検索後に所定の行動を起こしたユーザの割合が所定の閾値を超える所定の行動を、正解カテゴリに対応する行動として決定する。例えば、検索クエリQ11(「六本木 パスタ」)を検索したユーザが検索後に所定の行動を起こしたユーザの割合として、飲食店を探す行動を起こしたユーザの割合が90%、検索後に商品を探す行動を起こしたユーザの割合が0%、検索後に飲食店を予約する行動を起こしたユーザの割合が10%、検索後に商品を購入する行動を起こしたユーザの割合が0%であったとする。この場合、取得部131は、飲食店を探す行動を起こしたユーザの割合が所定の閾値(例えば、90%)を超えるため、飲食店を探す行動を検索クエリQ11(「六本木 パスタ」)の正解カテゴリに対応する行動として決定する。そして、取得部131は、飲食店を探す行動を正解カテゴリに対応する行動として決定したので、検索クエリQ11(「六本木 パスタ」)が属する正解カテゴリをCAT11(「飲食店を探す」)に決定する。このようにして、取得部131は、検索クエリと検索クエリが属するカテゴリに関する正解データを生成する。そして、取得部131は、生成した正解データを取得する。取得部131は、カテゴリ情報を取得すると、取得したカテゴリ情報をカテゴリ情報記憶部122に格納する。
また、取得部131は、検索クエリと検索クエリが属するカテゴリの分類を定義する分類定義情報を取得する。例えば、取得部131は、情報処理装置100の管理者によってあらかじめ用意された分類定義情報を取得する。取得部131は、分類定義情報を取得すると、取得した分類定義情報を分類定義記憶部123に格納する。
また、取得部131は、生成部133によって生成された第1学習モデル(モデルデータMDT1)を取得する。具体的には、取得部131は、モデル情報記憶部124を参照して、生成部133によって生成された第1学習モデルを取得する。
また、取得部131は、生成部133によって生成された第2学習モデル(モデルデータMDT2)を取得する。具体的には、取得部131は、モデル情報記憶部124を参照して、生成部133によって生成された第2学習モデルを取得する。
また、取得部131は、予測部134が第2入力情報から第2入力情報の特徴を示す第2特徴情報を予測する予測処理に用いる情報として、予測部134による第1特徴情報の予測処理の途中経過に関する情報である経過情報を取得する。具体的には、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルの内部状態に関する情報である経過情報を取得する。より具体的には、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルのアクティベーション(activation)に関する情報を取得する。取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを構成する各層(各LSTM層)の中間的な計算結果に関する情報を取得する。図1に示す例では、取得部131は、第2学習モデルM2を構成する3層のLSTM層の各層(各LSTM層)の中間的な計算結果に関する情報を取得する。例えば、取得部131は、第1検索クエリ「六本木 パスタ」が所定の区切り文字であるスペース(以下、スペースを適宜記号「□」で記載する。)を含むか否かを判定する。続いて、取得部131は、第1検索クエリ「六本木 パスタ」が所定の区切り文字であるスペースを含むと判定すると、地名を示す「六本木」と区切り文字であるスペースからなる文字群「六本木□」に対応する経過情報を取得する。具体的には、取得部131は、文字群「六本木□」に対応する経過情報として、処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報を取得する。より具体的には、取得部131は、文字群「六本木□」に対応する経過情報として、処理ステップ「ステップ4」における第2学習モデルM2のアクティベーション(activation)に関する情報を取得する。すなわち、取得部131は、処理ステップ「ステップ4」における第2学習モデルM2を構成する各層の中間的な計算結果に関する情報を取得する。図1に示す例では、取得部131は、処理ステップ「ステップ4」における第2学習モデルM2を構成する3層のLSTM層の各層(各LSTM層)の中間的な計算結果であるベクトル(例えば、2048次元のベクトル)の値を3セット分(3層分)取得する。続いて、取得部131は、経過情報を取得すると、取得した経過情報を経過情報記憶部125に記憶する。
また、取得部131は、スペース等の所定の区切り文字に限られず、検索クエリをどこで区切り、第2学習モデルM2の内部状態に関する情報をどのような単位で取得してもよい。具体的には、取得部131は、第1検索クエリが一定のルール(又は一定の手順)で区分できるか否かを判定する。例えば、取得部131は、形態素解析を用いて第1検索クエリが区分できるか否かを判定する。また、例えば、取得部131は、BPE(Byte pair encoding)を用いて第1検索クエリが区分できるか否かを判定する。続いて、取得部131は、第1検索クエリが一定のルール(又は一定の手順)で区分できると判定した場合、第1検索クエリを一定のルール(又は一定の手順)で区分した単位ごとに第2学習モデルM2の内部状態に関する情報を取得する。例えば、取得部131は、形態素解析を用いて第1検索クエリを区分できると判定した場合、形態素解析を用いて第1検索クエリを区分した単位ごとに第2学習モデルM2の内部状態に関する情報を取得する。また、例えば、取得部131は、BPEを用いて第1検索クエリを区分できると判定した場合、BPEを用いて第1検索クエリを区分した単位ごとに第2学習モデルM2の内部状態に関する情報を取得する。続いて、取得部131は、第2学習モデルM2の内部状態に関する情報を取得すると、取得した第2学習モデルM2の内部状態に関する情報を文字群と対応付けて経過情報記憶部125に記憶する。
取得部131は、処理単位毎の情報である単位情報を複数含む第1入力情報に含まれる単位情報が、予測部134によって順次処理されることにより行われる予測処理の経過情報を取得する。より具体的には、取得部131は、単位情報を複数含む第1入力情報に含まれる所定の単位情報で区切られた単位情報群毎に経過情報を取得する。例えば、取得部131は、複数の文字を含む第1検索クエリに含まれる所定の区切り文字で区切られた文字群毎に第1検索クエリのカテゴリを予測する予測処理の途中経過に関する情報である経過情報を取得する。続いて、取得部131は、経過情報を取得すると、取得した経過情報を文字群と対応付けて経過情報記憶部125に記憶する。
また、取得部131は、第1入力情報に含まれる所定数の単位情報毎に経過情報を取得する。例えば、取得部131は、単位情報である文字を含む第1入力情報に含まれる所定数の文字毎に第1特徴情報の予測処理の途中経過に関する情報を取得する。例えば、取得部131は、複数の文字を含む第1検索クエリに含まれる文字毎に第1検索クエリのカテゴリを予測する予測処理の途中経過に関する情報である経過情報を取得する。続いて、取得部131は、経過情報を取得すると、取得した経過情報を文字と対応付けて経過情報記憶部125に記憶する。
(抽出部132)
抽出部132は、種々の情報を抽出する。具体的には、抽出部132は、取得部131によって取得された検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリを抽出する。例えば、抽出部132は、同一のユーザによって各検索クエリが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。続いて、抽出部132は、同一のユーザによって所定の時間内に入力された複数の検索クエリのうち、同一のユーザによって所定の時間内に連続して入力された一対の検索クエリを抽出する。例えば、抽出部132は、同一のユーザによって各検索クエリのペアが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。例えば、抽出部132は、取得部131によって取得された検索クエリのうち、同一のユーザU1によって所定の時間内に連続して入力された4個の検索クエリである検索クエリQ11(「六本木 パスタ」)、検索クエリQ12(「六本木 イタリアン」)、検索クエリQ13(「赤坂 パスタ」)、検索クエリQ14(「麻布 パスタ」)を抽出する。抽出部132は、検索クエリが入力された順番に並べると、検索クエリQ11、検索クエリQ12、検索クエリQ13、検索クエリQ14の順番で入力された4個の検索クエリを抽出する。続いて、抽出部132は、4個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、3対の検索クエリのペアである(検索クエリQ11、検索クエリQ12)、(検索クエリQ12、検索クエリQ13)、(検索クエリQ13、検索クエリQ14)を抽出する。なお、抽出部132は、同一のユーザによって全ての検索クエリが所定の時間内に入力された複数の検索クエリを抽出してもよい。そして、抽出部132は、時系列的に隣り合うか否かに関わらず、抽出した複数の検索クエリの中から2つの検索クエリを選択して、選択した2つの検索クエリを一対の検索クエリとして抽出してもよい。
また、抽出部132は、取得部131によって取得された検索クエリのうち、所定の検索クエリと所定の検索クエリに無関係な他の検索クエリとを抽出する。例えば、抽出部132は、取得部131によって取得された検索クエリの中から、所定の検索クエリを抽出する。続いて、抽出部132は、取得部131によって取得された検索クエリの中から、所定の検索クエリとは無関係にランダムに他の検索クエリを抽出する。
(生成部133)
生成部133は、種々の情報を生成する。具体的には、生成部133は、取得部131によって取得された検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する。具体的には、生成部133は、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現が類似するように学習モデルを学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する。例えば、生成部133は、所定の時間内に続けて入力された一対の検索クエリの分散表現が類似するように学習することで、学習モデルを生成する。例えば、生成部133は、一対の検索クエリの学習前の分散表現(ベクトル)の類似度の値を算出する。また、生成部133は、一対の検索クエリの学習後の分散表現(ベクトル)の類似度の値を算出する。続いて、生成部133は、学習前の分散表現(ベクトル)の類似度の値よりも、学習後の分散表現(ベクトル)の類似度の値が大きくなるように学習モデルを学習させる。このように、生成部133は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように学習モデルを学習させることで、検索クエリから分散表現(ベクトル)を出力する学習モデルを生成する。より具体的には、生成部133は、RNNの一種であるLSTMを分散表現生成に用いたDSSMの技術を用いて、検索クエリから分散表現(ベクトル)を出力する学習モデルを生成する。例えば、生成部133は、学習モデルの正解データとして、同一のユーザによって所定の時間内に入力された一対の検索クエリが類似する特徴を有するものとして、所定の検索クエリの分散表現(ベクトル)と、所定の検索クエリと対となる他の検索クエリの分散表現(ベクトル)とが、分散表現空間上で近くに存在するように学習する。また、生成部133は、第1学習モデルを生成すると、第1学習モデルを識別する識別情報と対応付けて、生成した第1学習モデル(モデルデータMDT1)をモデル情報記憶部124に格納する。
〔第1学習モデルの生成処理の一例〕
ここで、図10を用いて、第1学習モデルの生成処理の流れについて説明する。図10は、実施形態に係る第1学習モデルの生成処理の一例を示す図である。図10に示す例では、抽出部132は、同一のユーザU1によって所定の時間内に連続して入力された「六本木 パスタ」という検索クエリQ11と「六本木 イタリアン」という検索クエリQ12とから成る一対の検索クエリを抽出する(ステップS11)。
続いて、生成部133は、抽出部132によって抽出された検索クエリQ11を第1モデルM1に入力して、検索クエリQ11の分散表現であるベクトルBQV11を第1モデルM1から出力する。ここで、ベクトルBQV11は、第1モデルM1の出力層から出力されたばかりの検索クエリQ11の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す。また、生成部133は、抽出部132によって抽出された検索クエリQ12を第1モデルM1に入力して、検索クエリQ12の分散表現であるベクトルBQV12を第1モデルM1から出力する。ここで、ベクトルBQV12は、第1モデルM1の出力層から出力されたばかりの検索クエリQ12の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す。このようにして、生成部133は、検索クエリQ11の分散表現であるベクトルBQV11と、検索クエリQ12の分散表現であるベクトルBQV12とを出力する(ステップS12)。
続いて、生成部133は、同一のユーザU1によって所定の時間内に連続して入力された検索クエリQ11(「六本木 パスタ」)と検索クエリQ12(「六本木 イタリアン」)とから成る一対の検索クエリは、所定の検索意図(例えば、「ある場所で飲食店を探す」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、類似するように第1モデルM1を学習させる。例えば、第1モデルM1にフィードバックをかける前(学習前)の検索クエリQ11の分散表現であるベクトルBQV11と検索クエリQ12の分散表現であるベクトルBQV12とのなす角度の大きさをΘとする。また、第1モデルM1にフィードバックをかけた後(学習後)の検索クエリQ11の分散表現であるベクトルQV11と検索クエリQ12の分散表現であるベクトルQV12とのなす角度の大きさをΦとする。この時、生成部133は、ΘよりもΦが小さくなるように、第1モデルM1を学習させる。例えば、生成部133は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値を算出する。また、生成部133は、ベクトルQV11とベクトルQV12のコサイン類似度の値を算出する。続いて、生成部133は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値よりも、ベクトルQV11とベクトルQV12のコサイン類似度の値が大きくなるように(値が1に近づくように)第1モデルM1を学習させる。このように、生成部133は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが類似するように第1モデルM1を学習させることで、検索クエリから分散表現(ベクトル)を出力する第1モデルM1を生成する(ステップS13)。なお、生成部133は、コサイン類似度に限らず、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて分散表現(ベクトル)の間の類似度を算出してもよい。また、生成部133は、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて第1モデルM1を学習させてもよい。例えば、生成部133は、分散表現(ベクトル)同士のユークリッド距離や双曲空間等の非ユークリッド空間中での距離、マンハッタン距離、マハラノビス距離等といった所定の距離関数の値を算出する。続いて、生成部133は、分散表現(ベクトル)同士の所定の距離関数の値(すなわち、分散表現空間における距離)が小さくなるように第1モデルM1を学習させてもよい。
次に、図11を用いて、第1学習モデルの生成処理の流れについてより詳しく説明する。なお、図11の説明では、図10の説明と重複する部分は、適宜省略する。図11は、実施形態に係る第1学習モデルの生成処理を示す図である。図11に示す例では、情報処理装置100が生成した第1モデルM1によって出力された分散表現(ベクトル)が分散表現空間にマッピングされる様子が示されている。情報処理装置100は、所定の検索クエリの分散表現と所定の検索クエリと対となる他の検索クエリの分散表現とが分散表現空間上で近くにマッピングされるように第1モデルM1のトレーニングを行う。
図11の上段に示す例では、抽出部132は、同一のユーザU1によって所定の時間内に連続して入力された4個の検索クエリである検索クエリQ11(「六本木 パスタ」)、検索クエリQ12(「六本木 イタリアン」)、検索クエリQ13(「赤坂 パスタ」)、検索クエリQ14(「麻布 パスタ」)を抽出する。抽出部132は、同一のユーザU1によって各検索クエリが入力された時間の間隔が所定の時間内である4個の検索クエリを抽出する。抽出部132は、同一のユーザU1によって後述する各検索クエリのペアが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。抽出部132は、検索クエリが入力された順番に並べると、検索クエリQ11、検索クエリQ12、検索クエリQ13、検索クエリQ14の順番で入力された4個の検索クエリを抽出する。抽出部132は、4個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、3対の検索クエリのペアである(検索クエリQ11、検索クエリQ12)、(検索クエリQ12、検索クエリQ13)、(検索クエリQ13、検索クエリQ14)を抽出する(ステップS21-1)。なお、抽出部132は、同一のユーザU1によって全ての検索クエリが所定の時間内に入力された複数の検索クエリを抽出してもよい。そして、抽出部132は、時系列的に隣り合うか否かに関わらず、抽出した複数の検索クエリの中から2つの検索クエリを選択して、選択した2つの検索クエリを一対の検索クエリとして抽出してもよい。
続いて、生成部133は、抽出部132によって抽出された検索クエリQ1k(k=1、2、3、4)を第1モデルM1に入力して、検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルBQV1k(k=1、2、3、4)を第1モデルM1から出力する。ここで、ベクトルBQV1k(k=1、2、3、4)は、第1モデルM1の出力層から出力されたばかりの検索クエリQ1k(k=1、2、3、4)の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す(ステップS22-1)。
続いて、生成部133は、同一のユーザU1によって所定の時間内に連続して入力された一対の検索クエリは、所定の検索意図(例えば、「ある場所(東京都港区付近)で飲食店を探す」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、類似するように第1モデルM1を学習させる。また、生成部133は、検索クエリQ12の分散表現(ベクトルQV12)と、検索クエリQ12と対となる検索クエリQ13の分散表現(ベクトルQV13)とが、類似するように第1モデルM1を学習させる。また、生成部133は、検索クエリQ13の分散表現(ベクトルQV13)と、検索クエリQ13と対となる検索クエリQ14の分散表現(ベクトルQV14)とが、類似するように第1モデルM1を学習させる。このように、生成部133は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが類似するように第1モデルM1を学習させることで、検索クエリから分散表現(ベクトル)を出力する第1モデルM1を生成する(ステップS23-1)。
図11の上段に示す情報処理の結果として、検索クエリ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)は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。ここで、情報処理装置100は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図で入力された所定の検索クエリが第1モデルに入力されると、クラスタCL11の位置にマッピングされるような分散表現を出力することができる。これにより、例えば、情報処理装置100は、クラスタCL11の位置にマッピングされる分散表現に対応する検索クエリを抽出することにより、「ある場所(東京都港区付近)で飲食店を探す」という検索意図に応じた検索クエリを抽出することができる。したがって、情報処理装置100は、検索クエリの意味を適切に解釈可能とすることができる。
図11の下段に示す例では、抽出部132は、同一のユーザU2によって所定の時間内に連続して入力された3個の検索クエリである検索クエリQ21(「冷蔵庫 400L」)、検索クエリQ22(「冷蔵庫 中型」)、検索クエリQ23(「冷蔵庫 中型 おすすめ」)を抽出する。抽出部132は、検索クエリが入力された順番に並べると、検索クエリQ21、検索クエリQ22、検索クエリQ23の順番で入力された3個の検索クエリを抽出する。抽出部132は、3個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、2対の検索クエリのペアである(検索クエリQ21、検索クエリQ22)、(検索クエリQ22、検索クエリQ23)を抽出する(ステップS21-2)。
続いて、生成部133は、抽出部132によって抽出された検索クエリQ2m(m=1、2、3)を第1モデルM1に入力して、検索クエリQ2m(m=1、2、3)の分散表現であるベクトルBQV2m(m=1、2、3)を第1モデルM1から出力する。ここで、ベクトルBQV2m(m=1、2、3)は、第1モデルM1の出力層から出力されたばかりの検索クエリQ2m(m=1、2、3)の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す(ステップS22-2)。
続いて、生成部133は、同一のユーザU2によって所定の時間内に連続して入力された一対の検索クエリは、所定の検索意図(例えば、「中型の冷蔵庫を調べる」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ21の分散表現(ベクトルQV21)と、検索クエリQ21と対となる検索クエリQ22の分散表現(ベクトルQV22)とが、類似するように第1モデルM1を学習させる。また、生成部133は、検索クエリQ22の分散表現(ベクトルQV22)と、検索クエリQ22と対となる検索クエリQ23の分散表現(ベクトルQV23)とが、類似するように第1モデルM1を学習させる。このように、生成部133は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが類似するように第1モデルM1を学習させることで、検索クエリから分散表現(ベクトル)を出力する第1モデルM1を生成する(ステップS23-2)。
図11の下段に示す情報処理の結果として、検索クエリQ2m(m=1、2、3)の分散表現であるベクトルQV2m(m=1、2、3)が分散表現空間の近い位置にクラスタCL21としてマッピングされる様子が示されている。例えば、検索クエリQ2m(m=1、2、3)は、ユーザU2によって「中型の冷蔵庫を調べる」という検索意図の下で検索された検索クエリの集合であると推定される。すなわち、Q2m(m=1、2、3)は、「中型の冷蔵庫を調べる」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。ここで、情報処理装置100は、「中型の冷蔵庫を調べる」という検索意図で入力された所定の検索クエリが第1モデルに入力されると、クラスタCL21の位置にマッピングされるような分散表現を出力することができる。これにより、例えば、情報処理装置100は、クラスタCL21の位置にマッピングされる分散表現に対応する検索クエリを抽出することにより、「中型の冷蔵庫を調べる」という検索意図に応じた検索クエリを抽出することができる。したがって、情報処理装置100は、検索クエリの意味を適切に解釈可能とすることができる。
また、生成部133は、ランダムに抽出された複数の検索クエリは、異なる検索意図の下で検索された検索クエリであるという点で、相互に相違する特徴を有する検索クエリであるとみなして第1モデルM1を学習させる。具体的には、生成部133は、所定の検索クエリの分散表現と、所定の検索クエリとは無関係にランダムに抽出された検索クエリの分散表現とが相違するように(例えば、分散表現空間上で遠くにマッピングされるように)第1モデルM1のトレーニングを行う。図11に示す例では、抽出部132は、検索クエリQ11とは無関係にランダムに検索クエリを抽出したところ、検索クエリQ21を抽出したとする。この場合、生成部133は、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11とは無関係にランダムに抽出された検索クエリQ21の分散表現(ベクトルQV21)とが相違するように第1モデル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とは、分散表現空間上で遠くにマッピングされる。すなわち、本願発明に係る情報処理装置100は、ランダムに抽出された複数の検索クエリの分散表現が相違するように第1モデルM1を学習させることにより、検索意図が異なる検索クエリの分散表現を分散表現空間上で遠い位置に出力可能とする。
なお、情報処理装置100が生成した第1モデルM1によって出力された分散表現(ベクトル)が分散表現空間にマッピングされた結果として、上述したクラスタCL11とクラスタCL21の他にも、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現(ベクトル)の集合であるクラスタCL12やクラスタCL22が生成される。
上述したように、情報処理装置100は、ユーザによって入力された検索クエリを取得する。また、情報処理装置100は、取得した検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する第1モデルを生成する。すなわち、本願発明に係る情報処理装置100は、所定の時間内に連続して入力された複数の検索クエリは、所定の検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであるとみなして第1モデルを学習させる。具体的には、情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現が類似するように第1モデルを学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を含む分散表現を出力する第1モデルを生成する。すなわち、本願発明に係る情報処理装置100は、所定の時間内に連続して入力された複数の検索クエリの分散表現が類似するように第1モデルM1を学習させることにより、所定の検索意図の下で検索された検索クエリの分散表現を分散表現空間上で近い位置に出力可能とする。これにより、情報処理装置100は、検索クエリを入力したユーザのコンテクストに応じて検索クエリの意味(検索意図)を出力(解釈)することを可能にする。したがって、情報処理装置100は、検索クエリの意味を適切に解釈可能とすることができる。さらに、情報処理装置100は、所定の検索クエリの特徴情報を含む分散表現の近傍にマッピングされる分散表現に対応する検索クエリを抽出することにより、所定の検索クエリが検索された検索意図に応じた検索クエリを抽出することができる。すなわち、情報処理装置100は、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、ユーザの検索動向を分析することを可能にする。したがって、情報処理装置100は、ユーザの検索動向の分析精度を高めることができる。
また、情報処理装置100が生成した第1モデルM1を検索システムの一部として機能させることもできる。あるいは、情報処理装置100は、第1モデルM1によって予測された検索クエリの特徴情報を利用する他のシステム(例えば、検索エンジン)への入力情報として、第1モデルM1が出力した検索クエリの分散表現を提供することもできる。これにより、検索システムは、第1モデルM1によって予測された検索クエリの特徴情報に基づいて、検索結果として出力されるコンテンツを選択可能になる。すなわち、検索システムは、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、検索結果として出力されるコンテンツを選択可能になる。さらに、検索システムは、第1モデルM1によって予測された検索クエリの特徴情報に基づいて、検索結果として出力されるコンテンツに含まれる文字群の分散表現と検索クエリの分散表現との類似度を算出可能になる。そして、検索システムは、算出した類似度に基づいて、検索結果として出力されるコンテンツの表示順を決定可能になる。すなわち、検索システムは、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、検索結果として出力されるコンテンツの表示順を決定可能になる。したがって、情報処理装置100は、検索サービスにおけるユーザビリティを向上させることができる。
〔第2学習モデルの生成処理の一例〕
次に、図12を用いて、第2学習モデルの生成処理の流れについて説明する。図12は、実施形態に係る第2学習モデルの生成処理の一例を示す図である。なお、以下では、適宜、第2学習モデルを第2モデル(又は、第2モデルM2)と記載する。図12の上段に示す例では、抽出部132は、同一のユーザU1によって所定の時間内に連続して入力された4個の検索クエリである検索クエリQ11(「六本木 パスタ」)、検索クエリQ12(「六本木 イタリアン」)、検索クエリQ13(「赤坂 パスタ」)、検索クエリQ14(「麻布 パスタ」)を抽出する。抽出部132は、同一のユーザU1によって各検索クエリが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。また、抽出部132は、同一のユーザU1によって各検索クエリのペアが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。ここで、4個の検索クエリは、検索クエリQ11、検索クエリQ12、検索クエリQ13、検索クエリQ14の順番でユーザU1によって各検索クエリが所定の時間内に入力された検索クエリであるとする。抽出部132は、4個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、3対の検索クエリのペアである(検索クエリQ11、検索クエリQ12)、(検索クエリQ12、検索クエリQ13)、(検索クエリQ13、検索クエリQ14)を抽出する。生成部133は、抽出部132によって3対の検索クエリのペアが抽出されると、抽出した検索クエリQ1k(k=1、2、3、4)を第1モデルM1に入力する(ステップS31)。なお、抽出部132は、同一のユーザU1によって全ての検索クエリが所定の時間内に入力された複数の検索クエリを抽出してもよい。そして、抽出部132は、時系列的に隣り合うか否かに関わらず、抽出した複数の検索クエリの中から2つの検索クエリを選択して、選択した2つの検索クエリを一対の検索クエリとして抽出してもよい。
続いて、生成部133は、検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルBQV1k(k=1、2、3、4)を第1モデルM1の出力データとして出力する(ステップS32)。ここで、ベクトルBQV1k(k=1、2、3、4)は、第1モデルM1の出力層から出力されたばかりの検索クエリQ1k(k=1、2、3、4)の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す。
ここで、同一のユーザU1によって所定の時間内に連続して入力された検索クエリQ1k(k=1、2、3、4)は、例えば、ユーザU1によって「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリの集合であると推定される。すなわち、検索クエリQ1k(k=1、2、3、4)は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。そこで、生成部133は、連続して入力された検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する第1モデルを生成する(ステップS33)。具体的には、生成部133は、連続して入力された検索クエリの分散表現が類似するものとして学習することで、所定の検索クエリから所定の検索クエリの分散表現を予測する第1モデルM1を生成する。例えば、生成部133は、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、分散表現空間上で類似するように第1モデルM1を学習させる。また、生成部133は、検索クエリQ12の分散表現(ベクトルQV12)と、検索クエリQ12と対となる検索クエリQ13の分散表現(ベクトルQV13)とが、分散表現空間上で類似するように第1モデルM1を学習させる。また、生成部133は、検索クエリQ13の分散表現(ベクトルQV13)と、検索クエリQ13と対となる検索クエリQ14の分散表現(ベクトルQV14)とが、分散表現空間上で類似するように第1モデルM1を学習させる。
図12の上段の右側には、学習済みの第1モデルM1の出力結果として、同一のユーザU1によって所定の時間内に入力された検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルQV1k(k=1、2、3、4)が分散表現空間のクラスタCL11としてマッピングされる様子が示されている。このように、生成部133は、同一のユーザによって所定の時間内に入力された複数の検索クエリが有する特徴を学習した第1学習モデルM1を生成する。
生成部133は、第1モデルM1を生成すると、生成した第1モデルM1(第1モデルM1のモデルデータMDT1)を取得する。生成部133は、第1モデルM1を取得すると、取得した第1モデルM1を用いて、第2学習モデルM2を生成する。具体的には、生成部133は、第1モデルM1を再学習させることにより、第1モデルM1とは学習モデルの重みである接続係数が異なる第2モデルM2を生成する。より具体的には、生成部133は、第1モデルM1を用いて、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルM2を生成する(ステップS34)。
図12の下段に示す例では、生成部133は、検索クエリが第2モデルM2に入力された際に、CAT11(「飲食店を探す」)、CAT12(「商品を探す」)、CAT13(「飲食店を予約する」)、CAT14(「商品を購入する」)の4つのカテゴリのいずれのカテゴリに属するかを予測する第2モデルM2を生成する。具体的には、生成部133は、入力情報として検索クエリが第2モデルM2に入力された際に、出力情報として検索クエリがそのカテゴリに属する確率をカテゴリ毎に出力する第2モデルM2を生成する。例えば、生成部133は、第2モデルM2の正解データとして、検索クエリと検索クエリが属するカテゴリ(CAT11~CAT14のいずれか)との組を学習する。
なお、検索クエリがCAT11(「飲食店を探す」)に属することは、検索クエリが飲食店を探す意図で入力された検索クエリであることを示す。また、CAT12(「商品を探す」)に属することは、検索クエリが商品を探す意図で入力された検索クエリであることを示す。また、検索クエリがCAT13(「飲食店を予約する」)に属することは、検索クエリが飲食店を予約する意図で入力された検索クエリであることを示す。また、検索クエリがCAT14(「商品を購入する」)に属することは、検索クエリが商品を購入する意図で入力された検索クエリであることを示す。
具体的には、生成部133は、検索クエリが学習モデルに入力された際に、学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2モデルM2を生成する。そして、生成部133は、例えば、入力情報として検索クエリが第2モデルM2に入力された際に、出力情報として検索クエリがそのカテゴリに属する確率をカテゴリCAT11~CAT14毎に出力する第2モデルM2を生成する。
例えば、生成部133は、入力情報として検索クエリQ11(「六本木 パスタ」)が第2モデルM2に入力された際に(ステップS35)、出力情報として検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11を第2モデルM2から出力する。ここで、ベクトルBQV11は、第2モデルM2の出力層から出力されたばかりの検索クエリQ11の分散表現であって、第2モデルM2にフィードバックをかける前(学習前)の分散表現を示す。ここで、検索クエリQ11(「六本木 パスタ」)が属する正解カテゴリがCAT11(「飲食店を探す」)であるとする。この場合、生成部133は、出力された検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率が所定の閾値を超えるように第2モデルM2を学習させる。なお、生成部133は、あらかじめ用意された正解データを用いて第2モデルを学習させる。あるいは、生成部133は、取得部131によって生成された第2モデルM2の正解データを用いて第2モデルM2を学習させてもよい。
例えば、生成部133は、学習前の第2モデルM2に検索クエリQ11(「六本木 パスタ」)が入力された際に、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を80%、CAT12(「商品を探す」)に分類される確率を0%、CAT13(「飲食店を予約」)に分類される確率を20%、CAT14(「商品を購入する」)に分類される確率を0%と出力したとする。この場合、生成部133は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を所定の閾値(例えば、90%)を超えるように第2モデルM2を学習させる。また、生成部133は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率が所定の閾値(例えば、90%)を超えるように学習させるのに合わせて、分散表現であるベクトルBQV11が他のカテゴリCAT13(「飲食店を予約」)に分類される確率を10%に下げるように第2モデルM2を学習させる。
このように、生成部133は、入力情報として所定の検索クエリが入力されると、出力情報として所定の検索クエリの分散表現が正解カテゴリに分類される確率が所定の閾値を超えるように第2モデルを学習させる。そして、生成部133は、入力情報として所定の検索クエリが入力された際に、所定の検索クエリの分散表現がそのカテゴリに属する確率が所定の閾値を超えるカテゴリを、所定の検索クエリのカテゴリとして出力する。例えば、生成部133は、学習済みの第2モデルM2に入力情報として検索クエリQ11(「六本木 パスタ」)が入力されると、検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11がカテゴリCAT11(「飲食店を探す」)に属する確率が90%を超えるので、出力情報として検索クエリが属するカテゴリをCAT11(「飲食店を探す」)と出力する(ステップS36)。このように、生成部133は、検索クエリと検索クエリの正解カテゴリとの組を学習することで、所定の検索クエリから所定の検索クエリのカテゴリを予測する第2モデルを生成する(ステップS37)。
一般的に、ユーザはある意図を持って検索を複数回行うと考えられるため、所定の時間内に連続して入力された検索クエリは、検索意図が近いという仮定が成り立つ。そこで、本願発明に係る情報処理装置100は、所定の時間内に連続して入力された複数の検索クエリは、所定の検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであるとみなして第1モデルM1を学習させる。これにより、情報処理装置100は、検索意図を考慮した検索クエリの特徴を第1モデルM1に学習させることができる。そして、情報処理装置100は、検索意図を考慮した検索クエリの特徴を学習した第1モデルM1を活用して、所定の検索クエリから所定の検索クエリのカテゴリを予測する第2モデルを効率的に生成することができる。これにより、情報処理装置100は、検索クエリを入力したユーザの検索意図を考慮したカテゴリに検索クエリを分類することを可能にする。また、従来、検索クエリをカテゴリに分類し、高い分類精度を得るためには、十分な量の正解データを用意することが必要であった。しかしながら、検索クエリ自体、多種多様であり、ロングテイルな性質を持つものであるため、多数の検索クエリに対応する正解カテゴリをラベル付けするのは、非常に手間がかかり困難である。ここで、情報処理装置100は、正解カテゴリをラベル付けする代わりに、ユーザの検索意図(検索クエリを入力したユーザのコンテクスト)を一種の正解として、検索クエリのカテゴリを予測する第2モデルを学習させることができる。これにより、情報処理装置100は、人手で検索クエリの正解カテゴリをラベル付けすることなく、第2モデルを学習させることができる。すなわち、情報処理装置100は、正解データが少ないときでも、十分な分類精度を得られるようになる。また、情報処理装置100は、正解データが多いときであれば、さらに高い分類精度を得られるようになる。したがって、情報処理装置100は、検索クエリの分類精度を高めることができる。
〔第1学習モデルの一例〕
次に、図13を用いて情報処理装置100が生成する第1学習モデルの一例について説明する。図13は、実施形態に係る第1学習モデルの一例を示す図である。図13に示す例では、情報処理装置100が生成する第1学習モデルM1は、3層のLSTM‐RNNで構成されている。図13に示す例では、抽出部132は、同一のユーザU1によって所定の時間内に連続して入力された「六本木 パスタ」という検索クエリQ11と「六本木 イタリアン」という検索クエリQ12とから成る一対の検索クエリを抽出する。生成部133は、抽出部132によって抽出されたた検索クエリQ11を第1学習モデルM1の入力層に入力する(ステップS41)。
続いて、生成部133は、第1学習モデルM1の出力層から検索クエリQ11の分散表現である256次元のベクトルBQV11を出力する。また、生成部133は、抽出部132によって抽出された検索クエリQ12を第1学習モデルM1の入力層に入力する。続いて、生成部133は、第1学習モデルM1の出力層から検索クエリQ12の分散表現である256次元のベクトルBQV12を出力する(ステップS42)。
続いて、生成部133は、連続して入力された2つの検索クエリの分散表現(ベクトル)が類似するように学習することで、検索クエリから分散表現(ベクトル)を出力する第1学習モデルM1を生成する(ステップS43)。例えば、第1学習モデルM1にフィードバックをかける前(学習前)の検索クエリQ11の分散表現であるベクトルBQV11と検索クエリQ12の分散表現であるベクトルBQV12とのなす角度の大きさをΘとする。また、第1学習モデルM1にフィードバックをかけた後(学習後)の検索クエリQ11の分散表現であるベクトルQV11と検索クエリQ12の分散表現であるベクトルQV12とのなす角度の大きさをΦとする。この時、生成部133は、ΘよりもΦが小さくなるように、第1学習モデルM1を学習させる。例えば、生成部133は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値を算出する。また、生成部133は、ベクトルQV11とベクトルQV12のコサイン類似度の値を算出する。続いて、生成部133は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値よりも、ベクトルQV11とベクトルQV12のコサイン類似度の値が大きくなるように(値が1に近づくように)学習モデルM1を学習させる。このように、生成部133は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように第1学習モデルM1を学習させることで、検索クエリから分散表現(ベクトル)を出力する第1学習モデルM1を生成する。なお、生成部133は、コサイン類似度に限らず、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて分散表現(ベクトル)の間の類似度を算出してもよい。また、生成部133は、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて学習モデルM1を学習させてもよい。例えば、生成部133は、分散表現(ベクトル)同士のユークリッド距離や双曲空間等の非ユークリッド空間中での距離、マンハッタン距離、マハラノビス距離等といった所定の距離関数の値を算出する。続いて、生成部133は、分散表現(ベクトル)同士の所定の距離関数の値(すなわち、分散表現空間における距離)が小さくなるように学習モデルM1を学習させてもよい。
また、生成部133は、同一のユーザによって所定の時間内に入力された複数の検索クエリとして、所定の区切り文字で区切られた文字群を含む複数の検索クエリが類似する特徴を有するものとして学習することで、第1学習モデルを生成する。例えば、生成部133は、地名を示す「六本木」と料理の種類を示す「パスタ」の文字とが区切り文字であるスペースで区切られた検索クエリ「六本木 パスタ」と、地名を示す「六本木」と料理の種類を示す「イタリアン」の文字とが区切り文字であるスペースで区切られた検索クエリ「六本木 イタリアン」とが類似する特徴を有するものとして学習することで、第1学習モデルを生成する。
また、生成部133は、取得部131によって取得された検索クエリのうち、ランダムに抽出された複数の検索クエリが相違する特徴を有するものとして学習することで、第1学習モデルを生成する。具体的には、生成部133は、取得部131によって取得された検索クエリのうち、ランダムに抽出された一対の検索クエリの分散表現が相違するように学習することで、第1学習モデルを生成する。例えば、生成部133は、抽出部132によって抽出された所定の検索クエリの分散表現と、所定の検索クエリとは無関係にランダムに抽出された検索クエリの分散表現とが分散表現空間上で遠くにマッピングされるように第1学習モデルM1のトレーニングを行う。
また、生成部133は、第2学習モデルを生成する。具体的には、生成部133は、モデル情報記憶部124を参照して、生成部133によって生成された第1学習モデル(第1学習モデルM1のモデルデータMDT1)を取得する。続いて、生成部133は、取得した第1学習モデルを用いて、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを生成する。生成部133は、第1モデルM1を取得すると、取得した第1モデルM1を用いて、第2学習モデルM2を生成する。生成部133は、第1モデルM1を再学習させることにより、第1モデルM1とは学習モデルの重みである接続係数が異なる第2モデルM2を生成する。具体的には、生成部133は、検索クエリが学習モデルに入力された際に、学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2モデルM2を生成する。
具体的には、生成部133は、検索クエリが学習モデルに入力された際に、学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを生成する。生成部133は、入力情報として検索クエリが学習モデルに入力された際に、出力情報として検索クエリが属するカテゴリ毎の確率を出力する第2学習モデルを生成する。例えば、生成部133は、第1モデルM1を用いて、入力情報として所定の検索クエリが学習モデルに入力された際に、出力情報として検索クエリの分散表現がそのカテゴリに分類される確率をカテゴリ毎に出力する第2モデルM2を生成する。生成部133は、入力情報として所定の検索クエリが入力されると、出力情報として所定の検索クエリの分散表現が正解カテゴリに分類される確率が所定の閾値を超えるように第2モデルを学習させる。そして、生成部133は、入力情報として所定の検索クエリが入力された際に、所定の検索クエリの分散表現がそのカテゴリに属する確率が所定の閾値を超えるカテゴリを、所定の検索クエリのカテゴリとして出力する第2モデルM2を生成する。また、生成部133は、第2学習モデルを生成すると、第2学習モデルを識別する識別情報と対応付けて、生成した第2学習モデル(モデルデータMDT2)をモデル情報記憶部124に格納する。
例えば、生成部133は、図8に示すモデル情報記憶部124を参照して、第1モデルM1(第1モデルM1のモデルデータMDT1)を取得する。続いて、生成部133は、図9に示す分類定義記憶部123を参照して、検索クエリを分類するカテゴリの大分類を選択する。続いて、生成部133は、大分類を選択すると、第2モデルM2の学習データとして、検索クエリと検索クエリが属する小分類との組を学習する。
例えば、検索クエリQ11(「六本木 パスタ」)が属する正解カテゴリがCAT11(「飲食店を探す」)であるとする。生成部133は、入力情報として検索クエリQ11(「六本木 パスタ」)が第2モデルM2に入力された際に、第2モデルM2の出力層から検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11を出力する。ここで、ベクトルBQV11は、第2モデルM2の出力層から出力されたばかりの検索クエリQ11の分散表現であって、第2モデルM2にフィードバックをかける前(学習前)の分散表現を示す。この場合、生成部133は、出力された検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11が正解カテゴリCAT11(「飲食店を探す」)に分類される確率が所定の閾値を超えるように第2モデルM2を学習させる。
例えば、生成部133は、学習前の第2モデルM2に検索クエリQ11(「六本木 パスタ」)が入力された際に、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を80%、CAT12(「商品を探す」)に分類される確率を0%、CAT13(「飲食店を予約」)に分類される確率を20%、CAT14(「商品を購入する」)に分類される確率を0%と出力したとする。この場合、生成部133は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を所定の閾値(例えば、90%)を超えるように第2モデルM2を学習させる。また、生成部133は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率が所定の閾値(例えば、90%)を超えるように学習させるのに合わせて、分散表現であるベクトルBQV11が他のカテゴリCAT13(「飲食店を予約」)に分類される確率を10%に下げるように第2モデルM2を学習させる。続いて、生成部133は、学習済みの第2モデルM2に入力情報として検索クエリQ11(「六本木 パスタ」)が入力されると、検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11がカテゴリCAT11(「飲食店を探す」)に属する確率が90%を超えるので、出力情報として検索クエリが属するカテゴリをCAT11(「飲食店を探す」)と出力する。
なお、生成部133は、大分類として、任意の数の大分類を選択してもよい。そして、生成部133は、入力情報として検索クエリが第2モデルM2に入力された際に、出力情報として検索クエリが選択した任意の数の大分類に属する各小分類に属する確率を小分類毎に出力する第2モデルM2を生成してもよい。また、生成部133は、大分類として、全ての大分類を選択してもよい。そして、生成部133は、検索クエリが第2モデルM2に入力された際に、各小分類に属する確率を全ての小分類毎に出力する第2モデルM2を生成してもよい。
〔第2学習モデルの一例〕
次に、図14を用いて情報処理装置100が生成する第2学習モデルの一例について説明する。図14は、実施形態に係る第2学習モデルの一例を示す図である。図14に示す例では、情報処理装置100が生成する第2学習モデルM2は、第1学習モデルM1を用いて生成される。すなわち、情報処理装置100は、第1学習モデルM1を再学習させることにより、第1学習モデルM1とは学習モデルの重みである接続係数が異なる第2学習モデルM2を生成する。
より具体的には、情報処理装置100が生成する第2学習モデルM2は、第1学習モデルM1と同様に、3層のLSTM‐RNNで構成されている。図14に示す例では、抽出部132は、ユーザU1によって入力された「六本木 パスタ」という検索クエリQ11を第2学習モデルM2の入力層に入力する(ステップS51)。
続いて、生成部133は、第2学習モデルM2の出力層から検索クエリQ11の分散表現である256次元のベクトルBQV11を出力する(ステップS52)。
続いて、生成部133は、検索クエリQ11の分散表現であるベクトルBQV11が各カテゴリに分類される確率を出力する(ステップS53)。
続いて、生成部133は、検索クエリQ11の分散表現であるベクトルBQV11が正解カテゴリに分類される確率を高くするように第2学習モデルM2を学習することで、検索クエリから検索クエリのカテゴリを予測する第2モデルを生成する(ステップS54)。
(予測部134)
予測部134は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、第1入力情報から第1入力情報の特徴を示す第1特徴情報を予測する。具体的には、取得部131は、モデル情報記憶部124を参照して、生成部133によって生成された第2学習モデルを取得する。続いて、予測部134は、取得部131によって取得された第2学習モデルを用いて、第1入力情報である第1検索クエリから第1検索クエリの特徴を示す第1特徴情報である第1検索クエリのカテゴリを予測する。
また、予測部134は、記憶部120に記憶された経過情報を用いて、複数の単位情報を含む第2入力情報の特徴を示す第2特徴情報を予測する。具体的には、予測部134は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルの内部状態に関する情報である経過情報を用いて、複数の単位情報を含む第2入力情報の特徴を示す第2特徴情報を予測する。より具体的には、予測部134は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルの内部状態に関する情報である経過情報を用いて、複数の単位情報を含む第2入力情報の特徴を示す第2特徴情報を予測する。予測部134は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルのアクティベーション(activation)に関する情報を用いて、複数の単位情報を含む第2入力情報の特徴を示す第2特徴情報を予測する。予測部134は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを構成する各層(各LSTM層)の中間的な計算結果に関する情報を用いて、複数の単位情報を含む第2入力情報の特徴を示す第2特徴情報を予測する。予測部134は、経過情報記憶部125を参照して、処理単位毎の情報である単位情報を複数含む第1入力情報に含まれる単位情報が、予測部134によって順次処理されることにより行われる予測処理の経過情報を取得する。ここで、順次処理とは、処理対象となる情報を、ある法則に従って処理するという意味である。ある法則の一例として、複数の処理単位を含む情報を、先頭から順に処理する方法がある。より具体的には、予測部134は、単位情報を複数含む第1入力情報に含まれる所定の単位情報で区切られた単位情報群毎に経過情報を取得する。
例えば、予測部134は、複数の文字を含む第1検索クエリに含まれる所定の区切り文字で区切られた文字群毎に第1検索クエリのカテゴリを予測する予測処理の途中経過に関する情報である経過情報を取得する。続いて、予測部134は、取得した経過情報を用いて、複数の文字を含む第2検索クエリのカテゴリを予測する。具体的には、予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報に対応する経過情報を用いて、第2特徴情報を予測する。例えば、予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報までの学習モデルの内部状態に関する情報である経過情報を用いて、第2特徴情報を予測する。より具体的には、予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報までの学習モデルの内部状態に関する情報である経過情報を用いて、第2特徴情報を予測する。予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報までの学習モデルのアクティベーション(activation)に関する情報を用いて、第2特徴情報を予測する。予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報までの学習モデルを構成する各層(各LSTM層)の中間的な計算結果に関する情報を用いて、第2特徴情報を予測する。例えば、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと共通する文字に対応する経過情報を用いて、第2検索クエリのカテゴリを予測する。例えば、予測部134は、複数の文字群を含む第1検索クエリに対応する経過情報のうち、複数の文字群を含む第2検索クエリと共通する文字群に対応する経過情報を用いて、第2検索クエリのカテゴリを予測する。例えば、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと一致する文字までの経過情報を用いて、第2検索クエリのカテゴリを予測する。例えば、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと一致する文字までの第2学習モデルの内部状態に関する情報である経過情報を用いて、第2検索クエリのカテゴリを予測する。より具体的には、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと一致する文字までの第2学習モデルの内部状態に関する情報である経過情報を用いて、第2検索クエリのカテゴリを予測する。
図2に示す例では、予測部134は、記憶部120に記憶されている経過情報の中に、第2検索クエリ「六本木 お好み焼き」と一部又は全部が共通する文字群に対応する経過情報が存在するか否かを判定する。例えば、予測部134は、記憶部120に記憶されている文字群の中に、第2検索クエリ「六本木 お好み焼き」と一致する文字群が存在するか否かを判定する。予測部134は、第2検索クエリ「六本木 お好み焼き」と一致する文字群が存在しないと判定したとする。続いて、予測部134は、記憶部120に記憶されている文字群の中に、第2検索クエリ「六本木 お好み焼き」に含まれる文字群「六本木□」と共通する文字群「六本木□」が存在するか否かを判定する。予測部134は、第2検索クエリ「六本木 お好み焼き」に含まれる文字群「六本木□」と共通する文字群「六本木□」が存在すると判定したとする。続いて、予測部134は、共通する文字群「六本木□」が存在すると判定すると、共通する文字群「六本木□」に対応する経過情報を記憶部120から取得する。具体的には、予測部134は、文字群「六本木□」に対応する経過情報として、図1の処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報を取得する。より具体的には、予測部134は、文字群「六本木□」に対応する経過情報として、図1の処理ステップ「ステップ4」における第2学習モデルM2のアクティベーション(activation)に関する情報を取得する。すなわち、予測部134は、図1の処理ステップ「ステップ4」における第2学習モデルM2を構成する各層の中間的な計算結果に関する情報を取得する。図2に示す例では、予測部134は、図1の処理ステップ「ステップ4」における第2学習モデルM2を構成する3層のLSTM層の各層(各LSTM層)の中間的な計算結果であるベクトル(例えば、2048次元のベクトル)の値を3セット分(3層分)取得する。
続いて、予測部134は、文字群「六本木□」に対応する経過情報を取得すると、取得した文字群「六本木□」に対応する経過情報を用いて、第2検索クエリ「六本木 お好み焼き」の分散表現を出力する。具体的には、予測部134は、図1の処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報を取得すると、処理ステップ「ステップ4」における第2学習モデルM2の内部状態を再現する。続いて、予測部134は、処理ステップ「ステップ4」における第2学習モデルM2の内部状態に関する情報に基づいて、第2検索クエリ「六本木 お好み焼き」の文字群「お好み焼き」以降の予測処理を開始する。すなわち、予測部134は、処理ステップ「ステップ4」における第2学習モデルM2を構成する各層の中間的な計算結果に関する情報に基づいて、第2検索クエリ「六本木 お好み焼き」の文字群「お好み焼き」以降の予測処理を開始する。そして、予測部134は、第2検索クエリ「六本木 お好み焼き」の分散表現を出力する。
続いて、予測部134は、第2検索クエリ「六本木 お好み焼き」の分散表現を抽出して出力すると、第2学習モデルM2の出力データとして、第2検索クエリ「六本木 お好み焼き」の分散表現が各カテゴリに分類される確率をカテゴリ毎に出力する。例えば、予測部134は、第2検索クエリ「六本木 お好み焼き」の分散表現が、CAT11(「飲食店を探す」)に属する確率を「90(%)」、CAT12(「商品を探す」)に属する確率を「0(%)」、CAT13(「飲食店を予約する」)に属する確率を「10(%)」、CAT14(「商品を購入する」)に属する確率を「0(%)」と出力する。
予測部134は、記憶部120を参照して、第2検索クエリと共通する文字群が複数存在すると判定した場合には、複数の文字群の間に包含関係があるか否かを判定する。例えば、予測部134は、第2検索クエリ「六本木□お好み焼き□おすすめ」が入力された時点において、第2検索クエリと共通する文字群として、文字群「六本木□お好み焼き□」と文字群「六本木□」の2つが記憶部120に存在する場合には、文字群「六本木□お好み焼き□」と文字群「六本木□」との間に包含関係があるか否かを判定する。続いて、予測部134は、複数の文字群の間に包含関係があると判定した場合、複数の文字群の中から他の文字群をいずれも包含する文字群を選択する。続いて、予測部134は、選択した文字群に対応する経過情報を記憶部120から取得する。例えば、予測部134は、文字群「六本木□お好み焼き□」と文字群「六本木□」との間には、文字群「六本木□お好み焼き□」が文字群「六本木□」を含む(文字群「六本木□」が文字群「六本木□お好み焼き□」に包含される)関係があると判定する。続いて、予測部134は、文字群「六本木□お好み焼き□」と文字群「六本木□」との間に、文字群「六本木□お好み焼き□」が文字群「六本木□」を含む包含関係があると判定すると、文字群「六本木□」を含む文字群「六本木□お好み焼き□」を選択する。続いて、予測部134は、選択した文字群「六本木□お好み焼き□」に対応する経過情報を記憶部120から取得する。なお、図2では、第2学習モデルM2がLSTM‐RNNであるため、第2検索クエリと共通する文字群が複数存在する場合には、文字群の間に必ず包含関係が存在する。そのため、予測部134は、第2検索クエリと共通する文字群が複数存在する場合には、最も長い文字群(文字数が最も多い文字群)を選択する。そして、予測部134は、選択した最長の文字群に対応する経過情報を記憶部120から取得する。
また、予測部134は、経過情報記憶部125を参照して、第1入力情報に含まれる所定数の単位情報毎に経過情報を取得する。例えば、予測部134は、単位情報である文字を含む第1入力情報に含まれる所定数の文字毎に第1特徴情報の予測処理の途中経過に関する情報を取得する。例えば、予測部134は、複数の文字を含む第1検索クエリに含まれる文字毎に第1検索クエリのカテゴリを予測する予測処理の途中経過に関する情報である経過情報を取得する。続いて、予測部134は、取得した経過情報を用いて、複数の文字を含む第2検索クエリのカテゴリを予測する。具体的には、予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報に対応する経過情報を用いて、第2特徴情報を予測する。例えば、予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報に対応する学習モデルの内部状態に関する情報である経過情報を用いて、第2特徴情報を予測する。より具体的には、予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報に対応する学習モデルの内部状態に関する情報である経過情報を用いて、第2特徴情報を予測する。例えば、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと共通する文字に対応する経過情報を用いて、第2検索クエリのカテゴリを予測する。例えば、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと一致する文字までの経過情報を用いて、第2検索クエリのカテゴリを予測する。例えば、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと一致する文字までの第2学習モデルの内部状態に関する情報である経過情報を用いて、第2検索クエリのカテゴリを予測する。より具体的には、予測部134は、複数の文字を含む第1検索クエリに対応する経過情報のうち、複数の文字を含む第2検索クエリと一致する文字までの第2学習モデルの内部状態に関する情報である経過情報を用いて、第2検索クエリのカテゴリを予測する。
〔4.第1学習モデルの生成処理のフロー〕
次に、図15を用いて、実施形態に係る第1学習モデルの生成処理の手順について説明する。図15は、実施形態に係る第1学習モデルの生成処理手順を示すフローチャートである。図15に示す例では、情報処理装置100は、ユーザによって入力された検索クエリを取得する(ステップS101)。
続いて、情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリを抽出する(ステップS102)。
続いて、情報処理装置100は、抽出した複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する第1学習モデルを生成する(ステップS103)。
〔5.第2学習モデルの生成処理のフロー〕
次に、図16を用いて、実施形態に係る第2学習モデルの生成処理の手順について説明する。図16は、実施形態に係る第2学習モデルの生成処理の手順を示すフローチャートである。図16に示す例では、情報処理装置100は、第1学習モデル(第1学習モデルM1のモデルデータMDT1)を取得する(ステップS201)。
続いて、情報処理装置100は、第1学習モデルを用いて、所定の検索クエリから所定の検索クエリのカテゴリを予測する第2学習モデルを生成する(ステップS202)。
〔6.情報処理のフロー〕
次に、図17を用いて、実施形態に係る情報処理の手順について説明する。図17は、実施形態に係る情報処理の手順を示すフローチャートである。図17に示す例では、情報処理装置100は、検索クエリを受け付けたか否かを判定する(ステップS301)。情報処理装置100は、検索クエリを受け付けていない場合(ステップS301;No)、検索クエリを受け付けるまで待機する。
一方、情報処理装置100は、検索クエリを受け付けた場合(ステップS301;Yes)、検索クエリに対応する文字群が所定の区切り文字を含むか否かを判定する(ステップS302)。情報処理装置100は、検索クエリに対応する文字群が所定の区切り文字を含まない場合(ステップS302;No)、文字群に対応する経過情報が経過情報記憶部125に存在するか否かを判定する(ステップS305)。情報処理装置100は、文字群に対応する経過情報が経過情報記憶部125に存在する場合(ステップS305;Yes)、処理を終了する。一方、情報処理装置100は、文字群に対応する経過情報が経過情報記憶部125に存在しない場合(ステップS305;No)、文字群に対応する経過情報を経過情報記憶部125に記憶する(ステップS306)。
一方、情報処理装置100は、検索クエリに対応する文字群が所定の区切り文字を含む場合(ステップS302;Yes)、所定の区切り文字で区切られた文字群に対応する経過情報が経過情報記憶部125に存在するか否かを判定する(ステップS303)。情報処理装置100は、所定の区切り文字で区切られた文字群に対応する経過情報が経過情報記憶部125に存在する場合(ステップS303;Yes)、処理を終了する。一方、情報処理装置100は、所定の区切り文字で区切られた文字群に対応する経過情報が経過情報記憶部125に存在しない場合(ステップS303;No)、所定の区切り文字で区切られた文字群に対応する経過情報を経過情報記憶部125に記憶する(ステップS304)。
〔7.予測処理のフロー〕
次に、図18を用いて、実施形態に係る予測処理の手順について説明する。図18は、実施形態に係る予測処理の手順を示すフローチャートである。図18に示す例では、情報処理装置100は、検索クエリを受け付けたか否かを判定する(ステップS401)。情報処理装置100は、検索クエリを受け付けていない場合(ステップS401;No)、検索クエリを受け付けるまで待機する。
一方、情報処理装置100は、検索クエリを受け付けた場合(ステップS401;Yes)、検索クエリに対応する文字群が所定の区切り文字を含むか否かを判定する(ステップS402)。情報処理装置100は、検索クエリに対応する文字群が所定の区切り文字を含まない場合(ステップS402;No)、文字群に対応する経過情報が経過情報記憶部125に存在するか否かを判定する(ステップS406)。情報処理装置100は、文字群に対応する経過情報が経過情報記憶部125に存在しない場合(ステップS406;No)、検索クエリのカテゴリを予測する(ステップS405)。一方、情報処理装置100は、文字群に対応する経過情報が経過情報記憶部125に存在する場合(ステップS406;Yes)、文字群に対応する経過情報を経過情報記憶部125から取得する(ステップS407)。情報処理装置100は、文字群に対応する経過情報を取得すると、取得した経過情報を用いて、検索クエリのカテゴリを予測する(ステップS405)。
一方、情報処理装置100は、検索クエリに対応する文字群が所定の区切り文字を含む場合(ステップS402;Yes)、所定の区切り文字で区切られた文字群に対応する経過情報が経過情報記憶部125に存在するか否かを判定する(ステップS403)。情報処理装置100は、所定の区切り文字で区切られた文字群に対応する経過情報が経過情報記憶部125に存在する場合(ステップS403;Yes)、所定の区切り文字で区切られた文字群に対応する経過情報を経過情報記憶部125から取得する(ステップS404)。情報処理装置100は、所定の区切り文字で区切られた文字群に対応する経過情報を取得すると、取得した経過情報を用いて、検索クエリのカテゴリを予測する(ステップS405)。一方、情報処理装置100は、所定の区切り文字で区切られた文字群に対応する経過情報が経過情報記憶部125に存在しない場合(ステップS403;No)、検索クエリのカテゴリを予測する(ステップS405)。
〔8.変形例〕
上述した実施形態に係る情報処理システム1は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、情報処理システム1の他の実施形態について説明する。なお、実施形態と同一部分には、同一符号を付して説明を省略する。
上述した実施形態では、第2学習モデルM2が再帰的ニューラルネットワーク(Recurrent Neural Network)の一種であるLSTM(Long Short-Term Memory)で構成される例について説明したが、第2学習モデルM2はLSTM-RNNに限られない。ここでは、第2学習モデルM2が他の構造である場合について説明する。
〔8-1.Recursive Neural Network〕
次に、図19を用いて、変形例に係る情報処理について説明する。図19は、変形例に係る情報処理の一例を示す図である。取得部131は、木構造型再帰的ニューラルネットワーク(Recursive Neural Network)である学習モデルを用いて予測部134によって予測された第1特徴情報の予測処理の途中経過に関する情報である経過情報を取得する。取得部131は、経過情報を取得すると、取得した経過情報を文字群と対応付けて経過情報記憶部125に記憶する。
図19に示す例では、予測部134は、地名を示す「六本木」と料理の種類を示す「ラーメン」とが所定の区切り文字であるスペース(以下、スペースを適宜記号「□」で記載する。)で区切られた文字群である第1検索クエリ「六本木□ラーメン」を先頭から一文字ずつ木構造型再帰的ニューラルネットワーク(Recursive Neural Network)である第2学習モデルM2Aに入力する(ステップS1A)。予測部134は、第1検索クエリ「六本木□ラーメン」が第2学習モデルM2Aに入力されると、第1検索クエリ「六本木□ラーメン」が所定の区切り文字であるスペースを含むか否かを判定する。続いて、予測部134は、第1検索クエリ「六本木□ラーメン」が所定の区切り文字であるスペースを含むと判定した場合、第1検索クエリ「六本木□ラーメン」に含まれる文字群「六本木□」と文字群「ラーメン」とを、それぞれ別々に順次処理する。図19に示すように、予測部134は、第1検索クエリ「六本木□ラーメン」に含まれる文字群である「六本木□」と文字群である「ラーメン」とを、それぞれ別々に順次処理する。具体的には、予測部134は、各文字群の先頭から一文字ずつ順次処理する。
例えば、予測部134は、処理ステップ「ステップLA1-1」で、第2学習モデルM2Aの入力情報の一部である文字群「六本木□」に含まれる先頭の2文字「六本」の予測結果を出力する。続いて、予測部134は、処理ステップ「ステップLA2-1」で、入力情報の一部である文字群「六本木□」に含まれる3文字目の「木」と処理ステップ「ステップLA1-1」の予測結果とに基づいて、先頭の3文字「六本木」の予測結果を出力する。続いて、予測部134は、処理ステップ「ステップLA3-1」で、入力情報の一部である文字群「六本木□」に含まれる4文字目の「□」と処理ステップ「ステップLA2-1」の予測結果とに基づいて、入力情報の一部である文字群「六本木□」の中間的な計算結果に関する情報である第1経過情報を出力する。
また、例えば、予測部134は、処理ステップ「ステップLA1-2」で、第2学習モデルM2Aの入力情報の一部である文字群「ラーメン」に含まれる先頭の2文字「ラー」の予測結果を出力する。続いて、予測部134は、処理ステップ「ステップLA2-2」で、入力情報の一部である文字群「ラーメン」に含まれる3文字目の「メ」と処理ステップ「ステップLA1-2」の予測結果とに基づいて、先頭の3文字「ラーメ」の予測結果を出力する。続いて、予測部134は、処理ステップ「ステップLA3-2」で、入力情報の一部である文字群「ラーメン」に含まれる4文字目の「ン」と処理ステップ「ステップLA2-1」の予測結果とに基づいて、入力情報の一部である文字群「ラーメン」の中間的な計算結果に関する情報である第2経過情報を出力する。
続いて、取得部131は、予測部134が第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、第1検索クエリ「六本木 ラーメン」が属するカテゴリの予測処理の途中経過に関する情報である経過情報を取得する。例えば、取得部131は、地名を示す「六本木」と区切り文字であるスペースからなる文字群「六本木□」に対応する第1経過情報(図19に示す処理ステップ「LA3-1」のステップにおける第2学習モデルM2Aを構成する各層の中間的な計算結果に関する情報)を取得する(ステップS2A-1)。取得部131は、第1経過情報を取得すると、取得した第1経過情報を文字群「六本木□」と対応付けて経過情報記憶部125に記憶する。また、取得部131は、料理名を示す「ラーメン」である文字群「ラーメン」に対応する第2経過情報(図19に示す処理ステップ「LA3-2」のステップにおける第2学習モデルM2Aを構成する各層の中間的な計算結果に関する情報)を取得する(ステップS2A-2)。取得部131は、第2経過情報を取得すると、取得した第2経過情報を文字群「ラーメンと対応付けて経過情報記憶部125に記憶する。
続いて、予測部134は、記憶部120によって経過情報が記憶されると、第1検索クエリ「六本木 ラーメン」の分散表現を出力する(ステップS3A)。なお、情報処理装置100は、第1検索クエリ「六本木 ラーメン」と全く同じ検索クエリが入力された場合に備えて、第1検索クエリ「六本木 ラーメン」に対応する分散表現を記憶部120(図3参照)に記憶する。
続いて、情報処理装置100は、第1検索クエリ「六本木 ラーメン」の分散表現を抽出して出力すると、第2学習モデルM2Aの出力データとして、第1検索クエリ「六本木 ラーメン」の分散表現が各カテゴリに分類される確率をカテゴリ毎に出力する(ステップS4A)。例えば、情報処理装置100は、第1検索クエリ「六本木 ラーメン」の分散表現が、CAT11(「飲食店を探す」)に属する確率を「90(%)」、CAT12(「商品を探す」)に属する確率を「0(%)」、CAT13(「飲食店を予約する」)に属する確率を「10(%)」、CAT14(「商品を購入する」)に属する確率を「0(%)」と出力する。
なお、取得部131は、スペース等の区切り文字に限られず、検索クエリをどこで区切り、第2学習モデルM2Aの内部状態に関する情報をどのような単位で記憶してもよい。具体的には、予測部134は、第1検索クエリが一定のルール(又は一定の手順)で区分できるか否かを判定する。例えば、予測部134は、形態素解析を用いて第1検索クエリが区分できるか否かを判定する。また、例えば、予測部134は、BPEを用いて第1検索クエリが区分できるか否かを判定する。続いて、予測部134は、第1検索クエリが一定のルール(又は一定の手順)で区分できると判定した場合、第1検索クエリを一定のルール(又は一定の手順)で区分した単位ごとに、それぞれ別々に順次処理する。例えば、予測部134は、形態素解析を用いて第1検索クエリを区分できると判定した場合、形態素解析を用いて第1検索クエリを区分した単位ごとに、それぞれ別々に順次処理する。また、例えば、予測部134は、BPEを用いて第1検索クエリを区分できると判定した場合、BPEを用いて第1検索クエリを区分した単位ごとに、それぞれ別々に順次処理する。続いて、取得部131は、予測部134によって予測処理された単位ごとに、対応する経過情報を取得する。
〔8-2.Dilated Convolutional Neural Network〕
次に、図20を用いて、変形例に係る情報処理について説明する。図20は、変形例に係る情報処理の一例を示す図である。取得部131は、拡張畳み込みニューラルネットワーク(Dilated Convolutional Neural Network)である学習モデルを用いて予測部134によって予測された第1特徴情報の予測処理の途中経過に関する情報である経過情報を取得する。取得部131は、経過情報を取得すると、取得した経過情報を文字群と対応付けて経過情報記憶部125に格納する。
図20に示す例では、予測部134は、地名を示す「六本木」と料理の種類を示す「ラーメン」とが所定の区切り文字であるスペース(以下、スペースを適宜記号「□」で記載する。)で区切られた文字群である第1検索クエリ「六本木□ラーメン」を先頭から一文字ずつ拡張畳み込みニューラルネットワーク(Dilated Convolutional Neural Network)である第2学習モデルM2Bに入力する(ステップS1B)。予測部134は、第1検索クエリ「六本木□ラーメン」が第2学習モデルM2Bに入力されると、第1検索クエリ「六本木□ラーメン」が所定の区切り文字であるスペースを含むか否かを判定する。続いて、予測部134は、第1検索クエリ「六本木□ラーメン」が所定の区切り文字であるスペースを含むと判定した場合、第1検索クエリ「六本木□ラーメン」に含まれる文字群「六本木□」と文字群「ラーメン」とを、それぞれ別々に順次処理する。図20に示すように、予測部134は、第1検索クエリ「六本木□ラーメン」に含まれる文字群である「六本木□」と文字群である「ラーメン」とを、それぞれ別々に順次処理する。
例えば、予測部134は、処理ステップ「ステップLB1-1」で、第2学習モデルM2Bの入力情報の一部である文字群「六本木□」に含まれる前半の2文字「六本」の予測結果を出力する。また、例えば、予測部134は、処理ステップ「ステップLB1-2」で、第2学習モデルM2Bの入力情報の一部である文字群「六本木□」に含まれる後半の2文字「木□」の予測結果を出力する。続いて、予測部134は、処理ステップ「ステップLB2-1」で、処理ステップ「ステップLB1-1」の予測結果と処理ステップ「ステップLB1-2」の予測結果とに基づいて、入力情報の一部である文字群「六本木□」の中間的な計算結果に関する情報である第1経過情報を出力する。
また、例えば、予測部134は、処理ステップ「ステップLB1-3」で、第2学習モデルM2Bの入力情報の一部である文字群「ラーメン」に含まれる前半の2文字「ラー」の予測結果を出力する。また、例えば、予測部134は、処理ステップ「ステップLB1-4」で、第2学習モデルM2Bの入力情報の一部である文字群「ラーメン」に含まれる後半の2文字「メン」の予測結果を出力する。続いて、予測部134は、処理ステップ「ステップLB2-2」で、処理ステップ「ステップLB1-3」の予測結果と処理ステップ「ステップLB1-4」の予測結果とに基づいて、入力情報の一部である文字群「ラーメン」の中間的な計算結果に関する情報である第2経過情報を出力する。
続いて、取得部131は、予測部134が第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、第1検索クエリ「六本木□ラーメン」が属するカテゴリの予測処理の途中経過に関する情報である経過情報を取得する。例えば、取得部131は、地名を示す「六本木」と区切り文字であるスペースからなる文字群「六本木□」に対応する第1経過情報を取得する(ステップS2B-1)。取得部131は、第1経過情報を取得すると、取得した第1経過情報を文字群「六本木□」と対応付けて経過情報記憶部125に記憶する。また、取得部131は、料理名を示す「ラーメン」である文字群「ラーメン」に対応する第2経過情報を取得する(ステップS2B-2)。取得部131は、第2経過情報を取得すると、取得した第2経過情報を文字群「ラーメンと対応付けて経過情報記憶部125に記憶する。
続いて、予測部134は、記憶部120によって経過情報が記憶されると、第1検索クエリ「六本木□ラーメン」の分散表現を出力する(ステップS3B)。なお、情報処理装置100は、第1検索クエリ「六本木□ラーメン」と全く同じ検索クエリが入力された場合に備えて、第1検索クエリ「六本木□ラーメン」に対応する分散表現を記憶部120(図3参照)に記憶する。
続いて、情報処理装置100は、第1検索クエリ「六本木□ラーメン」の分散表現を抽出して出力すると、第2学習モデルM2Bの出力データとして、第1検索クエリ「六本木□ラーメン」の分散表現が各カテゴリに分類される確率をカテゴリ毎に出力する(ステップS4B)。例えば、情報処理装置100は、第1検索クエリ「六本木□ラーメン」の分散表現が、CAT11(「飲食店を探す」)に属する確率を「90(%)」、CAT12(「商品を探す」)に属する確率を「0(%)」、CAT13(「飲食店を予約する」)に属する確率を「10(%)」、CAT14(「商品を購入する」)に属する確率を「0(%)」と出力する。
なお、取得部131は、スペース等の区切り文字に限られず、検索クエリをどこで区切り、第2学習モデルM2Bの内部状態に関する情報をどのような単位で記憶してもよい。具体的には、予測部134は、第1検索クエリが一定のルール(又は一定の手順)で区分できるか否かを判定する。例えば、予測部134は、形態素解析を用いて第1検索クエリが区分できるか否かを判定する。また、例えば、予測部134は、BPEを用いて第1検索クエリが区分できるか否かを判定する。続いて、予測部134は、第1検索クエリが一定のルール(又は一定の手順)で区分できると判定した場合、第1検索クエリを一定のルール(又は一定の手順)で区分した単位ごとに、それぞれ別々に順次処理する。例えば、予測部134は、形態素解析を用いて第1検索クエリを区分できると判定した場合、形態素解析を用いて第1検索クエリを区分した単位ごとに、それぞれ別々に順次処理する。また、例えば、予測部134は、BPEを用いて第1検索クエリを区分できると判定した場合、BPEを用いて第1検索クエリを区分した単位ごとに、それぞれ別々に順次処理する。続いて、取得部131は、予測部134によって予測処理された単位ごとに、対応する経過情報を取得する。
また、第2学習モデルM2Bでは、第1検索クエリの中身に依らず、一律(2文字単位、それをまとめた4文字単位、それをさらにまとめた8文字単位、といった単位ごと)に予測処理が行われるため、ツリー構造の下の方の予測結果(図20に示す例では、処理ステップ「ステップLB1-1」~処理ステップ「ステップLB1-4」の予測結果)は、経過情報の再利用で得られるメリットが小さいことが予想される。そこで、情報処理装置100は、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、ツリー構造の下の方の文字群(例えば、2文字単位)の予測結果に対応する経過情報を記憶しない。図20に示す例では、情報処理装置100は、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、処理ステップ「ステップLB1-1」~処理ステップ「ステップLB1-4」の予測結果に対応する経過情報を記憶しない。一方、情報処理装置100は、ツリー構造のある程度上の方の文字群(例えば、4文字単位や8文字単位)の予測結果に対応する経過情報については、所定の条件を満たす場合のみ、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として記憶する。図20に示す例では、情報処理装置100は、処理ステップ「ステップLB2-1」~処理ステップ「ステップLB2-2」の予測結果に対応する経過情報については、所定の条件を満たす場合のみ、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として記憶する。具体的には、情報処理装置100は、ツリー構造のある程度上の方の文字群が、辞書等に掲載された既知の単語と一致するか否かを判定する。続いて、情報処理装置100は、ツリー構造のある程度上の方の文字群が、辞書等に掲載された既知の単語と一致すると判定した場合は、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、ツリー構造のある程度上の方の文字群の予測結果に対応する経過情報を記憶する。すなわち、情報処理装置100は、辞書等に掲載された既知の単語と一致する文字群は、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に再利用できる見込みが高いため、経過情報を記憶する。一方、情報処理装置100は、ツリー構造のある程度上の方の文字群が、辞書等に掲載された既知の単語と一致しない場合は、第2検索クエリから第2検索クエリが属するカテゴリを予測する予測処理に用いる情報として、ツリー構造のある程度上の方の文字群の予測結果に対応する経過情報を記憶しない。
〔9.効果〕
上述してきたように、実施形態に係る情報処理装置100は、予測部134と記憶部120を備える。予測部134は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した学習モデルを用いて、第1入力情報から第1入力情報の特徴を示す第1特徴情報を予測する。記憶部120は、予測部134が第2入力情報から第2入力情報の特徴を示す第2特徴情報を予測する予測処理に用いる情報として、予測部134による第1特徴情報の予測処理の途中経過に関する情報である経過情報を記憶する。
これにより、情報処理装置100は、予測処理の途中経過まで予測結果を覚えておいて、必要に応じてキャッシングを取得し途中から処理を開始することができる。すなわち、情報処理装置100は、前に行った計算結果を用いて、効率よく特徴情報の予測処理を行うことができる。したがって、情報処理装置100は、情報の意味を効率よく解釈可能とすることができる。
また、記憶部120は、処理単位毎の情報である単位情報を複数含む第1入力情報に含まれる単位情報が、予測部134によって順次処理されることにより行われる予測処理の経過情報を記憶する。予測部134は、記憶部120に記憶された経過情報を用いて、複数の単位情報を含む第2入力情報の特徴を示す第2特徴情報を予測する。
これにより、情報処理装置100は、処理単位毎に予測処理の途中経過まで予測結果を覚えておいて、必要に応じて処理単位毎にキャッシングを取得し途中から処理を開始することができる。
また、記憶部120は、第1入力情報に含まれる所定の単位情報で区切られた単位情報群毎に経過情報を記憶する。
これにより、情報処理装置100は、単位情報群毎に予測処理の途中経過まで予測結果を覚えておいて、必要に応じて単位情報群毎にキャッシングを取得し途中から処理を開始することができる。
また、記憶部120は、第1入力情報に含まれる所定数の単位情報毎に経過情報を記憶する。
これにより、情報処理装置100は、単位情報毎に予測処理の途中経過まで予測結果を覚えておいて、必要に応じて単位情報毎にキャッシングを取得し途中から処理を開始することができる。
また、予測部134は、第1入力情報に対応する経過情報のうち、第2入力情報と共通する単位情報に対応する経過情報を用いて、第2特徴情報を予測する。
これにより、情報処理装置100は、前に行った計算結果を用いて、効率よく特徴情報の予測処理を行うことができる。
また、記憶部120は、単位情報である文字を含む第1入力情報に含まれる所定数の文字毎に第1特徴情報の予測処理の途中経過に関する情報を記憶する。
これにより、情報処理装置100は、文字毎に予測処理の途中経過まで予測結果を覚えておいて、必要に応じて文字毎にキャッシングを取得し途中から処理を開始することができる。
また、記憶部120は、第1入力情報に含まれる所定の区切り文字で区切られた文字群毎に第1特徴情報の予測処理の途中経過に関する情報を記憶する。
これにより、情報処理装置100は、文字群毎に予測処理の途中経過まで予測結果を覚えておいて、必要に応じて文字群毎にキャッシングを取得し途中から処理を開始することができる。
また、記憶部120は、再帰的ニューラルネットワーク(Recurrent Neural Network)、木構造型再帰的ニューラルネットワーク(Recursive Neural Network)、又は拡張畳み込みニューラルネットワーク(Dilated Convolutional Neural Network)である学習モデルを用いて予測部134によって予測された第1特徴情報の予測処理の途中経過に関する情報である経過情報を記憶する。
これにより、情報処理装置100は、学習モデルの構造に応じた経過情報を記憶し、必要に応じてキャッシングを取得し途中から処理を開始することができる。
〔10.ハードウェア構成〕
また、上述してきた実施形態に係る情報処理装置100は、例えば図21に示すような構成のコンピュータ1000によって実現される。図21は、情報処理装置100を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ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として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置から所定の通信網を介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔11.その他〕
また、上記実施形態及び変形例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、予測部は、予測手段や予測回路に読み替えることができる。