(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】出力装置、コンピュータプログラム及び出力方法
(51)【国際特許分類】
G06Q 30/0601 20230101AFI20241001BHJP
G06Q 30/015 20230101ALI20241001BHJP
【FI】
G06Q30/0601 330
G06Q30/015
(21)【出願番号】P 2020192709
(22)【出願日】2020-11-19
【審査請求日】2023-09-27
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】100114557
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】中川 修
【審査官】渡邉 加寿磨
(56)【参考文献】
【文献】特開2016-139263(JP,A)
【文献】特開2014-149571(JP,A)
【文献】特開2003-216647(JP,A)
【文献】特開2017-151985(JP,A)
【文献】特開2020-170422(JP,A)
【文献】特開2020-057066(JP,A)
【文献】特開2015-092327(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
複数の物事の情報から、前記複数の物事の特徴に係る特徴量を計算する特徴量計算部と、
物事の組合せの推薦を求める会話文を受け付ける受付部と、
受け付けた前記会話文から形態素解析の結果に基づき複数の単語を抽出する抽出部と、
抽出した前記単語に基づき、推薦すべき物事
を選択するための条件を生成する生成部と、
前記物事の特徴量及び前記条件に基づき、目的関数を生成する関数生成部と、
前記目的関数及び前記条件に基づき、二次式で表されるハミルトニアンを作成するハミルトニアン作成部と、
作成した前記ハミルトニアンのうち、前記二次式の値が最小となるハミルトニアンを、前記目的関数の最適解として計算する計算部と、
前記
最適解に基づき、
前記物事の中から推薦する前記物事の組合せを複数組、取得する取得部と、
取得した複数組の前記組合せを、前記特徴量及び前記条件に基づく利得により並べ替え、出力する出力部と
を備えることを特徴とする出力装置。
【請求項2】
前記条件は満たすべき制約条件、又は、満たすことが望ましい優先条件を含む
ことを特徴とする請求項
1に記載の出力装置。
【請求項3】
出力した前記組合せに含む前記物事毎に可否を受け付ける可否受付部を備え、
前記取得部は、前記
最適解並びに前記可否に基づき、推薦する前記物事の組合せを取得する
ことを特徴とする請求項1
又は請求項
2に記載の出力装置。
【請求項4】
前記会話文には複数人の発話に基づく文が含まれており、発話者及び前記条件の対応関係に基づき、前記条件の重み付けを行なう
ことを特徴とする請求項1から請求項
3の何れか1項に記載の出力装置。
【請求項5】
推薦対象となる物事を記憶する記憶部を参照可能なコンピュータに、
複数の物事の情報から、前記複数の物事の特徴に係る特徴量を計算し、
物事の
組合せの推薦を求める会話文を受け付け、
受け付けた前記会話文から形態素解析の結果に基づき複数の単語を抽出し、
抽出した前記単語に基づき、推薦すべき物事
を選択するための条件を生成し、
前記物事の特徴量及び前記条件に基づき、目的関数を生成し、
前記目的関数及び前記条件に基づき、二次式で表されるハミルトニアンを作成し、
作成した前記ハミルトニアンのうち、前記二次式の値が最小となるハミルトニアンを、前記目的関数の最適解として計算し、
前記
最適解に基づき、
前記物事の中から推薦する
前記物事の組合せを複数組、取得し、
取得した複数組の前記組合せを、前記特徴量及び前記条件に基づく利得により並べ替え、出力する
処理を行わせることを特徴とするコンピュータプログラム。
【請求項6】
推薦対象となる物事を記憶する記憶部を参照可能なコンピュータが、
複数の物事の情報から、前記複数の物事の特徴に係る特徴量を計算し、
物事の
組合せの推薦を求める会話文を受け付け、
受け付けた前記会話文から形態素解析の結果に基づき複数の単語を抽出し、
抽出した前記単語に基づき、推薦すべき物事
を選択するための条件を生成し、
前記物事の特徴量及び前記条件に基づき、目的関数を生成し、
前記目的関数及び前記条件に基づき、二次式で表されるハミルトニアンを作成し、
作成した前記ハミルトニアンのうち、前記二次式の値が最小となるハミルトニアンを、前記目的関数の最適解として計算し、
前記
最適解に基づき、
前記物事の中から推薦する
前記物事の組合せを複数組、取得し、
取得した複数組の前記組合せを、前記特徴量及び前記条件に基づく利得
により並び替え、出力する
処理を行うことを特徴とする出力方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の物事に関し、所定の条件を満たす組合せを出力する出力装置等に関する。
【背景技術】
【0002】
組合せ最適化問題が知られている。最適化問題とは条件を満たす解の中で一番よいものを求める問題をいう。そして、組合せ最適化問題とは、解が順序や割当のように組合せ的な構造を持つ最適化問題をいう。従来、組合せ最適化問題に対し、種々の解法が提案されている。
【0003】
一方、小売業において、消費者に対し関連する複数の商品を組合せて提案すること、例えばファッションコーディネートは、組合せ最適化問題を解くことであるといえる。例えば、特許文献1には、衣服一式の少なくとも1つの提案を生成するための衣類マッチングシステムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記衣類マッチングシステムは、衣類の推薦に特化したものとなっており、汎用性に乏しい。本発明はこのような状況に鑑みてなされたものである。その目的は、商品又はサービスなどの物事に関し、複数の物事からなる組合せの中から、所定の条件を満たす組合せを出力する出力装置等の提供である。
【課題を解決するための手段】
【0006】
本願の一態様に係る出力装置は、物事の組合せの推薦を求める会話文を受け付ける受付部と、受け付けた前記会話文から形態素解析の結果に基づき複数の単語を抽出する抽出部と、抽出した前記単語に基づき、推薦すべき前記物事が有すべき特徴量、及び条件を生成する生成部と、前記特徴量及び前記条件に基づき、推薦する前記物事の組合せを複数組、取得する取得部と、取得した複数組の前記組合せを、前記特徴量及び前記条件に基づく利得により並べ替え、出力する出力部とを備えることを特徴とする。
【発明の効果】
【0007】
本願の一態様にあっては、複数の物事に関し、所定の条件を満たす組合せを出力する事が可能となる。
【図面の簡単な説明】
【0008】
【
図2】推薦サーバのハードウェア構成例を示すブロック図である。
【
図3】ユーザ端末のハードウェア構成例を示すブロック図である。
【
図4】推薦サーバの備える機能部の一例を示すブロック図である。
【
図5】商品特徴量計算処理の手順例を示すフローチャートである。
【
図6】商品特徴を示すベクトルの算出例を示す説明図である。
【
図7】商品特徴を示すベクトルの算出例を示す説明図である。
【
図8】商品特徴を示すベクトルの算出例を示す説明図である。
【
図9】商品特徴を示すベクトルの算出例を示す説明図である。
【
図10】推薦処理の手順例を示すフローチャートである。
【
図11】ハミルトニアンの作成手順を示す説明図である。
【
図12】ハミルトニアンの作成手順を示す説明図である。
【
図13】ハミルトニアンの作成手順を示す説明図である。
【
図14】ハミルトニアンの作成手順を示す説明図である。
【
図15】推奨する商品リストを生成する処理を示す説明図である。
【
図16】推奨商品リスト表示画面の例を示す説明図である。
【
図18】ハミルトニアンの更新手順を示す説明図である。
【
図19】ハミルトニアンの更新手順を示す説明図である。
【
図20】ハミルトニアンの他の例を示す説明図である。
【
図21】推薦システムの利用場面の一例を示す説明図である。
【
図22】推薦システムの利用場面の一例を示す説明図である。
【
図23】推薦システムの利用場面の一例を示す説明図である。
【発明を実施するための形態】
【0009】
以下実施の形態を、図面を参照して説明する。
図1は推薦システムの構成例を示す説明図である。推薦システム100は推薦サーバ1及びユーザ端末2を含む。推薦サーバ1及びユーザ端末2はネットワークNにより、互いに通信可能に接続されている。なお、以下の説明においては、複数商品の組合せを推薦する場合について述べるが、複数サービスの組合せを推薦する場合も同様である。また、観光ルートの推薦、料理の献立の推薦、工場での生産計画等、その他の組合せ最適化問題についても、同様である。
【0010】
推薦サーバ1はサーバコンピュータ、PC(Personal Computer)等で構成する。また、推薦サーバ1を複数のコンピュータからなるマルチコンピュータ、ソフトウェアによって仮想的に構築された仮想マシン又は量子コンピュータで構成しても良い。さらに、推薦サーバ1の機能をクラウドサービスで実現してもよい。ユーザ端末2はタブレットコンピュータ、スマートフォン、スマートスピーカ、又はノートパソコン等で構成する。
図1にはユーザ端末2を3台記載しているが、1台でもよいし、4台以上でもよい。
【0011】
図2は推薦サーバのハードウェア構成例を示すブロック図である。推薦サーバ1は制御部11、主記憶部12、補助記憶部13、通信部14及び読み取り部15を含む。制御部11、主記憶部12、補助記憶部13、通信部14及び読み取り部15はバスBにより接続されている。
【0012】
制御部11は、一又は複数のCPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)等の演算処理装置を有する。制御部11は、補助記憶部13に記憶された制御プログラム1P(コンピュータプログラム)を読み出して実行することにより、推薦サーバ1に係る種々の情報処理、制御処理等を行い、各種の機能部を実現する。
【0013】
主記憶部12は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリ等である。主記憶部12は主として制御部11が演算処理を実行するために必要なデータを一時的に記憶する。
【0014】
補助記憶部13はハードディスク又はSSD(Solid State Drive)等であり、制御部11が処理を実行するために必要な制御プログラム1Pや各種DB(Database)を記憶する。補助記憶部13は、商品情報DB131、商品特徴量DB132、類語辞書133、及び概念体系辞書134を記憶する。補助記憶部13は推薦サーバ1に接続された外部記憶装置であってもよい。補助記憶部13に記憶する各種DB等を、推薦サーバ1とは異なるデータベースサーバやクラウドストレージに記憶してもよい。
【0015】
商品情報DB131は、商品の提供者が保有する商品の情報及び当該提供者以外が保有する商品に関する情報を記憶する。例えば前者は、商品価格、商品分類、商品仕様、消費説明文、又は商品画像等である。例えば後者は生活者コメント又は生活者撮影画像等である。商品特徴量DB132は商品の特徴量を記憶する。当該特徴量は商品の特徴を記述するものであり、商品情報DB131が記憶する商品の情報から算出する。
【0016】
例えば、類語辞書133は意味や概念が似通った複数の単語同士を対応付けて記憶する辞書である。例えば、概念体系辞書134は概念間の上位・下位関係を規定する辞書である。
【0017】
通信部14はネットワークNを介して、ユーザ端末2と通信を行う。また、制御部11が通信部14を用い、ネットワークN等を介して他のコンピュータから制御プログラム1Pをダウンロードし、補助記憶部13に記憶してもよい。
【0018】
読み取り部15はCD(Compact Disc)-ROM及びDVD(Digital Versatile Disc)-ROMを含む可搬型記憶媒体1aを読み取る。制御部11が読み取り部15を介して、制御プログラム1Pを可搬型記憶媒体1aより読み取り、補助記憶部13に記憶してもよい。また、ネットワークN等を介して他のコンピュータから制御部11が制御プログラム1Pをダウンロードし、補助記憶部13に記憶してもよい。さらにまた、半導体メモリ1bから、制御部11が制御プログラム1Pを読み込んでもよい。
【0019】
図3はユーザ端末のハードウェア構成例を示すブロック図である。ユーザ端末2は制御部21、主記憶部22、補助記憶部23、通信部24、入力部25、及び表示部26を含む。各構成はバスBで接続されている。
【0020】
制御部21は補助記憶部23に記憶された制御プログラム2Pにしたがい、ハードウェア各部を制御する。一又は複数のCPU、MPU、GPU等の演算処理装置を有する。制御部21は、補助記憶部23に記憶された制御プログラム2Pを読み出して実行することにより、種々の機能を提供する。
【0021】
主記憶部22は、SRAM、DRAM、フラッシュメモリ等である。主記憶部22は主として制御部21が演算処理を実行するために必要なデータを一時的に記憶する。
【0022】
補助記憶部23はハードディスク又はSSD等であり、制御部21が処理を実行するために必要な各種データを記憶する。補助記憶部23はユーザ端末2に接続された外部記憶装置であってもよい。補助記憶部23に記憶する各種DB等を、データベースサーバやクラウドストレージに記憶してもよい。
【0023】
通信部24はネットワークNを介して、推薦サーバ1と通信を行う。また、制御部21が通信部24を用い、ネットワークN等を介して他のコンピュータから制御プログラム2Pをダウンロードし、補助記憶部23に記憶してもよい。
【0024】
入力部25はキーボードやマウスである。表示部26は液晶表示パネル等を含む。表示部26は推薦サーバ1が出力したお薦め商品一覧などを表示する。また、表示部26は入力部25と一体化したタッチパネルディスプレイでもよい。なお、ユーザ端末2は外部の表示装置に表示を行ってもよい。入力部25はマイクを、表示部26はスピーカを含んでもよい。特に、ユーザ端末2をスマートスピーカで構成した場合、マイクとスピーカとを介して、ユーザとユーザ端末2とは音声対話を行なう。
【0025】
図4は推薦サーバの備える機能部の一例を示すブロック図である。推薦サーバ1の制御部11は、制御プログラム1Pを実行することにより、商品特徴量計算部11a、要求受付部11b、条件抽出部11c、ハミルトニアン作成部11d、最適化計算部11e、最適解データ解釈部11f、出力部11g、OK/NG受付部11h、及びハミルトニアン更新部11iとして機能する。
【0026】
商品特徴量計算部11aは、商品情報DB131が記憶する商品の情報から、当該商品の特徴を記述する特徴量を算出し、商品特徴量DB132に記憶する。
【0027】
要求受付部11bは、商品の推薦を求める会話文を受け付ける。要求受付部11bはチャットボットや音声チャットボット等を含む対話生成機能を有している。要求受付部11bは、チャットボットや音声チャットボットを用いて、商品に対するユーザの希望をユーザ端末2から受け付ける。要求受付部11bはチャットボットによる会話文から、条件抽出部11cの処理対象となる解析対象テキストを出力する。また、要求受付部11bは音声チャットボットによる会話音声をテキストに変換し、条件抽出部11cの処理対象となる解析対象テキストを出力する。チャットボットや音声チャットボットによる対話で、複数のユーザが発言した場合、要求受付部11bは、発話者に基づく優先度を解析対象テキストに付与してもよい。例えば、発現頻度や発言量が多い発話者に対応する解析対象テキストには、高い優先度を付与する。また、複数の発話者において女性が一人の場合、女性に対応する解析対象テキストには高い優先度(重み付け)を付与する。要求受付部11bは受付部に相当する。
【0028】
条件抽出部11cは、要求受付部11bが出力した解析対象テキストから、推薦する商品を選択するための条件を抽出する。条件抽出部11cは、必要に応じて類語辞書133及び概念体系辞書134を用い、解析対象テキストに対して、形態素解析、構文解析及び情報の抽出を行なう。条件抽出部11cは推薦する商品の組合せが満たさなければならない制約条件と、満たすことが望ましい優先条件とを出力する。条件抽出部11cは抽出部、生成部及び取得部に相当する。
【0029】
ハミルトニアン作成部11dは、条件抽出部11cが抽出した制約条件を満たし、条件抽出部11cが抽出した優先条件の充足度を最大化する商品の組合せを求めるためのハミルトニアンを作成する。ここでのハミルトニアンは、複数の2値変数に関する2次式の係数として表現される。最適化計算部11eは、ハミルトニアン作成部11dが作成したハミルトニアンの最適化計算を行なう。最適解データ解釈部11fは、最適化計算部11eが出力した最適解を解釈して、推薦する商品を組合せた商品リストを作成する。出力部11gは、最適解データ解釈部11fが作成したリストを含む画面情報を作成し、ユーザ端末2へ出力する。ハミルトニアン作成部11d、最適化計算部11e及び最適解データ解釈部11fが行なう処理の具体例は後述する。ハミルトニアン作成部11d、最適化計算部11e及び最適解データ解釈部11fは取得部に相当する。また、ハミルトニアン作成部11dは関数生成部に相当する。最適化計算部11eは計算部に相当する。
【0030】
OK/NG受付部11hは、商品リストの含まれる各商品をユーザが受け入れた(OKとした)か、受け入れなかった(NGとした)かを、示すOK/NG情報を、ユーザ端末2から受け付ける。ハミルトニアン更新部11iは、受け付けたOK/NG情報に基づき、ハミルトニアンを更新する。ここでは、ハミルトニアンの係数を更新する。更新された係数に基づき、最適化計算部11eが再度、最適化計算を行なう。最適解データ解釈部11fは、最適化計算部11eが出力した新たな最適解を解釈して、推薦する商品を組合せた商品リストを作成する。出力部11gは、最適解データ解釈部11fが作成したリストを含む画面情報を作成し、ユーザ端末2へ出力する。ハミルトニアン更新部11iが行なう処理の具体例は後述する。OK/NG受付部11hは可否受付部に相当する。
【0031】
次に、推薦システム100で行われる処理について説明する。
図5は商品特徴量計算処理の手順例を示すフローチャートである。商品特徴量計算処理は、商品情報DB131が記憶する商品の情報から、当該商品の特徴を記述する特徴量を算出し、商品特徴量DB132に記憶する処理である。推薦サーバ1の制御部11は、商品情報DB131から処理対象とする商品情報を取得する(ステップS1)。制御部11は商品情報から商品特徴を示すベクトルを算出する(ステップS2)。算出例は後述する。制御部11はベクトルの長さが1となるように正規化する(ステップS3)。制御部11は正規化したベクトルを商品特徴量DB132に記憶する(ステップS4)。制御部11は未処理の商品情報があるか否かを判定する(ステップS5)。制御部11は未処理の商品情報があると判定した場合(ステップS5でYES)、処理をステップS1へ戻し、未処理の商品情報に対する処理を繰り返す。制御部11は未処理の商品情報がないと判定した場合(ステップS5でNO)、処理を終了する。商品特徴量計算処理は推薦システム100の構築時に行なうほか、商品情報DB131に新たな商品情報が登録された場合、商品情報の内容が更新された場合などに行なう。
【0032】
図6は商品特徴を示すベクトルの算出例を示す説明図である。
図6は商品分類からベクトルを算出する例を示している。
図6に示す表は商品分類を示す商品情報DB131の例である。各商品には分類1及び分類2が付与されている。
図6に示すV
01からV
04は分類をベクトルで表現したものである。制御部11は、分類1に含まれる値の数と分類2に含まれる値の数とを合計した数を求める。制御部11は、合計値を要素数とするベクトルを生成する。
図6に示す例では、分類1は7つの値、分類2も7つの値となっている。制御部11は、ベクトルの各要素を分類1又は分類2に含む各値に対応付け、値は0又は1とする。制御部11は、各分類について、取る値に対応する要素の値を1とし、それ以外の要素の値を0とする。
【0033】
図6に示す例では、分類1が取りうる「揚げ物」は第2番目の要素、「焼き物」は第3番目の要素、「煮物」は第4番目の要素、「飲み物」は第7番目の要素に対応する。分類2が取りうる「魚」は第8番目の要素、「豚肉」は第10番目の要素、「野菜」は第12番目の要素、「日本酒」は第14番目の要素に対応する。
【0034】
商品IDが1の商品は、分類1の値が「揚げ物」、分類2の値が「魚」であるので、第2番目と第8番目の要素が1となり、他の要素は0となる。商品IDが2の商品は、分類1の値が「焼き物」、分類2の値が「豚肉」であるので、第3番目と第10番目の要素が1となり、他の要素は0となる。同様に商品IDが3の商品は、第4番目と第12番目の要素が1となり、他の要素は0となる。商品IDが4の商品は、第7番目と第14番目の要素が1となり、他の要素は0となる。
【0035】
以上のように求めたベクトルV01からV04の各ベクトルについて、長さが1となるように、制御部11は正規化を行う。制御部11は正規化して得たベクトルV1からV4を商品特徴量DB132に記憶する。
【0036】
図7は商品特徴を示すベクトルの算出例を示す説明図である。
図7は商品購買履歴に基づき推定した商品分類からベクトルを算出する例を示している。商品購買履歴はPOS(Point of sales)レジから収集したデータを集約したものである。
図7に示す例では、商品購買履歴から、各商品に関する平均購買層(性別・年代)を計算する。当該計算は公知であるので説明を省略する。求めた各商品の平均購買層の性別を分類3、年代を分類4とする。
【0037】
図7に示すV
01からV
04は分類3、分類4をベクトルで表現したものである。制御部11は、分類3に含まれる値の数と分類4に含まれる値の数とを合計した数を求める。制御部11は、合計値を要素数とするベクトルを生成する。
図7に示す例では、分類3は2つの値、分類4は5つの値となっている。制御部11は、ベクトルの各要素を分類3又は分類4に含む各値に対応付け、値は0又は1とする。制御部11は、各分類について、取る値に対応する要素の値を1とし、それ以外の要素の値を0とする。
【0038】
図7に示す例では、分類3が取りうる「男性」は第1番目の要素、「女性」は第2番目の要素に対応する。分類4が取りうる「20歳代」は第4番目の要素、「30歳代」は第5番目の要素、「40歳代」は第6番目の要素、「50歳代」は第7番目の要素に対応する。
【0039】
商品IDが1の商品は、分類3の値が「女性」、分類4の値が「20歳代」であるので、第2番目と第4番目の要素が1となり、他の要素は0となる。商品IDが2の商品は、分類3の値が「男性」、分類4の値が「40歳代」であるので、第1番目と第6番目の要素が1となり、他の要素は0となる。同様に商品IDが3の商品は、第2番目と第5番目の要素が1となり、他の要素は0となる。商品IDが4の商品は、第1番目と第7番目の要素が1となり、他の要素は0となる。
【0040】
以上のように求めたベクトルV01からV04の各ベクトルについて、長さが1となるように、制御部11は正規化を行う。制御部11は正規化して得たベクトルV1からV4を商品特徴量DB132に記憶する。
【0041】
図8は商品特徴を示すベクトルの算出例を示す説明図である。
図8は商品説明からベクトルを算出する例を示している。ここでの商品説明は商品提供者が保有している想定である。各商品の商品説明の文章特徴を示す文書ベクトルを計算する。ベクトルで表現するために用いる手法は、Bag of Words、TF-IDF(Term Frequency Inverse Document Frequency)、又はLSI(Latent Semantic Indexing:潜在的意味索引)等の公知の技術であるので、説明を省略する。各文書ベクトルについて、長さが1となるように、制御部11は正規化を行う。制御部11は正規化して得たベクトルV1、V2、…を商品特徴量DB132に記憶する。
【0042】
図9は商品特徴を示すベクトルの算出例を示す説明図である。
図9はSNS(Social Networking Service)コメントからベクトルを算出する例を示している。SNSコメントはインターネットで公開されているものを収集する。制御部11はSNSコメントから文章特徴を示す文書ベクトルを計算する。用いる手法は上述した
図8と同様である。各文書ベクトルについて、長さが1となるように、制御部11は正規化を行う。制御部11は正規化して得たベクトルV1、V2、…を商品特徴量DB132に記憶する。
【0043】
続いて、ユーザが推薦システム100から複数商品の推薦を受ける場合の処理について説明する。
図10は推薦処理の手順例を示すフローチャートである。ユーザはユーザ端末2で推薦処理を開始する。ユーザ端末2の制御部21は対話要求を推薦サーバ1へ送信する(ステップS11)。推薦サーバ1の制御部11は対話要求を受信する(ステップS12)。制御部11は質問をユーザ端末2へ送信する(ステップS13)。ユーザ端末2の制御部21は質問を受信し、表示部26に表示する(ステップS14)。ユーザは入力部25を用いて質問の回答を入力する。制御部21は回答を取得し、推薦サーバ1へ送信する(ステップS15)。推薦サーバ1の制御部11は回答を受信する(ステップS16)。制御部11は対話を終了するか否かを判定する(ステップS17)。終了と判定するのは、例えば用意してある一通りの質問に対して回答を得られた場合、回答の受信回数が所定の回数に達した場合、回答内容が「希望は以上」のようにユーザが対話終了を望むものである場合などである。制御部11は対話を終了しないと判定した場合(ステップS17でNO)、処理をステップS13へ戻し、次の質問をユーザ端末2へ送信する。制御部11は対話を終了すると判定した場合(ステップS17でYES)、ユーザから得た全ての回答から推薦する商品を選択するための条件を抽出する(ステップS18)。制御部11は推薦の候補となりうる全商品の商品特徴量、商品情報を取得する(ステップS19)。制御部11はハミルトニアンを作成する(ステップS20)。制御部11は最適化計算を行なう(ステップS21)。制御部11は最適化計算の結果に基づき、推薦する商品のリストを作成する(ステップS22)。ステップS20からS22の具体的な処理内容は後述する。制御部11は商品リストをユーザ端末2へ送信する(ステップS23)。ユーザ端末2の制御部21は商品リストを受信し、表示部26に表示する(ステップS24)。ユーザは表示された各商品について、受け入れるか否かの可否を入力する。また、ユーザは商品の購入に進むか、推薦のやり直しかを選択する。制御部21は各商品の可否、ユーザの指示を取得して、推薦サーバ1へ送信する(ステップS25)。推薦サーバ1の制御部11はユーザの指示がやり直しであるか否かを判定する(ステップS26)。制御部11はユーザの指示がやり直しであると判定した場合(ステップS26でYES)、各商品の可否に基づき、ハミルトニアンを更新する(ステップS27)。制御部11は処理をステップS21に戻し、処理を継続する。ステップS27の具体的な処理内容は後述する。制御部11はユーザの指示がやり直しでないと判定した場合(ステップS26でNO)、推薦処理を終了し、ユーザが指定した商品を購入するための処理を開始する。当該処理は省略する。
【0044】
図11から
図14はハミルトニアンの作成手順を示す説明図である。
図11は前処理の例を示す説明図である。
図11は飲食店におけるメニューの組合せを推薦する場合の例を示している。制約条件は合計価格の上限(C)である。優先条件は各メニューに対するユーザの趣味・嗜好を表現したものである。例えば、揚げ物の優先度をa、鶏肉の優先度をbであるとする。また、揚げ物の特徴を表す特徴ベクトルをVa、鶏肉の特徴を表す特徴ベクトルをVbとする。このとき、優先条件Uは、U=a×Va+b×Vbで表される。なお、Uは長さが1となるよう正規化されているとする。このように、各商品の特徴量と優先条件との類似度(ここでは内積)が、各商品の価値となる。各商品の価値、並びに、制約条件(合計価格)及び制約条件の判定に必要となる商品価格が、ハミルトニアンを計算するための準備データとなる。
【0045】
図12はハミルトニアンに用いる変数に関する処理を示す説明図である。変数は、商品iを推薦するか否かを規定する数列x
i(i=1,…,N)と、補助変数の数列y
i(i=1,…,C)とを含む。Nは処理対象となる商品の全数を示す。数列y
iはn番目だけが1で残りが0のC個の数列である。ハミルトニアンにおいては、数列x
i及び数列y
iを統合し、q
i(i=1,…,M、但しM=N+C)とする。
【0046】
図13は目的関数と制約条件とからハミルトニアンを求める処理を示す説明図である。商品価値は
図11に示した内積であり、
図13ではw
i(i=1,…,N)と示している。商品価格はc
i(i=1,…,N)と示している。優先条件にもっとも適合する商品の組合せは、商品の合計価値が最大となる組合せである。したがって、目的関数は式(1)となる。価値を最大化することは目的関数の最小化することと同値となる。
【0047】
【0048】
制約条件は補助変数を用いて式(2)で表すことができる。
【0049】
【0050】
式(2)の第1項において、補助変数は1が1個で、残りはすべて0である。第2項は価格合計がC以下となる条件を示す。条件を満たしていれば全体が0となり、満たしていない場合、0より大きくなる。
【0051】
ハミルトニアンは式(3)となる。目的関数と制約条件の線形和である。
【0052】
【0053】
パラメータαは制約を厳しく満たしたい場合、大きくとるが、大きすぎると目的関数が最小化されない可能性も高くなるため適当な値に設定する。
【0054】
図14はハミルトニアンを、変数q
iを用いた整理式として示す説明図である。式(3)を、変数q
iを用いて整理すると、式(4)と表せる。なお、const.は定数を示すが、最適化計算において定数は影響を及ぼさないため、計算時には省略してもよい。
【0055】
【0056】
式(4)で示すハミルトニアンの最適化計算は、係数Jij、hiである二次式の値が最小となる、変数qiを求めることになる。最適化計算は、例えばアニーリングマシンにより行なう。アニーリングマシンは量子アニーリングにより、組合せ最適化問題を解く機能を持つコンピュータ、仮想マシンである。組合せ最適化問題を解く手法として、シミュレーテッド・アニーリングを用いてもよい。組合せ最適化問題を解く手法は公知のものを使用するので、説明を省略する。
【0057】
図15は推奨する商品リストを生成する処理を示す説明図である。最適化計算の結果、最適解として、変数q
iのビット列(q
1,…,q
M)が得られる。
図12に示したようにビット列のうち、先頭のN個が、変数列(x
1,…,x
N)に対応する。x
iは商品iを推薦するか否かを規定しており、値0が推奨しないことを、値1が推奨することを示す。したがって、変数列(x
1,…,x
N)の中から、x
k=1となっているkを取り出す。そして、各kの値に対応する商品の商品情報(商品名、価格等)を商品情報マスタDB(図示しない)から取得し、商品リストを作成する。作成した商品リストはユーザ端末2に送信され、ユーザに提示される。なお、最適化計算の結果として、最適解に加えて、最適解付近の解を複数取得してもよい。この場合、取得した解の数に応じて、商品リストを複数作成する。作成した複数の商品リストは、基になった解に対する目的関数の値(利得)の昇順に並べ替え、ユーザに提示する。
【0058】
図16は推奨商品リスト表示画面の例を示す説明図である。リスト表示画面d01は、推奨する商品リストを表示する。
図16では3つの商品リストd011を表示している。商品リストd011はハイパーリンクとなっており、一つの商品リストd011を選択すると、リスト内の商品に関する情報を示す詳細画面に遷移する。
【0059】
図17は詳細画面の例を示す説明図である。詳細画面d02は、ユーザが選択した商品リストd011内の商品に関する情報を表示する画面である。詳細画面d02は商品画像d021、商品名d022、商品価格d023、商品スペックd024、OKボックスd025、NGボックスd026、やり直しボタンd027、及び買い物かご投入ボタンd028を含む。商品画像d021は商品のサムネイル画像等である。商品名d022は商品名称である。合わせて商品の型式や商品コード等を表示してもよい。商品価格d023は商品の販売価格である。商品スペックd024は商品のスペックである。OKボックスd025はチェックボックスである。ユーザはOKボックスd025にチェックを入れることにより、対応する商品が自分の希望に沿った商品である旨の意思表示を行なう。NGボックスd026はチェックボックスである。ユーザはNGボックスd026にチェックを入れることにより、対応する商品が自分の希望に沿っていない商品である旨の意思表示を行なう。OKボックスd025、又は、NGボックスd026の何れかを必ずチェックしなければならないとしてもよいし、何れもチェックしないことを許容してもよい。ユーザがやり直しボタンd027を選択すると、OKボックスd025、及び、NGボックスd026の状態が推薦サーバ1に送信され、当該状態を加味した商品リストを作成する。ユーザが買い物かご投入ボタンd028を選択すると、OKボックスd025にチェックが入っている商品が買い物かごへ投入され、決済画面へ遷移する。
【0060】
図18及び
図19はハミルトニアンの更新手順を示す説明図である。
図18は補正パラメータの算出手順を示す説明図である。
図18のユーザ指示データは、
図17に示したOKボックスd025、及び、NGボックスd026の状態より、得られるデータである。t-1回目のユーザ指示データを使って、t回目の計算用のハミルトニアンを作成するための補正パラメータを求める。t=1のときに必要となる0回目の補正パラメータ(初期条件)は式(5)で定義する。
【0061】
【0062】
t-1回目の指示データを使って、t回目の補正パラメータは式(6)、(7)及び(8)を用いて計算する。
【0063】
【0064】
【0065】
【0066】
図19は補正後のハミルトニアンを示す説明図である。t回目の計算では、ハミルトニアンは式(9)で示される。初期のハミルトニアンに、第3項及び第4項が追加されている。式(9)を整理すると式(10)となる。
【0067】
【0068】
更新されたハミルトニアンの係数により、最適化計算を再度、行なう。最適化計算後の処理は、
図15に示した処理と同様であるから、説明を省略する。
【0069】
図19に示した式(9)を他の式としてもよい。
図20はハミルトニアンの他の例を示す説明図である。式(9)を
図20に示す式に置き換えてもよい。
図20に示す式は、式(9)に第5~第8項が追加されている。複数の商品が好ましい組合せか、そうでないかをユーザがどう判断しているかをより良く加味して、最適化計算が可能となる。
【0070】
次に、推薦システム100の利用場面の例を示す。
図21は推薦システムの利用場面の一例を示す説明図である。
図21は、推薦システム100が、観光ルートの推薦を行なう観光ルート推薦システムとして機能する場合を示す。この場合、参照されるデータベースは観光地DB、交通DB等である。観光ルート推薦システムにおいて、ユーザはチャットボット等の対話ツールを用いて、観光ルートについての希望を推薦サーバ1へ送信する(1)。推薦サーバ1は、ユーザの希望から条件を抽出する(2)。出発時間及び帰着時間、並びに、出発場所及び帰着場所は制約条件である。周る場所の希望、「子供も楽しめる場所」、「京都らしい食事」がとれるレストランなどは、希望条件となる。推薦サーバ1はユーザに推薦する最適観光ルートを、最適化計算にて求める(3)。ユーザ端末2に最適ルートが表示される(4)。ユーザは周る観光地を参照して、観光地ごとに可否を述べる(5)。可否が推薦サーバ1へ送信される(6)。推薦サーバ1は最適ルートを再計算する(7)。再計算した後の最適ルートがユーザ端末2に表示される。必要に応じて、(5)から(8)を繰り返す。なお、観光ルートのように順序を含む場合は、
図21の右下に示した表のように、順番と場所とのマトリクスにより、順番をビットで表示可能である。当該表では、B→A→C→Dの順に周る旨を表現している。
【0071】
図22は推薦システムの利用場面の一例を示す説明図である。
図22は、推薦システム100が、料理の献立の推薦を行なう献立推薦システムとして機能する場合を示す。この場合、参照されるデータベースはレシピDB、食品成分DB等である。献立推薦システムにおいて、ユーザはチャットボット等の対話ツールを用いて、献立についての希望を推薦サーバ1へ送信する(1)。推薦サーバ1は、ユーザの希望から条件を抽出する(2)。食事する大人や子どもの人数、使用したい食材等は制約条件となる。栄養バランス等は希望条件となる。推薦サーバ1はユーザに推薦する献立を、最適化計算にて求める(3)。ユーザ端末2に最適献立が表示される(4)。ユーザは献立を参照して、料理ごとに可否を述べる(5)。可否が推薦サーバ1へ送信される(6)。推薦サーバ1は最適献立を再計算する(7)。再計算した後の最適献立がユーザ端末2に表示される(8)。必要に応じて、(5)から(8)を繰り返す。
【0072】
図23は推薦システムの利用場面の一例を示す説明図である。
図22は、推薦システム100が、生産計画作成システムとして機能する場合を示す。生産計画作成システムは、複数の異なる生産機を用いた複数の工程により製品を製造する場合に、各生産機の生産計画を作成するシステムである。この場合、参照されるデータベースは品目情報DB、機械特性DB等である。生産計画作成システムにおいて、ユーザはユーザ端末2を介して、生産場所、計画期間、製品毎の予定生産数等の条件を推薦サーバ1へ送信する(1)。推薦サーバ1は、各生産機の生産計画を最適化計算にて求める(2)。ユーザ端末2に生産計画が表示される(3)。ユーザは計画を参照して、改善すべき事項をユーザ端末2に入力する(4)。改善すべき事項が推薦サーバ1へ送信される(5)。推薦サーバ1は生産計画を再計算する(6)。再計算した後の生産計画がユーザ端末2に表示される(7)。必要に応じて、(5)から(7)を繰り返す。
【0073】
本実施の形態においては、以下の効果を奏する。ユーザの趣味・嗜好や特定の制約条件に適合した推薦に加えて、ユーザのそのときの状況に応じた細かな要求にも対応することが可能となる。商品組合せの推薦だけでなく、熟練者の経験と勘により行ってきた、製造物の生産計画や物流の最適化や人員計画など、多数の変数が複雑に相関しながら最適な組合せを見出す必要のある業務の最適化にも利用することが可能である。制約条件や最適化したい指標が、必ずしも明確になっていない組合せ最適化問題は現実的に多くある。本実施の形態はシステム運用しながら自律的に最適化自体を学習できるので、最適化したい指標が明確でない組合せ最適化問題にも対応可能となる。
【0074】
各実施の形態で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組合せすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0075】
100 推薦システム
1 推薦サーバ
11 制御部
11a 商品特徴量計算部
11b 要求受付部
11c 条件抽出部
11d ハミルトニアン作成部
11e 最適化計算部
11f 最適解データ解釈部
11g 出力部
11h NG受付部
11i ハミルトニアン更新部
12 主記憶部
13 補助記憶部
131 商品情報DB
132 商品特徴量DB
133 類語辞書
134 概念体系辞書
14 通信部
15 読み取り部
1P 制御プログラム
1a 可搬型記憶媒体
1b 半導体メモリ
2 ユーザ端末