(58)【調査した分野】(Int.Cl.,DB名)
同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして前記複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから前記所定の検索クエリが属するカテゴリを予測する前記第2学習モデルを取得する取得部と、
前記取得部によって取得された第2学習モデルを用いて、検索クエリとして入力された文字列によって示される対象が属するカテゴリを推定する推定部と、
前記推定部によって推定されたカテゴリに基づいて、前記文字列の中から、前記カテゴリに対応する対象分野に属する抽出対象を示す対象文字列を抽出する抽出部
を備えることを特徴とする情報処理装置。
前記対象分野に関するサイトに流入した流入検索クエリを取得し、前記流入検索クエリとして入力された文字列から、不要な文字列として登録された不要文字列を取り除いた第1文字列を取得する処理部をさらに備え、
前記推定部は、
前記処理部によって取得された第1文字列によって示される対象が属するカテゴリを推定する
ことを特徴とする請求項1〜5のいずれか一つに記載の情報処理装置。
同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして前記複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから前記所定の検索クエリが属するカテゴリを予測する前記第2学習モデルを取得する取得手順と、
前記取得手順によって取得された第2学習モデルを用いて、検索クエリとして入力された文字列によって示される対象が属するカテゴリを推定する推定手順と、
前記推定手順によって推定されたカテゴリに基づいて、前記文字列の中から、前記カテゴリに対応する対象分野に属する抽出対象を示す対象文字列を抽出する抽出手順
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理装置、情報処理方法及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略する。
【0010】
〔1.実施形態〕
〔1−1.情報処理の一例〕
まず、
図1を用いて、実施形態に係る情報処理の一例について説明する。
図1は、実施形態に係る情報処理の一例を示す図である。実施形態に係る情報処理は、
図1に示す情報処理装置100によって行われる。
図1に示す例では、情報処理装置100は、ファッション系サイトに流入した流入検索クエリ群に含まれる雑多な文字列の中から、対象分野であるファッション分野(ファッションに関するカテゴリ)に属する対象を示す文字列を抽出する。
【0011】
図1の説明に先立って、
図2を用いて、実施形態に係る情報処理システムの構成について説明する。
図2は、実施形態に係る情報処理システムの構成例を示す図である。
図2に示すように、情報処理システム1には、生成装置50と、情報処理装置100と、サービスサーバ200が含まれる。生成装置50と、情報処理装置100と、サービスサーバ200は所定のネットワークNを介して、有線または無線により通信可能に接続される。なお、
図2に示す情報処理システム1には、任意の数の生成装置50と任意の数の情報処理装置100と任意の数のサービスサーバ200が含まれてもよい。
【0012】
生成装置50は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを生成する情報処理装置である。なお、生成装置50による第2学習モデルの生成処理の詳細については後述する。生成装置50は、情報処理装置100の要求に応じて、第2学習モデルのモデルデータMDT2を情報処理装置100に対して送信する。
【0013】
情報処理装置100は、対象分野に属する抽出対象を示す対象文字列を抽出するサーバ装置である。
図1に示す例では、情報処理装置100は、ファッション系サイトに流入した流入検索クエリに含まれる文字列の中から、ファッション分野(以下、ファッションカテゴリともいう)に属する対象を示す文字列を抽出する。
【0014】
ここで、一般的に、所定期間内に所定のカテゴリに関するサイトに流入した流入検索クエリには、様々な検索クエリが含まれている。具体的には、流入検索クエリの中には、所定のカテゴリに属する対象を示す文字列とは異なる一般的な用語やサイトの名称等が含まれる。このように、流入検索クエリには、所定のカテゴリに属する対象を示す文字列とは異なる文字列が多く含まれているため、これらの文字列を取り除く必要がある。
【0015】
例えば、ファッション系サイトに流入した流入検索クエリの中には、ファッションカテゴリに属する対象を示す文字列とは異なる文字列として、レディース、人気、コーデ、サイズ、…等の一般的な用語や、流入先のサイトの名称を示す文字列が含まれている。これら一般的な用語や、流入先のサイトの名称を示す文字列については、不要な文字列としてあらかじめ登録しておき、辞書ベースで取り除くことができる。一方、流入検索クエリとして入力された文字列の中に、世の中に登場したばかりの新しい用語(以下、未知用語ともいう)が含まれる場合には、その用語を取り除くことは困難である。例えば、ファッション系サイトに流入した流入検索クエリの中には、ファッションカテゴリに属する対象を示す文字列とは異なる文字列として、人名、ブランド名、店舗名、…等を示す文字列が含まれている。これら人名、ブランド名、店舗名、…等を示す文字列は、新たな人名、新たなブランド名、新たな店舗名、…等が次々と世の中に登場するため、未知用語が多く存在する。したがって、これら人名、ブランド名、店舗名、…等を示す文字列については、あらかじめ全ての文字列を登録しておくことが困難である。したがって、従来は、流入検索クエリの中から、所定のカテゴリに属する対象を示す文字列以外の文字列を取り除くことが困難であった。
【0016】
また、抽出対象の文字列が未知用語である場合もある。例えば、ファッション系サイトに流入した流入検索クエリの中には、ファッションカテゴリに属する対象を示す文字列であって、世の中に登場したばかりの新しい用語(以下、未知用語ともいう)が含まれる。特に、ファッション分野のように、新しい対象を示す新しい用語が次々に登場する分野においては、抽出対象の文字列が未知用語である場合も珍しくない。そこで、未知用語が抽出対象の文字列であるか否かを判断するために、用語の意味を辞書等で調べる方法が考えられるが、世の中に登場したばかりの未知用語はまだ辞書等に掲載されていない場合がある。このような場合、未知用語によって示される対象を特定することは困難なため、未知用語によって示される対象が属するカテゴリを特定することも困難である。すなわち、従来は、未知用語によって示される対象が属するカテゴリを特定することが困難なため、未知用語を対象分野に属する文字列として抽出することは困難であった。
【0017】
そこで、本願発明に係る情報処理装置100は、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを用いて、流入検索クエリとして入力された文字列によって示される対象が属するカテゴリを推定する。これにより、本願発明に係る情報処理装置100は、流入検索クエリとして入力された文字列が未知用語である場合であっても、未知用語によって示される対象が属するカテゴリを推定することができるため、所定のカテゴリに属する対象を示す文字列を精度よく抽出することができる。具体的には、情報処理装置100は、未知用語に対して対象分野とは異なる非対象分野を示すカテゴリが推定された場合には、その未知用語が対象カテゴリに属する対象を示す文字列以外の文字列であると推定することができる。よって、情報処理装置100は、その未知用語を不要文字列として取り除くことができる。一方、情報処理装置100は、流入検索クエリとして入力された文字列が未知用語である場合であっても、未知用語に対して対象分野を示すカテゴリが推定された場合には、その未知用語を対象分野に属する対象文字列であると推定することができる。よって、情報処理装置100は、その未知用語を対象文字列として抽出することができる。したがって、本願発明に係る情報処理装置100は、所定のカテゴリに属する対象を示す文字列を適切に抽出することができる。
【0018】
サービスサーバ200は、対象分野に関するサイトを提供するサーバ装置である。具体的には、サービスサーバ200は、対象分野に関するサイトに流入した流入検索クエリに関する情報を記憶する。
図1に示す例では、サービスサーバ200は、ファッション分野に関するサイトに流入した流入検索クエリに関する情報を記憶する。サービスサーバ200は、情報処理装置100の要求に応じて、流入検索クエリに関する情報を情報処理装置100に対して送信する。なお、サービスサーバ200は、ファッション分野に限らず、種々の分野に関するサイトを提供してもよい。
【0019】
ここから、
図1を用いて、情報処理の流れについて説明する。
図1では、情報処理装置100は、ファッション系サイトに流入した流入検索クエリに関する情報の取得要求をサービスサーバ200に対して送信する。サービスサーバ200は、情報処理装置100の要求に応じて、流入検索クエリに関する情報を情報処理装置100に対して送信する。
【0020】
情報処理装置100は、サービスサーバ200からファッション系サイトに流入した流入検索クエリに関する情報を取得する。具体的には、情報処理装置100は、流入検索クエリとして入力された各文字列を取得する(ステップS1)。
【0021】
図1の左側に示す例では、情報処理装置100は、流入検索クエリQ100として入力された文字列「レディース 未知用語L1」を取得する。ここで、「未知用語L1」は、世の中に登場したばかりの新しい用語(例えば、ファッション用語)であって、まだ辞書等に掲載されていない用語であるものとする。
【0022】
また、情報処理装置100は、流入検索クエリQ200として入力された文字列「未知用語L1 Mサイズ 店舗名T1」を取得する。なお、「店舗名T1」は、特定の店舗(例えば、特定のアパレルメーカー)の名称を示す語句であって、例えば、世の中に登場したばかりの新しい店舗名を示す語句であるものとする。
【0023】
また、情報処理装置100は、流入検索クエリQ300として入力された文字列「Yシャツ 20代」を取得する。
【0024】
また、情報処理装置100は、流入検索クエリQ400として入力された文字列「Yシャツ 人名M1」を取得する。なお、「人名M1」は、特定の人物(例えば、ファッションモデルや芸能人等)の名称を示す語句であって、例えば、世の中に登場したばかりの新しい人名を示す語句であるものとする。
【0025】
また、情報処理装置100は、流入検索クエリQ500として入力された文字列「未知用語L2 コーデ」を取得する。ここで、「未知用語L2」は、「未知用語L1」と同様、世の中に登場したばかりの新しい用語(例えば、ファッション用語)であって、まだ辞書等に掲載されていない用語であるものとする。
【0026】
また、情報処理装置100は、流入検索クエリQ600として入力された文字列「未知用語L2 ブランド名B1 人気」を取得する。なお、「ブランド名B1」は、特定のアパラレルブランドの名称を示す語句であって、例えば、世の中に登場したばかりの新しいブランド名を示す語句であるものとする。
【0027】
続いて、情報処理装置100は、流入検索クエリ群を取得すると、取得した流入検索クエリ群に含まれる各検索クエリとして入力された各文字列から不要な文字列として登録された不要文字列を取り除いた第1文字列を取得する。例えば、情報処理装置100は、不要な文字列として登録された不要文字列のリストを取得する。続いて、情報処理装置100は、取得した不要文字列のリストを参照して、取得した流入検索クエリ群に含まれる各検索クエリとして入力された各文字列の中に不要文字列が含まれるか否かを判定する。続いて、情報処理装置100は、不要文字列が含まれると判定した場合には、検索クエリとして入力された文字列から不要文字列を取り除いた第1文字列を取得する。
【0028】
例えば、情報処理装置100は、不要文字列のリストを参照して、流入検索クエリQ100として入力された文字列「レディース 未知用語L1」に不要文字列である「レディース」が含まれると判定する。続いて、情報処理装置100は、不要文字列が含まれると判定すると、流入検索クエリQ100として入力された文字列「レディース 未知用語L1」から不要文字列である「レディース」を取り除いた第1文字列「未知用語L1」(第1文字列L1)を取得する。
【0029】
また、情報処理装置100は、不要文字列のリストを参照して、流入検索クエリQ200として入力された文字列「未知用語L1 Mサイズ 店舗名T1」に不要文字列である「Mサイズ」が含まれると判定する。続いて、情報処理装置100は、不要文字列が含まれると判定すると、流入検索クエリQ200として入力された文字列「未知用語L1 Mサイズ 店舗名T1」から不要文字列である「Mサイズ」を取り除いた第1文字列「未知用語L1 店舗名T1」(第1文字列L2)を取得する。
【0030】
また、情報処理装置100は、不要文字列のリストを参照して、流入検索クエリQ300として入力された文字列「Yシャツ 20代」に不要文字列である「20代」が含まれると判定する。続いて、情報処理装置100は、不要文字列が含まれると判定すると、流入検索クエリQ300として入力された文字列「Yシャツ 20代」から不要文字列である「20代」を取り除いた第1文字列「Yシャツ」(第1文字列L3)を取得する。
【0031】
また、情報処理装置100は、不要文字列のリストを参照して、流入検索クエリQ500として入力された文字列「未知用語L2 コーデ」に不要文字列である「コーデ」が含まれると判定する。続いて、情報処理装置100は、不要文字列が含まれると判定すると、流入検索クエリQ500として入力された文字列「未知用語L2 コーデ」から不要文字列である「コーデ」を取り除いた第1文字列「未知用語L2」(第1文字列L5)を取得する。
【0032】
また、情報処理装置100は、不要文字列のリストを参照して、流入検索クエリQ600として入力された文字列「未知用語L2 ブランド名B1 人気」に不要文字列である「人気」が含まれると判定する。続いて、情報処理装置100は、不要文字列が含まれると判定すると、流入検索クエリQ600として入力された文字列「未知用語L2 ブランド名B1 人気」から不要文字列である「人気」を取り除いた第1文字列「未知用語L2 ブランド名B1」(第1文字列L6)を取得する。
【0033】
続いて、情報処理装置100は、第1文字列を取得すると、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデル(第2学習モデルM2)を取得する。続いて、情報処理装置100は、第2学習モデルを取得すると、第2学習モデルを用いて、第1文字列によって示される対象が属するカテゴリを推定する。情報処理装置100は、第1文字列によって示される対象が属する複数のカテゴリを推定する。具体的には、情報処理装置100は、第1文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。より具体的には、情報処理装置100は、第2学習モデルM2の入力情報として第1文字列を入力することにより、第2学習モデルM2の出力情報として第1文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する(ステップS2)。
【0034】
図1の真ん中に示す例では、情報処理装置100は、第1文字列L1を取得すると、第2学習モデルM2の入力情報として第1文字列L1を入力することにより、第2学習モデルM2の出力情報として第1文字列L1によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、情報処理装置100は、第1文字列L1によって示される対象がファッションに関するカテゴリC1(以下、ファッションカテゴリC1ともいう)に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0035】
また、情報処理装置100は、第1文字列L2を取得すると、第2学習モデルM2の入力情報として第1文字列L2を入力することにより、第2学習モデルM2の出力情報として第1文字列L2によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、情報処理装置100は、第1文字列L2によって示される対象がファッションカテゴリC1に属する確率を70パーセント、店舗名に関するカテゴリC4に属する確率を30パーセント、その他のカテゴリに属する確率を0%と出力する。
【0036】
また、情報処理装置100は、第1文字列L3を取得すると、第2学習モデルM2の入力情報として第1文字列L3を入力することにより、第2学習モデルM2の出力情報として第1文字列L3によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、情報処理装置100は、第1文字列L3によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0037】
また、情報処理装置100は、第1文字列L4を取得すると、第2学習モデルM2の入力情報として第1文字列L4を入力することにより、第2学習モデルM2の出力情報として第1文字列L4によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、情報処理装置100は、第1文字列L4によって示される対象がファッションカテゴリC1に属する確率を50パーセント、人名に関するカテゴリC2に属する確率を50パーセント、その他のカテゴリに属する確率を0%と出力する。
【0038】
また、情報処理装置100は、第1文字列L5を取得すると、第2学習モデルM2の入力情報として第1文字列L5を入力することにより、第2学習モデルM2の出力情報として第1文字列L5によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、情報処理装置100は、第1文字列L5によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0039】
また、情報処理装置100は、第1文字列L6を取得すると、第2学習モデルM2の入力情報として第1文字列L6を入力することにより、第2学習モデルM2の出力情報として第1文字列L6によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、情報処理装置100は、第1文字列L6によって示される対象がファッションカテゴリC1に属する確率を60パーセント、ブランド名に関するカテゴリC3に属する確率を40パーセント、その他のカテゴリに属する確率を0%と出力する。
【0040】
続いて、情報処理装置100は、第1文字列によって示される対象が属するカテゴリを推定すると、推定されたカテゴリに基づいて、第1文字列の中から、対象分野であるファッションカテゴリC1に属する抽出対象を示す対象文字列を抽出する(ステップS3)。
図1の右側に示す例では、情報処理装置100は、第1文字列の中から、第1文字列「未知用語L1」(第1文字列L1)を対象文字列W1として抽出する。また、情報処理装置100は、第1文字列の中から、第1文字列「Yシャツ」(第1文字列L3)を対象文字列W2として抽出する。また、情報処理装置100は、第1文字列の中から、第1文字列「未知用語L2」(第1文字列L5)を対象文字列W3として抽出する。
【0041】
具体的には、情報処理装置100は、第1文字列によって示される対象が属するカテゴリを推定すると、推定したカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを第1文字列毎に判定する。続いて、情報処理装置100は、推定したカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定した場合、その第1文字列を抽出する。すなわち、情報処理装置100は、ファッションカテゴリC1に属する対象を示す第1文字列を抽出する。続いて、情報処理装置100は、ファッションカテゴリC1に属する対象を示す第1文字列を抽出すると、推定したカテゴリの中に不要なカテゴリとして登録された不要カテゴリを含むか否かを抽出した第1文字列毎に判定する。続いて、情報処理装置100は、推定したカテゴリの中に不要なカテゴリとして登録された不要カテゴリを含まないと判定した場合、その第1文字列を対象文字列として抽出する。すなわち、情報処理装置100は、不要なカテゴリに属する対象を示す第1文字列以外の第1文字列を対象文字列として抽出する。
【0042】
例えば、情報処理装置100は、第1文字列L1について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。情報処理装置100は、第1文字列L1について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、情報処理装置100は、ファッションカテゴリC1が含まれると判定したので、第1文字列L1について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、情報処理装置100は、第1文字列L1について推定されたカテゴリの中に、不要カテゴリを含まないと判定する。続いて、情報処理装置100は、不要カテゴリを含まないと判定したので、第1文字列L1を対象文字列W1として抽出する。
【0043】
また、情報処理装置100は、第1文字列L2について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。情報処理装置100は、第1文字列L2について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、情報処理装置100は、ファッションカテゴリC1が含まれると判定したので、第1文字列L2について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、情報処理装置100は、第1文字列L2について推定されたカテゴリの中に、不要カテゴリである店舗名に関するカテゴリC3を含むと判定する。続いて、情報処理装置100は、不要カテゴリを含むと判定したので、第1文字列L2を対象文字列として抽出しないことを決定する。
【0044】
また、情報処理装置100は、第1文字列L3について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。情報処理装置100は、第1文字列L3について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、情報処理装置100は、ファッションカテゴリC1が含まれると判定したので、第1文字列L3について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、情報処理装置100は、第1文字列L3について推定されたカテゴリの中に、不要カテゴリを含まないと判定する。続いて、情報処理装置100は、不要カテゴリを含まないと判定したので、第1文字列L3を対象文字列W2として抽出する。
【0045】
また、情報処理装置100は、第1文字列L4について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。情報処理装置100は、第1文字列L4について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、情報処理装置100は、ファッションカテゴリC1が含まれると判定したので、第1文字列L4について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、情報処理装置100は、第1文字列L4について推定されたカテゴリの中に、不要カテゴリである人名に関するカテゴリC2を含むと判定する。続いて、情報処理装置100は、不要カテゴリを含むと判定したので、第1文字列L4を対象文字列として抽出しないことを決定する。
【0046】
また、情報処理装置100は、第1文字列L5について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。情報処理装置100は、第1文字列L5について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、情報処理装置100は、ファッションカテゴリC1が含まれると判定したので、第1文字列L5について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、情報処理装置100は、第1文字列L5について推定されたカテゴリの中に、不要カテゴリを含まないと判定する。続いて、情報処理装置100は、不要カテゴリを含まないと判定したので、第1文字列L5を対象文字列W3として抽出する。
【0047】
また、情報処理装置100は、第1文字列L6について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。情報処理装置100は、第1文字列L6について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、情報処理装置100は、ファッションカテゴリC1が含まれると判定したので、第1文字列L6について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、情報処理装置100は、第1文字列L6について推定されたカテゴリの中に、不要カテゴリであるブランド名に関するカテゴリC3を含むと判定する。続いて、情報処理装置100は、不要カテゴリを含むと判定したので、第1文字列L6を対象文字列として抽出しないことを決定する。
【0048】
上述したように、情報処理装置100は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。また、情報処理装置100は、取得した第2学習モデルを用いて、検索クエリとして入力された文字列によって示される対象が属するカテゴリを推定する。そして、情報処理装置100は、推定したカテゴリに基づいて、文字列の中から、対象分野に属する抽出対象を示す対象文字列を抽出する。
【0049】
これにより、情報処理装置100は、検索クエリとして入力された文字列が未知用語である場合であっても、未知用語によって示される対象が属するカテゴリを推定することができるため、所定のカテゴリに属する対象を示す文字列を精度よく抽出することができる。例えば、情報処理装置100は、未知用語に対して対象分野とは異なる非対象分野を示すカテゴリが推定された場合には、その未知用語を不要な文字列として取り除くことができる。また、情報処理装置100は、流入検索クエリとして入力された文字列が未知用語である場合であっても、未知用語に対して対象分野を示すカテゴリが推定された場合には、その未知用語を対象分野に属する対象文字列として抽出することができる。したがって、本願発明に係る情報処理装置100は、所定のカテゴリに属する対象を示す文字列を適切に抽出することができる。
【0050】
〔1−2.情報処理装置の構成〕
次に、
図3を用いて、実施形態に係る情報処理装置100の構成について説明する。
図3は、実施形態に係る情報処理装置100の構成例を示す図である。
図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示させるための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0051】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワークと有線または無線で接続され、例えば、生成装置50とサービスサーバ200との間で情報の送受信を行う。
【0052】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部120は、
図3に示すように、クエリ情報記憶部121と不要文字列記憶部122と不要カテゴリ記憶部123とモデル情報記憶部124を有する。
【0053】
(クエリ情報記憶部121)
クエリ情報記憶部121は、対象分野に関するサイトに流入した検索クエリに関する各種の情報を記憶する。例えば、クエリ情報記憶部121は、ファッション系サイトに流入した検索クエリに関する各種の情報を記憶する。
図4に、実施形態に係るクエリ情報記憶部の一例を示す。
図4に示す例では、クエリ情報記憶部121は、「検索クエリID」、「日時」、「流入サイト名」、「文字列」といった項目を有する。
【0054】
「検索クエリID」は、対象分野に関するサイトに流入した検索クエリを識別する識別情報を示す。「日時」は、検索クエリが対象分野に関するサイトに流入した日時を示す。「流入サイト名」は、検索クエリが流入した流入先のサイト名を示す。「文字列」は、検索クエリとして入力された文字列を示す。
【0055】
図4の1レコード目に示す例では、検索クエリID「Q1」で識別される検索クエリ(検索クエリQ1)は、日時「DT1」に流入サイト名「サイト名N1」に流入した検索クエリであることを示す。また、文字列「サイト名N1 コサッシュ」は、検索クエリQ1として入力された文字列が「サイト名N1 コサッシュ」であることを示す。
【0056】
(不要文字列記憶部122)
不要文字列記憶部122は、不要文字列に関する各種の情報を記憶する。
図5に、実施形態に係る不要文字列記憶部の一例を示す。
図5に示す例では、不要文字列記憶部122は、「不要文字列ID」、「不要文字列」といった項目を有する。
【0057】
「不要文字列ID」は、不要文字列を識別する識別情報を示す。「不要文字列」は、不要な文字列として登録された文字列を示す。
【0058】
図5の1レコード目に示す例では、不要文字列ID「UL11」で識別される不要文字列が「サイト名N1」であることを示す。例えば、「サイト名N1」は、ファッション系サイトのサイト名を示す。
【0059】
(不要カテゴリ記憶部123)
不要カテゴリ記憶部123は、不要カテゴリに関する各種の情報を記憶する。
図6に、実施形態に係る不要カテゴリ記憶部の一例を示す。
図6に示す例では、不要カテゴリ記憶部123は、「不要カテゴリID」、「不要カテゴリ」といった項目を有する。
【0060】
「不要カテゴリID」は、不要カテゴリを識別する識別情報を示す。「不要カテゴリ」は、不要なカテゴリとして登録されたカテゴリを示す。
【0061】
図6の1レコード目に示す例では、不要カテゴリ「人名」は、不要カテゴリID「C2」で識別される不要カテゴリが人名に関するカテゴリであることを示す。
【0062】
(モデル情報記憶部124)
モデル情報記憶部124は、生成装置50によって生成された学習モデルに関する各種の情報を記憶する。
図7に、実施形態に係るモデル情報記憶部の一例を示す。
図7に示す例では、モデル情報記憶部124は、「モデルID」、「モデルデータ」といった項目を有する。
【0063】
「モデルID」は、生成装置50によって生成された学習モデルを識別するための識別情報を示す。「モデルデータ」は、生成装置50によって生成された学習モデルのモデルデータを示す。例えば、「モデルデータ」には、検索クエリを検索クエリが各カテゴリに属する確率に変換するためのデータが格納される。
【0064】
図7の1レコード目に示す例では、モデルID「M1」で識別される学習モデルは、後述する第1モデルM1に対応する。また、モデルデータ「MDT1」は、情報処理装置100によって生成された第1モデルM1のモデルデータ(モデルデータMDT1)を示す。
【0065】
モデルデータMDT1は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリの分散表現を出力層から出力するよう、情報処理装置100を機能させてもよい。
【0066】
ここで、モデルデータMDT1が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
【0067】
また、モデルデータMDT1がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
【0068】
情報処理装置100は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、分散表現の算出を行う。具体的には、モデルデータMDT1は、検索クエリが入力された場合に、分散表現を出力するように係数が設定される。情報処理装置100は、このようなモデルデータMDT1を用いて、分散表現を算出する。
【0069】
なお、上記例では、モデルデータMDT1が、検索クエリが入力された場合に、検索クエリの分散表現を出力するモデル(以下、モデルX1という。)である例を示した。しかし、実施形態に係るモデルデータMDT1は、モデルX1にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT1は、検索クエリを入力とし、モデルX1が出力する分散表現を出力とするよう学習されたモデル(以下、モデルY1という。)であってもよい。または、モデルデータMDT1は、検索クエリを入力とし、モデルY1の出力値を出力とするよう学習されたモデルであってもよい。
【0070】
また、情報処理装置100がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT1は、GANの一部を構成するモデルであってもよい。
【0071】
図7の2レコード目に示す例では、モデルID「M2」で識別される学習モデルは、
図1に示した第2モデルM2に対応する。また、モデルデータ「MDT2」は、情報処理装置100によって生成された第2モデルM2のモデルデータ(モデルデータMDT2)を示す。
【0072】
モデルデータMDT2は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリが各カテゴリに属する確率を出力層から出力するよう、情報処理装置100を機能させてもよい。
【0073】
ここで、モデルデータMDT2が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、モデルデータMDT2が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
【0074】
また、モデルデータMDT2がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、モデルデータMDT2が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
【0075】
情報処理装置100は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、検索クエリが各カテゴリに属する確率の算出を行う。具体的には、モデルデータMDT2は、検索クエリが入力された場合に、検索クエリが各カテゴリに属する確率を出力するように係数が設定される。情報処理装置100は、このようなモデルデータMDT2を用いて、検索クエリが各カテゴリに属する確率を算出する。
【0076】
なお、上記例では、モデルデータMDT2が、検索クエリが入力された場合に、検索クエリが各カテゴリに属する確率を出力するモデル(以下、モデルX2という。)である例を示した。しかし、実施形態に係るモデルデータMDT2は、モデルX2にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT2は、検索クエリを入力とし、モデルX2が出力する確率を出力とするよう学習されたモデル(以下、モデルY2という。)であってもよい。または、モデルデータMDT2は、検索クエリを入力とし、モデルY2の出力値を出力とするよう学習されたモデルであってもよい。
【0077】
また、情報処理装置100がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT2は、GANの一部を構成するモデルであってもよい。
【0078】
(制御部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)等の集積回路により実現される。
【0079】
図3に示すように、制御部130は、取得部131と、処理部132と、推定部133と、抽出部134とを有し、以下に説明する情報処理の作用を実現または実行する。なお、制御部130の内部構成は、
図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0080】
(取得部131)
取得部131は、各種情報を取得する。具体的には、取得部131は、対象分野に属する対象を示す文字列とは異なる対象を示す文字列である不要文字列を取得する。例えば、取得部131は、不要な文字列として登録された不要文字列のリストを取得する。例えば、取得部131は、情報処理装置100の管理者によって登録された不要文字列のリストを取得する。取得部131は、不要文字列を取得すると、取得した不要文字列を不要文字列記憶部122に記憶する。
【0081】
また、取得部131は、対象分野とは異なる非対象分野を示すカテゴリである不要カテゴリに関する情報を取得する。例えば、取得部131は、不要カテゴリとして登録された不要カテゴリのリストを取得する。例えば、取得部131は、情報処理装置100の管理者によって登録された不要カテゴリのリストを取得する。取得部131は、不要カテゴリを取得すると、取得した不要カテゴリを不要カテゴリ記憶部123に記憶する。
【0082】
また、取得部131は、外部の情報処理装置から各種情報を取得する。具体的には、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを生成装置50から取得する。続いて、取得部131は、第2学習モデルを取得すると、取得した第2学習モデルをモデル情報記憶部124に格納する。
【0083】
また、取得部131は、同一のユーザによって所定の時間内に入力された一対の検索クエリの分散表現が類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0084】
また、取得部131は、入力情報として所定の検索クエリが入力された際に、出力情報として所定の検索クエリの分散表現を出力する第1学習モデルを用いて生成された第2学習モデルを取得する。
【0085】
また、取得部131は、入力情報として検索クエリが第2学習モデルに入力された際に、出力情報として検索クエリがカテゴリに属する確率をカテゴリ毎に出力する第2学習モデルを取得する。
【0086】
また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリとして、所定の区切り文字で区切られた文字列を含む複数の検索クエリが類似する特徴を有するものとして学習することで、複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0087】
また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルであって、ランダムに抽出された複数の検索クエリが相違する特徴を有するものとして学習することで、複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0088】
また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルであって、ランダムに抽出された一対の検索クエリの分散表現が相違するように学習することで、複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0089】
また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、検索クエリが第2学習モデルに入力された際に、第2学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0090】
(処理部132)
処理部132は、対象分野に関するサイトに流入した流入検索クエリを取得し、流入検索クエリとして入力された文字列から、不要な文字列として登録された不要文字列を取り除いた第1文字列を取得する。具体的には、処理部132は、サービスサーバ200から対象分野に関するサイトに流入した流入検索クエリに関する情報を取得する。より具体的には、処理部132は、各流入検索クエリとして入力された各文字列を取得する。処理部132は、流入検索クエリとして入力された文字列を取得すると、取得した文字列をクエリ情報記憶部121に格納する。
【0091】
図1に示す例では、処理部132は、サービスサーバ200からファッション系サイトに流入した流入検索クエリに関する情報を取得する。具体的には、処理部132は、流入検索クエリとして入力された各文字列を取得する。
【0092】
図1の左側に示す例では、処理部132は、流入検索クエリQ100として入力された文字列「レディース 未知用語L1」を取得する。ここで、「未知用語L1」は、世の中に登場したばかりの新しい用語(例えば、ファッション用語)であって、まだ辞書等に掲載されていない用語であるものとする。
【0093】
また、処理部132は、流入検索クエリQ200として入力された文字列「未知用語L1 Mサイズ 店舗名T1」を取得する。なお、「店舗名T1」は、特定の店舗(例えば、特定のアパレルメーカー)の名称を示す語句であって、例えば、世の中に登場したばかりの新しい店舗名を示す語句であるものとする。
【0094】
また、処理部132は、流入検索クエリQ300として入力された文字列「Yシャツ 20代」を取得する。
【0095】
また、処理部132は、流入検索クエリQ400として入力された文字列「Yシャツ 人名M1」を取得する。なお、「人名M1」は、特定の人物(例えば、ファッションモデルや芸能人等)の名称を示す語句であって、例えば、世の中に登場したばかりの新しい人名を示す語句であるものとする。
【0096】
また、処理部132は、流入検索クエリQ500として入力された文字列「未知用語L2 コーデ」を取得する。ここで、「未知用語L2」は、「未知用語L1」と同様、世の中に登場したばかりの新しい用語(例えば、ファッション用語)であって、まだ辞書等に掲載されていない用語であるものとする。
【0097】
また、処理部132は、流入検索クエリQ600として入力された文字列「未知用語L2 ブランド名B1 人気」を取得する。なお、「ブランド名B1」は、特定のアパラレルブランドの名称を示す語句であって、例えば、世の中に登場したばかりの新しいブランド名を示す語句であるものとする。
【0098】
続いて、処理部132は、流入検索クエリ群を取得すると、取得した流入検索クエリ群に含まれる各検索クエリとして入力された各文字列から不要な文字列として登録された不要文字列を取り除いた第1文字列を取得する。例えば、処理部132は、不要文字列記憶部122を参照して、不要な文字列として登録された不要文字列のリストを取得する。続いて、処理部132は、取得した不要文字列のリストを参照して、取得した流入検索クエリ群に含まれる各検索クエリとして入力された各文字列の中に不要文字列が含まれるか否かを判定する。続いて、処理部132は、不要文字列が含まれると判定した場合には、検索クエリとして入力された文字列から不要文字列を取り除いた第1文字列を取得する。
【0099】
例えば、処理部132は、不要文字列のリストを参照して、流入検索クエリQ100として入力された文字列「レディース 未知用語L1」に不要文字列である「レディース」が含まれると判定する。続いて、処理部132は、不要文字列が含まれると判定すると、流入検索クエリQ100として入力された文字列「レディース 未知用語L1」から不要文字列である「レディース」を取り除いた第1文字列「未知用語L1」(第1文字列L1)を取得する。
【0100】
また、処理部132は、不要文字列のリストを参照して、流入検索クエリQ200として入力された文字列「未知用語L1 Mサイズ 店舗名T1」に不要文字列である「Mサイズ」が含まれると判定する。続いて、処理部132は、不要文字列が含まれると判定すると、流入検索クエリQ200として入力された文字列「未知用語L1 Mサイズ 店舗名T1」から不要文字列である「Mサイズ」を取り除いた第1文字列「未知用語L1 店舗名T1」(第1文字列L2)を取得する。
【0101】
また、処理部132は、不要文字列のリストを参照して、流入検索クエリQ300として入力された文字列「Yシャツ 20代」に不要文字列である「20代」が含まれると判定する。続いて、処理部132は、不要文字列が含まれると判定すると、流入検索クエリQ300として入力された文字列「Yシャツ 20代」から不要文字列である「20代」を取り除いた第1文字列「Yシャツ」(第1文字列L3)を取得する。
【0102】
また、処理部132は、不要文字列のリストを参照して、流入検索クエリQ500として入力された文字列「未知用語L2 コーデ」に不要文字列である「コーデ」が含まれると判定する。続いて、処理部132は、不要文字列が含まれると判定すると、流入検索クエリQ500として入力された文字列「未知用語L2 コーデ」から不要文字列である「コーデ」を取り除いた第1文字列「未知用語L2」(第1文字列L5)を取得する。
【0103】
また、処理部132は、不要文字列のリストを参照して、流入検索クエリQ600として入力された文字列「未知用語L2 ブランド名B1 人気」に不要文字列である「人気」が含まれると判定する。続いて、処理部132は、不要文字列が含まれると判定すると、流入検索クエリQ600として入力された文字列「未知用語L2 ブランド名B1 人気」から不要文字列である「人気」を取り除いた第1文字列「未知用語L2 ブランド名B1」(第1文字列L6)を取得する。
【0104】
(推定部133)
推定部133は、取得部131によって取得された第2学習モデルを用いて、検索クエリとして入力された文字列によって示される対象が属するカテゴリを推定する。推定部133は、処理部132によって取得された第1文字列によって示される対象が属するカテゴリを推定する。具体的には、推定部133は、処理部132によって第1文字列が取得されると、モデル情報記憶部124を参照して、第2学習モデル(第2学習モデルM2)を取得する。続いて、推定部133は、第2学習モデルを取得すると、第2学習モデルを用いて、第1文字列によって示される対象が属するカテゴリを推定する。推定部133は、文字列によって示される対象が属する複数のカテゴリを推定する。例えば、推定部133は、第1文字列によって示される対象が属する複数のカテゴリを推定する。
【0105】
より具体的には、推定部133は、文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第1文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第2学習モデルM2の入力情報として第1文字列を入力することにより、第2学習モデルM2の出力情報として第1文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。
【0106】
図1の真ん中に示す例では、推定部133は、第1文字列L1を取得すると、第2学習モデルM2の入力情報として第1文字列L1を入力することにより、第2学習モデルM2の出力情報として第1文字列L1によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第1文字列L1によって示される対象がファッションに関するカテゴリC1(以下、ファッションカテゴリC1ともいう)に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0107】
また、推定部133は、第1文字列L2を取得すると、第2学習モデルM2の入力情報として第1文字列L2を入力することにより、第2学習モデルM2の出力情報として第1文字列L2によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第1文字列L2によって示される対象がファッションカテゴリC1に属する確率を70パーセント、店舗名に関するカテゴリC4に属する確率を30パーセント、その他のカテゴリに属する確率を0%と出力する。
【0108】
また、推定部133は、第1文字列L3を取得すると、第2学習モデルM2の入力情報として第1文字列L3を入力することにより、第2学習モデルM2の出力情報として第1文字列L3によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第1文字列L3によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0109】
また、推定部133は、第1文字列L4を取得すると、第2学習モデルM2の入力情報として第1文字列L4を入力することにより、第2学習モデルM2の出力情報として第1文字列L4によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第1文字列L4によって示される対象がファッションカテゴリC1に属する確率を50パーセント、人名に関するカテゴリC2に属する確率を50パーセント、その他のカテゴリに属する確率を0%と出力する。
【0110】
また、推定部133は、第1文字列L5を取得すると、第2学習モデルM2の入力情報として第1文字列L5を入力することにより、第2学習モデルM2の出力情報として第1文字列L5によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第1文字列L5によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0111】
また、推定部133は、第1文字列L6を取得すると、第2学習モデルM2の入力情報として第1文字列L6を入力することにより、第2学習モデルM2の出力情報として第1文字列L6によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。例えば、推定部133は、第1文字列L6によって示される対象がファッションカテゴリC1に属する確率を60パーセント、ブランド名に関するカテゴリC3に属する確率を40パーセント、その他のカテゴリに属する確率を0%と出力する。
【0112】
(抽出部134)
抽出部134は、推定部133によって推定されたカテゴリに基づいて、文字列の中から、対象分野に属する抽出対象を示す対象文字列を抽出する。具体的には、抽出部134は、推定部133によって推定されたカテゴリの中に、対象分野を示すカテゴリを含む文字列を対象文字列として抽出する。例えば、抽出部134は、推定部133によって第1文字列によって示される対象が属するカテゴリが推定されると、推定部133によって推定されたカテゴリの中に、対象分野を示すカテゴリが含まれるか否かを第1文字列毎に判定する。続いて、抽出部134は、推定部133によって推定されたカテゴリの中に、対象分野を示すカテゴリが含まれると判定した場合、その第1文字列を抽出する。すなわち、抽出部134は、対象分野を示すカテゴリに属する対象を示す第1文字列を抽出する。
【0113】
また、抽出部134は、推定部133によって推定されたカテゴリの中に、不要なカテゴリとして登録された不要カテゴリを含まない文字列を対象文字列として抽出する。例えば、抽出部134は、不要カテゴリ記憶部123を参照して、不要なカテゴリとして登録された不要カテゴリのリストを取得する。続いて、抽出部134は、対象分野を示すカテゴリが含まれる第1文字列を抽出すると、取得した不要カテゴリのリストを参照して、推定部133によって推定されたカテゴリの中に、不要なカテゴリとして登録された不要カテゴリが含まれるか否かを抽出した第1文字列毎に判定する。続いて、抽出部134は、推定部133によって推定されたカテゴリの中に、不要カテゴリが含まれないと判定した場合、その第1文字列を対象文字列として抽出する。すなわち、抽出部134は、不要カテゴリに属する対象を示す第1文字列以外の第1文字列を対象文字列として抽出する。
【0114】
図1の右側に示す例では、情報処理装置100は、第1文字列の中から、第1文字列「未知用語L1」(第1文字列L1)を対象文字列W1として抽出する。また、情報処理装置100は、第1文字列の中から、第1文字列「Yシャツ」(第1文字列L3)を対象文字列W2として抽出する。また、情報処理装置100は、第1文字列の中から、第1文字列「未知用語L2」(第1文字列L5)を対象文字列W3として抽出する。
【0115】
具体的には、抽出部134は、推定部133によって第1文字列L1について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。抽出部134は、第1文字列L1について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、抽出部134は、ファッションカテゴリC1が含まれると判定したので、第1文字列L1について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、抽出部134は、第1文字列L1について推定されたカテゴリの中に、不要カテゴリを含まないと判定する。続いて、抽出部134は、不要カテゴリを含まないと判定したので、第1文字列L1を対象文字列W1として抽出する。
【0116】
また、抽出部134は、推定部133によって第1文字列L2について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。抽出部134は、第1文字列L2について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、抽出部134は、ファッションカテゴリC1が含まれると判定したので、第1文字列L2について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、抽出部134は、第1文字列L2について推定されたカテゴリの中に、不要カテゴリである店舗名に関するカテゴリC3を含むと判定する。続いて、抽出部134は、不要カテゴリを含むと判定したので、第1文字列L2を対象文字列として抽出しないことを決定する。
【0117】
また、抽出部134は、推定部133によって第1文字列L3について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。抽出部134は、第1文字列L3について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、抽出部134は、ファッションカテゴリC1が含まれると判定したので、第1文字列L3について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、抽出部134は、第1文字列L3について推定されたカテゴリの中に、不要カテゴリを含まないと判定する。続いて、抽出部134は、不要カテゴリを含まないと判定したので、第1文字列L3を対象文字列W2として抽出する。
【0118】
また、抽出部134は、推定部133によって第1文字列L4について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。抽出部134は、第1文字列L4について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、抽出部134は、ファッションカテゴリC1が含まれると判定したので、第1文字列L4について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、抽出部134は、第1文字列L4について推定されたカテゴリの中に、不要カテゴリである人名に関するカテゴリC2を含むと判定する。続いて、抽出部134は、不要カテゴリを含むと判定したので、第1文字列L4を対象文字列として抽出しないことを決定する。
【0119】
また、抽出部134は、推定部133によって第1文字列L5について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。抽出部134は、第1文字列L5について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、抽出部134は、ファッションカテゴリC1が含まれると判定したので、第1文字列L5について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、抽出部134は、第1文字列L5について推定されたカテゴリの中に、不要カテゴリを含まないと判定する。続いて、抽出部134は、不要カテゴリを含まないと判定したので、第1文字列L5を対象文字列W3として抽出する。
【0120】
また、抽出部134は、推定部133によって第1文字列L6について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれるか否かを判定する。抽出部134は、第1文字列L6について推定されたカテゴリの中に、対象分野であるファッションカテゴリC1が含まれると判定する。続いて、抽出部134は、ファッションカテゴリC1が含まれると判定したので、第1文字列L6について推定されたカテゴリの中に、不要カテゴリを含むか否かを判定する。続いて、抽出部134は、第1文字列L6について推定されたカテゴリの中に、不要カテゴリであるブランド名に関するカテゴリC3を含むと判定する。続いて、抽出部134は、不要カテゴリを含むと判定したので、第1文字列L6を対象文字列として抽出しないことを決定する。
【0121】
次に、
図8を用いて、実施形態に係る情報処理の一例についてより詳しく説明する。
図8は、実施形態に係る情報処理の一例を示す図である。
図8に示す例では、処理部132は、クエリ情報記憶部121を参照して、ファッション系サイトに流入した検索クエリとして入力された文字列を取得する(ステップS1´)。
【0122】
例えば、処理部132は、検索クエリQ1として入力された文字列「サイト名N1 コサッシュ」を取得する。また、処理部132は、検索クエリQ2として入力された文字列「サイト名N2 コサッシュ 人名M1」を取得する。また、処理部132は、検索クエリQ3として入力された文字列「花柄サーマル レディース」を取得する。また、処理部132は、検索クエリQ4として入力された文字列「花柄サーマル 人気 ブランド名B1」を取得する。また、処理部132は、検索クエリQ5として入力された文字列「花柄サーマル コーデ 店舗名T1」を取得する。また、処理部132は、検索クエリQ6として入力された文字列「マニデニム Mサイズ」を取得する。また、処理部132は、検索クエリQ7として入力された文字列「マニデニム Lサイズ ブランド名B2」を取得する。また、処理部132は、検索クエリQ8として入力された文字列「抜け襟 20代」を取得する。また、処理部132は、検索クエリQ9として入力された文字列「抜け襟 30代 人名M2」を取得する。
【0123】
続いて、処理部132は、流入検索クエリを取得すると、不要文字列記憶部122を参照して、取得した流入検索クエリ群に含まれる各検索クエリとして入力された各文字列から不要な文字列として登録された不要文字列を取り除いた第1文字列を取得する。具体的には、処理部132は、
図8のステップS1´の下段に示すテーブル121Aを記憶部120に一時的に記憶する。
【0124】
例えば、処理部132は、検索クエリQ1として入力された文字列「サイト名N1 コサッシュ」から不要文字列「サイト名N1」(不要文字列UL11)を取り除いた第1文字列「コサッシュ」(第1文字列L11)を取得する。また、処理部132は、検索クエリQ2として入力された文字列「サイト名N2 コサッシュ 人名M1」から不要文字列「サイト名N2」(不要文字列UL12)を取り除いた第1文字列「コサッシュ 人名M1」(第1文字列L12)を取得する。また、処理部132は、検索クエリQ3として入力された文字列「花柄サーマル レディース」から不要文字列「レディース」(不要文字列UL21)を取り除いた第1文字列「花柄サーマル」(第1文字列L13)を取得する。また、処理部142は、検索クエリQ4として入力された文字列「花柄サーマル 人気 ブランド名B1」から不要文字列「人気」(不要文字列UL22)を取り除いた第1文字列「花柄サーマル ブランド名B1」(第1文字列L14)を取得する。また、処理部152は、検索クエリQ5として入力された文字列「花柄サーマル コーデ 店舗名T1」から不要文字列「コーデ」(不要文字列UL23)を取り除いた第1文字列「花柄サーマル 店舗名T1」(第1文字列L15)を取得する。また、処理部162は、検索クエリQ6として入力された文字列「マニデニム Mサイズ」から不要文字列「Mサイズ」(不要文字列UL31)を取り除いた第1文字列「マニデニム」(第1文字列L16)を取得する。また、処理部172は、検索クエリQ7として入力された文字列「マニデニム Lサイズ ブランド名B2」から不要文字列「Lサイズ」(不要文字列UL32)を取り除いた第1文字列「マニデニム ブランド名B2」(第1文字列L17)を取得する。また、処理部182は、検索クエリQ8として入力された文字列「抜け襟 20代」から不要文字列「20代」(不要文字列UL41)を取り除いた第1文字列「抜け襟」(第1文字列L18)を取得する。また、処理部192は、検索クエリQ9として入力された文字列「抜け襟 30代 人名M2」から不要文字列「30代」(不要文字列UL42)を取り除いた第1文字列「抜け襟 人名M2」(第1文字列L19)を取得する。
【0125】
続いて、推定部133は、処理部132によって第1文字列が取得されると、モデル情報記憶部124を参照して、第2学習モデル(第2学習モデルM2)を取得する。続いて、推定部133は、第2学習モデルを取得すると、第2学習モデルを用いて、第1文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。
図8に示す例では、推定部133は、第2学習モデルM2の入力情報として第1文字列を入力することにより、第2学習モデルM2の出力情報として第1文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する(ステップS2´)。具体的には、推定部133は、
図8のステップS2´に示すテーブル121Bの情報を記憶部120に一時的に記憶する。
【0126】
例えば、推定部133は、第2学習モデルM2の入力情報として第1文字列「コサッシュ」(第1文字列L11)を入力することにより、第2学習モデルM2の出力情報として第1文字列L11によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0127】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「コサッシュ 人名M1」(第1文字列L12)を入力することにより、第2学習モデルM2の出力情報として第1文字列L12によって示される対象がファッションカテゴリC1に属する確率を50パーセント、人名に関するカテゴリC2に属する確率を50パーセント、その他のカテゴリに属する確率を0%と出力する。
【0128】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「花柄サーマル」(第1文字列L13)を入力することにより、第2学習モデルM2の出力情報として第1文字列L13によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0129】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「花柄サーマル ブランド名B1」(第1文字列L14)を入力することにより、第2学習モデルM2の出力情報として第1文字列L14によって示される対象がファッションカテゴリC1に属する確率を60パーセント、ブランド名に関するカテゴリC3に属する確率を40パーセント、その他のカテゴリに属する確率を0%と出力する。
【0130】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「花柄サーマル 店舗名T1」(第1文字列L15)を入力することにより、第2学習モデルM2の出力情報として第1文字列L15によって示される対象がファッションカテゴリC1に属する確率を70パーセント、店舗名に関するカテゴリC4に属する確率を30パーセント、その他のカテゴリに属する確率を0%と出力する。
【0131】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「マニデニム」(第1文字列L16)を入力することにより、第2学習モデルM2の出力情報として第1文字列L16によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0132】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「マニデニム ブランド名B2」(第1文字列L17)を入力することにより、第2学習モデルM2の出力情報として第1文字列L17によって示される対象がファッションカテゴリC1に属する確率を50パーセント、ブランド名に関するカテゴリC3に属する確率を50パーセント、その他のカテゴリに属する確率を0%と出力する。
【0133】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「抜け襟」(第1文字列L18)を入力することにより、第2学習モデルM2の出力情報として第1文字列L18によって示される対象がファッションカテゴリC1に属する確率を100パーセント、その他のカテゴリに属する確率を0%と出力する。
【0134】
また、推定部133は、第2学習モデルM2の入力情報として第1文字列「抜け襟 人名M2」(第1文字列L19)を入力することにより、第2学習モデルM2の出力情報として第1文字列L19によって示される対象がファッションカテゴリC1に属する確率を80パーセント、人名に関するカテゴリC2に属する確率を20パーセント、その他のカテゴリに属する確率を0%と出力する。
【0135】
続いて、抽出部134は、推定部133によって第1文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力すると、推定部133によって推定されたカテゴリの中に、対象分野を示すカテゴリが含まれる第1文字列を抽出する。すなわち、抽出部134は、対象分野を示すカテゴリに属する対象を示す第1文字列を抽出する。続いて、抽出部134は、対象分野を示すカテゴリが含まれる第1文字列を抽出すると、不要カテゴリ記憶部123を参照して、推定部133によって推定されたカテゴリの中に、不要カテゴリが含まれない第1文字列を対象文字列として抽出する。すなわち、抽出部134は、不要カテゴリに属する対象を示す第1文字列以外の第1文字列を対象文字列(第2文字列ともいう)として抽出する(ステップS3´)。具体的には、推定部133は、
図8のステップS3´に示すテーブル121Cの情報を記憶部120に記憶する。
【0136】
例えば、抽出部134は、第1文字列「コサッシュ」(第1文字列L11)について推定されたカテゴリの中に、対象分野を示すファッションカテゴリC1が含まれており、かつ、不要カテゴリが含まれないので、第1文字列「コサッシュ」(第1文字列L11)を第2文字列W21として抽出する。
【0137】
また、抽出部134は、第1文字列「コサッシュ 人名M1」(第1文字列L12)について推定されたカテゴリの中にはファッションカテゴリC1が含まれるが、不要カテゴリである人名に関するカテゴリC2が含まれるので、第1文字列「コサッシュ 人名M1」(第1文字列L12)を第2文字列として抽出しないことを決定する。
【0138】
また、抽出部134は、第1文字列「花柄サーマル」(第1文字列L13)について推定されたカテゴリの中に、対象分野を示すファッションカテゴリC1が含まれており、かつ、不要カテゴリが含まれないので、第1文字列「花柄サーマル」(第1文字列L13)を第2文字列W22として抽出する。
【0139】
また、抽出部134は、第1文字列「花柄サーマル ブランド名B1」(第1文字列L14)について推定されたカテゴリの中にはファッションカテゴリC1が含まれるが、不要カテゴリであるブランド名に関するカテゴリC3が含まれるので、第1文字列「花柄サーマル ブランド名B1」(第1文字列L14)を第2文字列として抽出しないことを決定する。
【0140】
また、抽出部134は、第1文字列「花柄サーマル 店舗名T1」(第1文字列L15)について推定されたカテゴリの中にはファッションカテゴリC1が含まれるが、不要カテゴリである店舗名に関するカテゴリC4が含まれるので、第1文字列「花柄サーマル 店舗名T1」(第1文字列L15)を第2文字列として抽出しないことを決定する。
【0141】
また、抽出部134は、第1文字列「マニデニム」(第1文字列L16)について推定されたカテゴリの中に、対象分野を示すファッションカテゴリC1が含まれており、かつ、不要カテゴリが含まれないので、第1文字列「マニデニム」(第1文字列L16)を第2文字列W23として抽出する。
【0142】
また、抽出部134は、第1文字列「マニデニム ブランド名B2」(第1文字列L17)について推定されたカテゴリの中にはファッションカテゴリC1が含まれるが、不要カテゴリであるブランド名に関するカテゴリC3が含まれるので、第1文字列「マニデニム ブランド名B2」(第1文字列L17)を第2文字列として抽出しないことを決定する。
【0143】
また、抽出部134は、第1文字列「抜け襟」(第1文字列L18)について推定されたカテゴリの中に、対象分野を示すファッションカテゴリC1が含まれており、かつ、不要カテゴリが含まれないので、第1文字列「抜け襟」(第1文字列L18)を第2文字列W24として抽出する。
【0144】
また、抽出部134は、第1文字列「抜け襟 人名M2」(第1文字列L19)について推定されたカテゴリの中にはファッションカテゴリC1が含まれるが、不要カテゴリである人名に関するカテゴリC2が含まれるので、第1文字列「抜け襟 人名M2」(第1文字列L19)を第2文字列として抽出しないことを決定する。
【0145】
〔1−3.情報処理のフロー〕
次に、
図9を用いて、実施形態に係る情報処理の手順について説明する。
図9は、実施形態に係る情報処理手順を示すフローチャートである。
図9に示す例では、情報処理装置100は、対象分野に関するサイトに流入した検索クエリを取得する(ステップS101)。続いて、情報処理装置100は、対象分野に関するサイトに流入した検索クエリを取得すると、検索クエリとして入力された文字列から不要文字列を取り除いた第1文字列を取得する(ステップS102)。続いて、情報処理装置100は、第1文字列を取得すると、第2学習モデルを用いて、第1文字列によって示される対象が属するカテゴリを推定する(ステップS103)。続いて、情報処理装置100は、カテゴリを推定すると、推定したカテゴリに基づいて、第1文字列の中から抽出対象を示す第2文字列を抽出する(ステップS104)。
【0146】
〔2.学習モデルの生成処理〕
〔2−1.第1学習モデルの生成処理〕
次に、
図10を用いて、第1学習モデルの生成処理の流れについて説明する。
図10は、実施形態に係る第1学習モデルの生成処理の一例を示す図である。
図10に示す例では、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された「六本木 パスタ」という検索クエリQ11と「六本木 イタリアン」という検索クエリQ12とから成る一対の検索クエリを抽出する(ステップS11)。
【0147】
続いて、生成装置50は、抽出した検索クエリQ11を第1モデルM1に入力して、検索クエリQ11の分散表現であるベクトルBQV11を出力する。ここで、ベクトルBQV11は、第1モデルM1の出力層から出力されたばかりの検索クエリQ11の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す。また、生成装置50は、抽出した検索クエリQ12を第1モデルM1に入力して、検索クエリQ12の分散表現であるベクトルBQV12を出力する。ここで、ベクトルBQV12は、第1モデルM1の出力層から出力されたばかりの検索クエリQ12の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す。このようにして、生成装置50は、検索クエリQ11の分散表現であるベクトルBQV11と、検索クエリQ12の分散表現であるベクトルBQV12とを出力する(ステップS12)。
【0148】
続いて、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された検索クエリQ11(「六本木 パスタ」)と検索クエリQ12(「六本木 イタリアン」)とから成る一対の検索クエリは、所定の検索意図(例えば、「ある場所で飲食店を探す」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、分散表現空間上で類似するように第1モデルM1を学習させる。例えば、第1モデルM1にフィードバックをかける前(学習前)の検索クエリQ11の分散表現であるベクトルBQV11と検索クエリQ12の分散表現であるベクトルBQV12とのなす角度の大きさをΘとする。また、第1モデルM1にフィードバックをかけた後(学習後)の検索クエリQ11の分散表現であるベクトルQV11と検索クエリQ12の分散表現であるベクトルQV12とのなす角度の大きさをΦとする。この時、生成装置50は、ΘよりもΦが小さくなるように、第1モデルM1を学習させる。例えば、生成装置50は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値を算出する。また、生成装置50は、ベクトルQV11とベクトルQV12のコサイン類似度の値を算出する。続いて、生成装置50は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値よりも、ベクトルQV11とベクトルQV12のコサイン類似度の値が大きくなるように(値が1に近づくように)第1モデルM1を学習させる。このように、生成装置50は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように第1モデルM1を学習させることで、検索クエリから分散表現を出力する第1モデルM1を生成する(ステップS13)。なお、生成装置50は、コサイン類似度に限らず、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて分散表現の間の類似度を算出してもよい。また、生成装置50は、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて第1モデルM1を学習させてもよい。例えば、生成装置50は、分散表現同士のユークリッド距離や双曲空間等の非ユークリッド空間中での距離、マンハッタン距離、マハラノビス距離等といった所定の距離関数の値を算出する。続いて、生成装置50は、分散表現同士の所定の距離関数の値(すなわち、分散表現空間における距離)が小さくなるように第1モデルM1を学習させてもよい。
【0149】
次に、
図11を用いて、第1学習モデルの生成処理の流れについてより詳しく説明する。なお、
図11の説明では、
図10の説明と重複する部分は、適宜省略する。
図11は、実施形態に係る第1学習モデルの生成処理を示す図である。
図11に示す例では、生成装置50が生成した第1モデルM1によって出力された分散表現が分散表現空間にマッピングされる様子が示されている。生成装置50は、所定の検索クエリの分散表現と所定の検索クエリと対となる他の検索クエリの分散表現とが分散表現空間上で近くにマッピングされるように第1モデルM1のトレーニングを行う。
【0150】
図11の上段に示す例では、生成装置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つの検索クエリを一対の検索クエリとして抽出してもよい。
【0151】
続いて、生成装置50は、抽出した検索クエリQ1k(k=1、2、3、4)を第1モデルM1に入力して、検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルBQV1k(k=1、2、3、4)を出力する。ここで、ベクトルBQV1k(k=1、2、3、4)は、第1モデルM1の出力層から出力されたばかりの検索クエリQ1k(k=1、2、3、4)の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す(ステップS22−1)。
【0152】
続いて、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された一対の検索クエリは、所定の検索意図(例えば、「ある場所(東京都港区付近)で飲食店を探す」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、分散表現空間上で類似するように第1モデルM1を学習させる。また、生成装置50は、検索クエリQ12の分散表現(ベクトルQV12)と、検索クエリQ12と対となる検索クエリQ13の分散表現(ベクトルQV13)とが、分散表現空間上で類似するように第1モデルM1を学習させる。また、生成装置50は、検索クエリQ13の分散表現(ベクトルQV13)と、検索クエリQ13と対となる検索クエリQ14の分散表現(ベクトルQV14)とが、分散表現空間上で類似するように第1モデルM1を学習させる。このように、生成装置50は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように第1モデルM1を学習させることで、検索クエリから分散表現を出力する第1モデルM1を生成する(ステップS23−1)。
【0153】
図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)は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。ここで、生成装置50は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図で入力された所定の検索クエリが第1モデルに入力されると、クラスタCL11の位置にマッピングされるような分散表現を出力することができる。これにより、例えば、生成装置50は、クラスタCL11の位置にマッピングされる分散表現に対応する検索クエリを抽出することにより、「ある場所(東京都港区付近)で飲食店を探す」という検索意図に応じた検索クエリを抽出することができる。したがって、生成装置50は、検索クエリの意味を適切に解釈可能とすることができる。
【0154】
図11の下段に示す例では、生成装置50は、同一のユーザU2によって所定の時間内に連続して入力された3個の検索クエリである検索クエリQ21(「冷蔵庫 400L」)、検索クエリQ22(「冷蔵庫 中型」)、検索クエリQ23(「冷蔵庫 中型 おすすめ」)を抽出する。生成装置50は、検索クエリが入力された順番に並べると、検索クエリQ21、検索クエリQ22、検索クエリQ23の順番で入力された3個の検索クエリを抽出する。生成装置50は、3個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、2対の検索クエリのペアである(検索クエリQ21、検索クエリQ22)、(検索クエリQ22、検索クエリQ23)を抽出する(ステップS21−2)。
【0155】
続いて、生成装置50は、抽出した検索クエリQ2m(m=1、2、3)を第1モデルM1に入力して、検索クエリQ2m(m=1、2、3)の分散表現であるベクトルBQV2m(m=1、2、3)を出力する。ここで、ベクトルBQV2m(m=1、2、3)は、第1モデルM1の出力層から出力されたばかりの検索クエリQ2m(m=1、2、3)の分散表現であって、第1モデルM1にフィードバックをかける前(学習前)の分散表現を示す(ステップS22−2)。
【0156】
続いて、生成装置50は、同一のユーザU2によって所定の時間内に連続して入力された一対の検索クエリは、所定の検索意図(例えば、「中型の冷蔵庫を調べる」という検索意図)で入力された検索クエリであると推定されるため、相互に類似する特徴を有するものとして、検索クエリQ21の分散表現(ベクトルQV21)と、検索クエリQ21と対となる検索クエリQ22の分散表現(ベクトルQV22)とが、分散表現空間上で類似するように第1モデルM1を学習させる。また、生成装置50は、検索クエリQ22の分散表現(ベクトルQV22)と、検索クエリQ22と対となる検索クエリQ23の分散表現(ベクトルQV23)とが、分散表現空間上で類似するように第1モデルM1を学習させる。このように、生成装置50は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように第1モデルM1を学習させることで、検索クエリから分散表現を出力する第1モデルM1を生成する(ステップS23−2)。
【0157】
図11の下段に示す情報処理の結果として、検索クエリQ2m(m=1、2、3)の分散表現であるベクトルQV2m(m=1、2、3)が分散表現空間の近い位置にクラスタCL21としてマッピングされる様子が示されている。例えば、検索クエリQ2m(m=1、2、3)は、ユーザU2によって「中型の冷蔵庫を調べる」という検索意図の下で検索された検索クエリの集合であると推定される。すなわち、Q2m(m=1、2、3)は、「中型の冷蔵庫を調べる」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。ここで、生成装置50は、「中型の冷蔵庫を調べる」という検索意図で入力された所定の検索クエリが第1モデルに入力されると、クラスタCL21の位置にマッピングされるような分散表現を出力することができる。これにより、例えば、生成装置50は、クラスタCL21の位置にマッピングされる分散表現に対応する検索クエリを抽出することにより、「中型の冷蔵庫を調べる」という検索意図に応じた検索クエリを抽出することができる。したがって、生成装置50は、検索クエリの意味を適切に解釈可能とすることができる。
【0158】
また、本願発明に係る生成装置50は、ランダムに抽出された複数の検索クエリは、異なる検索意図の下で検索された検索クエリであるという点で、相互に相違する特徴を有する検索クエリであるとみなして第1モデルM1を学習させる。具体的には、生成装置50は、所定の検索クエリの分散表現と、所定の検索クエリとは無関係にランダムに抽出された検索クエリの分散表現とが分散表現空間上で遠くにマッピングされるように第1モデルM1のトレーニングを行う。
図11に示す例では、生成装置50は、検索クエリQ11とは無関係にランダムに検索クエリを抽出したところ、検索クエリQ21が抽出されたとする。この場合、生成装置50は、検索クエリ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とは、分散表現空間上で遠くにマッピングされる。すなわち、本願発明に係る生成装置50は、ランダムに抽出された複数の検索クエリの分散表現が相違するように第1モデルM1を学習させることにより、検索意図が異なる検索クエリの分散表現を分散表現空間上で遠い位置に出力可能とする。
【0159】
なお、生成装置50が生成した第1モデルM1によって出力された分散表現が分散表現空間にマッピングされた結果として、上述したクラスタCL11とクラスタCL21の他にも、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現の集合であるクラスタCL12やクラスタCL22が生成される。
【0160】
上述したように、生成装置50は、ユーザによって入力された検索クエリを取得する。また、生成装置50は、取得した検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する第1モデルを生成する。すなわち、本願発明に係る生成装置50は、所定の時間内に連続して入力された複数の検索クエリは、所定の検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであるとみなして第1モデルを学習させる。具体的には、生成装置50は、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現が類似するように第1モデルを学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を含む分散表現を出力する第1モデルを生成する。すなわち、本願発明に係る生成装置50は、所定の時間内に連続して入力された複数の検索クエリの分散表現が類似するように第1モデルM1を学習させることにより、所定の検索意図の下で検索された検索クエリの分散表現を分散表現空間上で近い位置に出力可能とする。これにより、生成装置50は、検索クエリを入力したユーザのコンテクストに応じて検索クエリの意味(検索意図)を出力(解釈)することを可能にする。したがって、生成装置50は、検索クエリの意味を適切に解釈可能とすることができる。さらに、生成装置50は、所定の検索クエリの特徴情報を含む分散表現の近傍にマッピングされる分散表現に対応する検索クエリを抽出することにより、所定の検索クエリが検索された検索意図に応じた検索クエリを抽出することができる。すなわち、生成装置50は、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、ユーザの検索動向を分析することを可能にする。したがって、生成装置50は、ユーザの検索動向の分析精度を高めることができる。また、生成装置50が生成した第1モデルM1を検索システムの一部として機能させることもできる。あるいは、生成装置50は、第1モデルM1によって予測された検索クエリの特徴情報を利用する他のシステム(例えば、検索エンジン)への入力情報として、第1モデルM1が出力した検索クエリの分散表現を提供することもできる。これにより、検索システムは、第1モデルM1によって予測された検索クエリの特徴情報に基づいて、検索結果として出力されるコンテンツを選択可能になる。すなわち、検索システムは、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、検索結果として出力されるコンテンツを選択可能になる。さらに、検索システムは、第1モデルM1によって予測された検索クエリの特徴情報に基づいて、検索結果として出力されるコンテンツに含まれる文字列の分散表現と検索クエリの分散表現との類似度を算出可能になる。そして、検索システムは、算出した類似度に基づいて、検索結果として出力されるコンテンツの表示順を決定可能になる。すなわち、検索システムは、検索クエリを入力したユーザの検索意図やコンテクストを考慮して、検索結果として出力されるコンテンツの表示順を決定可能になる。したがって、生成装置50は、検索サービスにおけるユーザビリティを向上させることができる。
【0161】
〔2−2.第2学習モデルの生成処理〕
次に、
図12を用いて、第2学習モデルの生成処理の流れについて説明する。
図12は、実施形態に係る第2学習モデルの生成処理の一例を示す図である。なお、以下では、適宜、第2学習モデルを第2モデル(又は、第2モデルM2)と記載する。
図12の上段に示す例では、生成装置50は、同一のユーザU1によって所定の時間内に連続して入力された4個の検索クエリである検索クエリQ11(「六本木 パスタ」)、検索クエリQ12(「六本木 イタリアン」)、検索クエリQ13(「赤坂 パスタ」)、検索クエリQ14(「麻布 パスタ」)を抽出する。生成装置50は、同一のユーザU1によって各検索クエリが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。また、生成装置50は、同一のユーザU1によって各検索クエリのペアが入力された時間の間隔が所定の時間内である複数の検索クエリを抽出する。ここで、4個の検索クエリは、検索クエリQ11、検索クエリQ12、検索クエリQ13、検索クエリQ14の順番でユーザU1によって各検索クエリが所定の時間内に入力された検索クエリであるとする。生成装置50は、4個の検索クエリを抽出すると、時系列的に隣り合う2つの検索クエリを一対の検索クエリとして、3対の検索クエリのペアである(検索クエリQ11、検索クエリQ12)、(検索クエリQ12、検索クエリQ13)、(検索クエリQ13、検索クエリQ14)を抽出する。生成装置50は、3対の検索クエリのペアを抽出すると、抽出した検索クエリQ1k(k=1、2、3、4)を第1モデルM1に入力する(ステップS31)。なお、生成装置50は、同一のユーザU1によって全ての検索クエリが所定の時間内に入力された複数の検索クエリを抽出してもよい。そして、生成装置50は、時系列的に隣り合うか否かに関わらず、抽出した複数の検索クエリの中から2つの検索クエリを選択して、選択した2つの検索クエリを一対の検索クエリとして抽出してもよい。
【0162】
続いて、生成装置50は、検索クエリ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にフィードバックをかける前(学習前)の分散表現を示す。
【0163】
ここで、同一のユーザU1によって所定の時間内に連続して入力された検索クエリQ1k(k=1、2、3、4)は、例えば、ユーザU1によって「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリの集合であると推定される。すなわち、検索クエリQ1k(k=1、2、3、4)は、「ある場所(東京都港区付近)で飲食店を探す」という検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであると推定される。そこで、生成装置50は、連続して入力された検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する第1モデルを生成する(ステップS33)。具体的には、生成装置50は、連続して入力された検索クエリの分散表現が類似するものとして学習することで、所定の検索クエリから所定の検索クエリの分散表現を予測する第1モデルM1を生成する。例えば、生成装置50は、検索クエリQ11の分散表現(ベクトルQV11)と、検索クエリQ11と対となる検索クエリQ12の分散表現(ベクトルQV12)とが、分散表現空間上で類似するように第1モデルM1を学習させる。また、生成装置50は、検索クエリQ12の分散表現(ベクトルQV12)と、検索クエリQ12と対となる検索クエリQ13の分散表現(ベクトルQV13)とが、分散表現空間上で類似するように第1モデルM1を学習させる。また、生成装置50は、検索クエリQ13の分散表現(ベクトルQV13)と、検索クエリQ13と対となる検索クエリQ14の分散表現(ベクトルQV14)とが、分散表現空間上で類似するように第1モデルM1を学習させる。
【0164】
図12の上段の右側には、学習済みの第1モデルM1の出力結果として、同一のユーザU1によって所定の時間内に入力された検索クエリQ1k(k=1、2、3、4)の分散表現であるベクトルQV1k(k=1、2、3、4)が分散表現空間のクラスタCL11としてマッピングされる様子が示されている。このように、生成装置50は、同一のユーザによって所定の時間内に入力された複数の検索クエリが有する特徴を学習した第1学習モデルM1を生成する。
【0165】
生成装置50は、第1モデルM1を生成すると、生成した第1モデルM1(第1モデルM1のモデルデータMDT1)を取得する。生成装置50は、第1モデルM1を取得すると、取得した第1モデルM1を用いて、第2学習モデルM2を生成する。具体的には、生成装置50は、第1モデルM1を再学習させることにより、第1モデルM1とは学習モデルの重みである接続係数が異なる第2モデルM2を生成する。より具体的には、生成装置50は、第1モデルM1を用いて、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルM2を生成する(ステップS34)。
【0166】
図12の下段に示す例では、生成装置50は、検索クエリが第2モデルM2に入力された際に、CAT11(「飲食店を探す」)、CAT12(「商品を探す」)、CAT13(「飲食店を予約する」)、CAT14(「商品を購入する」)の4つのカテゴリのいずれのカテゴリに属するかを予測する第2モデルM2を生成する。具体的には、生成装置50は、入力情報として検索クエリが第2モデルM2に入力された際に、出力情報として検索クエリがそのカテゴリに属する確率をカテゴリ毎に出力する第2モデルM2を生成する。例えば、生成装置50は、第2モデルM2の正解データとして、検索クエリと検索クエリが属するカテゴリ(CAT11〜CAT14のいずれか)との組を学習する。
【0167】
なお、検索クエリがCAT11(「飲食店を探す」)に属することは、検索クエリが飲食店を探す意図で入力された検索クエリであることを示す。また、CAT12(「商品を探す」)に属することは、検索クエリが商品を探す意図で入力された検索クエリであることを示す。また、検索クエリがCAT13(「飲食店を予約する」)に属することは、検索クエリが飲食店を予約する意図で入力された検索クエリであることを示す。また、検索クエリがCAT14(「商品を購入する」)に属することは、検索クエリが商品を購入する意図で入力された検索クエリであることを示す。
【0168】
具体的には、生成装置50は、検索クエリが学習モデルに入力された際に、学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2モデルM2を生成する。そして、生成装置50は、例えば、入力情報として検索クエリが第2モデルM2に入力された際に、出力情報として検索クエリがそのカテゴリに属する確率をカテゴリCAT11〜CAT14毎に出力する第2モデルM2を生成する。
【0169】
例えば、生成装置50は、入力情報として検索クエリQ11(「六本木 パスタ」)が第2モデルM2に入力された際に(ステップS35)、出力情報として検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11を出力する。ここで、ベクトルBQV11は、第2モデルM2の出力層から出力されたばかりの検索クエリQ11の分散表現であって、第2モデルM2にフィードバックをかける前(学習前)の分散表現を示す。ここで、検索クエリQ11(「六本木 パスタ」)が属する正解カテゴリがCAT11(「飲食店を探す」)であるとする。この場合、生成装置50は、出力された検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率が所定の閾値を超えるように第2モデルM2を学習させる。なお、生成装置50は、あらかじめ用意された正解データを用いて第2モデルを学習させる。生成装置50は、第2モデルM2の正解データを生成してもよい。そして、生成装置50は、生成した正解データを用いて第2モデルM2を学習させてもよい。具体的には、生成装置50は、検索クエリを検索したユーザの検索後の行動に基づいて、検索クエリが属する正解カテゴリを決定する。より具体的には、生成装置50は、所定の検索クエリを検索したユーザに対して、検索後に所定の行動を起こしたユーザの割合が所定の閾値を超える所定の行動を、正解カテゴリに対応する行動として決定する。例えば、検索クエリQ11(「六本木 パスタ」)を検索したユーザが検索後に所定の行動を起こしたユーザの割合として、飲食店を探す行動を起こしたユーザの割合が90%、検索後に商品を探す行動を起こしたユーザの割合が0%、検索後に飲食店を予約する行動を起こしたユーザの割合が10%、検索後に商品を購入する行動を起こしたユーザの割合が0%であったとする。この場合、生成装置50は、飲食店を探す行動を起こしたユーザの割合が所定の閾値(例えば、90%)を超えるため、飲食店を探す行動を検索クエリQ11(「六本木 パスタ」)の正解カテゴリに対応する行動として決定する。そして、生成装置50は、正解カテゴリに対応する行動を飲食店を探す行動であると決定したので、検索クエリQ11(「六本木 パスタ」)が属する正解カテゴリをCAT11(「飲食店を探す」)に決定する。
【0170】
例えば、生成装置50は、学習前の第2モデルM2に検索クエリQ11(「六本木 パスタ」)が入力された際に、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を80%、CAT12(「商品を探す」)に分類される確率を0%、CAT13(「飲食店を予約」)に分類される確率を20%、CAT14(「商品を購入する」)に分類される確率を0%と出力したとする。この場合、生成装置50は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を所定の閾値(例えば、90%)を超えるように第2モデルM2を学習させる。また、生成装置50は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率が所定の閾値(例えば、90%)を超えるように学習させるのに合わせて、分散表現であるベクトルBQV11が他のカテゴリCAT13(「飲食店を予約」)に分類される確率を10%に下げるように第2モデルM2を学習させる。
【0171】
このように、生成装置50は、入力情報として所定の検索クエリが入力されると、出力情報として所定の検索クエリの分散表現が正解カテゴリに分類される確率が所定の閾値を超えるように第2モデルを学習させる。そして、生成装置50は、入力情報として所定の検索クエリが入力された際に、所定の検索クエリの分散表現がそのカテゴリに属する確率が所定の閾値を超えるカテゴリを、所定の検索クエリのカテゴリとして出力する。例えば、生成装置50は、学習済みの第2モデルM2に入力情報として検索クエリQ11(「六本木 パスタ」)が入力されると、検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11がカテゴリCAT11(「飲食店を探す」)に属する確率が90%を超えるので、出力情報として検索クエリが属するカテゴリをCAT11(「飲食店を探す」)と出力する(ステップS36)。このように、生成装置50は、検索クエリと検索クエリの正解カテゴリとの組を学習することで、所定の検索クエリから所定の検索クエリのカテゴリを予測する第2モデルを生成する(ステップS37)。
【0172】
一般的に、ユーザはある意図を持って検索を複数回行うと考えられるため、所定の時間内に連続して入力された検索クエリは、検索意図が近いという仮定が成り立つ。そこで、本願発明に係る生成装置50は、所定の時間内に連続して入力された複数の検索クエリは、所定の検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであるとみなして第1モデルM1を学習させる。これにより、生成装置50は、検索意図を考慮した検索クエリの特徴を第1モデルM1に学習させることができる。そして、生成装置50は、検索意図を考慮した検索クエリの特徴を学習した第1モデルM1を活用して、所定の検索クエリから所定の検索クエリのカテゴリを予測する第2モデルを効率的に生成することができる。これにより、生成装置50は、検索クエリを入力したユーザの検索意図を考慮したカテゴリに検索クエリを分類することを可能にする。また、従来、検索クエリをカテゴリに分類し、高い分類精度を得るためには、十分な量の正解データを用意することが必要であった。しかしながら、検索クエリ自体、多種多様であり、ロングテイルな性質を持つものであるため、多数の検索クエリに対応する正解カテゴリをラベル付けするのは、非常に手間がかかり困難である。ここで、生成装置50は、正解カテゴリをラベル付けする代わりに、ユーザの検索意図(検索クエリを入力したユーザのコンテクスト)を一種の正解として、検索クエリのカテゴリを予測する第2モデルを学習させることができる。これにより、生成装置50は、人手で検索クエリの正解カテゴリをラベル付けすることなく、第2モデルを学習させることができる。すなわち、生成装置50は、正解データが少ないときでも、十分な分類精度を得られるようになる。また、生成装置50は、正解データが多いときであれば、さらに高い分類精度を得られるようになる。したがって、生成装置50は、検索クエリの分類精度を高めることができる。
【0173】
〔2−3.情報処理装置の構成〕
次に、
図13を用いて、実施形態に係る生成装置50の構成について説明する。
図13は、実施形態に係る生成装置50の構成例を示す図である。
図13に示すように、生成装置50は、通信部51と、記憶部53と、制御部52とを有する。なお、生成装置50は、生成装置50の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0174】
(通信部51)
通信部51は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部51は、ネットワークと有線または無線で接続され、例えば、ユーザ端末10と、検索サーバ20との間で情報の送受信を行う。
【0175】
(記憶部53)
記憶部53は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部53は、
図13に示すように、クエリ情報記憶部531と、ベクトル情報記憶部532と、分類定義記憶部533と、カテゴリ情報記憶部534と、モデル情報記憶部535とを有する。
【0176】
(クエリ情報記憶部531)
クエリ情報記憶部531は、ユーザによって入力された検索クエリに関する各種の情報を記憶する。
図14に、実施形態に係るクエリ情報記憶部の一例を示す。
図14に示す例では、クエリ情報記憶部531は、「ユーザID」、「日時」、「検索クエリ」、「検索クエリID」といった項目を有する。
【0177】
「ユーザID」は、検索クエリを入力したユーザを識別するための識別情報を示す。「日時」は、検索サーバがユーザから検索クエリを受け付けた日時を示す。「検索クエリ」は、ユーザによって入力された検索クエリを示す。「検索クエリID」は、ユーザによって入力された検索クエリを識別するための識別情報を示す。
【0178】
図14の1レコード目に示す例では、検索クエリID「Q11」で識別される検索クエリ(検索クエリQ11)は、
図10に示した検索クエリQ11に対応する。また、ユーザID「U1」は、検索クエリQ11を入力したユーザがユーザID「U1」で識別されるユーザ(ユーザU1)であることを示す。また、日時「2018/9/1 PM17:00」は、検索サーバがユーザU1から検索クエリQ11を受け付けた日時が2018年9月1日の午後17:00であることを示す。また、検索クエリ「六本木 パスタ」は、ユーザU1によって入力された検索クエリQ11を示す。具体的には、検索クエリ「六本木 パスタ」は、地名を示す「六本木」と食品の種類を示す「パスタ」の文字とが区切り文字であるスペースで区切られた文字列であることを示す。
【0179】
(ベクトル情報記憶部532)
ベクトル情報記憶部532は、検索クエリの分散表現であるベクトルに関する各種の情報を記憶する。
図15に、実施形態に係るベクトル情報記憶部の一例を示す。
図15に示す例では、ベクトル情報記憶部532は、「ベクトルID」、「検索クエリID」、「ベクトル情報」といった項目を有する。
【0180】
「ベクトルID」は、検索クエリの分散表現であるベクトルを識別するための識別情報を示す。「検索クエリID」は、ベクトルに対応する検索クエリを識別するための識別情報を示す。「ベクトル情報」は、検索クエリの分散表現であるN次元のベクトルを示す。検索クエリの分散表現であるベクトルは、例えば、128次元のベクトルである。
【0181】
図15の1レコード目に示す例では、ベクトルID「QV11」で識別されるベクトル(ベクトルQV11)は、
図10に示した検索クエリQ11の分散表現であるベクトルQV11に対応する。また、検索クエリID「Q11」で識別される検索クエリ(検索クエリQ11)は、ベクトルQV11に対応する検索クエリが検索クエリQ11であることを示す。また、ベクトル情報「QVDT11」は、検索クエリQ11の分散表現であるN次元のベクトルを示す。
【0182】
(分類定義記憶部533)
分類定義記憶部533は、検索クエリが分類されるカテゴリの定義に関する各種の情報を記憶する。
図16に、実施形態に係る分類定義記憶部の一例を示す。
図16に示す例では、分類定義記憶部533は、「大分類ID」、「大分類」、「小分類ID」、「小分類」といった項目を有する。
【0183】
「大分類」は、検索クエリが分類されるカテゴリの大分類を示す。「大分類ID」は、大分類を識別するための識別情報を示す。
図16に示す例では、大分類「購買行動系」は、
図1の下段に示す例で説明した大分類に対応する。大分類「購買行動系」は、検索クエリをユーザの購買行動に基づいて分類するカテゴリの大分類を示す。
図16に示す例では、大分類「購買行動系」は、さらに4つの小分類を有する。大分類ID「CAT1」は、大分類「購買行動系」を識別するための識別情報を示す。
【0184】
「小分類」、検索クエリが分類されるカテゴリの小分類を示す。「小分類ID」は、小分類を識別するための識別情報を示す。
図16に示す例では、小分類「飲食店を探す」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって飲食店を探す意図で入力された検索クエリであることを示す。小分類ID「CAT11」は、小分類「飲食店を探す」を識別するための識別情報を示す。
【0185】
小分類「商品を探す」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって商品を探す意図で入力された検索クエリであることを示す。小分類ID「CAT12」は、小分類「商品を探す」を識別するための識別情報を示す。
【0186】
小分類「飲食店を予約」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって飲食店を予約する意図で入力された検索クエリであることを示す。小分類ID「CAT13」は、小分類「飲食店を予約」を識別するための識別情報を示す。
【0187】
小分類「商品を購入」は、大分類「購買行動系」に属する分類であって、小分類に分類される検索クエリが、ユーザによって商品を購入する意図で入力された検索クエリであることを示す。小分類ID「CAT14」は、小分類「商品を購入」を識別するための識別情報を示す。
【0188】
(カテゴリ情報記憶部534)
カテゴリ情報記憶部534は、検索クエリが属するカテゴリに関する各種の情報を記憶する。具体的には、カテゴリ情報記憶部534は、学習済みの第2学習モデルに検索クエリが入力された際に、第2学習モデルが出力するカテゴリに関する各種の情報を記憶する。
図17に、実施形態に係るカテゴリ情報記憶部の一例を示す。
図17に示す例では、カテゴリ情報記憶部534は、「検索クエリID」、「大分類ID」、「小分類ID」、「確率(%)」といった項目を有する。
【0189】
「検索クエリID」は、ユーザによって入力された検索クエリを識別するための識別情報を示す。
図17に示す例では、検索クエリID「Q11」で識別される検索クエリ(検索クエリQ11)は、
図12に示した検索クエリQ11に対応する。
【0190】
「大分類ID」は、大分類を識別するための識別情報を示す。「小分類ID」は、小分類を識別するための識別情報を示す。「確率(%)」は、学習済みの第2学習モデルに検索クエリが入力された際に、第2学習モデルが出力する小分類毎の確率を示す。
図17に示す例では、確率(%)「90」は、検索クエリQ11がカテゴリCAT11に分類される確率が90%であることを示す。
【0191】
(モデル情報記憶部535)
モデル情報記憶部535は、生成装置50によって生成された学習モデルに関する各種の情報を記憶する。
図18に、実施形態に係るモデル情報記憶部の一例を示す。
図18に示す例では、モデル情報記憶部535は、「モデルID」、「モデルデータ」といった項目を有する。
【0192】
「モデルID」は、生成装置50によって生成された学習モデルを識別するための識別情報を示す。「モデルデータ」は、生成装置50によって生成された学習モデルのモデルデータを示す。例えば、「モデルデータ」には、検索クエリを分散表現に変換するためのデータが格納される。
【0193】
図18の1レコード目に示す例では、モデルID「M1」で識別される学習モデルは、
図1に示した第1モデルM1に対応する。また、モデルデータ「MDT1」は、生成装置50によって生成された第1モデルM1のモデルデータ(モデルデータMDT1)を示す。
【0194】
モデルデータMDT1は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリの分散表現を出力層から出力するよう、生成装置50を機能させてもよい。
【0195】
ここで、モデルデータMDT1が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
【0196】
また、モデルデータMDT1がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、モデルデータMDT1が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
【0197】
生成装置50は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、分散表現の算出を行う。具体的には、モデルデータMDT1は、検索クエリが入力された場合に、分散表現を出力するように係数が設定される。生成装置50は、このようなモデルデータMDT1を用いて、分散表現を算出する。
【0198】
なお、上記例では、モデルデータMDT1が、検索クエリが入力された場合に、検索クエリの分散表現を出力するモデル(以下、モデルX1という。)である例を示した。しかし、実施形態に係るモデルデータMDT1は、モデルX1にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT1は、検索クエリを入力とした際に、モデルX1が出力した分散表現を入力して学習されたモデル(以下、モデルY1という。)であってもよい。または、モデルデータMDT1は、検索クエリを入力とし、モデルY1の出力値を出力とするよう学習されたモデルであってもよい。
【0199】
また、生成装置50がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT1は、GANの一部を構成するモデルであってもよい。
【0200】
図18の2レコード目に示す例では、モデルID「M2」で識別される学習モデルは、
図1に示した第2モデルM2に対応する。また、モデルデータ「MDT2」は、生成装置50によって生成された第2モデルM2のモデルデータ(モデルデータMDT2)を示す。
【0201】
モデルデータMDT2は、検索クエリが入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された検索クエリに応じて、入力層に入力された検索クエリが各カテゴリに属する確率を出力層から出力するよう、生成装置50を機能させてもよい。
【0202】
ここで、モデルデータMDT2が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、モデルデータMDT2が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
【0203】
また、モデルデータMDT2がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、モデルデータMDT2が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
【0204】
生成装置50は、上述した回帰モデルやニューラルネットワーク等、任意の構造を有するモデルを用いて、検索クエリが各カテゴリに属する確率の算出を行う。具体的には、モデルデータMDT2は、検索クエリが入力された場合に、検索クエリが各カテゴリに属する確率を出力するように係数が設定される。生成装置50は、このようなモデルデータMDT2を用いて、検索クエリが各カテゴリに属する確率を算出する。
【0205】
なお、上記例では、モデルデータMDT2が、検索クエリが入力された場合に、検索クエリの分散表現を出力するモデル(以下、モデルX2という。)である例を示した。しかし、実施形態に係るモデルデータMDT2は、モデルX2にデータの入出力を繰り返すことで得られる結果に基づいて生成されるモデルであってもよい。例えば、モデルデータMDT2は、検索クエリを入力とした際に、モデルX2が出力した分散表現を入力して学習されたモデル(以下、モデルY2という。)であってもよい。または、モデルデータMDT2は、検索クエリを入力とし、モデルY2の出力値を出力とするよう学習されたモデルであってもよい。
【0206】
また、生成装置50がGAN(Generative Adversarial Networks)を用いた推定処理を行う場合、モデルデータMDT2は、GANの一部を構成するモデルであってもよい。
【0207】
(制御部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)等の集積回路により実現される。
【0208】
また、制御部52は、モデル情報記憶部535に記憶されている第1モデルM1(モデルデータMDT1)に従った情報処理により、入力層に入力された検索クエリに対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、分散表現を出力層から出力するよう、コンピュータを機能させる。
【0209】
また、制御部52は、モデル情報記憶部535に記憶されている第2モデルM2(モデルデータMDT2)に従った情報処理により、入力層に入力された検索クエリに対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、検索クエリが各カテゴリに属する確率を出力層から出力するよう、コンピュータを機能させる。
【0210】
図13に示すように、制御部52は、取得部521と、抽出部522と、生成部523を有し、以下に説明する情報処理の作用を実現または実行する。なお、制御部52の内部構成は、
図13に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0211】
(取得部521)
取得部521は、種々の情報を取得する。具体的には、取得部521は、ユーザによって入力された検索クエリを検索サーバ20から取得する。取得部521は、ユーザによって入力された検索クエリを取得すると、取得した検索クエリをクエリ情報記憶部531に格納する。また、取得部521は、検索クエリの分散表現であるベクトルに関するベクトル情報を取得する。取得部521は、ベクトル情報を取得すると、取得したベクトル情報をベクトル情報記憶部532に格納する。また、取得部521は、検索クエリと検索クエリが属するカテゴリの分類を定義する情報を取得する。取得部521は、検索クエリと検索クエリが属するカテゴリの分類を定義する分類定義情報を取得すると、取得した分類定義情報を分類定義記憶部533に格納する。また、取得部521は、検索クエリが属するカテゴリに関するカテゴリ情報を取得する。取得部521は、カテゴリ情報を取得すると、取得したカテゴリ情報をカテゴリ情報記憶部534に格納する。
【0212】
(抽出部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つの検索クエリを一対の検索クエリとして抽出してもよい。
【0213】
また、抽出部522は、取得部521によって取得された検索クエリのうち、所定の検索クエリと所定の検索クエリに無関係な他の検索クエリとを抽出する。例えば、抽出部522は、取得部521によって取得された検索クエリの中から、所定の検索クエリを抽出する。続いて、抽出部522は、取得部521によって取得された検索クエリの中から、所定の検索クエリとは無関係にランダムに他の検索クエリを抽出する。
【0214】
(生成部523)
生成部523は、種々の情報を生成する。具体的には、生成部523は、取得部521によって取得された検索クエリのうち、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する。具体的には、生成部523は、同一のユーザによって所定の時間内に入力された複数の検索クエリの分散表現が類似するように学習モデルを学習させることで、所定の検索クエリから所定の検索クエリの特徴情報を予測する学習モデルを生成する。例えば、生成部523は、所定の時間内に続けて入力された一対の検索クエリの分散表現が類似するように学習することで、学習モデルを生成する。例えば、生成部523は、一対の検索クエリの学習前の分散表現の類似度の値を算出する。また、生成部523は、一対の検索クエリの学習後の分散表現の類似度の値を算出する。続いて、生成部523は、学習前の分散表現の類似度の値よりも、学習後の分散表現の類似度の値が大きくなるように学習モデルを学習させる。このように、生成部523は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように学習モデルを学習させることで、検索クエリから分散表現を出力する学習モデルを生成する。より具体的には、生成部523は、RNNの一種であるLSTMを分散表現生成に用いたDSSMの技術を用いて、検索クエリから分散表現を出力する学習モデルを生成する。例えば、生成部523は、学習モデルの正解データとして、同一のユーザによって所定の時間内に入力された一対の検索クエリが類似する特徴を有するものとして、所定の検索クエリの分散表現と、所定の検索クエリと対となる他の検索クエリの分散表現とが、分散表現空間上で近くに存在するように学習する。また、生成部523は、第1学習モデルを生成すると、第1学習モデルを識別する識別情報と対応付けて、生成した第1学習モデル(モデルデータMDT1)をモデル情報記憶部535に格納する。
【0215】
〔2−4.第1学習モデルの一例〕
ここで、
図19を用いて生成装置50が生成する第1学習モデルの一例について説明する。
図19は、実施形態に係る第1学習モデルの一例を示す図である。
図19に示す例では、生成装置50が生成する第1学習モデルM1は、3層のLSTM RNNで構成されている。
図19に示す例では、抽出部522は、同一のユーザU1によって所定の時間内に連続して入力された「六本木 パスタ」という検索クエリQ11と「六本木 イタリアン」という検索クエリQ12とから成る一対の検索クエリを抽出する。生成部523は、抽出部522によって抽出されたた検索クエリQ11を第1学習モデルM1の入力層に入力する(ステップS41)。
【0216】
続いて、生成部523は、第1学習モデルM1の出力層から検索クエリQ11の分散表現である256次元のベクトルBQV11を出力する。また、生成部523は、抽出部522によって抽出された検索クエリQ12を第1学習モデルM1の入力層に入力する。続いて、生成部523は、第1学習モデルM1の出力層から検索クエリQ12の分散表現である256次元のベクトルBQV12を出力する(ステップS42)。
【0217】
続いて、生成部523は、連続して入力された2つの検索クエリの分散表現が類似するように学習することで、検索クエリから分散表現を出力する第1学習モデルM1を生成する(ステップS43)。例えば、第1学習モデルM1にフィードバックをかける前(学習前)の検索クエリQ11の分散表現であるベクトルBQV11と検索クエリQ12の分散表現であるベクトルBQV12とのなす角度の大きさをΘとする。また、第1学習モデルM1にフィードバックをかけた後(学習後)の検索クエリQ11の分散表現であるベクトルQV11と検索クエリQ12の分散表現であるベクトルQV12とのなす角度の大きさをΦとする。この時、生成部523は、ΘよりもΦが小さくなるように、第1学習モデルM1を学習させる。例えば、生成部523は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値を算出する。また、生成部523は、ベクトルQV11とベクトルQV12のコサイン類似度の値を算出する。続いて、生成部523は、ベクトルBQV11とベクトルBQV12のコサイン類似度の値よりも、ベクトルQV11とベクトルQV12のコサイン類似度の値が大きくなるように(値が1に近づくように)学習モデルM1を学習させる。このように、生成部523は、一対の検索クエリに対応する一対の分散表現である2つのベクトルが分散表現空間上で類似するように第1学習モデルM1を学習させることで、検索クエリから分散表現を出力する第1学習モデルM1を生成する。なお、生成部523は、コサイン類似度に限らず、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて分散表現の間の類似度を算出してもよい。また、生成部523は、ベクトル間の距離尺度として適用可能な指標であれば、どのような指標に基づいて学習モデルM1を学習させてもよい。例えば、生成部523は、分散表現同士のユークリッド距離や双曲空間等の非ユークリッド空間中での距離、マンハッタン距離、マハラノビス距離等といった所定の距離関数の値を算出する。続いて、生成部523は、分散表現同士の所定の距離関数の値(すなわち、分散表現空間における距離)が小さくなるように学習モデルM1を学習させてもよい。
【0218】
また、生成部523は、同一のユーザによって所定の時間内に入力された複数の検索クエリとして、所定の区切り文字で区切られた文字列を含む複数の検索クエリが類似する特徴を有するものとして学習することで、第1学習モデルを生成する。例えば、生成部523は、地名を示す「六本木」と食品の種類を示す「パスタ」の文字とが区切り文字であるスペースで区切られた検索クエリ「六本木 パスタ」と、地名を示す「六本木」と料理の種類を示す「イタリアン」の文字とが区切り文字であるスペースで区切られた検索クエリ「六本木 イタリアン」とが類似する特徴を有するものとして学習することで、第1学習モデルを生成する。
【0219】
また、生成部523は、取得部521によって取得された検索クエリのうち、ランダムに抽出された複数の検索クエリが相違する特徴を有するものとして学習することで、第1学習モデルを生成する。具体的には、生成部523は、取得部521によって取得された検索クエリのうち、ランダムに抽出された一対の検索クエリの分散表現が相違するように学習することで、第1学習モデルを生成する。例えば、生成部523は、抽出部522によって抽出された所定の検索クエリの分散表現と、所定の検索クエリとは無関係にランダムに抽出された検索クエリの分散表現とが分散表現空間上で遠くにマッピングされるように第1学習モデルM1のトレーニングを行う。
【0220】
また、生成部523は、第2学習モデルを生成する。具体的には、生成部523は、モデル情報記憶部535を参照して、生成部523によって生成された第1学習モデル(第1学習モデルM1のモデルデータMDT1)を取得する。続いて、生成部523は、取得した第1学習モデルを用いて、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを生成する。生成部523は、第1モデルM1を取得すると、取得した第1モデルM1を用いて、第2学習モデルM2を生成する。生成部523は、第1モデルM1を再学習させることにより、第1モデルM1とは学習モデルの重みである接続係数が異なる第2モデルM2を生成する。具体的には、生成部523は、検索クエリが学習モデルに入力された際に、学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2モデルM2を生成する。
【0221】
具体的には、生成部523は、検索クエリが学習モデルに入力された際に、学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを生成する。生成部523は、入力情報として検索クエリが学習モデルに入力された際に、出力情報として検索クエリが属するカテゴリ毎の確率を出力する第2学習モデルを生成する。例えば、生成部523は、第1モデルM1を用いて、入力情報として所定の検索クエリが学習モデルに入力された際に、出力情報として検索クエリの分散表現がそのカテゴリに分類される確率をカテゴリ毎に出力する第2モデルM2を生成する。生成部523は、入力情報として所定の検索クエリが入力されると、出力情報として所定の検索クエリの分散表現が正解カテゴリに分類される確率が所定の閾値を超えるように第2モデルを学習させる。そして、生成部523は、入力情報として所定の検索クエリが入力された際に、所定の検索クエリの分散表現がそのカテゴリに属する確率が所定の閾値を超えるカテゴリを、所定の検索クエリのカテゴリとして出力する第2モデルM2を生成する。また、生成部523は、第2学習モデルを生成すると、第2学習モデルを識別する識別情報と対応付けて、生成した第2学習モデル(モデルデータMDT2)をモデル情報記憶部535に格納する。
【0222】
例えば、生成部523は、
図18に示すモデル情報記憶部535を参照して、第1モデルM1(第1モデルM1のモデルデータMDT1)を取得する。続いて、生成部523は、
図16に示す分類定義記憶部533を参照して、検索クエリを分類するカテゴリの大分類を選択する。続いて、生成部523は、大分類を選択すると、第2モデルM2の学習データとして、検索クエリと検索クエリが属する小分類との組を学習する。
【0223】
例えば、検索クエリQ11(「六本木 パスタ」)が属する正解カテゴリがCAT11(「飲食店を探す」)であるとする。生成部523は、入力情報として検索クエリQ11(「六本木 パスタ」)が第2モデルM2に入力された際に、第2モデルM2の出力層から検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11を出力する。ここで、ベクトルBQV11は、第2モデルM2の出力層から出力されたばかりの検索クエリQ11の分散表現であって、第2モデルM2にフィードバックをかける前(学習前)の分散表現を示す。この場合、生成部523は、出力された検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11が正解カテゴリCAT11(「飲食店を探す」)に分類される確率が所定の閾値を超えるように第2モデルM2を学習させる。
【0224】
例えば、生成部523は、学習前の第2モデルM2に検索クエリQ11(「六本木 パスタ」)が入力された際に、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を80%、CAT12(「商品を探す」)に分類される確率を0%、CAT13(「飲食店を予約」)に分類される確率を20%、CAT14(「商品を購入する」)に分類される確率を0%と出力したとする。この場合、生成部523は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率を所定の閾値(例えば、90%)を超えるように第2モデルM2を学習させる。また、生成部523は、分散表現であるベクトルBQV11がCAT11(「飲食店を探す」)に分類される確率が所定の閾値(例えば、90%)を超えるように学習させるのに合わせて、分散表現であるベクトルBQV11が他のカテゴリCAT13(「飲食店を予約」)に分類される確率を10%に下げるように第2モデルM2を学習させる。続いて、生成部523は、学習済みの第2モデルM2に入力情報として検索クエリQ11(「六本木 パスタ」)が入力されると、検索クエリQ11(「六本木 パスタ」)の分散表現であるベクトルBQV11がカテゴリCAT11(「飲食店を探す」)に属する確率が90%を超えるので、出力情報として検索クエリが属するカテゴリをCAT11(「飲食店を探す」)と出力する。
【0225】
なお、生成部523は、大分類として、任意の数の大分類を選択してもよい。そして、生成部523は、入力情報として検索クエリが第2モデルM2に入力された際に、出力情報として検索クエリが選択した任意の数の大分類に属する各小分類に属する確率を小分類毎に出力する第2モデルM2を生成してもよい。また、生成部523は、大分類として、全ての大分類を選択してもよい。そして、生成部523は、検索クエリが第2モデルM2に入力された際に、各小分類に属する確率を全ての小分類毎に出力する第2モデルM2を生成してもよい。
【0226】
〔2−5.第2学習モデルの一例〕
ここで、
図20を用いて生成装置50が生成する第2学習モデルの一例について説明する。
図20は、実施形態に係る第2学習モデルの一例を示す図である。
図20に示す例では、生成装置50が生成する第2学習モデルM2は、第1学習モデルM1を用いて生成される。すなわち、生成装置50は、第1学習モデルM1を再学習させることにより、第1学習モデルM1とは学習モデルの重みである接続係数が異なる第2学習モデルM2を生成する。
【0227】
より具体的には、生成装置50が生成する第2学習モデルM2は、第1学習モデルM1と同様に、3層のLSTM RNNで構成されている。
図20に示す例では、抽出部522は、ユーザU1によって入力された「六本木 パスタ」という検索クエリQ11を第2学習モデルM2の入力層に入力する(ステップS51)。
【0228】
続いて、生成部523は、第2学習モデルM2の出力層から検索クエリQ11の分散表現である256次元のベクトルBQV11を出力する(ステップS52)。
【0229】
続いて、生成部523は、検索クエリQ11の分散表現であるベクトルBQV11が各カテゴリに分類される確率を出力する(ステップS53)。
【0230】
続いて、生成部523は、検索クエリQ11の分散表現であるベクトルBQV11が正解カテゴリに分類される確率を高くするように第2学習モデルM2を学習することで、検索クエリから検索クエリのカテゴリを予測する第2モデルを生成する(ステップS54)。
【0231】
〔2−6.第1学習モデルの生成処理のフロー〕
次に、
図21を用いて、実施形態に係る第1学習モデルの生成処理の手順について説明する。
図21は、実施形態に係る第1学習モデルの生成処理手順を示すフローチャートである。
【0232】
図21に示す例では、生成装置50は、ユーザによって入力された検索クエリを取得する(ステップS1001)。
【0233】
続いて、生成装置50は、同一のユーザによって所定の時間内に入力された複数の検索クエリを抽出する(ステップS1002)。
【0234】
続いて、生成装置50は、抽出した複数の検索クエリが類似する特徴を有するものとして学習することで、所定の検索クエリから所定の検索クエリの特徴情報を予測する第1学習モデルを生成する(ステップS1003)。
【0235】
〔2−7.第2学習モデルの生成処理のフロー〕
次に、
図22を用いて、実施形態に係る第2学習モデルの生成処理の手順について説明する。
図22は、実施形態に係る第2学習モデルの生成処理の手順を示すフローチャートである。
【0236】
図22に示す例では、生成装置50は、第1学習モデル(第1学習モデルM1のモデルデータMDT1)を取得する(ステップS2001)。
【0237】
続いて、生成装置50は、第1学習モデルを用いて、所定の検索クエリから所定の検索クエリのカテゴリを予測する第2学習モデルを生成する(ステップS2002)。
【0238】
〔3.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と推定部133と抽出部134を備える。取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。推定部133は、取得部131によって取得された第2学習モデルを用いて、検索クエリとして入力された文字列によって示される対象が属するカテゴリを推定する。抽出部134は、推定部133によって推定されたカテゴリに基づいて、文字列の中から、対象分野に属する抽出対象を示す対象文字列を抽出する。
【0239】
これにより、情報処理装置100は、検索クエリとして入力された文字列が未知用語である場合であっても、未知用語によって示される対象が属するカテゴリを推定することができるため、所定のカテゴリに属する対象を示す文字列を精度よく抽出することができる。例えば、情報処理装置100は、未知用語に対して対象分野とは異なる非対象分野を示すカテゴリが推定された場合には、その未知用語を不要な文字列として取り除くことができる。また、情報処理装置100は、流入検索クエリとして入力された文字列が未知用語である場合であっても、未知用語に対して対象分野を示すカテゴリが推定された場合には、その未知用語を対象分野に属する対象文字列として抽出することができる。したがって、本願発明に係る情報処理装置100は、所定のカテゴリに属する対象を示す文字列を適切に抽出することができる。
【0240】
また、一般的に、ユーザはある意図を持って検索を複数回行うと考えられるため、所定の時間内に連続して入力された検索クエリは、検索意図が近いという仮定が成り立つ。そこで、本願発明に係る生成装置50は、所定の時間内に連続して入力された複数の検索クエリは、所定の検索意図の下で検索された検索クエリであるという点で、相互に類似する特徴を有する検索クエリであるとみなして第1モデルM1を学習させる。これにより、生成装置50は、検索意図を考慮した検索クエリの特徴を第1モデルM1に学習させることができる。そして、生成装置50は、検索意図を考慮した検索クエリの特徴を学習した第1モデルM1を活用して、所定の検索クエリから所定の検索クエリのカテゴリを予測する第2モデルを効率的に生成することができる。これにより、生成装置50は、検索クエリを入力したユーザの検索意図を考慮したカテゴリに検索クエリを分類することを可能にする。また、従来、検索クエリをカテゴリに分類し、高い分類精度を得るためには、十分な量の正解データを用意することが必要であった。しかしながら、検索クエリ自体、多種多様であり、ロングテイルな性質を持つものであるため、多数の検索クエリに対応する正解カテゴリをラベル付けするのは、非常に手間がかかり困難である。ここで、生成装置50は、検索意図を考慮した検索クエリの特徴を学習させた第1モデルを出発点として第2モデルを学習させることにより、正解カテゴリをラベル付けする代わりに、ユーザの検索意図(検索クエリを入力したユーザのコンテクスト)を一種の正解として、検索クエリのカテゴリを予測する第2モデルを学習させることができる。これにより、生成装置50は、人手で検索クエリの正解カテゴリをラベル付けすることなく、第2モデルを学習させることができる。すなわち、第2モデルは、正解データが少ないときでも、十分な分類精度を得られるようになる。また、第2モデルは、正解データが多いときであれば、さらに高い分類精度を得られるようになる。したがって、情報処理装置100は、検索クエリの分類精度を高めることができる。
【0241】
また、推定部133は、文字列によって示される対象が属する複数のカテゴリを推定する。また、推定部133は、文字列によって示される対象が各カテゴリに属する確率をカテゴリ毎に出力する。
【0242】
これにより、情報処理装置100は、文字列によって示される対象が属するカテゴリとして、対象分野を示すカテゴリと複数の非対象分野を示すカテゴリとを同時に推定することができる。
【0243】
また、抽出部134は、推定部133によって推定されたカテゴリの中に、対象分野を示すカテゴリを含む文字列を対象文字列として抽出する。
【0244】
これにより、情報処理装置100は、対象分野に属する対象を示す文字列を適切に抽出することができる。
【0245】
また、抽出部134は、推定部133によって推定されたカテゴリの中に、不要なカテゴリとして登録された不要カテゴリを含まない文字列を対象文字列として抽出する。
【0246】
これにより、情報処理装置100は、非対象分野に属する対象を示す文字列を適切に取り除くことができる。
【0247】
また、実施形態に係る情報処理装置100は、処理部132をさらに備える。処理部132は、対象分野に関するサイトに流入した流入検索クエリを取得し、流入検索クエリとして入力された文字列から、不要な文字列として登録された不要文字列を取り除いた第1文字列を取得する。推定部133は、処理部132によって取得された第1文字列によって示される対象が属するカテゴリを推定する。
【0248】
これにより、情報処理装置100は、辞書ベースで取り除くことができる文字列については、あらかじめ取り除いておくことで、第2学習モデルに入力される入力情報の精度を高めることができる。したがって、情報処理装置100は、第2学習モデルによって推定されるカテゴリの推定精度を高めることができる。
【0249】
また、取得部131は、同一のユーザによって所定の時間内に入力された一対の検索クエリの分散表現が類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0250】
一般的に、同一のユーザが短時間に続けて入力した2つの検索クエリは、検索意図が同一であるか、同一でなくとも検索意図が近いと考えられる。すなわち、所定の時間内に続けて入力された一対の検索クエリは、検索意図が同一であるか、同一でなくとも検索意図が近いと考えられる。すなわち、生成装置50は、所定の時間内に続けて入力された一対の検索クエリの分散表現が類似するように学習させることにより、第1モデルの学習精度を向上させることができる。したがって、生成装置50は、学習精度が向上した第1モデルを用いて第2モデルを生成することができるので、第2モデルの学習精度を向上させることができる。
【0251】
また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリとして、所定の区切り文字で区切られた文字列を含む複数の検索クエリが類似する特徴を有するものとして学習することで、複数の検索クエリが類似する特徴を有するものとして、複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0252】
一般的に、単体の文字列からなる検索クエリよりも、複数の文字列を含む検索クエリのほうが、検索意図がより明確であると考えられる。すなわち、生成装置50は、所定の区切り文字で区切られた文字列を含む検索クエリを用いて学習させることにより、第1モデルの学習精度を向上させることができる。したがって、生成装置50は、学習精度が向上した第1モデルを用いて第2モデルを生成することができるので、第2モデルの学習精度を向上させることができる。
【0253】
また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルであって、ランダムに抽出された複数の検索クエリが相違する特徴を有するものとして学習することで、複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルであって、ランダムに抽出された一対の検索クエリの分散表現が相違するように学習することで、複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。
【0254】
一般的に、ランダムに抽出された複数の検索クエリは、互いに無関係に入力された検索クエリであるため、検索意図が異なるか、検索意図が遠いと考えられる。そこで、本願発明に係る生成装置50は、ランダムに抽出された複数の検索クエリは、異なる検索意図の下で検索された検索クエリであるという点で、相互に相違する特徴を有する検索クエリであるとみなして学習モデルM1を学習させる。これにより、学習モデルは、検索意図が近い検索クエリのペアである正解データに加えて、検索意図が遠い検索クエリのペアである不正解データを学習することができる。すなわち、生成装置50は、第1モデルの学習精度を向上させることができる。したがって、生成装置50は、学習精度が向上した第1モデルを用いて第2モデルを生成することができるので、第2モデルの学習精度を向上させることができる。
【0255】
また、取得部131は、同一のユーザによって所定の時間内に入力された複数の検索クエリが類似する特徴を有するものとして複数の検索クエリが有する特徴を学習した第1学習モデルを用いて生成された第2学習モデルであって、検索クエリが第2学習モデルに入力された際に、第2学習モデルが出力する分散表現の分類結果が、検索クエリが属するカテゴリに対応するように学習することで、所定の検索クエリから所定の検索クエリが属するカテゴリを予測する第2学習モデルを取得する。また、取得部131は、入力情報として所定の検索クエリが入力された際に、出力情報として所定の検索クエリの分散表現を出力する第1学習モデルを用いて生成された第2学習モデルを取得する。また、取得部131は、入力情報として検索クエリが第2学習モデルに入力された際に、出力情報として検索クエリがカテゴリに属する確率をカテゴリ毎に出力する第2学習モデルを取得する。
【0256】
これにより、生成装置50は、検索意図を考慮した検索クエリの特徴を含む分散表現を活用して、検索クエリを入力したユーザの検索意図を考慮したカテゴリに検索クエリを分類する第2学習モデルを効率的に生成することができる。すなわち、生成装置50は、検索クエリを入力したユーザの検索意図を考慮したカテゴリに検索クエリを分類することを可能にする。したがって、生成装置50は、検索クエリの分類精度を高めることができる。
【0257】
〔4.ハードウェア構成〕
また、上述してきた実施形態に係る情報処理装置100および実施形態に係る生成装置50は、例えば
図23に示すような構成のコンピュータ1000によって実現される。
図23は、情報処理装置100および生成装置50の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM1300、HDD1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を備える。
【0258】
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0259】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、所定の通信網を介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータを所定の通信網を介して他の機器へ送信する。
【0260】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
【0261】
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0262】
例えば、コンピュータ1000が情報処理装置100または生成装置50として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130または制御部52の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置から所定の通信網を介してこれらのプログラムを取得してもよい。
【0263】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0264】
〔5.その他〕
また、上記実施形態及び変形例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0265】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0266】
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0267】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、抽出部は、抽出手段や抽出回路に読み替えることができる。