特許第6890747号(P6890747)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 楽天株式会社の特許一覧

特許6890747情報処理装置、情報処理方法、プログラム
<>
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000002
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000003
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000004
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000005
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000006
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000007
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000008
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000009
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000010
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000011
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000012
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000013
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000014
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000015
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000016
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000017
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000018
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000019
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000020
  • 特許6890747-情報処理装置、情報処理方法、プログラム 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6890747
(24)【登録日】2021年5月28日
(45)【発行日】2021年6月18日
(54)【発明の名称】情報処理装置、情報処理方法、プログラム
(51)【国際特許分類】
   G06Q 50/10 20120101AFI20210607BHJP
   G06F 16/9035 20190101ALI20210607BHJP
【FI】
   G06Q50/10
   G06F16/9035
【請求項の数】8
【全頁数】35
(21)【出願番号】特願2019-239501(P2019-239501)
(22)【出願日】2019年12月27日
(62)【分割の表示】特願2018-510190(P2018-510190)の分割
【原出願日】2016年4月7日
(65)【公開番号】特開2020-64666(P2020-64666A)
(43)【公開日】2020年4月23日
【審査請求日】2020年1月24日
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】100116942
【弁理士】
【氏名又は名称】岩田 雅信
(74)【代理人】
【識別番号】100167704
【弁理士】
【氏名又は名称】中川 裕人
(72)【発明者】
【氏名】内田 有紀
【審査官】 原 秀人
(56)【参考文献】
【文献】 特開2015−035090(JP,A)
【文献】 国際公開第2011/122575(WO,A1)
【文献】 特開平09−282139(JP,A)
【文献】 特開2002−041670(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00−16/958
G06Q 50/10
(57)【特許請求の範囲】
【請求項1】
情報の提示先となる対象ユーザを特定するユーザ特定部と、
前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得部と、
前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定部と、
前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定部と、
前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御部と、を備え
前記食事情報取得部は、前記利用周期に基づいて前記食事情報の取得起算時点を決定し、該取得起算時点から現在までの食事情報を取得する
情報処理装置。
【請求項2】
情報の提示先となる対象ユーザを特定するユーザ特定部と、
前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得部と、
前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定部と、
前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定部と、
前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御部と、を備え、
前記対象ユーザと関連する関連ユーザが登録されている場合において、
前記食事情報取得部は、前記対象ユーザと前記関連ユーザのうち前記食事情報が充実しているユーザの食事情報を取得する
情報処理装置。
【請求項3】
前記特定された推薦カテゴリに関連する料理カテゴリの利用に基づいて前記特定された推薦カテゴリの前記提示時期を調整する提示時期調整部を更に備えた
請求項1から請求項2の何れかに記載の情報処理装置。
【請求項4】
前記推薦カテゴリは階層構造を有し、
前記提示時期は、前記料理カテゴリのうち前記利用周期が下限閾値以上またはより大きいとされた料理カテゴリについて算出され、
前記推薦カテゴリ特定部は、前記特定された利用周期が所定の下限閾値以上またはより大きいとされた料理カテゴリの中から前記推薦カテゴリの特定を行う
請求項1から請求項3の何れかに記載の情報処理装置。
【請求項5】
情報の提示先となる対象ユーザを特定するユーザ特定ステップと、
前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得ステップと、
前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定ステップと、
前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定ステップと、
前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御ステップと、を含み、
前記食事情報取得ステップでは、前記利用周期に基づいて前記食事情報の取得起算時点を決定し、該取得起算時点から現在までの食事情報を取得する
情報処理装置が実行する情報処理方法。
【請求項6】
情報の提示先となる対象ユーザを特定するユーザ特定機能と、
前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得機能と、
前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定機能と、
前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定機能と、
前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御機能と、を含み、
前記食事情報取得機能では、前記利用周期に基づいて前記食事情報の取得起算時点を決定し、該取得起算時点から現在までの食事情報を取得する
情報処理装置に実行させるプログラム。
【請求項7】
情報の提示先となる対象ユーザを特定するユーザ特定ステップと、
前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得ステップと、
前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定ステップと、
前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定ステップと、
前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御ステップと、を含み、
前記対象ユーザと関連する関連ユーザが登録されている場合において、
前記食事情報取得ステップでは、前記対象ユーザと前記関連ユーザのうち前記食事情報が充実しているユーザの食事情報を取得する
情報処理装置が実行する情報処理方法。
【請求項8】
情報の提示先となる対象ユーザを特定するユーザ特定機能と、
前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得機能と、
前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定機能と、
前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定機能と、
前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制機能と、を含み、
前記対象ユーザと関連する関連ユーザが登録されている場合において、
前記食事情報取得機能では、前記対象ユーザと前記関連ユーザのうち前記食事情報が充実しているユーザの食事情報を取得する
情報処理装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、レシピを管理する情報処理装置、情報処理方法及びプログラムについての技術分野に関する。詳しくは、ユーザにレシピを提示するための各種処理に関する。
【先行技術文献】
【特許文献】
【0002】
【特許文献1】特開2015−153286号公報
【特許文献2】特開2003−256577号公報
【特許文献3】特開2015−028767号公報
【背景技術】
【0003】
近年では、一般ユーザの投稿などによって蓄積されたレシピの情報を提供するレシピ検索サービスなどが普及している。
一般的に毎日の食事を考えることは煩わしい作業である。そのため、ユーザにレシピ情報などを推薦(提供)するための様々な技術が提案されている。
例えば、特許文献1には、料理のメニュー情報及び食材の在庫情報とユーザの嗜好情報を用いてユーザの好みにあった材料を使用したメニュー情報を提供する技術について記載されている。
また、特許文献2には、ユーザの健康状態と生活環境と疾患に応じた献立スケジュールのうちユーザに選択された献立スケジュールに設定された弁当を発注する技術について記載されている。
更に、特許文献3には、以前推薦されたレシピが既出レシピとして記憶されており、既出レシピと重複するレシピを除外して残りのレシピを提供する技術について記載されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に記載の技術によって提供されるメニューは、ユーザの好みの材料を含むメニューに限定されるため、ユーザによって選択できる選択肢がマンネリ化してしまう。
また、特許文献2に記載の技術によって提供されるメニューは、健康状態と生活環境と疾患に応じたメニューに限定されるため、ユーザによって選択できる選択肢がワンパターンとなってしまうといった問題がある。
更に、特許文献3に記載の技術によって提供されたレシピは、所定期間内に再度提供されることを抑制させることができるが、ユーザによるレシピの選択傾向に柔軟に対応することができないといった問題がある。
そこで、本発明は、毎日の食事を考える煩わしさを抑制しつつ、ユーザによるメニューの選択傾向を考慮し、飽きのこない食事を行うための情報を提供可能なサービスを提供する。
【課題を解決するための手段】
【0005】
本発明に係る情報処理装置は、情報の提示先となる対象ユーザを特定するユーザ特定部と、前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得部と、前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定部と、前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定部と、前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御部と、を備え、前記料理カテゴリは階層構造を有し、前記推薦カテゴリ特定部は、前記特定された利用周期が所定の下限閾値以下または未満である場合に利用周期が前記下限閾値以下または未満とされた料理カテゴリの下位カテゴリについての前記利用周期及び提示時期を取得して前記推薦カテゴリの特定を行うものである。
これにより、ユーザの潜在的なニーズを汲み取った情報(推薦カテゴリ)が提示される。
【0006】
上記した情報処理装置は、前記特定された推薦カテゴリに関連する料理カテゴリの利用に基づいて前記特定された推薦カテゴリの前記提示時期を調整する提示時期調整部を更に備えてもよい。
これにより、類似する料理カテゴリが所定期間内に利用された場合やユーザの先の予定を考慮した情報提示が行われる。
【0007】
前記料理カテゴリは階層構造を有し、上記した情報処理装置の前記推薦カテゴリ特定部は、前記特定された利用周期が所定の下限閾値以下または未満である場合に利用周期が前記下限閾値以下または未満とされた料理カテゴリの下位カテゴリについての前記利用周期及び提示時期を取得して前記推薦カテゴリの特定を行ってもよい。
これにより、全ての料理カテゴリについての利用周期及び提示時期を取得する必要が無い。
【0008】
前記推薦カテゴリは階層構造を有し、前記提示時期は、前記料理カテゴリのうち前記利用周期が下限閾値以上またはより大きいとされた料理カテゴリについて算出され、上記した情報処理装置の前記推薦カテゴリ特定部は、前記特定された利用周期が所定の下限閾値以上またはより大きいとされた料理カテゴリの中から前記推薦カテゴリの特定を行ってもよい。
これにより、利用周期が短すぎる料理カテゴリに対して提示時期が算出されることが無くなる。
例えば、その下位となる料理カテゴリに対して提示時期が算出される。延いては、頻繁に同じ料理カテゴリが推薦カテゴリとして提示されることが無くなる。
【0009】
上記した情報処理装置の前記提示制御部は、前記推薦カテゴリ毎に優先度を付与し、該優先度に応じて前記提示を行ってもよい。
これにより、ユーザにとって有意義な情報ほど優先度を高くすることが可能となる。
【0010】
上記した情報処理装置の前記食事情報取得部は、前記利用周期に基づいて前記食事情報の取得起算時点を決定し、該取得起算時点から現在までの食事情報を取得してもよい。
これにより、一度算出した利用周期に基づいて次回以降の各処理のための食事情報の取得の範囲(期間)が決定される。
【0011】
前記対象ユーザと関連する関連ユーザが登録されている場合において、上記した情報処理装置の前記食事情報取得部は、前記対象ユーザと前記関連ユーザのうち前記食事情報が充実しているユーザの食事情報を取得してもよい。
これにより、充実した食事情報を元に利用周期や提示時期が算出され、それによって特定された推薦カテゴリが提示される。
【0012】
本発明に係る情報処理方法は、情報の提示先となる対象ユーザを特定するユーザ特定ステップと、前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得ステップと、前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定ステップと、前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定ステップと、前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御ステップと、を
を備え、前記料理カテゴリは階層構造を有し、前記推薦カテゴリ特定ステップでは、前記特定された利用周期が所定の下限閾値以下または未満である場合に利用周期が前記下限閾値以下または未満とされた料理カテゴリの下位カテゴリについての前記利用周期及び提示時期を取得して前記推薦カテゴリの特定を行うものである。
この情報処理方法により、毎日の食事を考える煩わしさを抑制しつつ、ユーザによるメニューの選択傾向を考慮し、飽きのこない食事を行うための情報を提供可能な環境を提供する。
本発明に係るプログラムは、上記情報処理方法として実行する処理を情報処理装置に実行させるプログラムである。これらのプログラムにより上記の情報処理装置を実現する。
【発明の効果】
【0013】
本発明によれば、毎日の食事を考える煩わしさを抑制しつつ、ユーザによるメニューの選択傾向を考慮し、飽きのこない食事を行うための情報を提供可能なサービスを提供することができる。
【図面の簡単な説明】
【0014】
図1】本発明の実施の形態の情報処理装置を含む全体構成を示す説明図である。
図2】レシピ管理サーバの機能構成を示す図である。
図3】コンピュータ装置のブロック図である。
図4】ユーザDBの例を示す図である。
図5】食事情報DBの例を示す図である。
図6】処理の流れの一例を示す図である。
図7】推薦情報取得処理を示すフローチャートである。
図8】バッチ処理を示すフローチャートである。
図9】食事情報取得処理を示すフローチャートである。
図10】利用周期特定処理を示すフローチャートである。
図11】第2の実施の形態における推薦情報取得処理を示すフローチャートである。
図12】バッチ処理の第2例を示すフローチャートである。
図13】バッチ処理の第2例における提示時期調整処理を示すフローチャートである。
図14】バッチ処理の第2例における提示時期調整処理の別の例を示すフローチャートである。
図15】バッチ処理の第3例における提示時期調整処理を示すフローチャートである。
図16】バッチ処理の第4例における食事情報取得処理を示すフローチャートである。
図17】バッチ処理の第4例における利用周期特定処理を示すフローチャートである。
図18】情報提供元ユーザ特定処理の変形例2を示すフローチャートである。
図19】提示時期算出処理の変形例を示すフローチャートである。
図20】階層化された料理カテゴリの例を示す図である。
【発明を実施するための形態】
【0015】
以下、実施の形態を次の順序で説明する。
<1.全体構成>
<2.ハードウェア構成>
<3.DB>
[3−1.ユーザDB]
[3−2.レシピDB]
[3−3.検索DB]
[3−4.食事情報DB53]
[3−5.ウェブページDB]
<4.処理の流れ>
[4−1.第1の実施の形態]
[4−2.バッチ処理]
[4−3.第2の実施の形態]
[4−4.バッチ処理の第2例]
[4−5.バッチ処理の第3例]
[4−6.バッチ処理の第4例]
<5.変形例>
[5−1.情報提供元ユーザ特定処理の変形例1]
[5−2.情報提供元ユーザ特定処理の変形例2]
[5−3.提示時期算出処理の変形例]
<6.まとめ>
<7.プログラム及び記憶媒体>
【0016】
<1.全体構成>

先ず、本発明の実施の形態における全体構成を説明する。
尚、以下の説明においては、レシピとして料理レシピ(以降では単にレシピという)を例に挙げて説明する。レシピには、調理手順や使用食材や調理器具などの情報が含まれている。
また、飽きのこない食事をするためにユーザに提供する情報(以降推薦情報と記載する)は、ユーザが食事をする際に参考にできる情報であり、具体的には、使用食材や調理方法が記載された1又は複数のレシピ情報であってもよいし、外食の際の店舗選択のための情報として料理カテゴリ(「ラーメン」や「カレー」など)の情報であってもよい。
【0017】
検索クエリに応じたレシピの検索やレシピの投稿などが可能なサービスを提供するためのポータルサイトとして、レシピ管理サーバ1が運営するレシピサイトを例に挙げる。
【0018】
本発明の情報処理装置を含む全体構成を図1に示す。
レシピ管理サーバ1は、通信ネットワーク2を介して、ユーザ端末3,3,3,・・・と相互に通信可能な状態で接続されている。また、レシピ管理サーバ1は、ユーザに関する情報が記憶されるユーザDB(Database)50、レシピに関する情報が記憶されるレシピDB51、検索クエリや検索結果の情報が記憶される検索DB52、ユーザの食事情報(後述)が記憶される食事情報DB53、レシピサイトを構成する各種ウェブページのウェブページデータが記憶されるウェブページDB54と接続されている。
尚、レシピ管理サーバ1は、本発明の情報処理装置の実施の形態に相当する。
【0019】
レシピ管理サーバ1は、ユーザから投稿されるレシピを管理する処理や、検索クエリに応じたレシピを提示するための処理を行う情報処理装置である。また、レシピ管理サーバ1は、ユーザに提示する推薦情報(レシピ情報や料理カテゴリ情報)を提示するための各種処理を実行する。具体的な構成に関しては後述する。
【0020】
通信ネットワーク2の構成は特に限定されるものではなく、例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、CATV(Community Antenna TeleVision)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網などが想定される。
また通信ネットワーク2の全部又は一部を構成する伝送媒体についても多様な例が想定される。例えばIEEE(Institute of Electrical and Electronics Engineers)1394、USB(Universal Serial Bus)、電力線搬送、電話線などの有線でも、IrDA(Infrared Data Association)のような赤外線、ブルートゥース(登録商標)、802.11無線、携帯電話網、衛星回線、地上波デジタル網などの無線でも利用可能である。
【0021】
ユーザ端末3は、レシピをレシピ管理サーバ1に投稿するユーザや、レシピ管理サーバ1が管理するレシピ情報の検索や閲覧を行うユーザが使用する端末である。また、レシピ管理サーバ1から提示される推薦情報を閲覧するユーザが使用する端末でもある。
ユーザ端末3では、必要に応じて各種の送受信処理や表示処理などが実行される。また、ユーザ端末3は、例えば、通信機能を備えたPC(Personal Computer)やフィーチャーフォンやPDA(Personal Digital Assistant)、或いは、スマートフォンやタブレット端末などのスマートデバイスなどである。
【0022】
レシピ管理サーバ1は、図2に示すように、レシピ管理部1a、ユーザ管理部1b、食事情報取得部1c、利用周期特定部1d、提示時期算出部1e、提示時期調整部1f、推薦カテゴリ特定部1g、推薦レシピ抽出部1h、提示制御部1iを備えている。
【0023】
レシピ管理部1aは、ユーザが投稿したレシピ情報(レシピタイトルと使用食材と調理方法とレシピが属する料理カテゴリ情報などがレシピ情報を投稿したユーザを識別する識別情報と紐付けられた情報)をレシピDB51に記憶することにより管理する。例えば、あるユーザが投稿した「野菜カレー」のレシピは、カテゴリ「カレー」に属するレシピであり、使用食材情報として、「じゃがいも」、「人参」、「タマネギ」、「ブロッコリー」、「トマト」、「ほうれん草」や、調味料(「塩」や「胡椒」など)や、それに準ずるもの(例えば「カレールー」など)が紐付けられて記憶される。
【0024】
また、レシピ管理部1aは、投稿されたレシピに対して投稿された作成レポートをレシピ毎に管理する。作成レポートは、投稿されたレシピを利用して他のユーザが実際に料理を行った際に、当該レシピに対する感想(例えば、料理を行ったユーザが感じた料理のおいしさや調理手順の手軽さなど)を記したレポートである。作成レポートは、レシピDB51の各レシピに紐付けられて管理される。
【0025】
ユーザ管理部1bは、レシピ管理サーバ1が提供する各種のサービスを利用するユーザの情報を管理するために、種々の処理を行う。
例えば、ユーザを一意に特定可能なユーザIDに対して、氏名、年齢、性別、連絡先(電話番号や電子メールアドレス等)を紐付け、ユーザDB50へ記憶することにより管理を行う。また、ユーザDB50からユーザ情報を取得する処理を行う。
【0026】
食事情報取得部1cは、対象となるユーザの処理時点よりも過去に飲食した食事情報や処理時点よりも未来に飲食されると推定される食事情報などを食事情報DB53から取得する処理を行う。
食事情報DB53に記憶される各種の食事情報については、後述する。
【0027】
食事情報の取得対象となる期間は、例えば、直近の1ヶ月間などのように所定期間であってもよいし、ユーザによって異なる期間であってもよい。また、後述する料理カテゴリの利用周期に応じて期間を決めてもよい。
具体的な各例については、後述する。
食事情報取得部1cは、所定期間或いは算出された取得対象となる期間に応じて取得起算時点を決定し、該取得起算時点から現在までの食事情報を取得する。例えば、取得対象となる期間が10日であった場合、現在から10日前となる取得起算時点を算出し、そこから現在までの食事情報を取得する。
【0028】
また、食事情報の取得対象となるユーザには、いくつかの例が考えられる。例えば、ログインを行い食事に関する推薦情報の提示を受けるユーザ自身であってもよいし、推薦情報の提示を受けるユーザが指定したユーザ(例えば当該ユーザの夫など)であってもよい。更に、情報の提示を受けるユーザ及びその関連ユーザの中で、食事情報が最も充実しているユーザであってもよい。
勿論、複数のユーザ(例えば、情報の提示を受けるユーザとその夫と子供の3人のユーザ)全ての食事情報を取得してもよい。
【0029】
利用周期特定部1dは、過去の食事情報に基づいて、各料理カテゴリについて当該料理カテゴリに属する料理を利用する周期をユーザ毎に算出する。料理カテゴリに属する料理の利用とは、当該料理カテゴリに属する料理に関するレシピの利用(レシピを利用したと推定される状態を含む)や、当該料理カテゴリに属する料理の飲食(即ち外食による食事など)である。即ち、当該料理カテゴリに属する料理を何らかの形で飲食したことを指す。
【0030】
提示時期算出部1eは、料理カテゴリの利用周期と最終利用時期に基づいて、料理カテゴリ毎の提示時期を算出する。最終利用時期とは、料理カテゴリを最後に利用した時期(或いは時間)を示す情報である。
尚、提示時期算出部は、階層化された料理カテゴリにおいて、全てのカテゴリレベル毎に算出してもよいし、所定のカテゴリレベルのみ算出してもよい。また、料理カテゴリ毎に異なるカテゴリレベルについて算出してもよいし、料理カテゴリ毎に異なる数のカテゴリレベルについて算出してもよい。
【0031】
提示時期調整部1fは、料理カテゴリ毎に算出された提示時期に対して、種々の要因に応じた調整を行う処理を実行する。即ち、提示時期が3日後となっている料理カテゴリに対して、後述する各種の要因を考慮して一日早い2日後を提示時期とする(即ち調整する)処理などを実行する。
また、類似した料理カテゴリの利用に基づいた提示時期の調整を行う。例えば、「そば」の料理カテゴリの利用が直近にあった場合、「そば」と類似する「うどん」の料理カテゴリの提示時期を延期する(即ち後ろに延ばす)処理などを実行する。
各種の具体的な例については、後述する。
【0032】
推薦カテゴリ特定部1gは、提示時期算出部1eや提示時期調整部1fによって最終的に決定された提示時期を参照し、提示時期が到来した料理カテゴリを推薦カテゴリとして特定する処理を実行する。
【0033】
推薦レシピ抽出部1hは、推薦カテゴリに属するレシピを抽出する処理を実行する。
【0034】
提示制御部1iは、抽出されたレシピをユーザ端末3へ提示するための処理を実行する。提示する情報が複数ある場合には、各情報に提示優先度を付与してもよい。即ち、提示優先度に応じて情報をユーザ端末3へ提示する。
例えば、推薦情報の提示の一例として複数のレシピの提示を行う場合に、提示優先度に応じて各レシピがユーザ端末3の画面上に並ぶように情報を送信する。
【0035】
レシピ管理サーバ1には、他にも、各種情報を送受信する機能や、ユーザのログイン操作に対する認証処理などを実現するために必要な各部が設けられている。認証処理は、ユーザ端末3から送信されたログイン情報としてのユーザID(Identification)とログインパスワードを、ユーザDB50に記憶された認証情報と照合する処理である。
【0036】
<2.ハードウェア構成>

図3は、図1に示したレシピ管理サーバ1とユーザ端末3のハードウェア、及び、ユーザDB50とレシピDB51と検索DB52と食事情報DB53とウェブページDB54のハードウェアを例示する図である。それぞれのサーバや端末、DBにおけるコンピュータ装置のCPU(Central Processing Unit)101は、ROM(Read Only Memory)102に記憶されているプログラム、又は記憶部108からRAM(Random Access Memory)103にロードされたプログラムに従って各種の処理を実行する。RAM103にはまた、CPU101が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU101、ROM102、およびRAM103は、バス104を介して相互に接続されている。このバス104には、入出力インターフェース105も接続されている。
入出力インターフェース105には、キーボード、マウス、タッチパネルなどよりなる入力装置106、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、有機EL(Electroluminescence)パネルなどよりなるディスプレイ、並びにスピーカなどよりなる出力装置107、HDD(Hard Disk Drive)やフラッシュメモリ装置などより構成される記憶部108、通信ネットワーク2を介しての通信処理や機器間通信を行う通信部109が接続されている。
入出力インターフェース105にはまた、必要に応じてメディアドライブ110が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア111が適宜装着され、リムーバブルメディア111に対する情報の書込や読出が行われる。
【0037】
このようなコンピュータ装置では、通信部109による通信によりデータやプログラムのアップロード、ダウンロードが行われたり、リムーバブルメディア111を介したデータやプログラムの受け渡しが可能である。
CPU101が各種のプログラムに基づいて処理動作を行うことで、レシピ管理サーバ1、ユーザ端末3、ユーザDB50、レシピDB51、検索DB52、食事情報DB53、ウェブページDB54のそれぞれにおいて後述する情報処理や通信が実行される。
尚、レシピ管理サーバ1、ユーザ端末3、及び、ユーザDB50、レシピDB51、検索DB52、食事情報DB53、ウェブページDB54を構成するそれぞれの情報処理装置は、図3のようなコンピュータ装置が単一で構成されることに限らず、システム化された複数のコンピュータ装置によって構成されてもよい。複数のコンピュータ装置は、LANなどによりシステム化されていてもよいし、インターネットなどを利用したVPN(Virtual Private Network)などにより通信可能な状態で遠隔地に配置されたものでもよい。
【0038】
レシピ管理サーバ1としての各機能は、情報処理装置においてCPU101でプログラムに応じて実行される処理により実現される機能である。但し以下において説明する各構成の処理の全部又は一部をハードウェアにより実現してもよい。
また各機能をソフトウエアで実現する場合に、各機能がそれぞれ独立したプログラムで実現される必要はない。一つのプログラムにより複数の機能の処理が実行されてもよいし、一つの機能が複数のプログラムモジュールの連携で実現されてもよい。
【0039】
<3.DB>

レシピ管理サーバ1が管理する各DBの説明を行う。各DBは、レシピ管理サーバ1がアクセス可能とされていればどのような形態で実現されていてもよい。例えばレシピ管理サーバ1と同一システム内の記憶部に各DBのすべてが形成されていてもよいし、各DBの一部又は全部が別体とされていてもよいし、遠隔地等のコンピュータシステムに設けられていてもよい。もちろん各DBが一つの装置(例えば一つのHDD等)内に形成されている必要はない。また各DBのそれぞれが、それぞれ一つのDBとして構成される必要もない。例えばユーザDB50として記憶される情報が、複数のユーザDB(例えばログイン用のユーザDBと取引用のユーザDBなど)により記憶管理されてもよい。以下説明する各DBは、実施の形態の処理に関連する情報の記憶部を、それぞれ一つのDBの形態で例示したものに過ぎない。
【0040】
[3−1.ユーザDB]
ユーザDB50にはレシピ管理サーバ1が提供するサービスを受けるユーザの情報が記憶される。例えば、一人のユーザを特定可能な一つのユーザID(Identification)に対して、ログインパスワード、氏名、年齢、性別、メールアドレスなどの個人的な情報が紐付けられて記憶される。また、料理カテゴリ毎の利用周期や常用食事情報などもユーザIDに紐付けられて記憶される。
【0041】
ここで、常用食事情報について説明する。常用食事情報はユーザが毎日のように飲食している食事の情報であり、ユーザ毎に異なる。例えば、あるユーザにとっての常用食事は、「ご飯」や「パン」や「味噌汁」である。これらのレシピは、利用周期を算出することが不適当なほど毎日のように飲食されているものである。このようなレシピ(或いは料理カテゴリ)は、提示時期などの算出の対象とはならず、ユーザに提示する推薦情報に含まれなくてもよい。
常用食事情報として記憶されるレシピ(或いは料理カテゴリ)は、利用周期が所定期間よりも短い(例えば1日)料理カテゴリであって、それ以上細分化できない料理カテゴリ(即ち下位の料理カテゴリが存在しない)に属している。また、そのようなレシピは、幅広く他のレシピと組み合わせられるものである。具体的には、あらゆる食事にサラダを付けるユーザにとっては、サラダが常用食事となる。即ち、そのようなユーザに対して、サラダの利用周期から提示時期を算出し、情報をユーザに提供することは、ユーザにとって価値のある情報提供にはなり難い。
【0042】
尚、利用周期が所定期間よりも短かったとしても下位の料理カテゴリが存在する場合には、下位の料理カテゴリにおいて提示時期の算出が行われる。具体的には、「麺類」の料理カテゴリの利用周期が1日であっても、その下位カテゴリである「ラーメン」、「パスタ」、「うどん」、「そば」などでは、1日よりも長い適切な利用周期となる可能性が高い。
従って、「ラーメン」や「パスタ」の料理カテゴリの利用周期から提示時期が算出される。
【0043】
ユーザDB50には、他にも、ユーザ毎の嗜好情報が記憶されてもよい。嗜好情報は、ユーザによるレシピ情報や料理情報に関する検索や閲覧などの挙動に応じてレシピ管理サーバ1が判定したユーザの好みの食材(嗜好食材)や嫌いな食材(非嗜好食材)の情報や、ユーザに関わる投稿情報(テキスト情報やタグ情報や画像情報など)に基づいてレシピ管理サーバ1が判定したユーザの好みの食材(嗜好食材)や嫌いな食材(非嗜好食材)である。嗜好情報は、ユーザがレシピ検索を行った際に利用される。
【0044】
具体的に、ユーザDB50に記憶される各種情報について図4を参照して説明する。
図4には、ユーザDB50に記憶されたユーザAに関する情報の一部が示されている。ユーザIDに対して、ログインパスワード、氏名、年齢、性別、メールアドレスが紐付けられて記憶されている。また、料理カテゴリ毎の利用情報が記憶されている。利用情報とは、料理カテゴリIDに対して利用周期や最終利用時期や提示時期が紐付けられた情報であり、ユーザに推薦情報を提示するために用いられる情報である。
【0045】
[3−2.レシピDB]
レシピDB51は、ユーザから投稿されたレシピの情報が記憶されるDBである。具体的には、それぞれのレシピを識別可能なレシピIDに対して、レシピを投稿したユーザを特定するユーザIDと、投稿日時情報と、レシピが属するカテゴリ情報と、レシピの使用食材情報(分量などを含む)と、レシピの調理手順と、料理画像(完成した料理の画像や調理途中の料理の画像)などの画像情報と、レシピを実際に利用した(料理を作成した)他のユーザによって投稿された作成レポートを特定する作成レポートIDと、が紐付けられて記憶される。
【0046】
また、レシピの詳細ページのURL(Uniform Resource Locator)情報がレシピIDに紐付けられて記憶されてもよい。
更に、レシピDB51には、各レシピに対して投稿された作成レポートの情報が記憶される。作成レポートの情報としては、レポート内容を示すテキストデータや調理した料理の画像や投稿者を識別可能なユーザIDや投稿日時情報などが記憶される。
【0047】
[3−3.検索DB]
検索DB52は、検索クエリと対応した検索結果が記憶されるDBである。具体的には、「カレー」や「ハンバーグ」などの料理名や「きのこ」や「トマト」などの食材名などの検索クエリに応じて、複数のレシピが検索結果として紐付けられて記憶される。
例えば、ユーザが指定した検索クエリに応じて検索処理が実行され、その結果抽出された検索結果が検索クエリに紐付けられて検索DB52に記憶される。このように紐付けが行われることで、新たな検索要求があった際に検索処理を実行せずに以前の検索結果を利用した検索結果の提示を行うことができる機会が増える。
尚、予め定期的に検索キーワードを用いた検索処理を実行しておき、その結果抽出された検索結果が検索キーワードに紐付けられて検索DB52に記憶されるようにしてもよい。
【0048】
[3−4.食事情報DB53]
食事情報DB53には、ユーザが過去に飲食した食事情報や今後飲食すると推定される食事情報が履歴情報として記憶される。
例えば、過去に利用した或いは未来に利用が推定されるレシピの情報や、過去に飲食した或いは未来に飲食が推定される料理の情報や料理カテゴリの情報などである。食事情報DB53に記憶される各食事情報には、料理カテゴリの情報ユーザの食事情報などが記憶される。
過去に飲食した食事情報として食事情報DB53に記憶される情報は、例えば、履歴情報に含まれるレシピの利用履歴、閲覧履歴や検索履歴などに基づいて、ユーザが利用したレシピであると特定又は推定されたレシピの情報や、履歴情報に含まれる飲食店やメニューの閲覧履歴や検索履歴などに基づいて、外食などでユーザが飲食したと特定又は推定された料理や料理カテゴリの情報や、投稿情報に含まれるテキスト情報やタグ情報や画像情報などに基づいて、ユーザが飲食したと特定又は推定された料理や料理カテゴリの情報などである。尚、予め飲食給食の献立表などから得た情報であってもよい。
未来に飲食されると推定される食事情報として食事情報DB53に記憶される情報は、上記と同様に予め飲食される料理のスケジュールに関する情報(例えば給食の献立情報や社員食堂の献立情報など)から得た情報である。また、利用頻度の高い飲食店などの料理を提供するサービスに関する情報に基づいて特定又は推定された料理や料理カテゴリの情報であってもよい。尚、これらの情報は、飲食店などの料理を提供するサービスに関わるウェブページなどから取得してもよいし、ユーザによって入力された情報を取得してもよい。
食事情報DB53に記憶される履歴情報としての各食事情報には、料理カテゴリの情報が含まれる。
具体的には、図5に示すように、ユーザを特定するユーザIDに対して、複数の料理カテゴリの利用履歴が食事情報として記憶される。利用履歴一つに対して、利用日時(利用時期)、料理カテゴリID、取得ルート、利用形態が紐付けられて記憶される。
【0049】
図5は、利用日時順に履歴が並べられている例である。料理カテゴリIDは、料理カテゴリを一意に特定可能なものである。
【0050】
ここで、料理カテゴリについて説明する。料理カテゴリは階層化されており、例えば「和食」「洋食」などの大分類としての種別、「日本料理」「中華料理」「イタリア料理」「フランス料理」「タイ料理」という地域レベルの種別、「カレー」「ハンバーグ」「ラーメン」などの料理名に応じたレベルの種別、さらには「ビーフカレー」「チキンカレー」「キーマカレー」などの細かいレベルの種別などがある。
【0051】
尚、料理種別のレベルは多様であり、例えば下記(A)に示すように中分類は肉料理、魚料理、野菜料理のような主たる食材の分類としてもよいし、下記(B)のように、大分類は「主食」「おかず」「副菜」などとしてもよい。
(A)大分類:和食(その他:洋食など)
中分類:肉料理
細分類:肉じゃが/牛肉のしぐれ煮など
中分類:魚料理
細分類:鯖の味噌煮/鮭のちゃんちゃん焼きなど
中分類:野菜料理
細分類:焼き野菜のロースト/きんぴらごぼうなど
(B)大分類:主食(その他:おかず/副菜など)
中分類:肉料理
細分類:ハンバーグ/コロッケなど
中分類:魚料理
細分類:タコのフリット/タラのムニエルなど
中分類:野菜料理
細分類:ポトフ/野菜のトマト煮など
【0052】
以下の例においては料理カテゴリが3段階に階層化されている例を用いて各説明を行う。
料理カテゴリにおける大分類は「ご飯もの」、「麺類」、「肉料理」、「魚料理」、「カレー」などのように主たる食材によって分類されている。
そして、「麺類」の料理カテゴリの下位カテゴリ(中分類)には、「ラーメン」、「パスタ」、「うどん」、「そば」などの料理カテゴリが設けられている。
更に、「ラーメン」の料理カテゴリの下位カテゴリ(小分類)には、「醤油ラーメン」、「味噌ラーメン」、「塩ラーメン」、「豚骨ラーメン」などの料理カテゴリが設けられている。
【0053】
以降の説明においては、大分類の料理カテゴリ(「麺類」など)をカテゴリレベル1の料理カテゴリと記載する。また、その下位の料理カテゴリ(「ラーメン」などの中分類)をカテゴリレベル2の料理カテゴリと記載する。同様に、更に下位の料理カテゴリ(「醤油ラーメン」などの小分類)をカテゴリレベル3の料理カテゴリと記載する。即ち、下位カテゴリ(細分化されたカテゴリ)ほどカテゴリレベルを示す数値が増加するように設定されている。
【0054】
各料理カテゴリには、各種のレシピが属している。例えば、「我が家の味噌ラーメン」というレシピは、「味噌ラーメン」の料理カテゴリに属するレシピであり、「ラーメン」の料理カテゴリに属するレシピでもあり、更に「麺類」の料理カテゴリに属するレシピでもある。
【0055】
図5の説明に戻ると、料理カテゴリIDは、階層化された料理カテゴリにおいて料理カテゴリ間の関係が分かるように構成されている。
具体的には、カテゴリレベル1の料理カテゴリを示す二桁の数値と、カテゴリレベル2の料理カテゴリを示す二桁の数値と、カテゴリレベル3の料理カテゴリを示す一桁の数値で構成されている。例えば、「C01002」とされた料理カテゴリIDは、カテゴリレベル1の料理カテゴリを特定する数値「01」とカテゴリレベル2の料理カテゴリを特定する数値「00」とカテゴリレベル3の料理カテゴリを特定する数値「2」を含んで構成されている。
即ち、カテゴリIDが「C01002」とされた料理カテゴリと「C01013」とされた料理カテゴリは、カテゴリレベル1において同じ料理カテゴリに属すと共に、カテゴリレベル2において異なる料理カテゴリに属していることが分かる。
【0056】
続いて、取得ルートについて説明する。取得ルートは、当該利用履歴としての食事情報をどのような経路で取得したかを示す情報である。例えば、取得ルートが「SNS(Social Networking Service)投稿」とされた履歴情報は、SNSに投稿された記事に基づいて当該料理カテゴリに属する料理を飲食したと推定された履歴情報である。また、「レシピ利用」とされた履歴情報は、作成レポートの投稿やレシピの閲覧履歴などによって当該料理カテゴリに属する料理を飲食したと推定された履歴情報である。更に、「給食情報」とされた履歴情報は、給食の献立表などの料理のスケジュールに関する情報から当該料理カテゴリに属する料理を飲食したと推定された履歴情報である。これらの情報は、例えば、履歴情報の確からしさ(即ち、本当に飲食したかどうかの確度)として用いられる。
【0057】
最後に利用形態について説明する。
利用形態は、料理カテゴリの利用形態を示している。例えば、定食屋などの店舗での飲食が推定されたものであれば、「外食」とされる。また、取得ルートが「レシピ利用」であれば、レシピを印刷することによってレシピの利用(即ち料理カテゴリの利用)が推測された場合には「印刷」とされ、作成レポートの投稿によってレシピの利用が推測された場合には「作成レポート投稿」とされ、レシピの所定時間の閲覧によってレシピの利用が推測された場合には「閲覧」とされる。利用形態の情報は、例えば、取得ルートと合わせて履歴情報の確からしさとして用いられる。
【0058】
[3−5.ウェブページDB]
ウェブページDB54には、レシピ管理サーバ1がユーザに提供する各種ウェブページのデータが記憶される。具体的には、レシピ検索ページや特集ページや検索結果ページやレシピ詳細ページやユーザページなどのウェブページデータである。
ウェブページデータとしては、ウェブページのURL(Uniform Resource Locator)情報と各ウェブページ上に配置されるオブジェクト(画像やテキストやバナーなど)の配置情報が記憶される。配置情報とは、ウェブページ上における各オブジェクトの配置態様(位置や大きさ、色等)が記載された情報である。
尚、ウェブページDB54に記憶される情報は、例えば、HTML(Hyper Text Markup Language)やXHTML(Extensible HyperText Markup Language)などの構造化文書ファイルで記憶されてもよい。
【0059】
<4.処理の流れ>

レシピ管理サーバ1が実行する各種処理について説明する。

[4−1.第1の実施の形態]
先ず、ユーザが食事のための推薦情報(推薦カテゴリや推薦レシピの情報)を要求する際の第1の実施の形態の全体の流れについて、図6を参照して説明する。
【0060】
ユーザが推薦情報を得るためには、レシピ管理サーバ1が運営するサービスにログインすることが必要である。
従って、ユーザがユーザ端末3を用いてログイン画面を表示させる操作を行ったことに応じ、ユーザ端末3はステップS101において、ログイン画面情報(即ちログイン画面を表示させるためのウェブページデータ)の要求処理を実行する。
【0061】
ログイン画面情報要求処理によりユーザ端末3からレシピ管理サーバ1へログイン画面情報要求が送信されると、レシピ管理サーバ1はステップS201において、ログイン画面情報送信処理を実行する。
これにより、例えば、レシピ管理サーバ1から受信したレシピサイトのログイン画面情報(ウェブページデータ)に応じたウェブページがユーザ端末3上に表示される。
尚、レシピ管理サーバ1はこのとき、ログイン画面をユーザ端末3上に表示させたことを履歴(即ちログイン画面の閲覧履歴)として記憶してもよい。
【0062】
次に、ユーザ端末3はステップS102において、ユーザの入力操作に応じたログイン情報(ユーザIDとログインパスワード)をレシピ管理サーバ1へ送信するログイン情報送信処理を実行する。
【0063】
ユーザ端末3からレシピ管理サーバ1へログイン情報が送信されると、レシピ管理サーバ1はステップS202において認証処理を実行し、続くステップS203においてログイン履歴を記憶する処理を実行し、ステップS204において認証結果通知処理を実行する。
具体的には、レシピ管理サーバ1は、ユーザ端末3上で入力されたユーザIDとパスワードをユーザDB50に記憶された情報と比較して当該ユーザのログイン可否を判定し、当該ログイン可否情報を認証結果としてユーザ端末3へ通知する。尚、認証結果をユーザ端末3へ送信すると共に、レシピサイトのトップページのウェブページデータを送信してもよい。これにより、ユーザ認証がなされると共に、ユーザ端末3上にレシピサイトのトップページが表示される。
【0064】
尚、図6に示す一連の流れは、ステップS202の認証処理においてログイン可と判定された場合を示している。ステップS202においてログイン不可と判定した場合は、ユーザ端末3は再度ステップS102の処理を実行し、これに応じてレシピ管理サーバ1はステップS202の処理を実行する。
【0065】
続いて、ユーザ端末3はステップS103において、ユーザ操作に基づいて推薦情報を要求する処理を実行する。このユーザ操作は、例えば、ウェブページ上に設けられた推薦情報を得るための「お勧め情報を見る」ボタンを押下する操作などである。
【0066】
推薦情報要求がユーザ端末3からレシピ管理サーバ1へ送信されると、レシピ管理サーバ1はステップS205において、推薦情報取得処理を実行する。推薦情報取得処理は、ユーザ端末3に推薦情報として提示する料理カテゴリ(即ち推薦カテゴリ)を取得する処理である。
ステップS205の推薦情報取得処理の詳細について、図7を参照して説明する。
レシピ管理サーバ1は、ステップS301において一つの料理カテゴリを選択し、続くステップS302において当該料理カテゴリの提示時期情報を取得する。
尚、料理カテゴリの提示時期は、図6及び図7の各処理を実行する前にバッチ処理などによって予め算出され、図4に示すユーザDB50に記憶されているように構成してもよい。尚、バッチ処理の詳細については後述する。
【0067】
続いて、レシピ管理サーバ1はステップS303において、当該料理カテゴリについて提示時期が条件を満たしているか(即ち現時刻において提示時期が経過したか)を判定する。
提示時期が条件を満たしていると判定した場合、レシピ管理サーバ1はステップS304において、当該料理カテゴリを推薦カテゴリとして選択する。
【0068】
ステップS304の後、或いは、ステップS303において提示時期が条件を満たしていないと判定した後、レシピ管理サーバ1はステップS305において、処理を行っていない料理カテゴリがあるかどうかを判定する。
処理を行っていない料理カテゴリがあると判定した場合、レシピ管理サーバ1はステップS301乃至S305の処理を再度実行する。
一方、処理を行っていない料理カテゴリがないと判定した場合、図7に示す一連の処理を終了する。
即ち、図7に示す処理を実行することにより、提示時期が到来した料理カテゴリが推薦カテゴリとして選択される。
【0069】
図6の説明に戻る。
推薦情報として推薦カテゴリの情報を取得したレシピ管理サーバ1は、ステップS206において優先度付与処理を実行する。
尚、優先度付与処理は、推薦カテゴリが複数ある場合に実行する処理であり、取得した推薦カテゴリが一つであった場合はステップS206の処理を実行しない。
【0070】
優先度付与処理には、いくつかの例が考え得る。例えば、最終利用時期からの経過時間が長い推薦カテゴリの優先度を上げることが考えられる。具体的には、最終利用時期が昨日である推薦カテゴリAと1週間前である推薦カテゴリBでは、推薦カテゴリAよりも推薦カテゴリBの優先度を上げる。
【0071】
また、優先度付与処理の他の例として、利用周期が短い推薦カテゴリAの優先度を上げることが考えられる。具体的には、利用周期が1週間の推薦カテゴリAと1ヶ月の推薦カテゴリBでは、推薦カテゴリBよりも推薦カテゴリAの優先度を上げる。これは、優先度の低い推薦カテゴリが利用されなかった場合の影響を考えてのことである。即ち、1週間の利用周期が1日延びた場合と1ヶ月の利用周期が1日延びた場合では、1週間の利用周期が1日延びた場合の方が相対的に影響が大きいと考えられる。従って、利用されなかった場合の影響が大きい推薦カテゴリの優先度を上げる。
【0072】
推薦カテゴリに優先度を付与したレシピ管理サーバ1は、ステップS207において提示処理を行う。
提示処理では、レシピ管理サーバ1からユーザ端末3に向けて優先度が付与された推薦カテゴリの情報が送信される。例えば、優先度順に推薦カテゴリの情報が配置されたウェブページを表示するためのHTMLデータが送信される。
【0073】
[4−2.バッチ処理]
レシピ管理サーバ1が実行するバッチ処理について説明する。バッチ処理では、料理カテゴリ毎の提示時期を算出する処理を実行する。
具体的に、図8を参照して説明する。
【0074】
図8に示すバッチ処理は、一人のユーザに対しての提示時期を算出する処理である。即ち、全ユーザに対して提示時期を算出する場合には、図8に示す一連の処理をユーザの数だけ繰り返して実行することとなる。また、バッチ処理を行う必要のあるユーザが一人である場合は、図8に示す一連の処理を1回だけ行えばよい。
【0075】
先ず、レシピ管理サーバ1はステップS401において、レシピ情報の取得対象となるユーザを特定する処理を実行する。推薦情報の提示対象となるユーザを対象ユーザと記載するのに対して、レシピ情報の取得対象となるユーザは推薦情報の提示のための情報の提供元のユーザであることから情報提供元ユーザと記載する。
即ち、情報提供元ユーザの情報に基づいて決定された推薦情報を対象ユーザに提示する。
【0076】
対象ユーザと情報提供元ユーザは必ずしも同一のユーザとは限らない。例えば、ユーザAがユーザ端末3を用いてレシピ管理サーバ1のサービスを受ける場合を説明する。即ち、対象ユーザがユーザAとなる場合である。
このとき、情報提供元ユーザは、レシピ管理サーバ1のサービスを受けるユーザA自身であってもよいし、ユーザAが指定したユーザBであってもよい。
【0077】
具体的には、ユーザAが自身の食事情報に基づいて推薦情報を受け取る場合、対象ユーザ及び情報提供元ユーザは共にユーザAとなる。
また、ユーザAが配偶者であるユーザBの食事情報に基づいて推薦情報を受け取る場合、対象ユーザはユーザAとなり情報提供元ユーザはユーザAが指定したユーザBとなる。
換言すれば、情報提供元ユーザを決めることは、料理カテゴリの提出時期を算出するために誰の食事情報に基づくかを決めることとなる。
【0078】
続いて、レシピ管理サーバ1はステップS402において、情報提供元ユーザの食事情報を食事情報DB53から取得する処理を実行する。
食事情報取得処理についてはいくつかの例を説明する。ここでは、図9を参照して一つの例を説明し、他の例については後述する。
レシピ管理サーバ1は、食事情報取得処理において、ステップS501のように直近の所定期間における食事情報を取得する。所定期間は、例えば1ヶ月などのように固定の数値(期間)として定められている。固定の所定期間は、料理カテゴリの利用周期を算出するのに十分な期間であることが望ましい。即ち、一つの料理カテゴリが複数回利用される期間とすることが望ましい。
【0079】
図8の説明に戻る。
続いて、レシピ管理サーバ1はステップS403において、利用周期特定処理を実行する。
利用周期特定処理について、図10を参照して説明する。
利用周期特定処理は、情報提供元ユーザの食事情報(先のステップS402において取得した情報)に基づいて料理カテゴリ毎の利用周期を特定(算出)する処理である。
【0080】
先ず、レシピ管理サーバ1はステップS601において、一つの料理カテゴリを選択する処理を実行する。
続いて、レシピ管理サーバ1はステップS602において、選択された料理カテゴリに常用食事情報が含まれているか(所属しているか)を確認する。
【0081】
常用食事情報が含まれていないと判定した場合、レシピ管理サーバ1は、選択された料理カテゴリの最後の利用日時(最終利用時期)をステップS603で取得し、更にもう一つ前の利用日時(利用時期)をステップS604で取得する。各利用日時の情報は、食事情報DB53から取得する。
利用日時とは、先に説明した料理カテゴリを利用した時間(或いは日付情報でもよい)であり、即ち料理カテゴリに属するレシピを利用した日時や料理カテゴリに属する料理を外食などで飲食した日時である。
続くステップS605では、これら二つの利用日時の差分から利用周期を算出する処理をレシピ管理サーバ1は実行する。
尚、二つの利用日時ではなくもっと多くの利用日時から平均的な差分を算出して利用周期としてもよい。
【0082】
ステップS605を実行した後、レシピ管理サーバ1はステップS606において、処理を行っていない料理カテゴリがあるかどうかを確認する。
処理を行っていない料理カテゴリがあると判定した場合、レシピ管理サーバ1はステップS601の処理を再度実行する。
一方、処理を行っていない料理カテゴリはないと判定した場合、レシピ管理サーバ1は図10に示す一連の処理を終了する。
【0083】
尚、ステップS602において常用食事情報が含まれていると判定した場合、ステップS603乃至S605の各処理を実行せずにステップS606の処理を実行する。これは、常用食事情報が含まれた料理カテゴリは、前述のように、推薦情報として提示することは不適当であるため、利用周期を算出する必要が無いためである。
【0084】
再び図8の説明に戻る。
全ての料理カテゴリについての利用周期を算出したレシピ管理サーバ1は、ステップS404において、利用周期から提示時期を算出する処理を実行する。
提示時期は、最終利用時期と利用周期から次回の利用が予想される時期を提示時期として算出する。具体的には、例えば最終利用時期が3日前であり利用周期が10日である場合、提示時期は7日後となる。
図8に示す一連の処理を実行することにより、料理カテゴリ毎の提示時期が算出される。そして、その後、ユーザから推薦情報の要求を受信した場合に、図6のステップS205乃至S207の各処理を実行することにより、提示時期に基づいた推薦カテゴリが提示される。
【0085】
尚、ユーザからの推薦情報の要求を受信するまでに提示時期が渡過した料理カテゴリについては、ユーザに提示してもしなくてもよい。このとき、渡過した時間の長さによって提示するかどうかを決定してもよい。具体的には、渡過してからそれ程時間が経過していない場合は当該料理カテゴリを推薦カテゴリとしてユーザに提示するが、渡過してからの時間経過が長い場合には当該料理カテゴリを推薦情報として提示しないなどが考え得る。
もちろん、渡過した時間の長さによらずにユーザに推薦情報を提示してもよい。
【0086】
尚、図8のステップS404の提示時期の算出は、全ての料理カテゴリに対して行ってもよいし、一部の料理カテゴリに対して行ってもよい。一部の料理カテゴリに対して提示時期の算出を行う場合は、先の図10の利用周期特定処理においても一部の料理カテゴリの利用周期を算出すればよい。
一部の料理カテゴリに対して提示時期を算出する例としては、例えば、カテゴリレベル2の料理カテゴリに対して提示時期を算出することが考えられる。これは、カテゴリレベル1に属する料理カテゴリでは利用周期が短すぎるため提示時期が頻繁に来てしまうことや、カテゴリレベル3に属する料理カテゴリでは利用周期が長すぎるため提示時期が中々来ないことを考慮してのことである。
【0087】
[4−3.第2の実施の形態]
第2の実施の形態では、推薦情報として料理カテゴリ(推薦カテゴリ)を提示するのではなく、レシピ情報(推薦レシピ)を提示する。
具体的に、図6及び図11を参照して説明する。
【0088】
レシピ管理サーバ1は図6に示すように、ユーザ端末3から推薦情報要求を受信すると、ステップS205においてユーザに提示する推薦情報を取得し、続くステップS206において優先度を付与し、ステップS207において提示処理を実行する。
第2の実施の形態では、ステップS205の推薦情報取得処理の処理内容が異なる。
【0089】
第2の実施の形態における推薦情報取得処理の例を図11に示す。
推薦情報取得処理では、図11に示すように、レシピ管理サーバ1はステップS301乃至S304において、料理カテゴリ毎の提示時期を取得し、提示時期が到来した料理カテゴリについては推薦カテゴリとして選択する処理を実行する。これらの処理は、図7において同符号を付して説明した処理と同様の処理であるため、詳細な説明は省略する。
【0090】
推薦カテゴリを選択したレシピ管理サーバ1は、続くステップS306において、推薦カテゴリに属するレシピを推薦レシピとして抽出する処理を実行する。
例えば、推薦カテゴリが「カレー」である場合、料理カテゴリ「カレー」に属する「我が家のシーフードカレー」や「トマトたっぷりインドカレー」などのレシピが推薦レシピとして抽出される。
【0091】
尚、ステップS306の推薦レシピの抽出では、推薦カテゴリに属するレシピのうちユーザに推薦することが適切なレシピのみを推薦レシピとして抽出してもよい。
ユーザに推薦することが適切なレシピとは、例えば、ユーザの好みの食材を含むレシピや好まない食材を含まないレシピなどである。また、ユーザが調理可能な(例えば、調理方法において使用する調理器具をユーザが所持している)レシピやユーザが調理しやすい(例えば、頻繁に利用する調理工程や調理手法又は食材を含む)レシピなどを推薦レシピとして抽出する。これによって、ユーザにとってより適切なレシピを推薦レシピとして提示することができ、またユーザにとってより不適切なレシピが推薦レシピとして提示されてしまうことを防止することができる。
【0092】
全ての料理カテゴリに対して図11の処理を終え、推薦レシピを抽出したレシピ管理サーバ1は、図6のステップS206によって優先度付与処理を実行し、ステップS207において提示処理を実行する。
ステップS206の優先度付与処理では、推薦レシピに対する優先度付与処理を行う。優先度は、優先度を高くすべき推薦カテゴリを決定すると共に、高い優先度を付与された推薦カテゴリに属する推薦レシピを高くしてもよい。また、何れの料理カテゴリに属するかは考慮せずに推薦レシピ毎に優先度を付与してもよい。
この場合、例えば、ユーザの好みの食材を含むレシピやユーザの好まない食材を含まないレシピやユーザが調理可能なレシピやユーザが調理しやすいレシピなどの優先度を高くすることが考えられる。また、ユーザに提示することが不適切なレシピの優先度を低くしてもよい。更に、ユーザが今まで利用したことのないレシピの優先度を高くしてもよい。
【0093】
ステップS207の提示処理では、レシピ管理サーバ1からユーザ端末3に向けて優先度が付与された推薦レシピの情報が送信される。例えば、優先度順に推薦レシピの情報が配置されたウェブページを表示するためのHTMLデータが送信される。
【0094】
[4−4.バッチ処理の第2例]
バッチ処理の第2例について、図12及び図13を参照して説明する。
バッチ処理の第2例では、算出した提示時期を調整する処理を実行する。
【0095】
先ず、レシピ管理サーバ1は図12に示すステップS401乃至S404を実行することにより、情報提供元ユーザの食事情報を取得し、特定した料理カテゴリ毎の利用周期から提示時期を算出する処理を実行する。
ステップS401乃至S404の各処理については、同符号を付して図8で説明した各処理と同様の処理であり、詳述は省く。
【0096】
提示時期を算出したレシピ管理サーバ1は、続くステップS405において、提示時期を調整する処理を実行する。
提示時期調整処理については、いくつかの例が考えられる。先ずは一つ目の例について、図13を参照して説明する。
【0097】
先ず、レシピ管理サーバ1はステップS701において、提示時期算出処理(ステップS404)の対象となった料理カテゴリのうちの一つを選択する。即ち、提示時期を算出した料理カテゴリを一つ選択する。
続いて、レシピ管理サーバ1はステップS702において、上位カテゴリが共通の他料理のカテゴリの食事情報(利用履歴)を食事情報DB53から取得する。
【0098】
具体的に説明すると、例えば、料理カテゴリ「麺類」の下位カテゴリには「ラーメン」、「パスタ」、「うどん」、「そば」などの料理カテゴリが属している。ステップS701において料理カテゴリ「うどん」が選択された場合、上位カテゴリが共通の他料理カテゴリは「ラーメン」、「パスタ」、「そば」となる。従って、ステップS702の処理は、「ラーメン」、「パスタ」、「そば」の料理カテゴリについての利用履歴を取得する処理となる。
【0099】
尚、ステップS702で取得する利用履歴の情報は、バッチ処理のステップS401で情報提供元とされたユーザに関するものである。例えば、情報提供元ユーザが複数人である場合は、利用履歴の取得も当該複数人に対して行う。
【0100】
続いて、レシピ管理サーバ1はステップS703において、他料理カテゴリ(ここでの一例としては「ラーメン」、「パスタ」、「そば」の料理カテゴリ)毎の最終利用時期について、直近の所定期間(所定時間でもよい)内であるか否かを判定する。即ち、直近の所定期間内に他料理カテゴリに属する料理の飲食を行ったか否かを判定する。所定期間としては、例えば3日などであり、ユーザに対して似たようなレシピや料理カテゴリを推薦することを回避する期間とされる。
尚、ステップS703の判定処理では、他料理カテゴリの中に一つでも直近の所定期間内に最終利用時期が位置している料理カテゴリがある場合には、最終利用時期が直近の所定期間内であると判定する。
【0101】
他料理カテゴリの最終利用時期が直近の所定期間内であると判定した場合、レシピ管理サーバ1はステップS704において提示時期を調整する処理を実行する。即ち、提示時期を後ろ倒しする。具体的には、例えば、利用周期が1週間である料理カテゴリ「うどん」の提示時期が到来したため、「うどん」を推薦カテゴリとしてユーザに提示したいが、料理カテゴリ「そば」の利用が昨日であったため、料理カテゴリ「うどん」の提示時期を本日から数日分後ろに移動させる。このときの移動量は、料理カテゴリ「そば」の最終利用時期(昨日)から料理カテゴリ「うどん」の利用周期である1週間の間が空くように(即ち昨日から7日後となるように)設定してもよいし、料理カテゴリ「うどん」自体は1週間利用していないことから、利用周期の半分程度(即ち3,4日)後ろ倒しとなるように設定してもよい。
他料理カテゴリ(換言すれば類似する料理カテゴリ)の最終利用時期に応じて提示時期を調整することにより、仮に提示したとしてもユーザによって選択される可能性が低いと推定される推薦情報の送信を制御し、相対的に優先度の低い推薦情報を送信することによって生じる処理負担の増加を抑制することができる。
【0102】
ステップS704の処理を実行した後、或いは、ステップS703において他料理カテゴリの最終利用時期が直近の所定期間内ではないと判定した後、レシピ管理サーバ1はステップS705において、対象の料理カテゴリ(即ち提示時期を算出した料理カテゴリ)の全てに対して上述の処理を適用したか否かを判定する。
対象の料理カテゴリのうち未処理の料理カテゴリがある場合、レシピ管理サーバ1は再びステップS701の処理を実行する。
対象の料理カテゴリのうち未処理の料理カテゴリがない場合、レシピ管理サーバ1は図13に示す一連の処理を終了することで、図12に示すバッチ処理を終了する。
【0103】
尚、上位カテゴリが共通の他の料理カテゴリの最終利用時期を取得する代わりに、上位カテゴリの最終利用時期を取得してもよい。下位カテゴリが利用された場合、下位カテゴリの最終利用時期が更新されると共に上位カテゴリの最終利用時期も更新されるためである。
【0104】
次に、提示時期調整処理の二つ目の例について、図14を参照して説明する。
二つ目の例は、ユーザが飲食した料理の属性を考慮した提示時期の調整である。
先ず、レシピ管理サーバ1はステップS801において、提示時期算出処理(ステップS404)の対象となった料理カテゴリのうちの一つを選択する。この処理は、図13のステップS701の処理と同様の処理である。
続いて、レシピ管理サーバ1はステップS802において、情報提供元ユーザ(食事情報の取得対象となるユーザ)の所定期間の食事情報を取得する。対象期間は、ステップS801で選択した料理カテゴリの利用周期によって決めてもよい。例えば、利用周期が1週間であれば、直近の1週間の食事情報(利用履歴)を取得する。
【0105】
次に、レシピ管理サーバ1はステップS803において、食事情報に基づいて所定期間内に飲食されたと推定される料理の属性情報を取得する。属性情報とは、例えば、味の種類などであり、「味噌味」や「カレー味」などである。
【0106】
そして、レシピ管理サーバ1はステップS804において、選択した料理カテゴリと共通の属性情報を持つ食事情報(利用履歴)があるかどうかを判定する。
具体的には、ステップS801において料理カテゴリ「カレー」が選択され、ステップS802において取得された食事情報によってユーザが所定期間内に「カレーうどん」を飲食したと推定される場合、ステップS804の判定処理では、共通の属性情報(カレー味)を持つ食事情報ありと判定する。
【0107】
ステップS804において、共通の属性情報を持つ食事情報ありと判定した場合(例えば料理カテゴリは異なるが似たような味の料理を直近の所定期間内に飲食していた場合)、レシピ管理サーバ1はステップS805において、提示時期を調整する処理を実行する。具体的には、共通の属性情報を持つ食事情報ありと判定された料理カテゴリの提示時期を長くなる(遅くなる)ように調整する。調整する処理に関しては、図12のステップS704と同様の処理であり、ステップS801で選択された料理カテゴリの提示時期(この例においては、「カレー」の利用周期)に応じて調整してもよい。
【0108】
ステップS805の処理を実行した後、或いは、ステップS804において共通の属性情報を持つ食事情報なしと判定した後、レシピ管理サーバ1はステップS806において、対象の料理カテゴリ(即ち提示時期を算出した料理カテゴリ)の全てに対して上述の処理を適用したか否かを判定する。
対象の料理カテゴリのうち未処理の料理カテゴリがある場合、レシピ管理サーバ1は再びステップS801の処理を実行する。
対象の料理カテゴリのうち未処理の料理カテゴリがない場合、レシピ管理サーバ1は図14に示す一連の処理を終了することで、図12に示すバッチ処理を終了する。
【0109】
[4−5.バッチ処理の第3例]
バッチ処理の第3例について、図12及び図15を参照して説明する。
バッチ処理の第3例では、過去の食事情報だけではなく未来の食事情報も加味して推薦情報の提示時期を調整する。
【0110】
レシピ管理サーバ1はステップS401を実行することによって、情報提供元ユーザを特定した後、ステップS402において食事情報を取得する処理を実行する。更にレシピ管理サーバ1は、ステップS403で利用周期を特定し、ステップS404で提示時期を算出する。提示時期は、全ての料理カテゴリについて算出してもよいし、一部の料理カテゴリについて算出してもよい。
【0111】
次にレシピ管理サーバ1が実行するステップS405の提示時期調整処理の流れは、先のバッチ処理の第2例で説明した流れ(図13のフローチャート)と同じであるが、処理内容は一部異なる。
バッチ処理の第3例における提示時期調整処理の例について、図15を参照して説明する。
【0112】
先ず、レシピ管理サーバ1は図15のステップS701において、提示時期算出の対象となった料理カテゴリのうちの一つを選択し、続くステップS706において上位カテゴリが共通の他料理カテゴリ(即ち類似の料理カテゴリ)の食事情報を取得する。
このとき、他料理カテゴリについての食事情報は、過去の食事情報(即ち利用履歴)だけでなく未来の食事情報も取得する。未来の食事情報は、ユーザが将来飲食する予定の食事の情報であり、前述したように給食の献立表や社員食堂の献立表や行きつけの定食屋の日替わり定食の情報などである。他にもユーザ自身によって入力された食事の予定(例えば外食の予定など)であってもよい。
【0113】
そして、レシピ管理サーバ1はステップS707において、過去の最終利用時期及び未来の利用時期が直近の所定期間内であるか否かを判定する。換言すれば、直近の所定期間内に最終利用時期が含まれているか、或いは、未来の利用時期が含まれているかを確認する。
例えば、所定期間が1週間とされ、ステップS701で選択された料理カテゴリの最終利用時期が3日前であったり、未来の利用時期が3日後であったりする場合には、利用時期が直近の所定期間内であると判定する。
【0114】
利用時期が直近の所定期間内であると判定した場合、レシピ管理サーバ1はステップS704において提示時期の調整を行う。この処理は、先の図13で述べたように、利用周期の分だけ期間が空くように提示時期を後ろ倒しすることで調整してもよい。
【0115】
また、他にも、提示時期を前倒しすることによって調整してもよい。例えば、料理カテゴリ「うどん」の利用周期が1週間であり、最終利用時期が5日前であった場合、提示時期は2日後とすることが考えられる。しかし、未来の食事情報では、5日後の給食で「うどん」が出されることが分かっている場合、2日後に料理カテゴリ「うどん」を提示してしまうと、更に3日後に「うどん」を飲食することとなり、間隔が短くなってしまう。
そこで、最終利用時期(5日前)と次回の利用時期(5日後)の中間時期(本日)を提示時期としてもよい。これにより、料理カテゴリの利用間隔に大きな偏りが生じることを防止することができる。
また、最終利用時期と次回の利用時期の間隔が利用周期よりも短い場合、或いは利用周期よりも余り長くない場合には、提示時期を最終利用時期と次回の利用時期の間に設けることを止めてもよい。
【0116】
ステップS704の処理を実行した後、或いは、ステップS707において利用時期が直近の所定期間内でないと判定した後、レシピ管理サーバ1はステップS705において、対象の料理カテゴリ(即ち提示時期を算出した料理カテゴリ)の全てに対して上述の処理を適用したか否かを判定する。
対象の料理カテゴリのうち未処理の料理カテゴリがある場合、レシピ管理サーバ1は再びステップS701の処理を実行する。
対象の料理カテゴリのうち未処理の料理カテゴリがない場合、レシピ管理サーバ1は図13に示す一連の処理を終了することで、図12に示すバッチ処理を終了する。
【0117】
尚、未来の利用時期も考慮した提示時期調整処理では、図14のように、取得した過去及び未来の食事情報から所定期間内に共通の属性情報を持つ料理を飲食したか否か(するか否か)に応じて提示時期を調整してもよい。
【0118】
[4−6.バッチ処理の第4例]
バッチ処理の第4例について、図8図16及び図17を参照して説明する。
バッチ処理の第4例では、利用周期を算出するための食事情報の取得期間が前述とは異なる。
具体的に、レシピ管理サーバ1は、先ず図8のステップS401において情報提供元ユーザを特定し、ステップS402において食事情報を取得する。
【0119】
食事情報取得処理は、図9と処理内容が異なる。図16を参照して説明する。
食事情報取得処理では、レシピ管理サーバ1はステップS502において、取得起算時点を算出する処理を実行する。取得起算時点は、前述のように、食事情報の取得対象となる期間の起点となる時間情報である。本例では、情報提供元ユーザに関する各料理カテゴリの利用周期に基づいて取得起算時点を算出する。即ち、これまでのバッチ処理において利用周期が算出済みである場合に、当該算出済みの利用周期から取得起算時点を算出する。
例えば、料理カテゴリA,B,Cがあり、それぞれ利用周期が3日、5日、21日であった場合、取得起算時点は料理カテゴリCの利用周期が再算出可能と思われる21日以前の時間とすることが望ましい。例えば、利用周期の倍の期間となる42日間の食事情報を取得すれば、その中に料理カテゴリCの利用履歴が二つ以上存在する可能性が高くなる。
また、三つ以上の食事情報(利用履歴)から平均的な利用周期を算出する場合には、例えば、21日の3倍である63日よりも前の日時(例えば70日前)を取得起算時点とすることが考えられる。70日分の食事情報を取得すれば、料理カテゴリA,Bに関しては十分な情報が取得できる可能性が高く、更に料理カテゴリCに関しても三つの食事情報が取得できる可能性が高い。
【0120】
取得起算時点を算出したレシピ管理サーバ1は、続くステップS503において、取得起算時点から現在までの食事情報を取得する処理を実行する。
【0121】
食事情報取得処理を終えたレシピ管理サーバ1は、図8のステップS403の利用周期特定処理を実行する。
利用周期特定処理については、図17を参照して説明する。
先ず、レシピ管理サーバ1はステップS601において、一つの料理カテゴリを選択し、ステップS602において、選択された料理カテゴリに常用食事情報が含まれているか(所属しているか)を確認する。
【0122】
続いて、レシピ管理サーバ1はステップS603において選択された料理カテゴリの最終利用時期を取得し、ステップS604において更にもう一つ前の利用時期(利用日時)を取得する。
ステップS601乃至S604の各処理は前述と同じであり、詳述は省く。
【0123】
最終利用時期及び一つ前の利用時期の二つの情報を取得したレシピ管理サーバ1は、少なくとも当該二つの情報が取得できたか否かを判定する処理をステップS607において実行する。
二つの情報を取得できなかった場合、利用周期の算出ができない。従って、そのような場合には、レシピ管理サーバ1はステップS608において食事情報を追加で取得する処理を実行する。
尚、最終利用時期及び一つ前の利用時期の二つの情報が取得できるまでステップS604,S607,S608が繰り返されるが、余りにも古い食事情報まで遡って取得したにも関わらず当該料理カテゴリの利用周期を算出するための情報が取得できなかった場合には、ステップS605の処理へと移行してもよい。例えば、1年前の情報に基づいて利用周期を算出しても、定期的に当該料理カテゴリを利用している可能性は低く、ユーザにとって有意義な推薦情報を提供できる可能性が低くなるためである。
【0124】
利用周期を算出するための情報が取得できたレシピ管理サーバ1は、ステップS605で利用時期の差分時間から利用周期を算出する。
【0125】
ステップS605を実行した後、又はステップS602において常用食事情報が含まれていると判定した後、レシピ管理サーバ1はステップS606において、S601乃至S605の各処理を実行していない料理カテゴリがあるかどうかを判定する。
ステップS601乃至S605の各処理を実行していない料理カテゴリがあると判定した場合、レシピ管理サーバ1はステップS601の処理を再度実行する。
一方、ステップS601乃至S605の各処理を実行していない料理カテゴリがないと判定した場合、レシピ管理サーバ1は図17に示す一連の処理を終了する。
【0126】
尚、三つ以上の食事情報(利用履歴)から平均的な利用周期を算出する場合には、ステップS603及びS604において、必要な数の食事情報を取得する処理を行う。更に、ステップS607の処理では必要な数の食事情報を取得できたか否かを判定する。
また、必要な数の食事情報を取得できた場合であっても、利用時期の差分時間から利用周期を算出する際に、利用周期のばらつきが大きい場合には、ステップS608の処理を実行してもよい。例えば、カテゴリAの利用履歴が80日前、75日前、21日前、20日前であった場合、利用周期は三つの差分時間である5日、46日、1日から算出することになるが、ばらつきが大きいため、適切な利用周期が推定できない。そのため、ステップS605で利用周期の算出を試みた後にステップS608で食事情報を追加取得し、再度ステップS605で利用周期の算出を行うことが考えられる。この場合には、追加で取得した食事情報に基づいて、料理カテゴリAの利用周期を46日付近に設定するのか、5日付近に設定するのか、或いは例えば平均日数など他の期間を利用周期として設定するのかを判定する。
【0127】
尚、特定の料理カテゴリに関する所定数の食事情報を食事情報DB53から取得可能なようにDBが構成されている場合には、ステップS603,S604,S607,S608の代わりに所定数の食事情報を食事情報DB53から取得する処理を実行すればよい。
【0128】
図17に示す利用周期特定処理を終了したレシピ管理サーバ1は、図8のステップS404の利用周期から提示時期を算出する処理を実行する。この処理の詳細は先に述べたとおりであり、詳述を省く。
【0129】
<5.変形例>

各処理における変形例について、いくつかの例を説明する。

[5−1.情報提供元ユーザ特定処理の変形例1]
前述した情報提供元ユーザ特定処理では、対象ユーザと情報提供元ユーザが同じ場合(即ち自身の食事情報に基づく推薦情報の提示を受けたい場合)を説明した。また、他にも、対象ユーザが指定したユーザを情報提供元ユーザとする場合(即ちユーザAが配偶者であるユーザBの食事情報に基づいて推薦情報の提示を受けたい場合)を説明した。
【0130】
それに対して、情報提供元ユーザ特定処理の変形例1では、ユーザAが所属するグループのメンバー全員を情報提供元ユーザとする場合を説明する。グループとは、例えばユーザA及びその家族(ユーザB,C,D)が所属する家族グループなどである。換言すれば、ユーザAと一緒に食事する可能性の高いユーザを集めたグループである。
【0131】
ユーザAが他のユーザB,C,Dを指定することによってユーザA,B,C,Dが情報提供元ユーザとして特定される。また、ユーザの住所や投稿情報などに基づいて推定されたユーザAの所属するグループの各メンバーを情報提供元ユーザとして特定するように構成してもよい。
【0132】
これにより、ユーザA,B,C,D全員の食事情報を考慮した推薦情報(料理カテゴリやレシピ)が提示されるため、二日連続同じ料理を食すことになるユーザが出てしまうことを防止することが可能となる。
【0133】
[5−2.情報提供元ユーザ特定処理の変形例2]
情報提供元ユーザ特定処理の変形例2では、ユーザAと関連する関連ユーザ(例えば前述のグループにおけるユーザB,C,D)の中で、食事情報が充実しているユーザを情報提供元ユーザとして特定する。食事情報が充実しているユーザとは、グループに所属する他のユーザに対して食事情報に含まれる情報の量が相対的に多いユーザや、グループに所属する他のユーザに対して食事情報に含まれる料理カテゴリの種類が相対的に多いユーザなどである。
ここで、ユーザAの関連ユーザについての情報は、レシピ管理サーバ1が管理するDBに記憶されている。即ち、何れのユーザがユーザAと関連しているのかを示す情報や、関連ユーザの食事情報などの情報が各DBに記憶されている。
【0134】
具体的に、図18を参照して説明する。
レシピ管理サーバ1は、ステップS901において、対象ユーザの関連ユーザの情報を取得する。即ち、対象ユーザであるユーザAの関連ユーザはどのユーザであるのかを確認する。
【0135】
続いて、レシピ管理サーバ1はステップS902において、対象ユーザ及び関連ユーザに関する食事情報のレコード数を食事情報DB53から取得する。レコード数とは、食事情報DB53に記憶されている情報の数であり、例えば、図5に示す一覧の中で1行を構成する各情報の組が1レコードとされる。即ち図5では、ユーザID=U0001とされたユーザの食事情報が少なくとも6レコード記憶されていることが示されている。
【0136】
次に、レシピ管理サーバ1はステップS903において、対象ユーザ及び関連ユーザのうちレコード数が相対的に多いユーザを情報提供元ユーザとして設定する。即ち、バッチ処理におけるステップS402の食事情報取得処理(図8図12など)では、レコード数が相対的に多いユーザの食事情報のみが取得される。
【0137】
尚、食事情報に含まれる料理カテゴリの種類に応じて情報提供元ユーザを特定する場合には、ステップS902において対象ユーザ及び関連ユーザに関する食事情報の料理カテゴリ数を取得し、ステップS903において食事情報の料理カテゴリ数が相対的に多いユーザが情報提供元ユーザとして設定される。
【0138】
[5−3.提示時期算出処理の変形例]
提示時期算出処理の変形例について、図19を参照して説明する。
先に述べた提示時期算出処理では、一部の料理カテゴリの提示時期を算出する例を述べた。また、そこでは、一部の料理カテゴリの選択例として、一律同じカテゴリレベルの料理カテゴリ(例えばカテゴリレベル2の料理カテゴリ)を選択する例を述べた。
提示時期算出処理の変形例では、一部の料理カテゴリの選択に際して、利用周期を用いる例を説明する。
尚、図19の処理の開始時には、全ての料理カテゴリの利用周期が特定されている状態とされる。但し、常用食事情報を含む料理カテゴリについては、利用周期が特定されていなくても構わない。
【0139】
先ず、レシピ管理サーバ1はステップS1001において、料理カテゴリの利用周期を取得する処理を実行する。例えば、カテゴリレベル1の料理カテゴリ(大分類の料理カテゴリ)のうちの一つを選択して、利用周期を取得する。
【0140】
続いて、レシピ管理サーバ1はステップS1002において、利用周期が下限閾値以下であるかどうかを判定する。下限閾値は、例えば1週間や1ヶ月とされる。
【0141】
利用周期が下限閾値以下であった場合(例えば下限閾値が1週間であるのに対し利用周期が2日であった場合)、レシピ管理サーバ1はステップS1003において、下位カテゴリの利用周期を取得する。そして、レシピ管理サーバ1は再びステップS1002を実行することにより、当該下位カテゴリの利用周期が下限閾値以下であるか否かを判定する。
【0142】
例えば、カテゴリレベル1の料理カテゴリとしての料理カテゴリAがあり、料理カテゴリAの下位カテゴリとして料理カテゴリA1,A2,A3,A4がある場合について、図20を参照して説明する。
1週間とされた加減閾値に対して、料理カテゴリAの利用周期が4日である場合、ステップS1002,S1003によって下位カテゴリである料理カテゴリA1,A2,A3,A4の利用周期が取得される。料理カテゴリA1,A2,A3,A4の利用周期が6日、30日、30日、60日である場合、料理カテゴリA1だけは利用周期が下限閾値以下であるため、再びステップS1003の処理が実行されて、更に下位カテゴリA11,A12の利用周期が取得される。
料理カテゴリA11,A12が15日、10日である場合、更に下位カテゴリについての処理は行われずに、料理カテゴリAについての図19に示す一連の処理が終了する。
【0143】
これにより、例えば、料理カテゴリ「カレー(料理カテゴリA)」を4日毎に推薦情報として提示するのではなく、下位カテゴリである「和風カレー(料理カテゴリA2)」や「欧風カレー(料理カテゴリA3)」が適切な周期で推薦情報として提示される。また、「インドカレー(料理カテゴリA1)」については、更に細分化された「キーマカレー(料理カテゴリA11)」や「マトンカレー(料理カテゴリA12)」などが推薦情報として提示される。
このユーザにとっては、カレーは頻繁に飲食する料理カテゴリである。従って、大雑把に「カレー」という料理カテゴリを4日毎に推薦情報として提示するよりも、細分化した料理カテゴリに基づいて推薦情報を提示する方が、このユーザの食事傾向を鑑みても好ましい。
更に、例えばこのユーザが料理カテゴリ「麺類」(料理カテゴリ「ラーメン」や「パスタ」や「うどん」や「そば」を含む)を月に1度しか飲食しない場合には、カテゴリレベルの異なる料理カテゴリ「麺類」と料理カテゴリ「マトンカレー」が推薦情報として提示される。即ち、料理カテゴリ毎のユーザの嗜好の偏りに応じた適切な推薦情報を提示することができる。
【0144】
尚、ここでは、図19の処理の開始時において料理カテゴリ毎の利用周期が既に特定されている例を説明したがこれに限られることはない。例えば、図19のS1001の処理において、利用周期の取得の代わりに利用周期の算出を行ってもよい。更に、ステップS1003の処理の後ステップS1001において下位カテゴリの利用周期を算出する処理を実行することにより、必要に応じて下位カテゴリの利用周期が算出される。これにより、利用周期の算出が不要な料理カテゴリについては利用周期の算出が行われないため、レシピ管理サーバ1の処理を減らすことができ、処理負担の軽減を図ることができる。
【0145】
<6.まとめ>

上記したレシピ管理サーバ1は、情報の提示先となる対象ユーザを特定するユーザ特定部としてのユーザ管理部1bと、特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得部1cと、取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定部1dと、取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定部1gと、推薦カテゴリに基づいて推薦情報を対象ユーザに提示する制御を行う提示制御部1iと、を備えている。
これにより、ユーザの潜在的なニーズを汲み取った情報(推薦カテゴリ)が提示される。即ち、ユーザの嗜好だけでなく周期を考慮した選択パターンを鑑みて推薦カテゴリ情報が提示される。例えば、ユーザがそろそろ食べたくなった料理カテゴリが抽出されて、ユーザに提示される。
従って、毎日の食事を考える煩わしさを抑制しつつユーザ毎に適した推薦カテゴリを提供することが可能である。
また、ユーザがレシピ等の検索操作を行わなくても情報を提示することが可能であるため、ユーザにとって負担の少ないサービスを提供することができる。
そして、ユーザに適した情報を提示することから、ユーザが更なる検索操作等を行う機会を減少させることができるため、情報処理装置(レシピ管理サーバ1やユーザ端末3)の処理負担軽減や通信量の削減を図ることができる。
【0146】
また、バッチ処理の第2例やバッチ処理の第3例で説明したように、レシピ管理サーバ1は、特定された推薦カテゴリに関連する料理カテゴリの利用に基づいて特定された推薦カテゴリの提示時期を調整する提示時期調整部1fを更に備えてもよい。
これにより、例えば、類似する料理カテゴリが所定期間内に利用された場合を考慮した情報提示が行われる。
即ち、例えば、「そば」の料理カテゴリが利用(レシピ利用や外食利用など)されてから所定期間内に同じ麺類である「うどん」の料理カテゴリが提示されることが防止される。
従って、料理カテゴリ毎の利用周期だけでなく、類似した料理カテゴリの利用状況も考慮した最適な情報を提示することができる。
また、ユーザの先の予定まで含めた推薦カテゴリが特定されて提示される。
即ち、ユーザが推薦カテゴリに従って食事を摂取した後、短い期間で再度同一カテゴリに属する食事を摂取してしまうことを防止することができる。
従って、ユーザの過去の食事情報と未来の食事情報の双方を加味した総合的な情報提示を行うことができ、ユーザの利便性の向上を図ることができる。
【0147】
更に、提示時期算出処理の変形例で説明したように、料理カテゴリは階層構造を有し、推薦カテゴリ特定部1gは、特定された利用周期が所定の下限閾値以下または未満である場合に利用周期が下限閾値以下または未満とされた料理カテゴリの下位カテゴリについての利用周期及び提示時期を取得して推薦カテゴリの特定を行ってもよい。
これにより、全ての料理カテゴリについての利用周期及び提示時期を取得する必要が無い。
従って、レシピ管理サーバ1の処理負担の軽減を図ることができる。
特に、特定された利用周期が所定の下限閾値以下または未満である場合に、下位カテゴリについての提示時期の算出を行う場合には、処理負担の更なる軽減が図られる。
【0148】
更にまた、提示時期算出処理の変形例で説明したように、推薦カテゴリは階層構造を有し、提示時期算出部1eは、料理カテゴリのうち利用周期が下限閾値以上またはより大きいとされた料理カテゴリの提示時期について算出し、推薦カテゴリ特定部1gは、特定された利用周期が所定の下限閾値以上またはより大きいとされた料理カテゴリの中から推薦カテゴリの特定を行ってもよい。
これにより、利用周期が短すぎる料理カテゴリに対して提示時期が算出されることが無くなる。例えば、その下位となる料理カテゴリに対して提示時期が算出される。延いては、頻繁に同じ料理カテゴリが推薦カテゴリとして提示されることが無くなる。
従って、ユーザにとって飽きのこない有意義な情報を提供することができる。
また、提示時期の算出対象とされる料理カテゴリの利用周期のばらつきがある程度緩和される。即ち、一週間などの所定の期間における献立スケジュールなどを立てる場合に、算出された提示時期に基づいて立てることが容易となる。
【0149】
そして、第1の実施の形態で説明したように、提示制御部1iは、推薦カテゴリ毎に優先度を付与し、該優先度に応じて提示を行う。
これにより、ユーザにとって有意義な情報ほど優先度を高くすることが可能となる。
例えば、提示時期を大幅に経過してしまった料理カテゴリほど優先度を高くする
従って、ユーザにとって利便性の高いサービスを提供することが可能となる。
【0150】
また、バッチ処理の第4例で説明したように、食事情報取得部1cは、利用周期に基づいて食事情報の取得起算時点を決定し、該取得起算時点から現在までの食事情報を取得する。
これにより、一度算出した利用周期に基づいて次回以降の各処理のための食事情報の取得の範囲(期間)が決定される。
即ち、不必要に長い期間の食事情報の取得を行わないことも可能となる。
従って、処理の対象となる食事情報の情報量が抑制されるため、情報処理装置の処理負担の軽減を図ることができる。
【0151】
更にまた、情報提供元ユーザ特定処理の変形例2で説明したように、対象ユーザと関連する関連ユーザが登録されている場合において、食事情報取得部1cは、対象ユーザと関連ユーザのうち食事情報が充実しているユーザの食事情報を取得するように構成されていてもよい。
これにより、例えば、最も充実した情報を元に利用周期や提示時期が算出され、それによって特定された推薦カテゴリが提示される。
従って、ユーザに提示される推薦カテゴリは、充実した情報に基づく有意義な情報となり易いため、利便性の高いサービスを提供することができる。
【0152】
尚、各処理例において説明した処理内容は、他の処理例において説明した処理によって代替することや他の処理例において説明した処理を追加実施することが可能である。即ち、その処理例において記載した内容に縛られず、他の処理例に記載された内容に基づいて処理が実行されてもよい。
一例として、バッチ処理の第3例において未来の食事情報に基づく調整を行う例を示し、バッチ処理の第4例において過去の所定期間内の食事情報を取得する際の所定期間の定め方の例を示したが、未来の食事情報の取得期間をバッチ処理の第4例と同様に利用周期に基づいて決定してもよい。
【0153】
上記に示した、所定期間や所定時間の長さは1年間や1ヶ月間や1週間などの長さであってもよいし、1時間や数時間などの長さであってもよい。
【0154】
<7.プログラム及び記憶媒体>

以上、本発明の情報処理装置の実施の形態としてのレシピ管理サーバ1を説明してきたが、実施の形態のプログラムは、レシピ管理サーバ1における各処理を情報処理装置(CPU等)に実行させるプログラムである。
【0155】
実施の形態のプログラムは、情報の提示先となる対象ユーザを特定するユーザ特定機能を情報処理装置に実行させる。
また、前記特定された対象ユーザに関連する情報提供元ユーザに対応する少なくとも利用時期を含む食事情報を取得する食事情報取得機能を情報処理装置に実行させる。
更に、前記取得した食事情報に含まれる利用時期に基づいて、料理カテゴリ毎の利用周期を特定する利用周期特定機能を情報処理装置に実行させる。
更にまた、前記取得した食事情報に含まれる利用時期のうち最も利用時期が遅い最終利用時期と前記特定された利用周期と、に基づいて算出された料理カテゴリ毎の提示時期に基づいて推薦カテゴリとなる料理カテゴリを特定する推薦カテゴリ特定機能を情報処理装置に実行させる。
そして、前記推薦カテゴリに基づいて推薦情報を前記対象ユーザに提示する制御を行う提示制御機能を情報処理装置に実行させる。
即ちこのプログラムは、レシピ管理サーバ1に対して図6のステップS201乃至S207の各処理、図7乃至図19の各処理を実行させるプログラムである。
【0156】
このようなプログラムにより、上述したレシピ管理サーバ1としての情報処理装置を実現できる。
そしてこのようなプログラムはコンピュータ装置などの機器に内蔵されている記憶媒体としてのHDDや、CPUを有するマイクロコンピュータ内のROMなどに予め記録しておくことができる。或いはまた、半導体メモリ、メモリカード、光ディスク、光磁気ディスク、磁気ディスクなどのリムーバブル記憶媒体に、一時的或いは永続的に格納(記録)しておくことができる。またこのようなリムーバブル記憶媒体は、いわゆるパッケージソフトウェアとして提供することができる。
また、このようなプログラムは、リムーバブル記憶媒体からパーソナルコンピュータなどにインストールする他、ダウンロードサイトから、LAN、インターネットなどのネットワークを介してダウンロードすることもできる。
【符号の説明】
【0157】
1 レシピ管理サーバ、1a レシピ管理部、1b ユーザ管理部、1c 食事情報取得部、1d 利用周期特定部、1e 提示時期算出部、1f 提示時期調整部、1g 推薦カテゴリ特定部、1h 推薦レシピ抽出部、1i 提示制御部、2 通信ネットワーク、3 ユーザ端末、50 ユーザDB、51 レシピDB、52 検索DB、53 食事情報DB、54 ウェブページDB
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20