以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。一方で、ある図において符号を付して説明した部位について、他の図の説明の際に再度の図示はしないが同一の符号を付して言及する場合がある。
(実施の形態1)
<システム構成>
図1は、本発明の実施の形態1である情報処理システムの構成例について概要を示した図である。本実施の形態の情報処理システム1は、家庭において日常的に家族の食事を作るユーザ(本実施の形態では母親を例とする)に対して、各家族の過去数日の夕食や当日の昼食のメニューを考慮して、これらのメニューとの重複を回避しつつ、近隣店舗のチラシから得られる特売情報を考慮して、好適な夕食のメニュー(料理の種類)およびレシピ(料理方法)を提案するものである。また、提案するレシピがワンパターン化しないよう、過去に採用したことがないような目新しいレシピを提案することも可能なものである。
図1に示した情報処理システム1は、例えば、サーバ機器やクラウドコンピューティングサービス上に構築された仮想サーバ等によりサーバシステムとして構成される。そして、図示しないCPU(Central Processing Unit)により、HDD(Hard Disk Drive)等の記録装置からメモリ上に展開したOS(Operating System)やDBMS(DataBase Management System)、Webサーバプログラム等のミドルウェアや、その上で稼働するソフトウェアを実行することで、レシピの提案に係る後述する各種機能を実現する。
情報処理システム1は、例えば、ソフトウェアとして実装されたユーザ管理部11、履歴管理部12、メニュー特定部13、レシピ特定部14、レシピ出力部15、UI処理部16、調理機器連携部17、事前学習部18、および特売情報取得部19等の各部を有する。また、データベースやファイル等により実装されたユーザデータベース(DB)101、食事履歴DB102、特売情報103、および学習モデル110等の各データを有する。
ユーザ管理部11は、例えば、情報処理システム1によるレシピ提案サービスを利用する母親等のユーザに係る情報をユーザDB101に記録して管理する機能を有する。ユーザDB101は、各ユーザのアカウント情報や各種属性情報、情報処理システム1における各種設定情報等を保持するマスタテーブルである。ユーザにより作られた食事を提供される者(すなわち家族)についてグループユーザとして登録できるようにしてもよい。この場合、これらのグループユーザに対しては、例えば、当日の昼食のメニューの情報を入力する等のみに機能を限定してもよい。
履歴管理部12は、各ユーザ(の家族)における日々の夕食のレシピの情報を取得して、食事履歴DB102に履歴として記録する機能を有する。家族の日々の昼食のメニューの情報を取得して、これも併せて記録するようにしてもよい。夕食のレシピの情報の取得に際しては、例えば、情報処理システム1が最終的に提案したレシピに対して、これをユーザが採用することを決定した場合に、その旨を後述するユーザインタフェースを介して入力することで取得するようにしてもよい。
また、情報処理システム1が提案したレシピをユーザが採用せず、代替のレシピも採用しなかった場合は、ユーザが実際に提供した夕食(外食も含む)のメニューやレシピの内容を手動で入力するようにしてもよい。このとき、レシピの内容を直接テキスト入力するのに代えて、例えば、図示しないインターネット等のネットワークを介して利用可能なレシピサイト2の該当ページのURL(Uniform Resource Locator)等を入力するようにしてもよい。もしくは、実際に提供した夕食の写真や画像のデータを入力するようにしてもよい。これらの場合、履歴管理部12は、例えば、入力されたURLや写真、画像の内容を解析してメニューやレシピの内容を把握するようにしてもよい。
メニュー特定部13は、例えば、ユーザやその家族の過去数日の夕食や当日の昼食のメニューを考慮して、AIによりこれらのメニューとの重複を回避したメニューを提案する機能を有する。同様に、レシピ特定部14は、メニュー特定部13により設定されたメニューについて、近隣店舗のチラシから得られる特売情報を考慮して、AIにより好適なレシピを提案する機能を有する。AIによるメニューおよびレシピの提案に係る具体的な処理内容については後述する。
なお、AI機能を実現するために用いるエンジン等は特に限定されず、商用で利用可能なものも含め、公知の技術を適宜利用することができる。AIによりメニューやレシピを提案するために用いるニューラルネットワーク等の学習モデル110は、例えば、事前学習部18により、レシピサイト2から取得した多数のレシピのデータや、食事履歴DB102に蓄積されたデータ等に基づく機械学習により予め作成されている。
また、レシピを提案する際に考慮する特売情報は、例えば、特売情報取得部19により、「Shufoo!」等のインターネット上のチラシサイト3から取得したPDFデータ等から抽出して特売情報103として予め記録されている。ユーザが通常買物を行うスーパーマーケット等の店舗のWebサイト等から抽出したり、ユーザが手動で入力するものであってもよい。
レシピ出力部15は、レシピ特定部14により特定されたレシピについて、ユーザが利用可能な形式に整形・可視化して出力する機能を有する。例えば、レシピ特定部14により特定されたレシピの内容を文章や画像により表すため、レシピサイト2から対応するレシピの情報(例えば、Webページに表示されるテキストデータや画像データ)を取得する。取得したレシピの情報は、UI(User Interface)処理部16によって、ユーザが使用する情報処理端末であるユーザ端末4の画面上に表示される。ユーザは、表示されたレシピの内容に従って夕食を作ることができる。
UI処理部16を介してユーザ端末4にレシピの情報を表示することでユーザに対して提示するのに代えて、例えば、指定されたレシピに従って自動的に調理を行う電気調理機器5に対する入力データとなるように加工・整形して出力するようにしてもよい。出力されたデータは、調理機器連携部17により、図示しないインターネット等のネットワークを介して対象の電気調理機器5に対する入力データとして設定される。もしくは、電気調理機器5ではなくユーザ端末4に対して出力され、ユーザ端末4から近距離無線通信機能や記録媒体等を介して電気調理機器5に入力される構成であってもよい。
なお、電気調理機器5は、レシピデータの入力、もしくは内部にプリセットされているレシピに対する指定の入力が可能な外部インタフェースを備えるものであれば特に限定されず、例えば、「T−FAL(登録商標)」社の「Cook4me(登録商標)」等の機器を適宜用いることができる。
<画面例>
図2は、本実施の形態におけるユーザ端末4等に表示される画面例について概要を示した図である。本実施の形態では、UI処理部16が、例えば、タブレット端末やスマートフォンにおいて一般的に利用されるチャットアプリケーションやメッセージングアプリケーション、もしくはこれと同様のユーザインタフェースの上で稼働するいわゆるチャットボットを使用することで、ユーザは対話的に情報の入出力を行うことができる。
図2(a)は、画面左側に表示された情報処理システム1のアバター(もしくは架空のユーザ)がチャットボットにより昼食のメニューを問い合わせ、これに対して画面右側に表示されたユーザの家族のメンバーが昼食のメニューを回答している状態を示している。回答の内容は、例えば、チャットボットが食事履歴DB102に自動的に記録してもよい。
図2(b)は、画面右側に表示されたユーザが夕食のメニュー/レシピの提案を要求したのに対して、画面左側に表示された情報処理システム1のアバターがチャットボットによりメニュー/レシピを提案している状態を示している。ここでは、近隣のスーパーマーケット等の店舗における特売情報を考慮して特売品をうまく使用したメニュー/レシピを提案していることも示している。図2(b)の例では、1種類のメニュー/レシピを提案しているが、複数種類のメニュー/レシピを候補として提案して、その中からユーザが選択できるようにしてもよい。
提案したメニュー/レシピに対して、図2(b)の例に示すように、ユーザが肯定的な回答をした場合には、ユーザが夕食に当該メニュー/レシピを採用した旨を、チャットボットにより食事履歴DB102に自動的に記録するようにしてもよい。また、ユーザが否定的な回答をした場合には、情報処理システム1により再度他のメニュー/レシピを提案するようにしてもよい。
<レシピ提案の処理の流れ>
図3は、本実施の形態におけるレシピ提案処理の全体の流れの例について概要を示したフローチャートである。ユーザが、ユーザ端末4上で図2(b)に示したようなユーザインタフェースを介して夕食のメニュー/レシピの提案を要求すると、情報処理システム1は、まず、食事履歴DB102から過去数日(例えば3日)の夕食や当日の昼食のメニュー/レシピを取得した上で(S01)、メニュー特定部13により、レシピ提案の基礎となるメニューを特定するメニュー特定処理を行う(S02)。そして、特定されたメニューに基づいて、レシピ特定部14により、提案するレシピを特定するレシピ特定処理を行う(S03)。メニュー特定処理(S02)およびレシピ特定処理(S03)の内容については後述する。
以上の処理により提案するレシピが特定されると、レシピ出力部15により、レシピサイト2から対象のレシピの内容に係るテキストデータや画像データ等を取得し(S04)、取得したデータを出力先に応じて加工・整形して出力する(S05)。上述したように、加工・整形したレシピの情報は、UI処理部16を介してユーザ端末4に表示するようにしてもよいし、調理機器連携部17を介して電気調理機器5に入力するようにしてもよい。
その後、提案したレシピがユーザにより採用されたか否かを判定する(S06)。対象のレシピを採用しない(しなかった)旨の入力がユーザからされた場合等、提案したレシピが採用されなかった場合は(S06:No)、ステップS02に戻って再度メニュー/レシピの特定の処理から繰り返す。対象のレシピを採用する(した)旨の入力がユーザからされた場合や、電気調理機器5により調理が行われた場合等、提案したレシピが採用された場合は(S06:Yes)、対象のレシピの内容を食事履歴DB102に記録して(S07)処理を終了する。
<メニュー特定処理1(バリエーション考慮)>
図4は、本実施の形態におけるメニュー特定処理(図3のステップS02)の処理内容の例について概要を示した図である。図4では、日々のメニューのバリエーションを考慮して、過去数日(および当日の昼食を含んでいてもよい)のメニューと重複せず、かつできるだけ類似しないメニューを特定する場合の手法の例について示している。この手法によりメニューを特定することで、ユーザや家族が最近食べた食事とは異なる目新しいメニュー/レシピとすることができ、飽きがこないようにすることができる。
図4(a)に示すように、メニュー特定処理では、まず、食事履歴DB102から抽出された直近の過去数日(図4の例では「8/2」〜「8/4」の3日間)の夕食のメニューについて、それぞれ汎化(一般化、抽象化)する処理を行う。図4の例では、具体的なメニューである「合挽き肉カレー」、「釜揚げうどん」、「明太子スパゲティ」について、それぞれ、「カレー」、「うどん」、「スパゲティ」のレベルに汎化してベクトル化する。この汎化処理は、例えば、汎化した後のレベルでのメニューのリストを予め定義しておき、これと現状のメニュー名とをマッチングすることで行うことができる。
そして、汎化したメニューのそれぞれ(INn)を入力として、INnに最も類似しない特徴量を有する非類似メニュー、すなわち、過去数日のメニューと異なる目新しいメニューを抽出する。例えば、主要なものを含む様々なメニューが類似度に応じてマッピングされたニューラルネットワーク(以下では「NN」と記載する)であるメニュー類似度NN111上で、INnのいずれにも類似しないメニューを特定する。
図4(b)では、メニュー類似度NN111上で「カレー」、「うどん」、「スパゲティ」のそれぞれについて距離が遠い(非類似である)メニューを★印により模式的に表している。この★印のメニューの中から非類似メニューを特定する場合、例えば、「スパゲティ」から距離が遠い★印であっても「うどん」からは近い、という場合があり、「カレー」、「うどん」、「スパゲティ」のいずれからも距離が遠い★印を特定する。すなわち、IN
nに類似するメニューをIN
n’とした場合、
で表されるyを探索して特定する。
なお、図4(a)の下段の図に示したようなメニュー類似度NN111は、例えば、レシピサイト2に登録されているメニュー等の主要なメニューについて、予め事前学習部18による機械学習により生成され、学習モデル110の1つとして記録されているものとする。例えば、各メニューについて、所定の種類の特徴量を要素として単位ベクトル化して学習し、各ベクトルを多次元空間にマッピングすることで生成する。また、メニュー類似度NN111は、例えば、図示するように、春夏秋冬の季節毎等、類似の内容が異なるような単位で複数種類生成しておき、状況に応じて該当するものを使い分けるようにしてもよい。
<メニュー特定処理2(偏食傾向考慮)>
図5は、本実施の形態におけるメニュー特定処理(図3のステップS02)の処理内容の他の例について概要を示した図である。図5では、日々のメニューの遷移に現れるサイクルやパターンの傾向を考慮して、直近の過去数日(および当日の昼食を含んでいてもよい)におけるメニューの遷移が、よくとられる傾向があるパターン(偏食傾向)に近いものとなるようなメニューを特定する場合の手法の例について示している。この手法によりメニューを特定することで、ユーザや家族が好まない(もしくは好まない可能性がある)メニュー/レシピとなることを回避し、ユーザや家族の偏食傾向にマッチしたメニュー/レシピとすることができる。
図5(a)に示すように、メニュー特定処理において、食事履歴DB102から抽出された直近の過去数日の夕食のメニューについてそれぞれ汎化処理を行ってベクトル化するところまでは、上述した図4(a)と同様である。このデータに対して、次に提供するメニューをxとして追加し、このデータに基づいてxを特定する。例えば、ユーザやその家族が属する集団における偏食傾向を学習した偏食傾向NN112に基づいて、メニューの遷移のパターンの類似度からxを特定する。具体的には、例えば、ユーザおよびその家族におけるxより以前のメニューの遷移(実際に提供された食事のメニューの遷移)と、偏食傾向NN112におけるメニューの遷移のパターンとの間の類似度を計算し、類似度が高いパターンにおいて次に現れるメニューをxとすることができる。
図5(a)に示した偏食傾向NN112は、例えば、レシピサイト2に登録されているメニュー等の主要なメニューについて、予め事前学習部18による機械学習により生成され、学習モデル110の1つとして記録されているものとする。例えば、ユーザやその家族が属する集団において実際にとられたメニューの遷移に係る多数のサンプルについて、遷移中の各メニューを要素として単位ベクトル化して学習し、各ベクトルを多次元空間にマッピングすることで生成する。
図5(b)は、偏食傾向NN112を形成する集団の単位の例について示している。図示するように、例えば、偏食傾向NN112を、「関西」、「東海」、「関東」等の地域別に複数形成しておき、ユーザや家族が属する地域に応じて該当するものを使い分けるようにしてもよい。また、このような地域別に限らず、他の属性情報等を基準とした集団に基づいて偏食傾向NN112をそれぞれ形成するようにしてもよい。
<メニュー特定処理3(食事履歴重視)>
図6は、本実施の形態におけるメニュー特定処理(図3のステップS02)の処理内容の他の例について概要を示した図である。図6では、上述の図5の例と同様に、日々のメニューの遷移に現れるサイクルやパターンの傾向を考慮するが、ユーザやその家族が実際にとったことがある食事のメニューの中からのみ特定することで、ユーザや家族の偏食傾向により限定的にマッチしたメニュー/レシピとすることができる。
図6に示したメニュー特定処理では、上述の図4、図5に示した例と異なり、食事履歴DB102から抽出された直近の過去数日の夕食のメニューについて、汎化処理を行わずにそのままベクトル化する。このデータに対して、次に提供するメニューをxとして追加し、このデータに基づいてxを特定する。
例えば、このデータに対して、食事履歴DB102に記録されたユーザやその家族に係る過去の食事のメニューの遷移のデータを1日ずつずらして総当たりでマッチングを行ってそれぞれの類似度を算出する。そして、類似度が最も高い遷移のパターンに含まれるメニューからxを特定する。類似度の算出方法は特に限定されないが、例えば、ベクトル間のコサイン距離(コサイン類似度)により求めることができる。なお、この手法では、食事履歴DB102に記録されたデータとマッチングを行い、最もマッチしたデータの中からメニューを特定するため、AI機能を用いずに行うことも可能である。
上述の図4、図5、図6に示したメニュー特定処理の3つのパターンは、これらに限定されるものではなく、他のパターンを用いることも可能である。また、いずれかのパターンを排他的に用いなければならないものではなく、いずれか2つ以上のパターンを適宜組み合わせて用い、その結果として複数種類のメニューが特定された場合にはこれらを候補として用いるようにしてもよい。また、いずれのパターンをどのように用いるかをユーザが設定できるようにしてもよい。
図7は、本実施の形態における複数パターンのメニュー特定処理を組み合わせて用いる場合の例を示したフローチャートである。図示するように、メニュー特定処理では、まず、食事履歴DB102から抽出されたデータのフォーマット変換等の必要な前処理(S11)を行った後、図4に示したバリエーションを考慮したメニュー特定処理(S12)、図5に示した偏食傾向を考慮したメニュー特定処理(S13)、および図6に示した食事履歴を重視したメニュー特定処理(S14)をそれぞれ行う。図7の例では各処理を並列的に行うよう記載しているが、各処理を逐次的に行うようにしてもよい。
<レシピ特定処理>
図8は、本実施の形態におけるレシピ特定処理(図3のステップS03)の処理内容の例について概要を示した図である。ここでは、前段のメニュー特定処理(図3のステップS02)において特定されたメニューを基礎として、ユーザに提案するレシピの内容を特定する処理を行う。
まず、特定されたメニュー(図8の例では「カレー」)に対して、当該メニューを作るためのレシピ、および異なるメニューであっても材料や作り方が類似するレシピを、所定の数(図8の例では10種類)だけ有効レシピとして抽出する。例えば、既知の各種のレシピが類似度に応じてマッピングされたレシピ類似度NN113上で、類似するレシピを所定の数だけ抽出する。
図9は、本実施の形態におけるレシピ類似度NN113の概念の例について概要を示した図である。図9(a)は、各レシピがn×10m次元の空間にマッピングされている状況を、3次元の空間上で模式的に表している。マッピングされた位置が近いほど(例えば、「カレー」と「シチュー」や、「焼きそば」と「中華そば」)、レシピが類似していることを示している。類似の程度により多次元空間にマッピングされる点は、上述の図4に示したメニュー類似度NN111等と同様である。
図9(b)は、各レシピをn×10m次元の空間にマッピングする手法の例について示している。本実施の形態では、各レシピについて、例えば、公知のWord2Vecの手法を用いて、各レシピについて材料(のベクトル)を要素とする多次元のベクトル化を行う。Word2Vecは、テキスト処理を行うための二層式ニューラルネットワークである。 テキストを入力すると、出力結果として、単語の特徴量(のベクトル)を出力する。十分な学習を行えば、語句の意味を高い精度で推測することができ、語句と語句との関連性を確立することが可能となる。また、トピック別に語句を分類することができる。Word2Vecで出力されるベクトルは、より複雑なニューラルネットワークの入力として使用することができる他、単語間の関係を検知するために使用することができる。
本実施の形態では、図9(b)に示すように、例えば、材料を構成する「肉」や「野菜」、「調味料」等のカテゴリ毎に、「牛」ベクトルと「肉」ベクトルの和が「牛肉」ベクトル、「豚」ベクトルと「肉」ベクトルの和が「豚肉」ベクトル、…のように、各種材料の単語に基づいてベクトルが事前に学習されている。
そして、例えば、「カレー」のレシピにおける材料が「牛肉」、「じゃがいも」、「にんじん」、…、「塩」、「こしょう」、「油」のN種類であった場合、これら各材料のベクトルの和として「カレー」のベクトルが表される。なお、各レシピのベクトルはそれぞれ単位ベクトルによって表すものとする。また、これらのベクトルがマッピングされたレシピ類似度NN113は、例えば、レシピサイト2に登録されている全てのレシピについて、予め事前学習部18による機械学習により生成され、学習モデル110の1つとして記録されているものとする。
図8に戻り、所定の数の有効レシピを抽出すると、各レシピについて適合度(フィットネス)を計算する。具体的には、例えば、レシピ中の各材料について、その日の特売情報に含まれているもの(図8の例では、特売情報103において「特売フラグ」が立っているもの)の数を計算してフィットネスの値とする。そして、フィットネスの値の降順でソートして各レシピを順位付けする。フィットネスの値が大きい上位のレシピほど材料を安く買うことができて経済面で適合的であることを意味する。
なお、特売情報103の情報は、例えば、特売情報取得部19が、予めチラシサイト3から取得した日々のチラシのPDF(Portable Document Format)等のデータから公知の画像認識技術を利用して掲載されている画像やテキストのデータを取得し、機械学習により特売対象の商品と価格の情報を抽出して図示しない特売情報NNを生成しておくものとする。
図8の例では、各有効レシピについて、レシピ中の各材料と特売情報103とをマッチングすることでフィットネスを計算しているが、材料との関係で他の要素を考慮してフィットネスを計算するようにしてもよい。例えば、ユーザ宅の冷蔵庫がIoT(Internet of Things)やAIにより在庫の食材の情報を把握することができる場合には、その情報を取得して、特売情報103において「特売フラグ」が立っている材料より、冷蔵庫に在庫がある材料を多く用いるレシピの方がフィットネスが高くなるようにしてもよい。また、材料以外でも、例えば、電気調理機器5での調理に適した調理手順が含まれるレシピのフィットネスが高くなるようにしてもよい。もしくは、フィットネスの値を計算する際の優先的な考慮事項をユーザが設定できるようにしてもよい。
有効レシピについてフィットネスの値の降順でソートした後、順位が1位のレシピ、すなわちフィットネスが最も高いレシピの情報(図8の例では「ビーフシチュー」)を、第1世代の候補レシピとして保持しておく。
その後、いわゆる進化的計算により有効レシピの内容を進化させていく。例えば、本実施の形態では、有効レシピから1位のレシピ(図8の例では「ビーフシチュー」)を除いた2位〜10位の9種類のレシピに対して、他の新たなレシピ(図8の例では「ビーフシチュー(里いも)」)を1種類追加して新たな第2世代の10種類の有効レシピを得る。
新たなレシピを得る手法として、本実施の形態では、例えば、レシピ中の材料を「遺伝子」に対応させ、既存のレシピに対して後述するような「遺伝子組換え」処理を行って変異させることで新たなレシピを得る。「遺伝子組み換え」の対象とするレシピは、例えば、前世代の1位のレシピとしてもよいし、1位〜10位の10種類(もしくは2位〜10位の9種類)のレシピからランダムに選択したものとしてもよい。また、本実施の形態では、1種類のレシピに対してのみ「遺伝子組換え」を行っているが、2種類以上のレシピに対して「遺伝子組換え」を行うようにしてもよい。
その後、「遺伝子組み換え」により変異させた新たなレシピも含む10種類の有効レシピに対して、上述したのと同様にフィットネスを計算した上でフィットネスの値の降順でソートし、順位が1位のレシピの情報(図8の例では「ビーフシチュー(里いも)」)を、第2世代の候補レシピとして保持しておく。そして、以上のような、進化的計算とフィットネスの計算、およびフィットネスが最も高いレシピの保持、という一連の処理を、各世代の候補として保持したレシピのフィットネスの値が収束するまで、もしくは規定の回数(N回)繰り返す。そして、各世代の候補として保持したレシピの中で、フィットネスの値が最も高いレシピ(もしくは所定の順位までの複数のレシピ)を、ユーザに提案するレシピとして特定する。
なお、このとき、所定の条件に合致するレシピについては、提案候補から除外するようにしてもよい。例えば、文化的・宗教的制約により食材とすることができないものを含むレシピや、「遺伝子組み換え」の結果、調理方法が危険なものや不可能なものとなったレシピ、食事履歴DB102における直近の食事の履歴と重複するもの等を除外することができる。これらの条件は、例えば、NGリストとして予め設定しておく。
<「遺伝子組み換え」処理>
図10は、本実施の形態における進化的計算での「遺伝子組み換え」処理の例について概要を示した図である。「遺伝子組み換え」処理において、本実施の形態では、レシピ中の材料をm分木(Multiple-valued Decision Diagram)のデータ構造によって表す。図10(a)では、「ビーフカレー」のレシピをm分木によって表した例を示している。「ビーフカレー」のノードは、例えば、「食材」と「調味料」という、材料のカテゴリを示すノードに分かれている。「食材」のノードは、さらに、「米」や「パセリ」、「牛バラ肉」、…、「じゃがいも」等の各食材のノードに分かれている。同様に、「調味料」のノードは、さらに、「ガーリック」や「ケチャップ」、「オイスターソース」、…、「カレー粉」等の各調味料のノードに分かれている。
本実施の形態では、「遺伝子組み換え」処理として以下の3種類の操作を行うことができる。図10(b)は、「挿入(insertion)」操作の例を示した図である。ここでは、対象のレシピのm分木の構造に、ランダムに選択された、もしくは所定のルールに基づいて選択された材料に係る新たなノードを1つ以上追加する。図10(b)の例では、「ビーフカレー」のレシピにおける「食材」ノードの下に新たに「トマト」ノードが追加された状態を示している。これにより、「ビーフカレー」を「トマトビーフカレー」という新たなレシピに変異させることができる。
一方、図10(c)は、「置換(replacement)」操作の例を示した図である。ここでは、対象のレシピのm分木の構造におけるノードからランダムに選択された、もしくは所定のルールに基づいて選択された1つ以上のノードを、類似するもしくは一定範囲の他の材料に係る新たなノードに置換する。図10(c)の例では、「ビーフカレー」のレシピにおける「食材」ノードの下の「牛バラ肉」ノードを「牛スジ肉」ノードに置換した状態を示している。これにより、「ビーフカレー」を「牛スジカレー」という新たなレシピに変異させることができる。
また、図10(d)は、「突然変異(mutation)」操作の例を示した図である。ここでは、対象のレシピのm分木の構造におけるノードからランダムに選択された、もしくは所定のルールに基づいて選択された1つ以上のノードを、異なる親ノード(材料の種別)につなぎ替える。図10(d)の例では、「ビーフカレー」のレシピにおける「調味料」ノードの下の「バター」ノードを、「食材」ノードの下につなぎ替えた状態を示している。これにより、「じゃがいも」と「バター」が掛け合わされて「じゃがバター」になるという特別な進化を遂げる場合があり、「ビーフカレー」に「じゃがバター」が載った「北海道カレー」という新たなレシピに突然変異させることができる。
このように、ユーザに提案するレシピを特定する際の進化的計算において、材料について上記のような「遺伝子組み換え」処理を施すことで、候補のレシピを他の新たなレシピに変異させることができる場合がある。これにより、提案するレシピがワンパターン化するのを回避し、目新しいレシピを提案することが可能である。
以上に説明したように、本発明の実施の形態1である情報処理システム1によれば、ユーザに対して、直近の過去数日の夕食や当日の昼食のメニューを考慮して、これらのメニューとの重複を回避しつつ、近隣店舗のチラシから得られる特売情報を考慮して、好適な夕食のメニュー/レシピを提案することができる。また、提案するレシピがワンパターン化しないよう、過去に採用したことがないような目新しいレシピも提案することが可能である。
(実施の形態2)
上述した実施の形態1では、ユーザに対して好適なメニュー/レシピを提案することができるが、提案するメニュー/レシピは、進化的計算により変異させた新たなメニュー/レシピとなる可能性があるものの、基本的にはレシピサイト2等に公開されている既知のメニュー/レシピの範囲内で好適なものを選択するものである。これに対し、本発明の実施の形態2である情報処理システムでは、既知のメニュー/レシピとは類似しない、ユーザのオリジナルである新規メニュー/レシピを作成可能とするものである。なお、基本的なシステム構成や、レシピサイト2等に公開されているメニュー/レシピ等の事前の学習処理等については、上述した実施の形態1と同様とすることができるため、再度の説明は省略する。
<オリジナルレシピの作成処理の流れ>
図11は、本実施の形態におけるオリジナルレシピの作成処理の流れの例について概要を示したフローチャートである。まず、ユーザが、ユーザ端末4上でオリジナルレシピの作成を要求すると、情報処理システム1は、まず、ユーザ端末4上に、過去のレシピが類似度に応じてマッピングされたレシピ類似度マップを表示する(S21)。レシピ類似度マップの内容と作成手法については後述する。
ユーザが、レシピ類似度マップ上で、過去のレシピが存在しない背景領域の中のいずれかの場所を選択すると(S22)、情報処理システム1は、選択された領域に対応する未知のレシピを作成し(S23)、当該レシピの内容に係る文章を復元(生成)して(S24)、これをユーザ端末4上に出力する(S25)。未知のレシピの作成および当該レシピの内容に係る文章の復元の手法についても後述する。
その後、出力したレシピがユーザにより採用されたか否かを判定する(S26)。対象のレシピを採用しない(しなかった)旨の入力がユーザからされた場合等、出力したレシピが採用されなかった場合は(S26:No)、ステップS22に戻って再度レシピ類似度マップ上での領域の選択の処理から繰り返す。対象のレシピを採用する(した)旨の入力がユーザからされた場合等、提案したレシピが採用された場合は(S26:Yes)、対象のレシピの内容を食事履歴DB102に記録して(S27)処理を終了する。
<オリジナルレシピ作成処理(概要)>
まず、本実施の形態におけるオリジナルレシピを作成する処理について全体の流れを説明する。図12は、本実施の形態におけるレシピ類似度マップの作成および表示の例について概要を示した図である。本実施の形態では、ユーザからオリジナルレシピの作成に係る指示を受け付けるため、予め、事前学習部18により、ユーザにおける過去の夕食の全レシピが類似度に応じてマッピングされた過去レシピ類似度NN114を生成し、学習モデル110の1つとして記録しておく。
過去レシピ類似度NN114には、ユーザにおける過去の夕食のレシピを文章化した情報が学習されており、その学習結果から、レシピ(の文章)の類似性をユーザ端末4上で可視化することができる。図中の例では、「鶏肉と野菜を一口大に切る。…」という文章で始まる「カレー」のレシピについて、全文を「鶏肉/と/野菜/を/一口/大/に/切る/…」のように区切って、区切られた語句をベクトル化して学習することを示している。
本実施の形態では、過去レシピ類似度NN114に対するこのような学習を、さらに「チャーハン」や「ラーメン」といった他のレシピも含めた状態で行い、その結果をレシピ類似度マップとして表現して、ユーザ端末4上に表示する。レシピ類似度マップでは、類似するレシピは近い場所に、異なるレシピは遠い場所に配置される。図中の例では、「カレー」と「ビーフシチュー」はいずれもルーを使うレシピであり、また、「ラーメン」と「うどん」はいずれも麺を茹でるレシピであるため、それぞれ相互に近い場所に配置される。一方、「カレー」と「チャーハン」、「ラーメン」は、それぞれ明らかに異なるレシピであるため、相互に離れた場所に配置される。
ユーザ端末4上に表示されたレシピ類似度マップでは、過去のレシピがマッピングされていない背景領域(空白領域)が存在するが、内部的には、過去レシピ類似度NN114においてこれらの領域にもレシピに係る情報を有しており、ユーザがこれらの背景領域を選択した場合であっても、何らかの対応する未知のレシピを合成して提示することができる。ここで合成されるレシピの文章は、過去レシピ類似度NN114の学習モデルに基づいて、ユーザが選択した領域の近傍にある過去レシピの特徴を加味したものとなる。したがって、ユーザとしては、過去の経験(過去レシピ)を踏まえつつ、全く新しい未知のレシピの提案を受けるという体験ができる上、背景領域を選択するのがユーザ自身であることから、自らがオリジナルレシピを作り出したかのような感覚を得ることができる。
図中の例では、背景領域の中で、「チャーハン」からは遠く、「カレー」と「ラーメン」の間にある場所をユーザが選択した場合、「カレー」と「ラーメン」を掛け合わせて「とんこつカレー」という新しいオリジナルレシピを生成して提案した場合を示している。オリジナルレシピのパターンは、背景領域の面積に比例して無数に存在し得るため、一見すると非常識なメニュー/レシピや突飛なメニュー/レシピが生成される可能性もあるが、全く新しいオリジナルのメニュー/レシピを作成することができる可能性を有するという点で有用である。また、ユーザに対して未知のレシピを生み出すことに対する期待感を抱かせ、本実施の形態に係る仕組みを利用する動機付けとすることができる。
<オリジナルレシピ作成処理(詳細)>
以下では、本実施の形態におけるオリジナルレシピ作成に係る各処理の詳細について説明する。まず、レシピ類似度マップを作成するため、図12の上段の図に示したように、食事履歴DB102に記録された過去の夕食等に係るレシピの情報を抽出し、各レシピ(の文章)について全文をベクトル化する。なお、ここでは、例えば食事履歴DB102に記録された過去の夕食等に係る各履歴について、そのレシピの内容を予めレシピサイト2等から取得し、その情報も合わせて食事履歴DB102に格納しているものとする。
レシピ全文のベクトル化に際しては、食事履歴DB102に格納されているレシピ情報について、その全文に対して形態素解析を行って品詞毎の語句に区切る。図13は、本実施の形態におけるレシピ文章に対する形態素解析の例について概要を示した図である。図13の上段には、「パクチー香る…豆乳鍋」のレシピ文章の例が示されており、これを形態素解析により品詞毎の語句に区切った状態の例を中段の図に示している(図中では便宜上「/」の記号により語句の区切りを示している)。なお、形態素解析の処理自体は、公知のエンジンやライブラリ、サービス等を適宜使用して行うことができる。
本実施の形態では、レシピ文章に対して形態素解析を行って得られた各単語(語句)を、上述したWord2Vecによって意味のある多次元ベクトルの情報に変換する。多次元ベクトル化する語句は、基本的には、図13の中段に示したような、形態素解析によって区切られた全ての語句が対象となる。しかし、学習対象となるレシピ文章は膨大な数となり、また、造語やオノマトペ等が含まれる煩雑な文章である場合も多い。そこで、本実施の形態では、学習に際してノイズ(すなわち、レシピの特徴との関係で意味をなさない情報)であると判定された語句は、ベクトル化の対象から除外する。これにより、レシピの特徴との関係で意味を有する語句(あるいはそのような性質が期待される特定の品詞の語句)のみがベクトル化の対象となり、ベクトルの内容から把握されるレシピの特徴の精度を向上させることができる。
図13の下段の図では、レシピ文章に対する形態素解析の結果からノイズの語句を除外した場合(図中では取り消し線で示している)の例を示している。例えば、1番目の文章の「…ましょ♪」のような無意味な語尾の表現や、「やさしく」等の形容詞はノイズとして除外する。また、3番目の文章の「シャッと」や「タタタっと」のようなオノマトペについてもノイズとして除外する。
レシピ全文に対して形態素解析を行って得られた語句をベクトル化すると、次に、各ベクトル間の類似度を学習し、過去レシピ類似度NN114を生成する。図14は、本実施の形態における過去レシピ類似度NN114の構成例とオリジナルレシピの作成方法の例について概要を示した図である。本実施の形態では、過去レシピ類似度NN114を以下に示す3種類の学習モデルによって構成する。
1つは、ベクトル化された各レシピの全文を対象として、レシピ間の類似度を学習するモデルであるレシピ類似度NN114aである。他の1つは、各レシピにおける調理手順をその内容によってクラスタリングし、各クラスタをトピックによって分類した上で、トピック内での調理手順間の類似度を学習するモデルである調理手順別類似度NN114bである。他の1つは、各レシピにおける調理手順の流れについて時系列での解析を行い、時系列的に有効で矛盾しない、もしくはより効果的である調理手順を学習する(換言すれば、時系列的に取り得ない、もしくは意味をなさない調理手順を学習する)モデルである時系列予測NN114cである。
レシピ類似度NN114aは、上述したように、ユーザ端末4上にレシピ類似度マップを提示するために必要となる二次元の座標情報(鍵情報)を得るために用いられる。また、当該鍵情報からオリジナルレシピの基礎を生成するためにも用いられる。レシピ類似度NN114aから二次元のレシピ類似度マップを形成する手法については後述する。レシピ類似度マップ上での背景領域(空白領域)からユーザにより領域が選択されると、選択された場所に対応する鍵情報に基づいて、レシピ類似度NN114aから対応するレシピ(オリジナルレシピ)を生成することができる。オリジナルレシピの生成手法についても後述する。
レシピ類似度NN114aから生成されたオリジナルレシピは基礎・原型となるものであり、そのままでは内容や表現が適切ではない場合も含まれる。オリジナルレシピにおける手順が時系列的に有効で矛盾しないものとなるよう、時系列予測NN114cを用いて手順を調整する。図中の例では、調理手順が「切る」→「焼く」→「煮る」の順になるように調整することを示している。これにより、材料を「焼」いてから「切る」というような不自然な手順や、「焼く」→「煮る」→「焼く」のように同様の手順が繰り返されるような手順とならないようにすることができる。
また、オリジナルレシピを生成するにあたり、「切る」、「焼く」、「煮る」等の調理手順のレベルで妥当な表現となるようにし、もしくは変化を生成したい場合に、調理手順別類似度NN114bを用いて調理手順の内容や表現を調整する。以上のような調整・チューニングを行うことにより、調理手順として有効で矛盾しない形でオリジナルレシピを得ることができる。これらのチューニングの手法についても後述する。
<レシピ類似度NN>
上述したように、レシピ類似度NN114aを生成するための入力となる各レシピの全文をベクトル化したデータは、n×10m次元(例えば、数千次元)の多次元ベクトルとなるため、そのままでは、このレシピ類似度NN114aの情報にユーザが介入してオリジナルレシピを生成することは困難である。そこで、本実施の形態では、レシピ類似度NN114aの学習において、砂時計型ニューラルネットワークを用いた恒等写像学習を用いることにより、各レシピの類似度を示す特徴量を低次元に圧縮し、ユーザが介入できる情報に変換する。膨大な情報から特徴量を抽出する技術はオートエンコーダと呼ばれ、ニューラルネットワークを用いた恒等写像学習もこれに包含される。
図15、図16は、本実施の形態におけるレシピ類似度NN114aの例について概要を示した図である。本実施の形態では、まず、レシピ類似度NN114aを、図15(a)に示すような多層構造の砂時計型ニューラルネットワークとして構成する。図15(a)の例では、入力層と出力層を、各レシピの多次元ベクトルと同等のn×10m次元とし、中央の「隠れ層」を二次元となるように構成している。
次に、恒等写像学習として、図15(b)に示すように、各レシピの多次元ベクトルを入力層と出力層の両方にそれぞれ配置し、レシピ類似度NN114aの入力と出力が同一となるように学習を行う。すなわち、各レシピの多次元ベクトルについて、入力と出力との間でデータが同一となるようレシピ類似度NN114a内を伝送させると、内部のネットワークが書き変わっていく。学習初期では、入力と出力が同一視できない結果となる割合(エラー率)が高い状態となるが、学習が進むに従ってエラー率が下がっていき、一定の率に収束するようになる。この状態まで学習が進んだものをレシピ類似度NN114aとして用いる。
このような学習により、n×10m次元の多次元ベクトルからなる各レシピの類似性を、二次元に圧縮された情報として「隠れ層」に集約することができる。これをエンコードという。「隠れ層」に集約した情報は二次元の情報であるため、これに基づいて(x,y)座標の表現型を有するレシピ類似度マップを生成することが可能となる。
一方で、レシピ類似度NN114aは、学習済のニューラルネットワークであることから、図16に示すように、「隠れ層」にあたる二次元の情報、すなわち、レシピ類似度マップ上の座標(x,y)を鍵情報として、これに対応するレシピ情報の出力を、n×10m次元の多次元ベクトルの形式で取得することが可能となる。これをデコードという。座標(x,y)は任意の値を取ることが可能であるため、そのような鍵情報を入力することによって、既存の学習セット(既存のレシピ)には存在しない未知のレシピを生成することが可能となる。
なお、一般的に、解析モデルにおいて、圧縮された鍵情報から自動的に出力をデコードする機能はニューラルネットワークに特有のものであり、他の解析モデル(例えば、主成分分析等)では、特徴量の抽出(エンコード)のみが可能である。したがって、ニューラルネットワークを用いた本実施の形態の手法は、他の解析モデルを用いた既存手法と比べて有効なものであるといえる。
<調理手順別類似度NN>
上述したように、オリジナルレシピを生成するにあたって、「切る」、「焼く」、「煮る」といった調理手順のレベルで妥当な表現となるようにしたり、個別に変化をつけたりするために、調理手順別類似度NN114bを用いる。調理手順別類似度NN114bの生成に際して、まず、各レシピの文章を学習して、調理手順毎にクラスタリングする。学習前に、各レシピ文章に含まれる各語句を意味のある多次元ベクトルの情報に変換する点は、上述したレシピ類似度NN114aの場合と同様である。
上述したWord2Vecでは、類似する文脈を集めてクラスタリングできる他、得られたクラスタ群について、あるトピック(クラスタリング結果を所定の観点(本実施の形態ではオリジナルレシピの作成という観点)でカテゴライズしたもの)の中で類似度を学習することができる。本実施の形態では、連続的な文章であるレシピの情報を、「切る」、「焼く」、「煮る」等の調理手順に係るクラスタに分類し、これらの調理手順をトピックとして類似度の学習を行う。
図17は、本実施の形態における調理手順別類似度NN114bの例について概要を示した図である。図17(a)では、レシピ文章を調理手順のレベルで分割してクラスタリングする例を示している。ここでは、レシピ文章中において調理手順の観点で境界を見つけて分割し、クラスタリングする。例えば、第1文の「鶏肉と…切る。」と、第2文の「厚手の…炒める。」では、「切る」と「炒める」という、ベクトル的に遠い(類似しない)調理手順であるため、これらの文の間でレシピ文章は分割され、それぞれ異なるクラスタに分類される。一方、第2文の「厚手の…炒める。」と、第3文の「肉に…炒める。」では、「炒める」というベクトル的に近い(類似もしくは同一の)調理手順であるため、これらの文は分割されずに同一のクラスタに分類される。
また、第5文の「煮立ったら…煮込む。」は、「煮込む」が「炒める」とは類似しない調理手順であるため、第5文の前でレシピ文章は分割される。そして、最後の第9文の「再び…煮込む。」は、第5文の「煮込む」と同一の調理手順であり、同じクラスタに分類されることになるが、その際、これらの文の間に挟まれた第6文〜第8文(「いったん…加える。」)についても、一体として同じクラスタに分類される。
図17(a)の例では、レシピ文章が3つのクラスタに分類されているが、これら各クラスタは、それぞれ、「切る」、「炒める」、「煮込む」というキーワードによりトピック化される。そして、本実施の形態では、図17(b)に示すように、このようなクラスタリングとトピック化を、入力となる学習セットに含まれる全てのレシピ文章に対して行い、「切る」、「炒める」、「煮込む」等のトピック毎に、対応するレシピ文章(調理手順)を集約する。
そして、例えば、「切る」のトピックでは、「切る」に類する無数の調理手順を学習し、その類似性を調理手順別類似度NN114b_1として記録する。同様に、「炒める」トピックについては調理手順別類似度NN114b_2、「煮込む」トピックについては調理手順別類似度NN114b_3、…というように、トピック(調理手順)毎に類似性を学習した調理手順別類似度NN114bを生成する。
<時系列予測NN>
上述したように、オリジナルレシピを生成するにあたって、時系列的に有効で矛盾がない、もしくはより効果的である調理手順(調理の流れ)とするために、時系列予測NN114cを用いる。時系列予測NN114cは、学習セットである各レシピにおける調理手順の時系列的特徴を学習したものである。ニューラルネットワークでは、時系列情報を扱う場合、リカレントニューラルネットワークを使用する。
図18は、リカレントニューラルネットワークの例について概要を示した図である。図18(a)に示すように、リカレントニューラルネットワークは、前の時刻(図中の例では時刻t−1)における中間層の情報を、次の時刻(図中の例では時刻t)の入力と合わせて学習に用いることで、時系列情報を考慮したネットワーク構造することができる。これにより、例えば、図18(b)に示すように、時刻t0(9:00)に「出社して」、時刻t1(13:00)に「東京出張して」、時刻t2(15:00)に「打ち合わせして」、という時系列での事実の流れがあった場合に、時刻t3(17:00)の内容として「品川で飲んでいる」という事実を予測することができる。
図19は、本実施の形態における時系列予測NN114cの例について概要を示した図である。時系列予測NN114cを用いることで、図示するように、「…を一口大に切って(時刻t1)、…鶏肉を炒めて(時刻t2)、…(トマト以外の)野菜を炒めて(時刻t3)、…5分煮込んで(時刻t4)、…」という調理手順の流れの文脈から関連付けて、時刻tnにおける「…残りの野菜を入れて煮込む」という手順を予測することができる。なお、時刻t3での調理手順において「トマト」を入れないという情報は、学習の際に汎化されてなくなっている可能性があるが、後の調理手順において「何らかの野菜を入れる」という手順が学習されていることから、「残りの野菜」(当該レシピでは「トマト」)を入れて煮込むという調理手順として予測することができる。
一方で、リカレントニューラルネットワークの特徴として、長期の依存関係にある語句の予測が難しくなるという傾向を有する。そこで、本実施の形態では、学習セットとなる各レシピ文章について、上述した調理手順別類似度NN114bの例において説明したように、レシピ中の調理手順を動詞のトピックに汎化することで予測を簡易にする。また、メニューと調理手順の関係性を保持するために、リカレントニューラルネットワークである時系列予測NN114cにおける最初のニューラルネットワーク、すなわち、時刻t0のニューラルネットワークは、メニュー(図19の例では、「ルーを使ったレシピ(例えば、カレー等)」)を学習するニューラルネットワークとする。
なお、上記の例では、過去レシピ類似度NN114を生成する際の学習セットとして、ユーザにおける過去の夕食の全レシピを用いているが、これに加えてもしくはこれに代えて、例えば、レシピサイト2に開示されている既知の全レシピを学習セットとして用いてもよい。これにより、ユーザの過去の夕食の履歴との観点でオリジナルであるだけでなく、既知の全てのレシピとの観点でオリジナルなレシピを作成することも可能である。
<レシピ類似度マップの表示とオリジナルレシピの作成>
図20は、本実施の形態におけるレシピ類似度マップの表示とオリジナルレシピの作成の例について概要を示した図である。上述したように、レシピ類似度マップは、学習セットとなる全てのレシピ文章(図20の例では「ユニークメニュー100種」)を入力として事前学習部18により生成された砂時計型のニューラルネットワークであるレシピ類似度NN114aの「隠れ層」から二次元の鍵情報を取得し、これを(x,y)座標系にマッピングして、ユーザ端末4上に表示することで可視化したものである。ユーザは、ユーザ端末4上に表示された二次元のレシピ類似度マップにおける任意の(x,y)座標を選択することができるため、選択された(x,y)座標(図20の例では(0.54,0.62))を、レシピ類似度NN114aの「隠れ層」に入力する鍵情報として用いる。
レシピ特定部14では、レシピ類似度NN114aの「隠れ層」に二次元の鍵情報を入力することで、出力としてオリジナルレシピ(図中の例では「とんこつカレー」)の基礎の情報を得ることができる。このとき、レシピ類似度NN114aの入力層への情報の入力は行わない。上述したように、本実施の形態では、出力層から得られるオリジナルレシピの情報はn×10m次元の多次元ベクトルの形式となる。この多次元ベクトルは、例えば、レシピ出力部15において、上述したWord2Vecを通じて言語に復元することができ、これによってオリジナルレシピ全体の文章を得ることができる。
ただし、復元されたオリジナルレシピの全文は、そのままでは非常識なレシピ(の文章)や突飛なレシピ(の文章)を含んでいる可能性がある。そこで、本実施の形態では、例えば、レシピ出力部15において、オリジナルレシピの全文に対して再度形態素解析を行った上で、調理手順間の時系列的な観点でのチューニング、および調理手順毎の文章のチューニングを行う。
図21は、本実施の形態におけるオリジナルレシピの文章に対するチューニングの例について概要を示した図である。図21(a)の上段の表は、図20で示した処理により生成されたオリジナルレシピについて、その調理手順の流れを上から順に時系列で示しており、元となる「ゴーヤ炒め」と「カレー」のレシピの調理手順が合成されてオリジナルレシピである「ゴーヤ炒めカレー」の調理手順となっていることを示している。この時点では、「ゴーヤ炒めカレー」というメニューが成り立ち得るか否かに関わらず、レシピが合成される。なお、一番右の「手順」の列では、各調理手順の文章を、動詞からなるトピックとその目的語に汎化した内容を示している。
このレシピでは、例えば、調理手順1と2について、同じ「茹でる」に類する手順が「下茹でする」と「チンする」という別の表現になっており、表記のゆれを有していることを示している。また、調理手順3、4で「切る」手順を行った後、調理手順5、6で「炒める」手順を行い、その後に調理手順7で再度「切る」手順を行う流れとなっており、調理手順の流れが時系列的に整合していないことを示している。また、調理手順9では、「(カレー粉を)入れる」という汎用的な手順が、例えば、「焼く」や「煮る」等のいずれのトピックに分類されるのか判断できない状態であることを示している。
本実施の形態では、このように調理手順毎に区切られたオリジナルレシピの文章を、時系列予測NN114cに入力し、調理手順の流れについてフィット&ギャップ分析を行う。ここで入力する調理手順の文章は、トピックに汎化したもの(図21(a)の上段の表の「手順」の列の内容)である。時系列予測NN114cにおける時系列での調理手順の予測モデルとの間に一定以上のギャップがある場合は、所定のルールに従ってオリジナルレシピの調理手順の流れを自動的に調整・修正する。
例えば、時系列予測NN114cにおいて、調理手順の流れは「切る」→「炒める」の順になるというルールが学習されている場合、図21(a)の上段の表において、調理手順7(「切る」手順)の位置は適切ではないと判断され、これを同じ「切る」手順である調理手順3、4の次で、「炒める」手順である調理手順5、6の前に来るよう順序を入れ替える。これにより、図21(a)の下段の図に示すように、「茹でる」→「切る」→「炒める」のトピックの順に調理手順が並ぶようにチューニングされる。ここでは、同じトピック内の複数の調理手順の文章が合成されて1つの文章となっているが、その手法については後述する。
なお、「炒める」の次の調理手順は「ルー」を目的とした手順(図21(a)の上段の表の調理手順9、10)に対応するものであるが、「(ルーを)××する」というようトピックの内容が不定となっている。これは、調理手順9の「(カレー粉を)入れる」とう手順がいずれのトピックに分類されるのか不明であることに対応している。この場合、例えば、図21(a)の下段の図に示すように、「ルー」を目的とした当該調理手順の文章を、「カレー粉を入れる『または』ルーを割り入れて煮込む」というように選択的な文章とし、実際の作業内容の選択をユーザに委ねるようにしてもよい。
次に、調理手順毎に区切られたオリジナルレシピの文章を、トピック毎に対応する調理手順別類似度NN114bに入力し、トピック毎の調理手順内におけるレシピの文章のもっともらしさ・妥当性を評価する。ここでは、学習済みのレシピ文章との類似性を評価軸としてもっともらしさ・妥当性を評価し、所定のルールに従って文章を自動的に調整・修正する。
例えば、図21(a)の上段の表における調理手順1、2は、いずれも「茹でる」トピックに分類される調理手順であり、これらの文章を、図21(b)に示すように、調理手順別類似度NN114b(ここでは「茹でる」のトピックに対応したもの)に入力する。調理手順別類似度NN114bは、入力と最も近い意味で、かつ言語的に成立する(意味をなす)文章にチューニングして出力する。
図21(b)の例では、入力となる「ゴーヤを塩で下茹でする」という文章について、「ゴーヤと塩を茹でる」という文章が出力されたことを示している。このチューニングの例では、「塩」が「ゴーヤ」と同列の材料として並列的に扱われ、これらをともに「茹でる」という文章となっているが、オリジナルレシピの作成という観点では問題がないものとする。また、「じゃがいもをチンする」という入力の文章については、「じゃがいもを茹でる」という表現に修正されていることを示している。
これらの調理手順は、いずれも「茹でる」のトピックに分類されるため、その後、これらの調理手順に係る文章を合成して、「茹でる」のトピックに係る1つの調理手順の文章を生成する。例えば、図示するように、各材料をまとめて「茹でる」ものとして並列的に扱い、「ゴーヤ、じゃがいも、塩を茹でる」という文章を生成する。なお、このような文章の合成には、上述したWord2Vecを用いることができる。
調理手順別類似度NN114bでのチューニングを可能とするため、例えば、学習セットとして十分な数の調理手順の文章データを用意するとともに、別途、調理手順毎の文章中における語句の双起確率を学習し、これを用いて文章の修正を行うようにしてもよい。双起確率の学習では、例えば、「ねこ(A)」と「かわいい(B)」という語句があった場合に、A∩B、すなわち「『ねこ』は『かわいい』」というように両方の語句が文章に現れる(双起する)確率は60%であるのに対し、「ねこ(A)」と「おいしい(C)」という語句があった場合に、A∩C、すなわち「『ねこ』は『おいしい』」というように両方の語句が双起する確率は0.001%である、というような確率モデルを得ることができる。これを用いることで、ありえない語順となることを回避し、もっともらしい文章を合成することができる。
また、単一の調理手順についてのみレシピ文章に改変を加えたい場合は、調理手順別類似度NN114bが持つ類似性のネットワークを用いてレシピの文章を改変してもよい。もしくは、オリジナルレシピとして掛け合わせる元となる各レシピにおける材料や手順をそれぞれ一部ずつ抽出して単順に混ぜ合わせて合成する等の手法をとることも可能である。
レシピ出力部15は、上記のようなチューニングが完了した状態のオリジナルレシピを、一連の文章として再度合成し、得られたオリジナルレシピ全文をユーザ端末4上に表示して提案する。このとき、例えば、当該オリジナルレシピの内容と近い既存のレシピに係る画像をレシピサイト2等から取得して、参考情報的に併せて表示するようにしてもよい。
以上に説明したように、本発明の実施の形態2である情報処理システム1によれば、ユーザに対して、既知のメニュー/レシピとは類似しない、ユーザのオリジナルである新規メニュー/レシピを作成して提案することが可能である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態では、家庭で日常の夕食を提供する母親等のユーザに対してメニュー/レシピを提案する場合を例に説明したが、これに限定されるものではない。例えば、宿泊施設等での食事の提供等、食事の提供側が主導的にメニューやレシピを決定するスキームに対して広く適用することができる。また、夕食のメニュー/レシピの提案に限定されず、朝食や昼食等の他の食事のメニュー/レシピの提案を行ってもよいことは言うまでもない。
また、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
例えば、上記の実施の形態では、ユーザやその家族等の夕食の履歴に基づいてメニュー/レシピを提案する場合を例に説明したが、考慮する履歴情報は、これらに限定されない。例えば、ユーザが居住する地域住民の食事履歴を用いることも可能である。また、夕食の履歴情報に限定されず、朝食や昼食を含む食事の履歴情報を用いてもよいし、過去の食事の履歴情報に限定されず、世の中で現在提供されている何らかの食事情報を考慮するものであってもよい。さらには、「食事」の情報に限定されず、メニュー/レシピに反映させ得る情報であれば、例えば、その日の運動の内容等の情報を考慮してメニュー/レシピを提案するものであってもよい。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、またはICカード、SDカード、DVD等の記録媒体に置くことができる。
また、上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。