【新規性喪失の例外の表示】特許法第30条第2項適用 電子情報通信学会 マルチメディア・仮想環境基礎研究会(MVE) 平成27年3月4日 The First IEEE International Conference on Multimedia Big Data 平成27年4月20日 電子情報通信学会技術研究報告,vol.114,no.487,pp.147−152 IEEE International Conference on Multimedia Big Data 2015
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成24年度、独立行政法人科学技術振興機構、戦略的創造研究推進事業(チーム型研究(CREST))、産業技術力強化法第19条の適用を受ける特許出願
【文献】
小宮山 遼太 外3名,食事名の要約表現に基づく個人食事傾向の予測,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,2015年 2月24日,第114巻第485号,pp.55-56
【文献】
数藤 恭子 外3名,レシピのテキスト及び画像特徴の学習による画像からの素材・調理法の推定,画像ラボ,日本,日本工業出版株式会社,2014年 9月10日,第25巻第9号,pp.30-35
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理装置1は、
図1に例示するように、制御部11と、記憶部12と、通信部13とを含んで構成される。またこの情報処理装置1は、インターネット等の通信手段を介して、利用者の端末2との間で通信可能に接続されている。
【0012】
情報処理装置1の制御部11は、CPU等のプログラム制御デバイスであり、記憶部12に格納されたプログラムに従って動作する。本実施の形態では、この制御部11は、利用者の端末2から受信する指示に従い、食事名や、食事の画像等を、食事データベースに記録する。またこの制御部11は、利用者の端末2から受信する指示に従い、食事データベースに記録されている情報を、端末2へ送出する。
【0013】
また本実施の形態においてこの制御部11は、食事名を含むレコードを格納した食事データベースを参照し、当該食事データベースに記録されている食事名のうち処理の対象とする食事名を、対象食事名として、この対象食事名を語に分割する。制御部11は、当該分割した語のうちから選択した語を組み合せた組み合わせ語を生成し、当該組み合わせ語を正規化食事名として、所定処理に供する。この制御部11の具体的な処理の内容については後に述べる。
【0014】
記憶部12は、メモリデバイスやディスクデバイス等であり、制御部11によって実行されるプログラムが格納される。このプログラムは例えばコンピュータ可読かつ非一時的(non-transitory)な記録媒体に格納されて提供され、この記憶部12に格納される。また本実施の形態の一例では、この記憶部12に、食事名や、食事の画像等を記録した食事データベースが格納される。この記憶部12はさらに、制御部11のワークメモリとしても動作する。
【0015】
通信部13は、ネットワークインタフェース等であり、端末2からネットワークを介して受信する情報を制御部11に出力する。またこの通信部13は、制御部11から入力される指示に従って、端末2に対して情報を送出する。
【0016】
端末2は、例えばスマートフォン等であり、利用者の操作を受け入れて、食事名の情報や、食事の画像(スマートフォンが備えるカメラ等で撮影されたものでよい)等の情報を、利用者を特定する情報とともに情報処理装置1に対して送出する。
【0017】
次に本実施の形態の情報処理装置1の制御部11の動作について説明する。本実施の形態の一例では、制御部11は、
図2に例示するように、機能的には、食事情報記録部31と、食事名正規化部32と、統計情報生成部33とを含んで構成される。また食事名正規化部32は、食事名分割部41と、組み合わせ語生成部42とを含んで構成される。
【0018】
食事情報記録部31は、端末2から利用者を特定する情報とともに食事名の情報や、食事の画像(スマートフォンが備えるカメラ等で撮影されたものでよい)等の情報を受け入れると、当該受け入れた日時の情報を図示しないカレンダーIC等から取得する。そして食事情報記録部31は、
図3に例示するように、受け入れた、利用者を特定する情報と、食事名の情報や分量の情報等と、取得した日時の情報とを互いに関連付けたレコード(R)を、食事データベースに格納する。
【0019】
食事名正規化部32は、食事データベースに格納されている食事名の情報を参照して、正規化食事名を生成する。具体的に、この食事名正規化部32の食事名分割部41は、食事データベースに格納されている食事名のうち、未だ正規化食事名を生成していない食事名を処理の対象として選択する。ここで選択された食事名を、以下区別のため、対象食事名と呼ぶ。
【0020】
そして食事名分割部41は、対象食事名を語ごとに分割する。この分割は、例えば、予め用意された辞書を参照して、辞書にある語ごとに語の境界を解析する処理を用いて行うことができる。一例として京都テキスト解析ツールキットKyTeaを用いることができる。具体的な例として、この食事名分割部41により、「豚肉と野菜の炒め物」、「肉と中華風の野菜の炒め物」、「肉野菜のおいしい炒めもの」は、それぞれ、
「豚肉」「と」「野菜」「の」「炒め」「物」、
「肉」「と」「中華風」「の」「野菜」「の」「炒め」「物」、
「肉」「野菜」「の」「おいしい」「炒め」「もの」
といったように分割される。ここでは分割により得られた語を引用符(かぎ括弧)で区別して示している。
【0021】
組み合わせ語生成部42は、食事名分割部41により得られた分割された語のいずれかを含む食事名を、食事データベースから検索する。この検索で得られた食事名を、以下区別のため、参照食事名と呼ぶ。この参照食事名には、対象食事名そのものが含まれてもよい。なお、分割された語のうち、予め定めたストップワード(助詞等)は取り除き、ストップワードを除いた語をキーとして参照食事名の検索を行うこととしてもよい。
【0022】
一例として対象食事名が「豚肉と野菜のおいしい炒め物」であり、この対象食事名が「豚肉」「と」「野菜」「の」「おいしい」「炒め」「物」に分割される場合、ストップワードである「と」、「の」を除く、「豚肉」,「野菜」,「おいしい」,「炒め」,「物」のいずれかを含む食事名を食事データベースから検索して、この検索により見出された食事名を参照食事名とする。
【0023】
これにより例えば、
「豚肉と野菜のおいしい炒め物」(対象食事名自体)
「豚肉のソテー」(「豚肉」の語を含む)
「野菜炒め」(「野菜」,「炒め」の語を含む)
「豚肉と中華風の野菜の炒めもの」(「豚肉」、「野菜」、「炒め」の語を含む)
「おいしいプロテイン飲料」(「おいしい」の語を含む)
「肉野菜炒め」(「炒め」の語を含む)
…
等の食事名が参照食事名として見出される。
【0024】
組み合わせ語生成部42は、参照食事名を、対象食事名と同様に食事名分割部41にて語に分割させる。また、組み合わせ語生成部42は、参照食事名のそれぞれについて、分割された語(ストップワードは除いてもよい)の分割前の参照食事名中での出現順の情報を用いて組み合わせ語を生成する。
【0025】
一例として組み合わせ語生成部42は、参照食事名とのそれぞれについて、分割された語を、参照食事名中での出現順に、方向付きのエッジで連結した有向グラフ(先頭ノードSと、終端ノードEとを加えておく。以下、語グラフ(word graph)と呼ぶ)を生成する。上述の例であれば、対象食事名である参照食事名「豚肉と野菜のおいしい炒め物」について、
S→「豚肉」→「野菜」→「おいしい」→「炒め」→「物」→Eとの語グラフが生成され、また、対象食事名以外の参照食事名について、
「豚肉のソテー」:S→「豚肉」→「ソテー」→E
「野菜炒め」:S→「野菜」→「炒め」→E
「豚肉と中華風の野菜の炒めもの」:S→「豚肉」→「中華風」→「野菜」→「炒め」→「もの」→E
「おいしいプロテイン飲料」:S→「おいしい」→「プロテイン」→「飲料」→E
「肉野菜炒め」:S→「肉」→「野菜」→「炒め」→E
といった語グラフが生成される(
図4)。
【0026】
組み合わせ語生成部42は、各食事名について生成したグラフに含まれるエッジごとに、当該エッジ(処理対象エッジと呼ぶ)のリンク元のノード(アウトリンクノードと呼ぶ)wiと、リンク先のノード(インリンクノードと呼ぶ)wjとを参照し、処理対象エッジの重み(コスト)を次のように演算する(K.Fillipova,"Multi-sentence compression: Finding shortest paths in word graphs", Progress of the 23rd International Conference on Computational Linguistics 2010の文短縮用コストを用いる)。
【数1】
ここで、freq(w)は、ノードwの出現頻度(各参照食事名からノードwが見出された頻度)であり、diff(s,w1,w2)は、出現順を考慮した語間距離を表し、具体的には次の(2)式で表される値となる:
【数2】
ただしpos(s,w)は、食事名sにおけるノードwの出現順位(先頭からリンクを辿って何番目にノードwが出現するかを表す値)であり、Σ(和)は、すべての参照食事名における和を演算することを意味する。
【0027】
上述に挙げた例では、
「豚肉」→「野菜」のエッジに注目した場合、「豚肉」の出現頻度(wi)が「3」、「野菜」の出現頻度(wj)が「4」、
「豚肉と野菜のおいしい炒め物」(対象食事名)でのdiff(s,w1,w2)=1
「豚肉のソテー」でのdiff(s,w1,w2)=0
「野菜炒め」でのdiff(s,w1,w2)=0
「豚肉と中華風の野菜の炒めもの」でのdiff(s,w1,w2)=2
「おいしいプロテイン飲料」でのdiff(s,w1,w2)=0
「肉野菜炒め」でのdiff(s,w1,w2)=0
であるので、このでのdiff(s,w1,w2)の逆数の総和は、1+1/2=1.5となる。従って、「豚肉」→「野菜」のエッジの重み(コスト)は、
(3+4)/(3×4×3/2)=7/18=0.39(小数点3桁を四捨五入)
となる。
【0028】
そのほかも同様に、
「S」→「豚肉」のノードについて、(6+3)/(6×3×3)=0.17
「野菜」→「おいしい」のノードについて、(4+2)/(4×2×1)=0.75
「おいしい」→「炒め」のノードについて、(2+4)/(2×4×1)=0.75
「野菜」→「炒め」のノード(「野菜炒め」等から得られる)について、(4+4)/(4×4×5/2)=0.2
…
などと演算される。
【0029】
組み合わせ語生成部42は、こうして演算したエッジの重みのうち、対象食事名に含まれる語のノードをリンクの順に辿ってできる組み合わせに係る重みの総和を求める。すなわち、
S→「豚肉」→「野菜」→「おいしい」→「炒め」→「物」→Eであれば、0.17+0.39+0.75+0.75+1.25+1.17=4.48
S→「豚肉」→「おいしい」→「炒め」→Eであれば、0.17+1.67+0.75+0.17=2.76
S→「豚肉」→「野菜」→「炒め」→Eであれば、0.17+0.39+0.2+0.17=0.93
…
というように演算する。組み合わせ語生成部42は、演算にかかる各組み合わせのうち、重みの総和が最小となる組み合わせを見出す。上記の例の場合、S→「豚肉」→「野菜」→「炒め」→Eの組み合わせが最小となるので、この組合せを見出す。
【0030】
そして組み合わせ語生成部42は、ここで見出された組み合わせを、リンクの順に連接して組み合わせ語「豚肉野菜炒め」を正規化食事名として生成し、この正規化食事名を対象食事名に関連付けて食事データベースに格納する。
【0031】
統計情報生成部33は、正規化食事名を用いて統計処理を行う。具体的には正規化食事名を得る処理によって、例えば「豚肉と野菜のおいしい炒め物」や、「豚肉と野菜の炒め物」、「豚肉と季節の野菜の炒め物」などが、いずれも正規化食事名「豚肉野菜炒め」に関連付けられることとなれば、統計情報生成部33は、「豚肉と野菜のおいしい炒め物」などではなく、正規化食事名「豚肉野菜炒め」をキーとして集計を行う。これにより、例えば利用者が「豚肉と野菜のおいしい炒め物」や、「豚肉と野菜の炒め物」、「豚肉と季節の野菜の炒め物」など、自由な名称で「豚肉と野菜の炒め物」という同じ料理を表現しても、いずれも正規化食事名「豚肉野菜炒め」をキーとして集計されるので、統計結果にこれらのレコードが反映されることとなる。
【0032】
本実施の形態は、基本的に以上の構成を備えており、次のように動作する。以下の説明では、複数の利用者のそれぞれから少なくとも一度以上、飲食した食事についての食事名等の情報を受信し、これら受信した情報(利用者を特定する情報や食事名の情報を関連付けたレコード)が予め食事データベースに格納されているものとする。
【0033】
本実施の形態の情報処理装置1は、
図5に示すように、食事データベースに格納されている食事名のうち、正規化食事名に関連付けられていない食事名を順次、対象食事名として選択し(S1)、当該選択した対象食事名を語に分割する(S2)。そして当該分割して得た語(予め定めたストップワードを除いてもよい)を含む食事名(このうちに対象食事名自体を含んでもよい)を食事データベースから検索し、検索の結果を参照食事名として取り出す(S3)。
【0034】
情報処理装置1は、取り出した参照食事名も語に分割する(S4)。そして情報処理装置1は、処理S2,S4にて得られた分割された語の出現順(参照食事名に含まれる順)により語グラフを生成し、当該語グラフのエッジの重みを(1),(2)式で定める(S5)。情報処理装置1は、こうして得られた語グラフに含まれるリンクのうち、当該リンクに含まれるノードの語がすべて対象食事名に含まれ、かつ、重みの和が最小となる、ノードSからノードEまでの経路(最小コストパス)を見出し(S6)、当該最小コストパスに含まれるリンクの順にノードの語を連接して組み合わせ語を生成し(S7)、当該組み合わせ語を正規化食事名として、対象食事名に関連付けて(対象食事名を含むレコードに含めて)食事データベースに記録する(S8)。
【0035】
なお、ここでは対象食事名や参照食事名を処理S2,S4の実行時に語に分割することとしているが、食事名の入力を受けた時点で食事名を語に分割して、食事データベースに格納しておき、処理S2や処理S4では対象食事名、または参照食事名となった食事名に関連付けて記録されている、分割された語を読み出すこととしてもよい。
【0036】
また情報処理装置1は、対象食事名として選択していない食事名が食事データベース内にあるか否かを判断し(S9)、もしあれば処理S1に戻って未選択の食事名を対象食事名として選択して処理を続ける。また、処理S9において、対象食事名として選択していない食事名が食事データベース内になければ、処理を終了する。
【0037】
以下、情報処理装置1は、正規化食事名を用いて統計処理等の所定処理を実行する。一例として、情報処理装置1は、同じ利用者を特定する情報に関連付けられている正規化食事名ごとの出現頻度の情報や、食事データベース中のすべての正規化食事名ごとの出現頻度の情報等を生成する。
【0038】
[参照食事名の数]
ここまでの説明では、対象食事名を分割して得た語を含む参照食事名を検索する際に、その数を限らなかったが、本実施形態の一例では、参照食事名を例えば対象食事名により類似する順にあるいはランダムに、指定された数k個だけ検索してもよい。ここで類似する順に選択する場合は、対象食事名を分割して得た語と、参照食事名を分割して得た語とを比較し、共通している語の数をカウントし、共通している語の数が多い順にk個(k種類)取り出せばよい。
【0039】
例えば、対象食事名「豚肉と野菜のおいしい炒め物」を分割して得られた語が上述のように「豚肉」「野菜」「おいしい」「炒め」「物」である場合に、類似する順にk=3個(3種類)取り出すこととする場合、
「豚肉と野菜のおいしい炒め物」(対象食事名自体):共通している語の数=5
「豚肉と中華風の野菜の炒めもの」(「豚肉」「中華風」「野菜」「炒め」「もの」に分解される):共通している語の数=3
「肉野菜炒め」(「肉」「野菜」「炒め」に分解される):共通している語の数=2
「野菜炒め」(「野菜」「炒め」に分解される):共通している語の数=2
「豚肉のソテー」(「豚肉」「ソテー」に分解される):共通している語の数=1
「おいしいプロテイン飲料」(「おいしい」「プロテイン」「飲料」に分解される):共通している語の数=1
となるので、共通している語の数が多い順にk=3種類を取り出して、例えば、「豚肉と野菜のおいしい炒め物」(対象食事名自体)、「豚肉と中華風の野菜の炒めもの」、「肉野菜炒め」を参照食事名とする。
【0040】
なお、例えば食事データベース中に、「豚肉と中華風の野菜の炒めもの」を含むレコードの数が複数ある場合も、類似する順にk=3種類を取り出すので、「豚肉と野菜のおいしい炒め物」、「豚肉と中華風の野菜の炒めもの」(複数のレコードがあっても1種類とカウントされる)、「肉野菜炒め」が参照食事名とされる。
【0041】
さらに、ここでは共通している語の数が「2」である食事名が2つある例とし、これらのうち「肉野菜炒め」を参照食事名とする例としたが、このようにk種類を取り出すときに、共通している語の数の上位k位までの食事名を候補として選択したときに、候補がkを超えているとき(同順位の食事名が複数ある場合)は、そのうち最も短い食事名、あるいは最も長い食事名を選択するものとしてもよいし、ランダムに選択してもよい。また、同順位の食事名が複数ある場合は、そのうち当該食事名を含むレコードの数が多いものを選択することとしてもよい。この例では例えば「肉野菜炒め」を含むレコードが10、「野菜炒め」を含むレコードが20あれば、「野菜炒め」を選択することとなる。
【0042】
またここで選択する参照食事名の数kは、経験的に、あるいは実験的に定める。
【0043】
[語の種類を考慮した組み合わせ語の生成]
また食事名は一般的に、食材を表す語1,2個、及び調理法を表す語1個を含むことが一般的であることに鑑み、次のような処理を行ってもよい。この例では、食事名正規化部32の食事名分割部41が、対象食事名や参照食事名を分割する際に参照する辞書に、語と、当該語が食材名を表す語であるか否かを表す情報、及び、調理法を表す語であるか否かを表す情報とを関連付けて記録しておく。具体的には、「豚肉」に対して食材名であることを表す情報を関連付けて記録し、「炒め」には調理法であることを表す情報を関連付けて記録する。また、「おいしい」など、食材でも調理法でもない語に対しては、食材名であることを表す情報や調理法であることを表す情報を関連付けないようにする。
【0044】
そして食事名分割部41は、食材名を分割して得た語に対し、食材名を表す語であるか否かを表す情報、及び、調理法を表す語であるか否かを表す情報を関連付けて出力する。具体的に「豚肉と野菜のおいしい炒めもの」の食材名を分割したときには、
「豚肉」:食材名
「と」:−
「野菜」:食材名
「の」:−
「おいしい」:−
「炒め」:調理法
「もの」:−
といったように語を分割しつつ、食材名を表す語であるか否かを表す情報、及び、調理法を表す語であるか否かを表す情報を関連付ける。なお、「−」としたのは、これら食材名を表す語であるか否かを表す情報、及び、調理法を表す語であるか否かを表す情報のいずれも関連付けられていないことを示す。
【0045】
またこの例において、組み合わせ語生成部42は、参照食事名に基づいて語グラフを生成し、各エッジの重みを演算した後、対象食事名に含まれる語であって、N=1,2個の食材名を表す語のノードと、M=1個の調理法を表す語を含むノードとを、リンクの順に辿ってできる組み合わせに係る重みの総和を求める。なお、食材名を表す語が1つもない場合、あるいは調理法を表す語が一つもない場合は、既に説明したのと同様に、対象食事名に含まれる語のノード(食材名であるか調理法であるかを問わない)をリンクの順に辿ってできる組み合わせに係る重みの総和を求めることとする。
【0046】
具体的に、対象食事名が「季節野菜を添えたごぼうと牛肉の炒め煮」であり、食事名分割部41により、
「季節野菜」:食材名
「添えた」:−
「ごぼう」:食材名
「牛肉」:食材名
「炒め煮」:調理法
と分割されているとき(ストップワードは省いている)、組み合わせ語生成部42は、参照食事名に基づいて生成した語グラフから、
「季節野菜」→「ごぼう」→「炒め煮」
「季節野菜」→「牛肉」→「炒め煮」
「ごぼう」→「牛肉」→「炒め煮」
「季節野菜」→「炒め煮」
「ごぼう」→「炒め煮」
「牛肉」→「炒め煮」
のノードをそれぞれ辿ったときの重みの総和を演算する。そして組み合わせ語生成部42は、演算にかかる各組み合わせのうち、重みの総和が最小となる組み合わせを見出す。
【0047】
そして組み合わせ語生成部42は、ここで見出された組み合わせを、リンクの順に連接して組み合わせ語「豚肉野菜炒め」を正規化食事名として生成し、この正規化食事名を対象食事名に関連付けて食事データベースに格納する。本実施の形態のこの例によると、食材名を1,2語、調理法を1語含んだ、比較的一般的な食品名を再構成できる。
【0048】
なお、ここでの例は一例であり、例えば出現した食材名は必ずすべて含むようにノードを選択してもよいし、食材名を必ず2語含むようにノードを選択してもよい(この場合も食材名が1語以下しかない場合は、食材名であるか調理法であるかを問わずにノードを選択することとすればよい)。このように、食材名の語数Nや、調理法の語数Mは経験的に定めればよい。なお、N,Mはいずれも1つの自然数(1以上の自然数)に限られず、N=2または3のように複数の自然数を含んでもよい。
【0049】
[条件として設定されるストップワード]
ここまでの説明において、ストップワードは、助詞等、予め定められた文字列ないし、予め定められた品詞として分析される語であるものとしていた。しかしながら、本実施の形態においてストップワードはこれに限られない。例えばストップワードには、記号(括弧等)を含んでもよい。またストップワードとして、所定の条件を満足する語としてもよい。ここでの条件は例えば正規表現として記述すればよい。一例として、「\d」が任意の1字以上の数字(漢数字を含む)に一致するものであれば、
\d人前(「一人前」、「2人前」等に一致する)
\dグラム(「100グラム」等に一致する)
等としてストップワードを定めてもよい。
【0050】
この例によると、例えば
「チーズ入りハンバーグ(150グラム)」
などの食事名から、「(150グラム)」の部分がストップワードとして除かれ、
「チーズ」「入り」「ハンバーグ」
の語に分割されて処理されることとなる。
【0051】
また、場所の名称等をストップワードとして設定しておくこととしてもよい。例えば、「(Z食堂)」,「(レストランA)」等の名称そのものをストップワードとして設定してもよいし、正規表現を用いて(「*」が任意の1字以上の文字に一致するものとして)
「(*食堂)」(「(Z食堂)」や、「(中央食堂)」等に一致する)
「(レストラン*)」(「(レストランA)」や「(レストランBにて)」等に一致する)
等としてストップワードを定めてもよい。
【0052】
この例によると、例えば
「天ぷら定食(Z食堂)」
などの食事名から、「(Z食堂)」の部分がストップワードとして除かれ、
「天ぷら」「定食」
の語に分割されて処理されることとなる。
【0053】
[処理の別の例]
また、正規化食事名を利用する処理の例として、さらに、正規化食品名ごとの出現頻度(出現頻度順)が互いに類似している利用者の情報(例えば利用者に病歴情報等を入力してもらっている場合等はその情報)を参照して、飲食している食品の傾向と、生活習慣病の傾向との相関分析等を行うなどの処理を行ってもよい。
【0054】
さらに、正規化食品名ごとの出現頻度(出現頻度順)が自己のものと類似している他の利用者の情報を提供することで、類似の嗜好を持つ他者の情報を得たり、あるいは、当該他の利用者の病歴情報を提供する処理を行ってもよい。
【0055】
[実施形態の効果]
本実施の形態によると、利用者が自由に入力した食事名が正規化食事名として集約されるので、利用者に対して自由な食事名の入力を許容しつつ、食事名に係る統計処理が可能となる。