(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023154062
(43)【公開日】2023-10-18
(54)【発明の名称】クエリ整形システム、クエリ整形方法、及びプログラム
(51)【国際特許分類】
G06F 16/332 20190101AFI20231011BHJP
【FI】
G06F16/332
【審査請求】未請求
【請求項の数】1
【出願形態】OL
(21)【出願番号】P 2023132511
(22)【出願日】2023-08-16
(62)【分割の表示】P 2023009005の分割
【原出願日】2023-01-24
(31)【優先権主張番号】63/268,702
(32)【優先日】2022-03-01
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】中山 祐輝
(72)【発明者】
【氏名】村上 浩司
(57)【要約】
【課題】クエリ整形の精度を高める。
【解決手段】クエリ整形システム(1)のトークン取得部(101)は、クエリに含まれる複数のトークンを取得する。マッチング実行部(102)は、複数のトークンに基づいて、辞書データを利用したマッチングを実行する。第2トークン整形部(105)は、複数のトークンのうち辞書データにマッチした第1トークンと、クエリ整形に関する学習モデルと、に基づいて、複数のトークンのうち辞書データにマッチしなかった第2トークンを整形する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
クエリに含まれる複数のトークンを取得するトークン取得部と、
前記複数のトークンに基づいて、辞書データを利用したマッチングを実行するマッチング実行部と、
前記複数のトークンのうち前記辞書データにマッチした第1トークンと、クエリ整形に関する学習モデルと、に基づいて、前記複数のトークンのうち前記辞書データにマッチしなかった第2トークンを整形する第2トークン整形部と、
を含むクエリ整形システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、クエリ整形システム、クエリ整形方法、及びプログラムに関する。
【背景技術】
【0002】
従来、クエリに基づいて、検索処理を実行する技術が知られている。クエリは、原則として自由に入力可能なので、検索には適さないクエリが入力されることがある。例えば、語Aと語Bの間にスペースを入力する必要があったとしても、語Aと語Bの間にスペースが入力されないことがある。例えば、何らかの理由で、1つの語を構成する文字の間にスペースが入力されることもある。このため、クエリを適切に整形することが求められている。
【0003】
例えば、クエリは、固有表現を含むことが多いので、固有表現認識タスクを利用して、クエリを整形することが考えられる。固有表現認識タスクの一例として、非特許文献1及び非特許文献2の技術が知られている。非特許文献1には、文章に含まれる人名又は地名等の固有表現を認識するBi-LSTM-CRFが記載されている。非特許文献2には、医療文書に含まれる病名又は症状等の固有表現を認識するBERT-CRFが記載されている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】「多分わかりやすいBi-LSTM-CRF入門」、[online]、[2022年2月11日検索]、インターネット、<URL:https://qiita.com/wakafar/items/c9a05713f579f436d36d>
【非特許文献2】「五井野琢也、濱上知樹」、「BERTを用いた医療文書からの固有表現抽出」、[online]、[2022年2月11日検索]、インターネット、<URL:https://www.sice.or.jp/org/i-sys/is48/paper/SICE-IS_2021_paper_4.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1及び非特許文献2の技術は、一定程度の長さを有する文章に含まれる固有表現を認識することを想定しているので、比較的短いクエリに含まれる固有表現を認識できない。このため、非特許文献1-2の技術をクエリ整形に適用したとしても、クエリ整形の精度を高めることができない。この点は、他の固有表現認識タスクも同様であり、従来の技術では、クエリ整形の精度を高めることはできなかった。
【0006】
本開示の目的の1つは、クエリ整形の精度を高めることである。
【課題を解決するための手段】
【0007】
本開示に係るクエリ整形システムは、クエリに含まれる複数のトークンを取得するトークン取得部と、前記複数のトークンに基づいて、辞書データを利用したマッチングを実行するマッチング実行部と、前記複数のトークンのうち前記辞書データにマッチした第1トークンと、クエリ整形に関する学習モデルと、に基づいて、前記複数のトークンのうち前記辞書データにマッチしなかった第2トークンを整形する第2トークン整形部と、を含む。
【図面の簡単な説明】
【0008】
【
図1】クエリ整形システムの全体構成の一例を示す図である。
【
図2】ユーザ端末に表示される画面の一例を示す図である。
【
図3】本実施形態で実現される機能の一例を示す機能ブロック図である。
【
図4】クエリ整形システムにおける全体の流れの一例を示す図である。
【
図5】第1学習モデルからの出力の一例を示す図である。
【
図6】クエリ整形システムで実行される処理の一例を示すフロー図である。
【発明を実施するための形態】
【0009】
[1.クエリ整形システムの全体構成]
本開示に係るクエリ整形システムの実施形態の一例を説明する。
図1は、クエリ整形システムの全体構成の一例を示す図である。クエリ整形システムSは、ネットワークNに接続可能なサーバ10及びユーザ端末20を含む。ネットワークNは、インターネット又はLAN等の任意のネットワークである。クエリ整形システムSは、少なくとも1つのコンピュータを含めばよく、
図1の例に限られない。
【0010】
サーバ10は、サーバコンピュータである。制御部11は、少なくとも1つのプロセッサを含む。記憶部12は、RAM等の揮発性メモリと、ハードディスク等の不揮発性メモリと、を含む。通信部13は、有線通信用の通信インタフェースと、無線通信用の通信インタフェースと、の少なくとも一方を含む。
【0011】
ユーザ端末20は、ユーザのコンピュータである。例えば、ユーザ端末20は、パーソナルコンピュータ、スマートフォン、タブレット端末、又はウェアラブル端末である。制御部21、記憶部22、及び通信部23の物理的構成は、それぞれ制御部11、記憶部12、及び通信部13と同様である。操作部24は、タッチパネル等の入力デバイスである。表示部25は、液晶ディスプレイ又は有機ELディスプレイである。
【0012】
なお、記憶部12,22に記憶されるプログラムは、ネットワークNを介して供給されてもよい。また、各コンピュータには、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、メモリカードスロット)と、外部機器とデータの入出力をするための入出力部(例えば、USBポート)と、の少なくとも一方が含まれてもよい。例えば、情報記憶媒体に記憶されたプログラムが、読取部及び入出力部の少なくとも一方を介して供給されてもよい。
【0013】
[2.クエリ整形システムの概要]
図2は、ユーザ端末20に表示される画面の一例を示す図である。本実施形態では、ウェブサイトの検索サービスにクエリ整形システムSを適用する場合を例に挙げる。クエリ整形システムSは、種々のサービスに適用可能である。他のサービスへの適用例は、後述する。例えば、ユーザは、ユーザ端末20のブラウザ又はアプリケーションを起動し、検索サービスのトップページP1にアクセスする。
【0014】
サーバ10は、トップページP1及び検索結果のページといった種々のページを、ユーザに提供可能である。ユーザは、入力フォームF10に任意のクエリを入力し、検索サービスを利用する。本実施形態では、クエリが英語で入力される場合を説明するが、クエリは、任意の言語で入力可能である。例えば、クエリは、日本語、中国語、スペイン語、フランス語、又はアラビア語といった他の言語で入力されてもよい。
【0015】
クエリは、ユーザが検索時に入力した語である。語とは、少なくとも1つの文字、少なくとも1つの数字、少なくとも1つの記号、又はこれらの組み合わせである。語は、キーワードと呼ばれることもある。語を構成する個々の文字、数字、又は記号は、要素と呼ばれることもある。クエリは、語以外の検索条件(例えば、数値範囲や属性等)を含んでもよい。ユーザが入力したクエリと、サーバ10に記憶されたインデックスと、が比較されることによって、検索が実行される。
【0016】
クエリは、少なくとも1つのトークンを含む。トークンは、クエリに含まれる語の単位である。トークンは、少なくとも1つの語を含む。トークンは、1つの語から構成されることもあるし、複数の語から構成されることもある。トークンが複数の語から構成される場合には、個々の語の間には、スペースがあってもよいし、アンダーバーやハイフン等の何らかの記号が配置されてもよい。本実施形態では、複数のトークンを含むクエリを想定するが、クエリは、1つのトークンのみを含んでもよい。
【0017】
例えば、ユーザが、架空のアパレルブランド「The South Mountain」の商品を検索するために、クエリ「The South Mountain」を入力したとする。このクエリは、語「The」、語「South」、及び語「Mountain」といった3つの語を含む。検索の精度を高めるためには、これら3つの語は、1セットで扱って初めてアパレルブランド名を意味するので、別々のトークンとして扱うのではなく、1つのトークンとして扱った方がよい。このようなクエリは、3つの語から構成される1つのトークンを含む。このため、複数の語がスペースで区切られていたとしても、当該複数の語が1つのトークンに相当することもある。
【0018】
一方、例えば、ユーザが、ハワイにある山を検索するために、クエリ「Hawaii mountains」を入力したとする。このクエリは、語「Hawaii」及び語「mountains」といった2つの語から構成される。これら2つの語は、クエリ「The South Mountain」とは異なり、個々の語が独立した意味を有するので、1セットで扱う必要は無く、別々のトークンとして扱った方がよい。このようなクエリは、1つの語から構成される2つのトークンを含む。
【0019】
ただし、サーバ10は、クエリを受信した時点では、複数の語から構成されるトークンなのか、1つの語から構成されるトークンなのか、を特定することが難しい。このため、サーバ10は、クエリを受信した時点では、ひとまず、スペースによって区切られた部分をトークンとみなすものとする。例えば、クエリ「The South Mountain」であれば、サーバ10は、ひとまず、トークン「The」、トークン「South」、及びトークン「Mountain」といった3つのトークンが含まれるものとみなす。クエリ「Hawaii mountains」であれば、サーバ10は、ひとまず、トークン「Hawaii」及びトークン「mountains」といった2つのトークンが含まれるものとみなす。
【0020】
なお、サーバ10は、予め定められたルールに基づいて、クエリからトークンとみなす部分を特定すればよい。ひとまずトークンとみなされる部分は、スペースによって区切られた部分に限られない。例えば、サーバ10は、何らかの区切りを意味する記号に基づいて、クエリからトークンとみなす部分を特定してもよい。例えば、この記号は、括弧、アンダーバー、ハイフン、カンマ、又はピリオドであってもよい。更に、サーバ10は、複数のルールを組み合わせて、クエリからトークンとみなす部分を特定してもよい。
【0021】
図2の例では、クエリ「Tokyo restaurant」は、トークン「Tokyo」と、トークン「restaurant」と、を含む。クエリ「U.S.A. championship」は、トークン「U.S.A.」と、トークン「championship」と、を含む。これら2つのクエリの個々のトークンは、独立した意味を持った名詞である。このような名詞は、独立した意味を有するので、AND条件又はOR条件でつなげて検索しても問題ないことが多い。このため、これら2つのクエリは、適切な位置にスペースが挿入されており、検索時のトークンとして適切である。
【0022】
クエリ「Tokyorestaurant」は、スペースが存在しないので、1つのトークン「Tokyorestaurant」だけを含む。本来であれば、名詞「Tokyo」と、名詞「restaurant」と、の間にスペースが必要であるが、これらの名詞の間にはスペースが存在しない。例えば、スペースの入力を億劫に感じたユーザが文字だけを入力したり、ユーザが音声入力をしたりすると、複数のトークンに分けるべき複数の語が1つのトークンになることがある。このクエリは、適切な位置にスペースが挿入されていないので、検索時のトークンとして不適切である。
【0023】
クエリ「U.S.A. champion ship」は、1つの名詞である「championship」のうち、「champion」と「ship」の間にスペースが入力されている。このため、このクエリは、適切に入力されたクエリ「U.S.A. championship」とは異なり、トークン「U.S.A.」、トークン「champion」、及びトークン「ship」を含む。ユーザが、「champion」と「ship」の間にスペースを誤入力したり、ウェブサイトや文書ファイルからコピーペーストしたりすると、1つのトークンにすべきものが複数のトークンに分けられることがある。このクエリも、適切な位置にスペースが挿入されていないので、検索時のトークンとして不適切である。
【0024】
そこで、本実施形態では、適切なトークンとなるようにクエリ整形が実行される。クエリ整形は、ひとまずトークンとみなしたものを、適切なトークンに調整することである。クエリ整形は、クエリのチャンキングと呼ばれることもある。本実施形態では、クエリ整形の操作として、分割、結合、及びセグメント化の3つを例に挙げるが、クエリ整形の操作は、これら3つのうちの何れか1つ又は2つのみを意味してもよい。クエリ整形の操作とは、クエリをどのように整形するかである。操作は、整形の種類ということもできる。
【0025】
分割は、1つのトークンを複数のトークンに分けることである。当該複数のトークンの間には、スペースが配置される。先述した1つのトークン「Tokyorestaurant」を「Tokyo」と「restaurant」の2つのトークンにすることは、分割に相当する。「Tokyo」と「restaurant」の間には、スペースが配置される。
【0026】
結合は、複数のトークンを1つのトークンにまとめ上げることである。当該複数のトークンの間のスペースは削除される。先述した「champion」と「ship」の2つのトークンを1つのトークン「championship」にすることは、結合に相当する。「champion」と「ship」の間のスペースは削除される。
【0027】
セグメント化は、複数のトークンを1つのトークンにまとめ上げるといった点では、結合と同様であるが、スペースが削除されない点で結合とは異なる。先述した「The」と「South」と「Mountain」の3つのトークンを1つのトークン「The South Mountain」にすることは、セグメント化に相当する。「The」と「South」の間のスペースと、「South」と「Mountain」の間のスペースと、は削除されない。
【0028】
クエリ整形システムSは、一般的な形態素解析等のクエリ整形ではなく、辞書データを利用したマッチング手法と、学習モデルを利用した機械学習手法と、を効果的に組み合わせた新規なクエリ整形を実行することによって、クエリ整形の精度を高めるようにしている。以降、本実施形態の詳細を説明する。
【0029】
[3.クエリ整形システムで実現される機能]
図3は、本実施形態で実現される機能の一例を示す機能ブロック図である。
図4は、クエリ整形システムSにおける全体の流れの一例を示す図である。以降、
図4の流れを参照しつつ、
図3の各機能の詳細を説明する。
図4のように、クエリ整形の処理は、大きく分けて、2つのステージに分けられている。ステージ1は、マッチング手法である。ステージ2は、ステージ1のマッチングの実行結果を考慮した機械学習手法である。
【0030】
本実施形態では、ステージ1のマッチング手法と、ステージ2の機械学習手法と、が
図3の各機能により実現される。例えば、データ記憶部100は、記憶部12を主として実現される。トークン取得部101、マッチング実行部102、判定部103、第1トークン整形部104、第2トークン整形部105、整形済みクエリ取得部106、検索部107、及び提示部108は、制御部11を主として実現される。
【0031】
[データ記憶部]
データ記憶部100は、クエリ整形に必要なデータを記憶する。例えば、データ記憶部100は、検索対象データベースDB、第1辞書データD1、第2辞書データD2、第3辞書データD3、第1学習モデルM1、及び第2学習モデルM2を記憶する。以降、第1辞書データD1、第2辞書データD2、及び第3辞書データD3を区別しない時は、単に辞書データDと記載する。同様に、第1学習モデルM1及び第2学習モデルM2を区別しない時は、単に学習モデルMと記載する。
【0032】
検索対象データベースDBは、検索対象となるデータが格納されたデータベースである。検索対象データベース DBには、クエリとの比較対象となるインデックスが格納されている。本実施形態では、ウェブサイトが検索対象に相当するので、種々のウェブサイトから抽出された語を含むインデックスが格納される。ウェブサイトがカテゴリ分けされている場合には、カテゴリもインデックスに相当する。インデックスとして利用可能な情報自体は、公知の種々の情報であってよい。例えば、検索対象データベースDBには、ウェブサイトのインデックスと、ウェブサイトのURLと、が関連付けられて格納される。
【0033】
辞書データDは、検索時のトークンとして適切な語が格納されたデータである。辞書データDに格納された語は、1つの語だけで構成されることもあるし、複数の語を含むこともある。例えば、架空のアパレルブランド「The South Mountain」を1つのトークンとしたい場合には、これら3つの語が1つの語として辞書データDに格納されている。辞書データD自体は、公知の種々の辞書データDを利用可能である。例えば、国語辞典又はインターネット百科事典のデータに基づいて、辞書データDが作成されてもよい。よく入力されるクエリに含まれるトークンが辞書データDに格納されていてもよい。
【0034】
本実施形態では、第1辞書データD1、第2辞書データD2、及び第3辞書データD3といった3つの辞書データDが利用される場合を例に挙げる。ステージ1のマッチング手法で利用される辞書データDは、本実施形態の例に限られない。例えば、1つの辞書データDだけが利用されてもよいし、2つ又は4つ以上の辞書データDが利用されてもよい。
【0035】
例えば、第1辞書データD1には、ある特定分野でよく用いられる語が格納される。第2辞書データD2には、インターネット百科事典に掲載された一般的な語が格納される。第3辞書データD3には、接頭辞に相当する語、接尾辞に相当する語、及び共起性のある語の少なくとも1つが格納される。第1辞書データD1、第2辞書データD2、及び第3辞書データD3は、クエリ整形システムSの管理者により作成されるものとするが、インターネット上に公開されているものであってもよい。
【0036】
学習モデルMは、機械学習を利用したモデルである。機械学習自体は、自然言語処理で利用される種々の方法を利用可能であり、例えば、教師有り学習、半教師有り学習、又は教師無し学習を利用可能である。学習モデルMは、AI(Artificial Intelligence)と呼ばれることもある。例えば、学習モデルMは、CharacterBERT等のTransformerに基づく事前学習済みの自然言語処理モデルが利用されてもよいし、文字ベースのCNN(Convolutional Neural Network)が利用されてもよい。また、例えば、学習モデルMとして、Bi-LSTM、Bi-LSTM-CRF、又はWord2Vec等の他の手法が部分的に利用されてもよい。他にも例えば、TransformerモデルをベースとしたBERT及びELECTRAが利用されてもよい。
【0037】
本実施形態では、第1学習モデルM1及び第2学習モデルM2といった2つの学習モデルMが利用される場合を例に挙げる。ステージ2の機械学習手法で利用される学習モデルMは、本実施形態の例に限られない。例えば、1つの学習モデルMだけが利用されてもよいし、3つ以上の学習モデルMが利用されてもよい。複数の学習モデルMが利用される場合には、個々の学習モデルMの機械学習手法は、互いに異なってもよい。
【0038】
例えば、第1学習モデルM1は、ファインチューニング済みのCharacterBERTである。例えば、第1学習モデルM1は、いわゆる系列ラベリング問題を解く手法で用いられるモデルである。第1学習モデルM1には、トークンに含まれる個々の文字が入力される。第1学習モデルM1は、個々の文字の特徴に関する文字特徴量を計算する。あるトークンが5文字だったとすると、5つの文字特徴量が計算される。特徴量自体は、公知の種々の計算方法で計算可能である。特徴量は、任意の形式で表現可能であり、例えば、多次元ベクトル、配列、又は単一の数値で表現可能である。特徴量は、埋め込み表現と呼ばれることもある。第1学習モデルM1は、最終的な出力として文字特徴量を出力してもよいし、最終的な出力を得るための中間的な計算結果として文字特徴量を出力してもよい。
【0039】
例えば、第2学習モデルM1は、個々の文字ではなく、トークン自体の特徴量に関するトークン特徴量を計算する。トークン特徴量は、トークンに含まれる個々の文字ではなく、トークンの全体的な特徴量という意味で文字特徴量とは異なるが、特徴量の意味自体は、文字特徴量と同様である。トークン特徴量も、任意の形式で表現可能であり、公知の種々の計算方法で計算可能である。第2学習モデルM1は、ある一定程度の長さの文字列の特徴量を計算可能なモデルであればよく、Bi-LSTM、Bi-LSTM-CRF、又はWord2Vecであってもよい。第2学習モデルM2は、最終的な出力としてトークン特徴量を出力してもよいし、最終的な出力を得るための中間的な計算結果としてトークン特徴量を出力してもよい。
【0040】
[トークン取得部]
トークン取得部101は、クエリに含まれる複数のトークンを取得する。トークン取得部101は、予め定められた方法に基づいて、クエリの中から、トークンの区切り位置を特定する。本実施形態では、スペースによってトークンが区切られる場合を説明するので、トークン取得部101は、クエリに含まれるスペースの位置を特定し、クエリの中から複数のトークンを取得する。スペースではなく特定の記号によってトークンが区切られる場合には、トークン取得部101は、クエリに含まれる当該記号の位置に基づいて、クエリの中から複数のトークンを取得してもよい。
【0041】
本実施形態では、トークン取得部101は、ユーザ端末20から、ユーザが入力したクエリに含まれる複数のトークンを取得する場合を例に挙げるが、トークン取得部101は、過去に入力されたクエリが格納されたデータベースから、当該クエリに含まれる複数のトークンを取得してもよい。クエリには、1つのトークンのみが含まれることもあるので、トークン取得部101は、クエリに含まれる1つのトークンのみを取得してもよい。クエリに複数のトークンが含まれる場合だったとしても、トークン取得部101は、クエリに含まれる一部のトークンだけを取得してもよい。
【0042】
[マッチング実行部]
マッチング実行部102は、複数のトークンに基づいて、辞書データDを利用したマッチングを実行する。マッチングとは、複数のトークンと、辞書データDに格納された語と、を比較することである。本実施形態では、個々のトークンと、辞書データDに格納された語と、を比較することがマッチングに相当する場合を説明するが、複数のトークンをひとかたまりとして、辞書データDに格納された語と比較することがマッチングに相当してもよい。
【0043】
本実施形態では、複数の辞書データDが用意されているので、マッチング実行部102は、複数の辞書データDの各々を利用したマッチングを実行する。1つの辞書データDのみが用意されている場合には、マッチング実行部102は、1つの辞書データDのみを利用したマッチングを実行する。マッチング実行部102は、マッチングにより、複数のトークンの各々を、第1トークン又は第2トークンの何れかに分類する。
【0044】
第1トークンは、辞書データDにマッチしたトークンである。本実施形態のように、複数の辞書データDが用意されている場合には、第1トークンは、複数の辞書データDのうちの少なくとも1つにマッチしたトークンである。本実施形態では、複数の辞書データDのうちの何れか1つにでもマッチしたトークンは、第1トークンに分類されるものとするが、閾値以上の辞書データDにマッチすることが、第1トークンに分類されるための条件になってもよい。この閾値は、2以上であってよい。この閾値は、クエリ整形システムSの管理者が指定可能であってもよい。
【0045】
第2トークンは、辞書データDにマッチしなかったトークンである。本実施形態のように、複数の辞書データDが用意されている場合には、第2トークンは、複数の辞書データDの何れにもマッチしなかったトークンである。第1トークンに分類される条件の閾値として2以上の値が設定されている場合には、第2トークンは、どの辞書データDにもマッチしなかったトークン、又は、閾値未満の辞書データDにしかマッチしなかったトークンである。
【0046】
例えば、マッチング実行部102は、個々のトークンと、辞書データDに格納された語と、が一致するか否かを判定することによって、マッチングを実行する。即ち、マッチング実行部102は、個々のトークンと一致する語が辞書データDに存在するか否かを判定する。本実施形態では、完全一致が判定される場合を説明するが、部分一致が判定されてもよい。部分一致は、前方一致、中間一致、又は後方一致の何れであってもよい。本実施形態では、マッチングの一例として、文字列の中の最も左側の文字から一致する文字を探索する手法(いわゆる最左最長マッチ)を説明する。
【0047】
例えば、ユーザが「Dinner Ita lian Tokyorestaurant」といったクエリを入力したとする。この場合、ユーザは、誤入力により「Ita」と「lian」の間にスペースを入力してしまい、かつ、「Tokyo」と「restaurant」の間にスペースを入力しなかったと思われる。このクエリは、「Dinner Italian Tokyo restaurant」といったクエリに整形されるべきである。
【0048】
トークン取得部101は、クエリ「Dinner Ita lian Tokyorestaurant」におけるスペースの位置に基づいて、「Dinner」、「Ita」、「lian」、「Tokyorestaurant」といった4つのトークンを取得する。マッチング実行部102は、これら4つのトークンの各々と、辞書データDと、のマッチングを実行する。ここでは、「Dinner」、「Italian」、「Tokyo」、「restaurant」といった語が辞書データDに格納されているものとする。
【0049】
1つ目のトークン「Dinner」は、辞書データDに存在するので、マッチング実行部102は、このトークンを第1トークンに分類する。2つ目のトークン「Ita」と、3つ目のトークン「lian」と、の間にはスペースが配置されているが、いわゆる最左最長マッチでは語「Italian」にマッチングするので、マッチング実行部102は、これら2つのトークンを第1トークンに分類する。4つ目のトークン「Tokyorestaurant」は、辞書データDの語「Tokyo」と語「restaurant」の組み合わせであるが、最左最長マッチではマッチしないので、マッチング実行部102は、このトークンを第2トークンに分類する。
【0050】
本実施形態では、マッチング実行部102は、第1辞書データD1、第2辞書データD2、及び第3辞書データD3を利用して、上記説明したようなマッチングを実行する。例えば、
図4のように、入力系列であるクエリをxとする。クエリxに含まれるトークンをx
i(iは、後述のl(アルファベットのエル)以下の自然数)とする。トークンの総数をl(lは、2以上の整数)とすると、x=x
1・・・x
lである。
【0051】
例えば、整形済みのクエリをyとする。整形済みのクエリyは、整形済みのトークンの系列ということもできる。クエリxから整形済みのクエリyを取得することは、クエリ整形システムSの目的の1つである。整形済みのクエリyに含まれるトークンをyI(Iは、後述のL以下の自然数)とする。整形済みのクエリyに含まれるトークンの総数をL(Lは、2以上の整数)とすると、y=y1・・・yLである。
【0052】
例えば、クエリ整形における操作の系列をoとする。操作oは、トークンxiに対する操作oi集まりである。このため、o=o1・・・olである。先述したように、本実施形態では、分割、結合、及びセグメント化の3つの操作を例に挙げるので、操作oiは、「Split」、「Merge」、「Segment」、又は「Single」となる。「Single」は、操作を必要としないトークンxiに付与される。これら4つは、操作内容を示すラベルということができる。
【0053】
トークンxiが第1トークンであれば、操作oiは、「Split」、「Merge」、「Segment」、又は「Single」になる。即ち、これら4つのうちの何れかの操作oiが付与されることは、トークンxiが第1トークンに分類されることに相当する。トークンxiが第2トークンであれば、操作oiは、これら4つのうちの何れでもない「Uncertain」になる。「Uncertain」は、暫定的なラベルということができる。即ち、「Uncertain」の操作oiが付与されることは、トークンxiが第2トークンに分類されることに相当する。
【0054】
図4のように、マッチング実行部102は、トークンx=x
1・・・x
lと、第1辞書データD1と、のマッチングを実行する。例えば、トークンx
3と、トークンx
4と、が第1辞書データD1の語とマッチしたとする。先述した例であれば、トークンx
3が「Ita」であり、トークンx
4が「lian」である場合に、第1辞書データD1に格納された1つの語「Italian」とマッチする。マッチング実行部102は、トークンx
3,x
4の各々を、互いに結合すべき第1トークンに分類する。即ち、マッチング実行部102は、操作o
3,o
4の各々を「Merge」にする。
【0055】
マッチング実行部102は、第1辞書データD1を利用したマッチングが完了すると、クエリxから、第1辞書データD1とマッチしたトークンx
3,x
4を抜き出す。
図4のように、第2辞書データD2とのマッチングの対象になるのは、クエリx=x
1,x
2,x
5・・・x
lとなる。例えば、トークンx
2が第2辞書データD2の語とマッチしたとする。先述した例であれば、トークンx
2が「Dinner」である場合に、第2辞書データD2の1つの語「Dinner」とマッチする。マッチング実行部102は、トークンx
2を、操作が不要な第1トークンに分類する。即ち、マッチング実行部102は、操作o
2を「Single」にする。
【0056】
マッチング実行部102は、第2辞書データD2を利用したマッチングが完了すると、クエリxから、第2辞書データD2とマッチしたトークンx
2を抜き出す。
図4のように、第3辞書データD3とのマッチングの対象になるのは、クエリx=x
1,x
5・・・x
lとなる。例えば、トークンx
1が第3辞書データD3の接尾辞とマッチしたとすると、マッチング実行部102は、トークンx
1を、操作が不要な第1トークンに分類する。即ち、マッチング実行部102は、操作o
1を「Single」にする。なお、第3辞書データD3とのマッチングの前には、クエリxに対して形態素解析が実行されて形態素に分解されてもよい。第3辞書データD3を利用したマッチングでは、共起尺度等の指標が計算されたうえでマッチングが実行されてもよい。
【0057】
トークンx
5・・・x
lの各々は、どの辞書データDにもマッチしなかったので、マッチング実行部102は、トークンx
5・・・x
lを、第2トークンとして分類する。即ち、マッチング実行部102は、操作o
5・・・o
lを「Uncertain」にする。以上により、マッチングが完了する。以降の説明では、特に
図4を参照する必要のない時は、クエリやトークン等の符号を省略する。
【0058】
なお、本実施形態では、「Split」の操作は、マッチングで付与されないものとするが、マッチングによって「Split」の操作が付与されてもよい。また、
図4の例では、辞書データDにマッチしたトークンがクエリから抜き出される場合を説明したが、マッチしたトークンだったとしても、クエリから抜き出されなくてもよい。例えば、マッチング実行部102は、第1辞書データD1とマッチしたトークンと、第2辞書データD2及び第3辞書データD3と、のマッチングを実行してもよい。
【0059】
[判定部]
判定部103は、トークン取得部101により取得された複数のトークンの全てが辞書データDにマッチしたか否かを判定する。即ち、判定部103は、複数のトークンの中に、辞書データDにマッチしなかったトークンが存在するか否かを判定する。判定部103は、複数のトークンの全てが第1トークンであるか否か判定する、又は、複数のトークンの中に第2トークンが存在するか否かを判定するということもできる。
【0060】
図4では、「Uncertainラベルを持つ」の判定が判定部103の処理に相当する。第3辞書データD3までのマッチングが完了したクエリxの中に、操作o
iが「Uncertain」であるトークンx
iが存在しないことは、全てのトークンx
iが辞書データDにマッチしたことに相当する。判定部103は、操作o=o
1・・・o
lに基づいて、全てのトークンx
iが辞書データDにマッチしたか否かを判定する。
図4の例では、トークンx
5・・・x
lは辞書データDにマッチせず、「Uncertainラベルを持つ」トークンが存在するので、
図4の判定処理は「Y」になる。
【0061】
[第1トークン整形部]
第1トークン整形部104は、マッチングの実行結果に基づいて、第1トークンを整形する。本実施形態では、「Single」の第1トークンは整形されないので、第1トークン整形部104は、マッチングの実行結果に基づいて、複数の第1トークンのうち、整形する必要がある第1トークンを整形する。整形する必要がある第1トークンは、「Single」以外の操作oiが付与された第1トークンである。本実施形態では、辞書データDとのマッチングでは「Split」は付与されないので、第1トークン整形部104は、「Merge」又は「Segment」の第1トークンを整形する。
【0062】
例えば、第1トークン整形部104は、互いに連続する複数の第1トークンに「Merge」が付与された場合、当該第1トークン間のスペースを削除して1つのトークンとなるように、当該複数の第1トークンを整形する。先述した「Ita」と「lian」といった2つの第1トークンであれば、第1トークン整形部104は、「Ita」と「lian」の間のスペースを削除し、1つのトークン「Italian」になるように、これら2つの第1トークンを整形する。
【0063】
例えば、第1トークン整形部104は、互いに連続する複数の第1トークンに「Segment」が付与された場合、当該第1トークン間のスペースを削除せずに1つのトークンとなるように、当該複数の第1トークンを整形する。先述した「The」、「South」、「Mountain」といった3つの第1トークンであれば、第1トークン整形部104は、これらの間のスペースを削除せず、1つのトークン「The South Mountain」となるように、これら3つの第1トークンを整形する。整形後の第1トークンは、セグメント化されたことを示すように、クォーテーション又はダブルクォーテーション等の記号で囲われてもよい。
【0064】
図4の例であれば、トークンx
3,x
4が「Merge」なので、第1トークン整形部104は、トークンx
3,x
4の間のスペースを削除し、これら2つを結合させて1つのトークンにする。
図4の例では、第1トークン整形部104による整形済みのクエリをx
r(rは、後述のm以下の自然数)とする。xr=x
1x
2・・・x
m(mは、2以上の整数)である。ここでは、トークンx
3,x
4が結合されて1つ減っているので、mの数値は、lよりも1少ない。
【0065】
なお、整形方法自体は、種々の方法を利用可能である。例えば、第1トークンに「Split」を付与可能なマッチングが実行される場合には、第1トークン整形部104は、「Split」の第1トークンが複数に分割されるように、当該第1トークンを整形してもよい。例えば、ある辞書データDを利用して付与された操作と、他の辞書データDを利用して付与された操作と、が異なっていれば、多数決により操作が決定されてもよいし、辞書データDに指定された優先順位に応じて操作が決定されてもよい。
【0066】
[第2トークン整形部]
第2トークン整形部105は、複数のトークンのうち辞書データDにマッチした第1トークンと、クエリ整形に関する学習モデルMと、に基づいて、複数のトークンのうち辞書データDにマッチしなかった第2トークンを整形する。学習モデルMは、第2トークンを整形するために、第2トークン自体の情報だけではなく、第1トークンに関する情報も参照する。即ち、学習モデルMは、第2トークンだけではなく、マッチングの実行結果も参照し、第2トークンを整形する。学習モデルMは、トークンの文字的な特徴だけではなく、どのトークンが辞書データDにマッチしたかを考慮できるようになる。第2トークン整形部105は、学習モデルMの内部的な計算結果、又は、学習モデルMからの出力を、第1トークンに関する情報を利用して変更し、第2トークンを整形する。
【0067】
本実施形態では、第2トークンに対する操作として複数種類の操作が用意されているので、第2トークン整形部105は、第1トークンと、学習モデルMと、に基づいて、複数の操作のうちの何れかを選択する。第2トークン整形部105は、当該選択された操作に基づいて、第2トークンを整形する。例えば、第2トークン整形部105は、「Split」、「Merge」、「Segment」、及び「Single」といった4つの操作のうちの何れかを選択する。操作は、第1トークンと第2トークンで異なってもよい。第2トークン整形部105は、これら4つのうちの何れか3つ又は何れか2つの中から、第2トークンに対する操作を選択してもよい。
【0068】
本実施形態では、第1トークン整形部104により第1トークンが整形された場合には、第2トークン整形部105は、整形済みの第1トークンと、学習モデルMと、に基づいて、第2トークンを整形する。即ち、学習モデルMは、整形された第1トークンについては、整形済みの状態の第1トークンに関する情報を参照し、第2トークンの整形に用いられる。
図4の例であれば、「Merge」の第1トークンx
3,x
4が整形されて1つの第1トークンになるので、1つに整形された第1トークンに関する情報が、学習モデルMによって参照される。
【0069】
例えば、第2トークン整形部105は、複数の第1トークンのうちの一部のみが整形された場合には、整形済みの第1トークン、整形されなかった第1トークン、及び学習モデルMに基づいて、第2トークンを整形する。この場合、学習モデルMは、整形済みの第1トークンに関する情報と、整形されなかった第1トークンに関する情報と、の両方を参照する。
図4の例であれば、「Single」の第1トークンx
1,x
2は整形されず、「Merge」の第1トークンx
3,x
4が整形されるので、これら両方の第1トークンに関する情報が、学習モデルMによって参照される。
【0070】
本実施形態では、「Uncertain」を持つクエリxr=x1x2・・・xmが与えられた場合に、「Uncertain」のトークンに含まれる文字が、「B」、「I」、「O」、「E」、「S」の何れかに分類される。この分類は、BIOESチャンキングと呼ばれることもある。属性「B」は、語の開始を意味する。属性「I」は、語の内部を意味する。属性「E」は、語の終端を意味する。属性「S」は、一文字の語であることを意味する。属性「O」は、空白を意味する。
【0071】
例えば、スペースを含むクエリxrの文字系列をc=c1,1・・・cm,nとする。ci,jは、i番目のトークン内のj番目の文字である。例えば、i番目のトークンが「Dinner」だったとすると、ci,1は「D」であり、ci,2は「i」であり、ci,3は「n」であり、ci,4は「n」であり、ci,5は「e」であり、ci,6は「r」である。
【0072】
図4の例では、学習モデルMの出力系列をz=z
1,1・・・z
m,nとする。z
i,jは、文字c
i,jの属性である。即ち、z
i,jは、「B」、「I」、「O」、「E」、「S」の何れかである。ステージ2における機械学習手法は、文字系列c=c
1,1・・・c
m,nから出力系列をz=z
1,1・・・z
m,nを予測するタスクを解くことになる。第2トークン整形部105は、出力系列zに基づいて、「Uncertain」のトークンのラベルを「Split」、「Merge」、「Segment」、又は「Single」の何れかに更新する。
【0073】
本実施形態では、ステージ2の機械学習手法は、文字系列cの文字特徴量の取得、マッチングの実行結果を考慮したトークン特徴量との結合、全結合、及びCRFの4層からなる。これらの4層は、第1学習モデルM1に含まれるものとするが、複数の学習モデルMに分けられていてもよい。第2学習モデルM2は、第2段階の層におけるトークン特徴量の計算で利用される。トークン特徴量は、第2学習モデルM2ではなく、第1学習モデルM1の層により計算されてもよい。
【0074】
なお、
図4の「CLS」と「SEP」は、それぞれ冒頭と末尾を示す文字列である。これらの文字列についても特徴量が計算されるものとする。また、本実施形態では、第2トークン整形部105は、文字系列cだけではなく、操作系列oも第1学習モデルM1に入力するものとするが、第2トークン整形部105は、操作系列oの一部は第1学習モデルM1に入力しなくてもよい。例えば、第2トークン整形部105は、操作系列oのうち、第1トークンの操作o
iだけを第1学習モデルM1に入力してもよい。
【0075】
例えば、第2トークン整形部105は、第1学習モデルM1に基づいて、第1トークンに含まれる第1文字ごとに、当該第1文字の特徴に関する第1文字特徴量を計算する。第1文字は、第1トークンに含まれる個々の文字である。
図4の例では、第1トークンx
1,x
2,x
3,x
4が存在する(ただし、第1トークンx
3,x
4は1つに結合される)ので、これらに含まれる個々の文字は、第1文字に相当する。
図4では、第1文字に関係するボックスに網掛けの背景を付与している。
【0076】
例えば、第1トークンx1が第1文字c1,1,c1,2を含んだとすると、第2トークン整形部105は、第1学習モデルM1に基づいて、文字c1,1の第1文字特徴量h1,1と、文字c1,2の第1文字特徴量h1,2と、を計算する。第2トークン整形部105は、他の第1トークンに含まれる他の第1文字についても同様に、第1文字特徴量を計算する。この計算方法自体は、公知の方法であってよい。本実施形態では、第1学習モデルM1がファインチューニング済みのCharacterBERTなので、CharacterBERTで規定される計算方法に基づいて、第1文字特徴量が計算される。
【0077】
例えば、第2トークン整形部105は、第1学習モデルMに基づいて、第2トークンに含まれる第2文字ごとに、当該第2文字の特徴に関する第2文字特徴量を計算する。第2文字は、第2トークンに含まれる個々の文字である。
図4の例では、第2トークンx
5,・・・,x
mが存在するので、これらに含まれる個々の文字は、第2文字に相当する。
図4の例では、第2トークンx
5は、文字c
5,1等の複数の第2文字を含む。
【0078】
第2トークン整形部105は、第1学習モデルM1に基づいて、文字c
5,1の第2文字特徴量h
5,1を計算する。第2トークン整形部105は、他の第2トークンに含まれる他の第2文字についても同様に、第2文字特徴量を計算する。この計算方法も、第1文字特徴量と同様に、公知の方法であってよい。
図4の例では、第2トークン整形部105は、第1学習モデルM1に基づいて、第1文字特徴量及び第2文字特徴量を含む文字特徴量H=[h
[CLS],h
1,1,・・・,h
m,l,h
[SEP]]を取得する。h
i,jは、文字c
i,jに対応する文字特徴量である。
【0079】
例えば、第2トークン整形部105は、所定の計算方法に基づいて計算された、第1トークン自体の特徴に関する第1トークン特徴量を取得する。本実施形態では、この計算方法は、入力された文字列の特徴量を計算する第2学習モデルM2を利用した方法である。第2学習モデルMは、計算モデルの一例である。このため、第2学習モデルMについて説明している箇所は、計算モデルと読み替えることができる。第2トークン整形部105は、第2学習モデルM2により計算された第1トークン特徴量を取得する。
【0080】
図4の例では、第2トークン整形部105は、第2学習モデルM2に基づいて、第1文字c
1,1,c
1,2を含む第1トークンx
1の第1トークン特徴量w
1を取得する。第1トークン特徴量w
1は、これら2つの第1文字c
1,1,c
1,2で共通である。第2トークン整形部105は、他の第1トークンについても同様に、第1トークン特徴量を取得する。第2学習モデルM2による第1トークン特徴量の計算方法自体は、公知の方法であってよい。例えば、BERT、Bi-LSTM、Bi-LSTM-CRF、又はWord2Vec等で規定される計算方法に基づいて、第2文字特徴量が計算される。
【0081】
例えば、第2トークン整形部105は、第1文字特徴量、第1トークン特徴量、及び第2文字特徴量に基づいて、第2トークンを整形する。例えば、第2トークン整形部105は、第1文字ごとに、当該第1文字の第1文字特徴量と、第1トークン特徴量と、の平均を計算し、当該計算された平均と、第2文字特徴量と、に基づいて、第2トークンを整形する。
【0082】
図4の例では、第2トークン整形部105は、文字c
1,1の第1文字特徴量h
1,1と、第1トークン特徴量w
1と、の平均を計算する。ここでは、単純平均とする。第2トークン整形部105は、文字c
1,2の第1文字特徴量h
1,2と、第1トークン特徴量w
1と、の平均を計算する。第2トークン整形部105は、他の第1文字についても同様に、第1文字特徴量と第1トークン特徴量の平均を計算する。
【0083】
図4のように、第2トークン整形部105は、第2トークン自体の特徴に関する第2トークン特徴量には基づかずに、第1文字特徴量、第1トークン特徴量、及び第2文字特徴量に基づいて、第2トークンを整形する。
図4の例では、第2トークンx
5の文字c
5,1の第2文字特徴量に対しては、第2トークンx
5自体の特徴量との平均が計算されない。第2トークン整形部105は、他の第2トークンについても同様に、第2文字特徴量と第2トークン特徴量の平均を計算せずに、第2文字特徴量をそのまま利用する。
【0084】
図4の例では、第2トークン整形部105は、第1学習モデルM1の全結合層及びCRF層に対し、平均が計算された後の文字特徴量H=[h
[CLS],h
1,1,・・・,h
m,l,h
[SEP]]を入力する。CRF層からは、個々の文字に対する「B」、「I」、「O」、「E」、「S」のラベリング結果が出力される。即ち、第2トークン整形部105は、第1トークンと、学習モデルMと、に基づいて、第2トークンに含まれる第2文字ごとに、クエリ整形に関するラベリングを実行し、ラベリングの実行結果に基づいて、第2トークンを整形する。本実施形態では、個々の文字に対し、「B」、「I」、「O」、「E」、「S」の何れかの属性を付与することがラベリングに相当する。
【0085】
図5は、第1学習モデルM1からの出力の一例を示す図である。
図5では、トークン「Tokyorestaurant」と、トークン「championship」と、の各々に対する第1学習モデルM1の出力を示している。ここでは、説明の都合上、これら2つとも第2トークンとするが、第1トークンであったとしても、同様の出力が得られてもよい。
【0086】
図5のように、本実施形態では、第1学習モデルM1は、第2トークンを分割する否かに関する分割要否情報を出力する。先述した「B」、「I」、「O」、「E」、「S」は、分割要否情報の一例である。第2トークン整形部105は、分割要否情報に基づいて、第2トークンを整形する。例えば、第2トークン整形部105は、第1学習モデルM1から出力された分割要否情報が分割要を示すトークンを分割すると決定する。第2トークン整形部105は、第1学習モデルM1から出力された分割要否情報が分割不要を示すトークンを分割しないと決定する。
【0087】
トークン「Tokyorestaurant」は、15個の文字(15個のアルファベット)により構成されるので、第1学習モデルM1は、15個の属性を特定する。個々の文字の属性は、
図5の通りである。第1学習モデルM1は、最初の属性Bの文字からその後の属性Eまでの部分(1番目の「T」から5番目の「o」までの「Tokyo」)を、1つのトークンと推定する。第1学習モデルM1は、次の属性Bの文字からその後の属性Eまでの部分(6番目の「r」から15番目の「t」までの「restaurant」)を、1つのトークンと推定する。
【0088】
第1学習モデルM1は、入力された1つのトークン「Tokyorestaurant」に2つのトークンがあると推定したので、トークン「Tokyorestaurant」を分割することを示す分割要否情報を出力する。第1学習モデルM1は、上記推定した個々のトークンを出力してもよい。この場合、第1学習モデルM1は、トークン「Tokyorestaurant」の分割も実行する。第1学習モデルM1は、トークン「Tokyorestaurant」を2つに分割し、トークン「Tokyo」と、トークン「restaurant」と、を出力してもよい。
【0089】
トークン「championship」は、12個の文字(12個のアルファベット)により構成されるので、第1学習モデルM1は、12個の属性を特定する。個々の文字の属性は、
図5の通りである。第1学習モデルM1は、最初の属性Bの文字からその後の属性Eまでの部分(1番目の「c」から12番目の「p」までの「championship」)を、1つのトークンと推定する。第1学習モデルM1は、入力された1つのトークン「championship」が1つのトークンであると推定したので、トークン「championship」を分割しないことを示す分割要否情報を出力する。
【0090】
以上のように、第1学習モデルM1は、属性Bの文字からその後の属性Eの文字までの間を1つのトークンと推定する。第1学習モデルM1は、属性Sの文字も1つのトークンと推定する。第1学習モデルM1は、入力された1つのトークンに対して複数のトークンが推定された場合(例えば、属性Bの文字と、属性Eの文字と、ペアが複数存在する場合)、入力された1つのトークンを分割することを示す分割要否情報を出力する。学習モデルMは、入力された1つのトークンに対して1つのトークンが推定された場合(例えば、属性Bの文字と、属性Eの文字と、ペアが1つだけ存在する場合)、入力された1つのトークンを分割しないことを示す分割要否情報を出力する。
【0091】
第2トークン整形部105は、分割要否情報が分割することを示す第2トークンを、辞書データDを利用して分割することによって、第2トークンを整形してもよい。本実施形態では、第1辞書データD1が利用される場合を説明するが、第2トークン整形部105は、第2辞書データD2又は第3辞書データD3を利用して第2トークンを分割してもよい。第2トークン整形部105は、ある第2トークンを分割することを分割要否情報が示す場合、この第2トークンと、第1辞書データD1と、が部分一致するか否かを判定する。第2トークン整形部105は、この第2トークンと部分一致する語が第1辞書データD1に存在する場合、このトークンが、この語から構成されるトークンと、それ以外の部分から構成されるトークンと、を含むように分割する。
【0092】
本実施形態では、第2トークン整形部105は、判定部103により複数のトークンの全てが辞書データDにマッチしたと判定された場合には第2トークンの整形をしない。この場合、複数のトークンの全てが第1トークンなので、第1トークンの整形が必要だったとしても、第1トークン整形部104のみでクエリ整形が完了する。第2トークン整形部105は、判定部103により複数のトークンの一部だけが辞書データDにマッチしたと判定された場合に、第2トークンを整形する。
【0093】
なお、第2トークン整形部105は、マッチングの実行結果と、学習モデルMと、に基づいて、第2トークンを整形すればよく、第2トークンの整形方法は、本実施形態の例に限られない。例えば、第1学習モデルM1の機能と、第2学習モデルM2の機能と、が1つの学習モデルMにまとめられている場合には、第2トークン整形部105は、当該1つの学習モデルMに基づいて、第2トークンを整形してもよい。
【0094】
他にも例えば、トークンに含まれる文字に着目するのではなく、トークンに含まれる形態素に着目して、第2トークンが整形されてもよい。この場合、第2トークン整形部105は、第1トークン及び第2トークンに対し、形態素解析を実行する。形態素解析自体は、公知の種々の方法を利用可能である。形態素は、1文字のこともあれば、複数の文字を含むこともある。ここでは、第1トークンに含まれる形態素を第1形態素という。第2トークンに含まれる形態素を第2形態素という。
【0095】
第2トークン整形部105は、学習モデルMに基づいて、第1形態素の特徴に関する第1形態素特徴量と、第2形態素の特徴量に関する第2形態素特徴量を計算する。第2トークン整形部105は、第1形態素特徴量と、第1トークン特徴量と、の平均を計算する。第2トークン整形部105は、当該計算された平均と、第2形態素特徴量と、を全結合層及びCRF層に入力し、第2形態素のラベリングを実行する。第2トークン整形部105は、第2形態素に付与された属性に基づいて、第2トークンを整形する。
【0096】
他にも例えば、第2トークン整形部105は、整形済みの第1トークンと、第2トークンと、をそのまま学習モデルMに入力してもよい。この場合、第2トークン整形部105は、学習モデルMに基づいて、整形済みの第1トークンの第1トークン特徴量と、第2トークンの特徴に関する第2トークン特徴量と、を計算する。第2トークン整形部105は、第1トークン特徴量と、第2トークン特徴量と、を全結合層及びCRF層に入力し、第2トークンのラベリングを実行する。第2トークン整形部105は、第2トークンに付与された属性に基づいて、第2トークンを整形する。
【0097】
[整形済みクエリ取得部]
整形済みクエリ取得部106は、辞書データDを利用したマッチングの実行結果と、学習モデルMを利用した処理結果と、に基づいて、整形済みのクエリyを取得する。例えば、第1トークンの整形と、第2トークンの整形と、の両方が実行された場合には、整形済みクエリ取得部106は、整形済みの第1トークンと、整形済みの第2トークンと、を含む整形済みのクエリyを取得する。例えば、第1トークンの整形が実行されず、第2トークンの整形のみが実行された場合には、整形済みクエリ取得部106は、整形されていない第1トークンと、整形済みの第2トークンと、を含む整形済みのクエリyを取得する。
【0098】
例えば、第1トークンの整形が実行されて、第2トークンの整形が実行されなかった場合には、整形済みクエリ取得部106は、整形済みの第1トークンと、整形されていない第2トークンと、を含む整形済みのクエリyを取得する。例えば、第1トークンの整形と、第2トークンの整形と、の何れも実行されなかった場合には、整形済みクエリ取得部106は、整形されていない第1トークンと、整形されていない第2トークンと、を含む整形済みのクエリyを取得する。
【0099】
[検索部]
検索部107は、整形済みの第2トークンに基づいて、検索処理を実行する。検索部107は、少なくとも整形済みの第2トークンに基づいて検索処理を実行すればよい。本実施形態では、整形済みクエリ取得部106が整形済みのクエリyを取得するので、検索部107は、検索対象データベースDBと、整形済みのクエリyと、に基づいて、検索処理を実行する。検索部107は、検索対象データベースDBに格納されたインデックスと、整形済みのクエリyと、を比較することによって、検索処理を実行する。検索処理自体は、公知の種々の方法を利用可能である。例えば、整形済みのクエリyに複数のトークンが含まれる場合には、検索部107は、複数のトークンをOR条件で検索処理を実行する。
図2の例であれば、クエリ「Tokyo restaurant」と、クエリ「U.S.A. championship」と、はクエリ整形されないので、検索部107は、これらのクエリのまま検索処理を実行する。
【0100】
一方、
図2のクエリ「Tokyorestaurant」は、トークン「Tokyo」と、トークン「restaurant」と、に分割される。このため、検索部107は、これら2つのトークンに分割されるように(間にスペースが埋め込まれるように)整形されたクエリ「Tokyo restaurant」に基づいて、検索処理を実行する。クエリ「U.S.A. champion ship」は、トークン「U.S.A.」はそのままであるが、トークン「champion」と、トークン「ship」と、が結合されて「champion ship」になる。このため、検索部107は、これら2つのトークンが1つに結合されるように(間にスペースが存在しないように)クエリ整形されたクエリ「U.S.A.
championship」に基づいて、検索処理を実行する。
【0101】
[提示部]
提示部108は、クエリを入力したユーザに、検索処理の実行結果を提示する。本実施形態では、画像を利用して視覚的に実行結果が提示される場合を説明するが、音声を利用して聴覚的に実行結果が提示されてもよい。検索処理の実行結果は、検索でヒットしたインデックスの一覧である。例えば、提示部108は、検索処理の実行結果を含む画面の表示データ(例えば、HTMLデータ)を生成し、ユーザ端末20に送信する。
【0102】
[4.クエリ整形システムで実行される処理]
図6は、クエリ整形システムSで実行される処理の一例を示すフロー図である。この処理は、制御部11,21が記憶部12,22に記憶されたプログラムに従って動作することによって実行される。
【0103】
ユーザ端末20は、ユーザがトップページP1のリンク等を選択するとサーバ10にアクセスし、検索サービスのトップページP1を表示部25に表示させる(S1)。ユーザ端末20は、操作部24からのユーザの操作に基づいて、入力フォームF10に対するクエリの入力を受け付ける(S2)。ユーザ端末20は、サーバ10に、ユーザが入力したクエリを送信する(S3)。
【0104】
サーバ10は、ユーザ端末20からクエリを受信すると(S4)、クエリに含まれる複数のトークンを取得する(S5)。サーバ10は、複数のトークンに基づいて、辞書データDを利用したマッチングを実行する(S6)。S6では、サーバ10は、
図4を参照して説明した流れにより、複数のトークンに基づいて、第1辞書データD1~第3辞書データD3の各々を利用したマッチングを実行する。
【0105】
サーバ10は、S6におけるマッチングの実行結果に基づいて、第1トークンを整形する(S7)。サーバ10は、複数のトークンの全てが辞書データDにマッチしたか否かを判定する(S8)。複数のトークンの全てが辞書データDにマッチしたと判定された場合(S8;Y)、続くS9~S12の処理が実行されることなく、S13の処理が実行される。即ち、クエリに第2トークンが存在しないので、整形済みの第1トークンに基づいて、検索処理が実行される。
【0106】
一方、複数のトークンの全てが辞書データDにマッチしたと判定されない場合(S8;N)、サーバ10は、第1学習モデルM1に基づいて、文字特徴量を計算する(S9)。S9では、サーバ10は、第1文字特徴量と、第2文字特徴量と、を計算する。サーバ10は、第2学習モデルM2に基づいて、第1トークン特徴量を計算する(S10)。サーバ10は、第1文字の第1文字特徴量と、第1トークン特徴量と、の平均を計算する(S11)。サーバ10は、S11における平均と、第2文字の第2文字特徴量と、に基づいて、第2トークンを整形する(S12)。
【0107】
サーバ10は、S7及びS12の少なくとも一方の処理結果に基づいて、整形済みのクエリを取得し、検索対象データベースDBに対する検索処理を実行する(S13)。サーバ10は、ユーザ端末20に、S13における検索結果を送信する(S14)。ユーザ端末20は、サーバ10から検索結果のデータを受信すると、検索結果を表示部25に表示させ(S15)、本処理は終了する。
【0108】
本実施形態のクエリ整形システムSによれば、クエリに含まれる複数のトークンに基づいて、辞書データDを利用したマッチングを実行する。クエリ整形システムSは、辞書データDにマッチした第1トークンと、学習モデルMと、に基づいて、辞書データDにマッチしなかった第2トークンを整形する。これにより、マッチングの実行結果を機械学習手法で利用して第2トークンを正確に整形できるので、クエリ整形の精度が高まる。例えば、ユーザがコピーアンドペーストによってクエリを入力した場合には、クエリの中に全体的にスペースが含まれがちである。この場合、第1トークンが「Merge」である場合には、第2トークンも「Merge」になることがある。他にも例えば、律儀なユーザがクエリを手入力した場合には、クエリに含まれるトークンが全体的に正しいことがある。この場合、第1トークンが「Single」である場合には、第2トークンも「Single」になることもある。このため、例えば、マッチングの実行結果を考慮した機械学習手法とすることによって、学習モデルMは、第1トークンと同様の傾向が第2トークンに存在しうることを考慮できるので、クエリ整形の精度が高まる。
【0109】
また、クエリ整形システムSは、整形済みの第1トークンと、学習モデルMと、に基づいて、第2トークンを整形する。これにより、第1トークンと第2トークンの両方を整形できるので、クエリ整形の精度がより高まる。更に、整形後の第1トークンを利用することによって、より正確な情報を学習モデルMに考慮させることができるので、クエリ整形の精度がより高まる。
【0110】
また、クエリ整形システムSは、複数の第1トークンのうちの一部のみが整形された場合には、整形済みの第1トークン、整形されなかった第1トークン、及び学習モデルMに基づいて、第2トークンを整形する。これにより、整形する必要がない第1トークンが存在する場合には、この第1トークンの情報も学習モデルMに考慮させることができるので、クエリ整形の精度がより高まる。
【0111】
また、クエリ整形システムSは、学習モデルMに基づいて、第2トークンに含まれる第2文字ごとに、当該第2文字の特徴に関する第2文字特徴量を計算し、第1文字特徴量、第1トークン特徴量、及び第2文字特徴量に基づいて、第2トークンを整形する。これにより、より細かな文字単位で第2トークンを整形できるので、クエリ整形の精度がより高まる。クエリ整形で利用する特徴量も、より細かな文字単位で計算できるので、文字同士の前後関係をより詳細に考慮してクエリ整形を実行し、クエリ整形の精度がより高まる。
【0112】
また、クエリ整形システムSは、第2学習モデルM2により計算された第1トークン特徴量を取得する。これにより、第1トークン特徴量を計算するための専用の第2学習モデルM2を利用できるので、より正確な第1トークン特徴量を計算し、クエリ整形の精度がより高まる。第1学習モデルM1と第2学習モデルM2とで役割分担をすることができるので、クエリ整形を高速化できる。例えば、本実施形態のように、リアルタイムな検索処理でクエリ整形を利用する場合には、第1学習モデルM1と第2学習モデルM2の各々の処理を並行して実行することで、検索結果の提示に要する時間を短縮できる。
【0113】
また、クエリ整形システムSは、第1文字特徴量及び第1トークン特徴量の平均と、第2文字特徴量と、に基づいて、第2トークンを整形する。これにより、第1トークン特徴量を利用して、マッチングで得られた情報を学習モデルMに考慮させることができるので、クエリ整形の精度がより高まる。また、平均を計算する処理自体は、計算量が少ないので、サーバ10の処理負荷を軽減できる。計算量が少ない処理を採用することによって、クエリ整形を高速化できる。
【0114】
また、クエリ整形システムSは、第2トークン自体の特徴に関する第2トークン特徴量には基づかずに、第1文字特徴量、第1トークン特徴量、及び第2文字特徴量に基づいて、第2トークンを整形する。これにより、マッチングで得られた情報を学習モデルMに考慮させつつ、不適切な埋め込み表現を避けることができる。例えば、文字レベルの系列ラベリングタスクにおいて、全ての文字に対して単語の埋め込み表現が考慮されたとすると、ラベルが不明確な単語についても考慮されてしまうことがある。この点、クエリ整形システムSは、ラベルが「Uncertain」であり不明確な第2トークンについては、あえて第2トークン特徴量を学習モデルMに考慮させないことによって、クエリ整形の精度が高まる。
【0115】
また、クエリ整形システムSは、第1トークンと、学習モデルMと、に基づいて、第2トークンに含まれる第2文字ごとに実行されたラベリングの実行結果に基づいて、第2トークンを整形する。これにより、より細かい文字単位で第2トークンを整形できるので、クエリ整形の精度がより高まる。
【0116】
また、第1トークンは、複数の辞書データDのうちの少なくとも1つにマッチしたトークンであり、第2トークンは、複数の辞書データDの何れにもマッチしなかったトークンである。これにより、複数の辞書データDを総合的に考慮したマッチングを実行できるので、マッチングの精度が高まる。その結果、精度の高いマッチングで得られた情報を学習モデルMに考慮させることができるので、クエリ整形の精度がより高まる。
【0117】
また、クエリ整形システムSは、複数のトークンの全てが辞書データDにマッチしたと判定された場合には第2トークンの整形をせず、複数のトークンの一部だけが辞書データDにマッチしたと判定された場合に、第2トークンを整形する。これにより、マッチングだけでクエリ整形が完了する場合に、機械学習手法の処理をスキップすることができるので、不要な処理を実行する必要がなくなり、サーバ10の処理負荷を軽減できる。その結果、クエリ整形を高速化できる。
【0118】
また、クエリ整形システムSは、第1トークンと、学習モデルMと、に基づいて、複数の操作のうちの何れかを選択し、当該選択された操作に基づいて、第2トークンを整形する。これにより、複数の操作を利用してクエリ整形を実行できるので、クエリ整形の精度がより高まる。例えば、トークンの分割だけではなく、分割、結合、セグメント化といった種々の操作を利用してクエリ整形を実行できる。
【0119】
また、クエリ整形システムSは、学習モデルMから出力された分割要否情報に基づいて、第2トークンを整形する。これにより、本当に分割するか否かを決定できるので、クエリ整形の精度がより高まる。例えば、マッチング手法ではトークンの分割が難しかったとしても、学習モデルMを利用してトークンの分割が可能になる。
【0120】
また、クエリ整形システムSは、分割要否情報が分割することを示す第2トークンを、辞書データDを利用して分割することによって、第2トークンを整形する。これにより、辞書データDを利用して本当に分割するか否かを決定できるので、クエリ整形の精度がより高まる。
【0121】
また、クエリ整形システムSは、整形済みの第2トークンに基づいて実行された検索処理の実行結果をユーザに提示する。これにより、整形済みの第2トークンに基づく検索処理を実行できるので、検索処理の精度が高まる。
【0122】
[5.変形例]
なお、本開示は、以上に説明した実施形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
【0123】
図7は、変形例における機能ブロック図である。第1スコア取得部109、第2スコア取得部110、及びジャンル特定部111を含む。これらは、制御部11を主として実現される。
【0124】
[5-1.変形例1]
例えば、実施形態では、第1文字特徴量と、第1トークン特徴量と、の単純平均が計算される場合を説明したが、これらの加重平均が計算されてもよい。加重平均では、第1文字特徴量と、第1トークン特徴量と、の少なくとも一方に、重み付け係数が設定される。変形例1では、第1トークン特徴量にだけ重み付け係数が設定される場合を説明するが、第1文字特徴量にだけ重み付け係数が設定されてもよいし、これらの両方に重み付け係数が設定されてもよい。
【0125】
変形例1の第2トークン整形部105は、マッチングの実行結果に基づいて、平均に関する重み付け係数を決定し、重み付け係数に基づいて、平均を計算する。マッチングの実行結果は、マッチングの精度である。例えば、複数の辞書データDを利用したマッチングであれば、第1トークンがマッチした辞書データDの数は、マッチングの実行結果に相当する。例えば、部分一致を許容するマッチングであれば、第1トークンがマッチした文字数は、マッチングの実行結果に相当する。
【0126】
第2トークン整形部105は、マッチングの精度が高いほど、第1トークン特徴量が重点的に考慮されるように、重み付け係数を決定する。変形例1では、第1トークン特徴量にだけ重み付け係数が設定されるので、第2トークン整形部105は、マッチングの精度が高いほど、第1トークン特徴量の重み付け係数が高くなるように、重み付け係数を決定する。第1文字特徴量にも重み付け係数が設定される場合には、第2トークン整形部105は、マッチングの精度が高いほど、第1文字特徴量の重み付け係数が低くなるように、重み付け係数を決定すればよい。重み付け係数が考慮される点で実施形態の平均とは異なるが、他の点については、実施形態と同様である。
【0127】
変形例1によれば、マッチングの実行結果に応じた重み付け係数に基づいて、第1文字特徴量と、第1トークン特徴量と、の平均を計算する。これにより、マッチングの実行結果を学習モデルMにより効果的に考慮させることができるので、クエリ整形の精度がより高まる。
【0128】
[5-2.変形例2]
例えば、第1トークンに含まれる第1文字の属性も学習モデルMから取得可能である。この場合、マッチング手法における第1トークンの整形結果と、学習モデルMにおける第1トークンの整形結果と、が異なることがある。実施形態では、マッチング手法における整形結果が正しいものとしたが、学習モデルMにおける整形結果のスコアが高いのであれば、学習モデルMにおける整形結果が正しいものとしてもよい。変形例2のクエリ整形システムSは、第1スコア取得部109及び第2スコア取得部110を含む。
【0129】
第1スコア取得部109は、マッチングの実行結果に基づいて、第1トークンに関する第1スコアを取得する。第1スコアは、変形例1で説明したマッチングの精度である。例えば、第1スコアは、複数の辞書データDのうち、第1トークンにマッチした辞書データDの数である。例えば、第1スコアは、第1トークンにマッチした文字数である。辞書データDと、当該辞書データを参照する何らかの学習モデルと、を利用したマッチングを採用するのであれば、第1スコアは、当該学習モデルが計算したスコアであってもよい。
【0130】
第2スコア取得部110は、学習モデルMの処理結果に基づいて、第1トークンに関する第2スコアを取得する。第2スコアは、学習モデルMが計算したスコアである。例えば、学習モデルMは、個々の文字のラベリングを実行する場合に、ラベルの確度を示す第2スコアを計算する。この第2スコアは、蓋然性と呼ばれることもある。スコアの計算方法自体は、公知の機械学習で利用される方法を利用すればよい。
【0131】
第1トークン整形部104は、第1スコアと、第2スコアと、に基づいて、マッチングの実行結果と、学習モデルMの処理結果と、の何れかを選択し、当該選択された方に基づいて、第1トークンを整形する。例えば、第1トークン整形部104は、第1スコアが第2スコアよりも高い場合には、マッチングの実行結果に基づいて、第1トークンを整形する。第1トークン整形部104は、第2スコアが第1スコアよりも高い場合には、学習モデルMの処理結果に基づいて、第1トークンを整形する。学習モデルMの処理結果に基づく第1トークンの整形方法自体は、第2トークンと同様であり、「B」、「I」、「O」、「E」、「S」の属性に基づいて、第1トークンが整形されるようにすればよい。
【0132】
変形例2によれば、マッチングの実行結果に応じた第1スコアと、学習モデルMの処理結果に応じた第2スコアと、に基づいて選択された方に基づいて、第1トークンを整形する。これにより、第1トークンを精度よく整形できるので、クエリ整形の精度がより高まる。
【0133】
[5-3.変形例3]
例えば、実施形態では、ウェブサイトの検索サービスにおいて英語のクエリが入力される場合を例に挙げて説明した。クエリ整形システムSは、任意のサービスにおける任意の言語のクエリに適用可能であり、サービス及び言語は、実施形態の例に限られない。変形例3では、オンラインショッピングサービスにおいて日本語のクエリが入力される場合を例に挙げる。
【0134】
変形例3のクエリは、オンラインショッピングサービスの検索時に入力される。ユーザは、任意のクエリを入力し、所望の商品を検索する。ユーザは、クエリの1つとして、ジャンル、在庫の有無、カラー、サイズ、産地、又はメーカー等の種々の属性を指定することもできる。クエリは、オンラインショッピングサービスの検索時に入力される。
【0135】
変形例3の検索対象データベースDBは、オンラインショッピングモールで販売される商品に関する情報を含む。例えば、検索対象データベースDBは、商品を販売する店舗を識別可能な店舗ID、個々の商品を識別可能な商品ID、商品の検索用に抽出されたキーワードを含むインデックス、商品タイトル、商品ジャンル等の属性、商品の詳細な説明文、商品の画像、及び商品の価格といった情報が格納される。商品タイトルは、商品の簡単な説明を示す文字列である。商品タイトルは、単語の羅列であってもよい。商品タイトルや商品の詳細な説明文等は、店舗の担当者によって入力される。
【0136】
例えば、辞書データDは、オンラインショッピングモールでよく入力されるクエリに含まれるトークン、又は、オンラインショッピングモールの商品ページにおける商品タイトルに基づいて作成されてもよい。辞書データDの語は、商品タイトルがそのまま格納されていてもよいし、商品タイトルに含まれる名詞が格納されてもよい。商品タイトルから名詞を抽出する方法は、公知の形態素解析等を利用すればよい。変形例3では、商品ジャンルごとに、当該商品ジャンルの商品の商品タイトルに基づいて辞書データDが作成される場合を説明するが、特に商品ジャンルに関係なく、辞書データDが作成されてもよい。
【0137】
変形例3のクエリ整形システムSは、クエリに対応する商品ジャンルを特定するジャンル特定部111を更に含む。商品ジャンルは、商品を分類するために利用される情報である。商品ジャンルは、商品カテゴリと呼ばれることもある。商品ジャンルは、商品の属性の1つである。クエリに対応する商品ジャンルとは、クエリに関連付けられた商品ジャンルである。例えば、クエリに商品ジャンルが含まれる場合には、クエリに含まれる商品ジャンルは、クエリに対応する商品ジャンルである。クエリに商品ジャンルが付帯する場合には、クエリに付帯した商品ジャンルは、クエリに対応する商品ジャンルである。
【0138】
変形例3では、ユーザが商品ジャンルを指定するものとする。例えば、ユーザ端末20は、ユーザが指定した商品ジャンルを、クエリとともにサーバ10に送信する。サーバ10は、ユーザ端末20から商品ジャンル及びクエリを受信する。ジャンル特定部111は、ユーザ端末20から受信した商品ジャンルを取得することによって、商品ジャンルを特定する。ユーザが商品ジャンルを指定しないこともあるので、この場合には、ジャンル特定部111の処理は省略される。
【0139】
なお、商品ジャンルの特定方法は、上記の例に限られない。ジャンル特定部111は、クエリに含まれるトークンに基づいて、商品ジャンルを特定してもよい。この場合、データ記憶部100には、トークンに含まれ得る文字列と、商品ジャンルと、の関係が定義されているものとする。例えば、商品ジャンル「電化製品」であれば、メーカー名や商品名といった文字列が関連付けられている。他にも例えば、商品ジャンル「被服」であれば、ブランド名やサイズといった文字列が関連付けられている。ジャンル特定部111は、上記関係に定義された文字列がクエリに含まれる場合、当該文字列に関連付けられた商品ジャンルを取得することによって、クエリに対応する商品ジャンルを特定する。
【0140】
マッチング実行部102は、商品ジャンルに基づいて、マッチングを実行する。商品ジャンルごとに、当該商品ジャンルに属する商品の商品タイトルに基づいて作成された辞書データDが用意されているものとする。マッチング実行部102は、商品ジャンルに応じた辞書データDに基づいて、マッチングを実行する。マッチング実行部102は、オンラインショッピングサービスにおける商品タイトルを、辞書データDとして利用してマッチングを実行する。
【0141】
変形例3によれば、クエリに対応する商品ジャンルに基づいて、マッチングを実行する。これにより、商品タイトルを流用することによって、辞書データDを作成する手間を省くことができる。また、オンラインサービスにおける検索精度が高まる。
【0142】
また、クエリは、オンラインショッピングサービスの検索時に入力され、マッチング実行部102は、オンラインショッピングサービスにおける商品タイトルを、辞書データDとして利用してマッチングを実行する。これにより、商品ジャンルを利用した適切なクエリ整形を実行できるので、クエリ整形の精度が効果的に高まる。例えば、商品ジャンルに応じた辞書データDをマッチングで利用する場合には、マッチングで比較対象となる語を減らすことができ、サーバ10の処理負荷を軽減できる。不必要なマッチングをしないことにより、処理を高速化できる。
【0143】
[5-4.その他変形例]
例えば、上記変形例を組み合わせてもよい。
【0144】
例えば、クエリ整形システムSは、検索サービス及びオンラインショッピングサービス以外の他の任意のサービスに利用可能である。例えば、旅行予約サービス、電子決済サービス、金融サービス、通信サービス、又はコンテンツ配信サービスといった他のサービスの検索にクエリ整形システムSが利用されてもよい。他にも例えば、ある単一の装置内でデータベースが検索される場合にクエリ整形システムSが利用されてもよい。
【0145】
例えば、マッチングの実行結果を学習モデルMに考慮させる方法は、実施形態で説明した例に限られない。例えば、学習モデルMは、第2文字特徴量と、第2トークン特徴量と、の平均を計算してもよいが、この場合の第2トークン特徴量の重み付け係数を、第1トークン特徴量の重み付け係数よりも小さくしてもよい。このようにすれば、一般的なCharacterBERTに比べて、第1トークンをより強く考慮させることができる。他にも例えば、第1トークン特徴量を利用せずに、第1文字と、第1トークンに付与された操作のラベルと、を何らかの形で特徴量化してもよい。この場合、これらの特徴量には、マッチングの実行結果が反映されているので、この特徴量に基づいて、第2トークンの整形を実行することによって、マッチングの実行結果を学習モデルMに考慮させることができる。
【0146】
例えば、サーバ10で実現されるものとして説明した機能は、ユーザ端末20又は他のコンピュータで実現されてもよいし、複数のコンピュータで分担されてもよい。例えば、データ記憶部100に記憶されるものとしたデータは、データベースサーバに記憶されていてもよい。
【符号の説明】
【0147】
S クエリ整形システム、N ネットワーク、10 サーバ、11,21 制御部、12,22 記憶部、13,23 通信部、20 ユーザ端末、24 操作部、25 表示部、DB 検索対象データベース、P1 トップページ、100 データ記憶部、101 トークン取得部、102 マッチング実行部、103 判定部、104 第1トークン整形部、105 第2トークン整形部、106 整形済みクエリ取得部、107 検索部、108 提示部、109 第1スコア取得部、110 第2スコア取得部、111 ジャンル特定部。