# マルチラベル分類による材料推薦モデル

深澤 祐援 原島 純
クックパッド株式会社
\{yusuke-fukasawa, jun-harashima\}@cookpad.com
西川荘介
東京大学大学院情報理工学系研究科
sosuke-nishikawa@nii.ac.jp

## 1 はじめに

クックパッドなどの料理レシピサービスでは, ユーザがレシピを投稿できる．レシピを投稿する画面を図 1 に示す.まずタイトルを記入し，作り方， コツ・ポイント，材料の名前とその分量などを入力する。これら全ての情報をユーザが入力するのは手間がかかる. 特にサイズの小さいスマートフォン上で多くの情報を入力する作業はより負荷が高まる. そうしたユーザに対して，レシピ投稿時に必要な情報を補完できれば，レシピ投稿のハードルを下げられる.

本研究ではこうした背景を元に，レシピタイトルを大力としてそのレシピに必要な材料を推薦する夕スクを定義する。 そしてそのタスクを解くモデルを提案する. クックパッドに存在するレシピのタイトルと材料のデータを用いて，提案したモデルの性能を報告する。また提案手法を用いた材料推薦機能をリリースし，オンライン上でモデルの評価を行った結果も合わせて示す.

## 2 関連研究

料理に関連したドメインにおける推薦問題では, レシピの推薦が着目されることが多い. Khan らはレシピに使われている材料を入力として，栄養を考慮に入れたアンサンブルベースのトピックモデリングによるレシピ推薦を提案している [1]. Gao らは料理の画像から材料を推定し, siamese-network を構築してレシピを推薦している [2].

本研究が対象とする材料推薦の先行研究は，レシピの推薦を対象とした研究と比べるとそれほど多くない. Park らは 2 つの材料を入力として，その組み合わせがペアリングとして適しているかのスコアを

図1 クックパッドアプリ (Android) からレシピを投稿する際の入力画面 (2021-01-04 時点)

出力するモデルを提案している．しかしレシピとの関連性は着目されていない [3].

材料に関連した先行研究としては，Harashima らによる Seq2Seqを用いた材料名の正規化が挙げられる [4]. また Yamaguchi らは Character-CNN と Bidirectional GRU を組み合わせた系列ラベリングモデルを構築し，材料情報の中で材料に相当しない部分 (コメントなど)を検出している [5].

ニューラルネットワークが発展している昨今では出力部分を柔軟に定義できるようになり，情報推薦をマルチラベル分類とみなしてアプローチする例も見られる. Zhang らは論文のレビュアーを推薦する

図 2 提案手法の概要

問題をマルチラベル分類問題として定式化している [6]. Chen らは一枚の画像を入力とし, その画像中に存在する複数の物体のラベルを推薦するタスクを対象としたモデルを提案している [7].

マルチラベル分類の性能を向上させる方法として，事前に学習させたラベル情報を活用するアプローチが存在する. Rousu らはラベルの階層構造を考慮したアプローチを提案している [8]. Huang らは ImageNet の各予測対象クラスについて事前に埋め込み表現を学習させ，それを活用して未知クラスが含まれる画像分類問題への転移学習にアプローチしている [9].

## 3 提案手法

本研究では，レシピのタイトルを入力として適切な材料を推薦するタスクに取り組む．学習データにはレシピタイトルとその材料が紐付いており，このデータを元に学習したモデルが $k$ 個の材料予測結果を出力する．具体例としては，「鮭とほうれん草の奨油和風パスタ」というレシピタイトルから，そのレシピで使われている「鮭」・「ほうれん草」・「にんにく」・「オリーブオイル」という材料を予測するタスクとなる。

提案手法は図 2 のように表せる. 詳細を以下に示す.
1.レシピタイトルを形態素に分割し，モデルに入力する

2. 各形態素をベクトル表現に変換する

3. 各形態素のベクトル表現の平均を算出し, レシピタイトルのベクトル表現 (300 次元) とする

4. レシピタイトルのベクトル表現を全結合層 (512 $\rightarrow 256 \rightarrow 300$ ) に入力する

5. 出力する材料クラスごとに事前に割り当てたべクトル表現行列との内積を取る

6. 内積を取った値に sigmoid 関数を適用する. 得た値を各材料クラスに対する確信度とする

7. 確信度が高い上位 $k$ 個を推薦結果として出力する

提案手法では Huang ら [9] と同じく, 事前に学習させた材料クラスごとの埋め込み表現を用いる. マルチラベル分類問題では出現する頻度の少ないクラスを予測することが多い. 今回対象とする材料推薦問題でも出現頻度には大きな差がある. 提案手法ではクラスの埋め込み表現を明示的に与えることで， few-shot なクラスであっても適切に推薦できるモデルとなっている.

## 4 実験

提案したモデルの有効性を検証するためにベースラインとの比較実験を行った.

## 4.1 実験設定

本実験ではクックパッドに投稿されたレシピデー タを用いる。レシピデータにはレシピタイトル，詳細文，そのレシピに使われた材料と分量一覧，レシピの手順がユーザによって入力され紐付いている. 本研究ではレシピタイトルを入力とし，そのレシピで用いられた材料名を予測対象として用いる.レシピタイトルは $\mathrm{MeCab}$ (IPA 辞書) [10] を用いて形態素に分割した. 材料名は表記摇れしているものを名寄せするなどの前処理を実施し，約 1100 クラスとなった．使用するデータは，材料が紐付いているレシピを抽出した上でランダムに分割し，学習データ:検証データ:テストデータ $=930,000$件:230,000 件:10,000 件とした.

## 4.2 比較手法

k-NN 材料クラスの予測を行うアーキテクチャとして近傍探索に基づくアプローチ (kNearestNeighbor: k-NN) との比較を行う. k-NNでは,
表 1 材料予測結果の例

 &  &  & 觡，酒，塩，コ \\

タイトルのベクトル表現を獲得するところまでは提案手法と同じである. ベクトル表現を獲得した後,近い値を持つタイトルを持つレシピを $\mathrm{k}$ 個取得する. 取得した $k$ 個のレシピに紐づく材料を集計し,得られた出現数に基づいて上位 5 個の材料を推薦結果として表出する。

提案手法（IE なし） また提案手法について，材料クラスごとのベクトル表現との内積を取らない提案手法 (IngredientEmbedding: IE なし) も比較対象とする.

提案手法を含むこれら手法で用いる分散表現モデルは，予めクックパッドの全レシピデータにおけるタイトル，手順テキストを対象に学習させた fasttext (300 次元のベクトルを学習するように設定しその他パラメータはデフォルトで設定) [11]を用いる。なお, 提案手法 (IEなし), 提案手法は Adam[12] で最適化し，検証データに対する TopKCategoricalAccuracy が最良となるエポックで EarlyStop させたものを評価対象とする。

## 4.3 評価指標

各手法を評価するため、順序を考慮せず集合を評価する指標と、順序を考慮する指標を使用した. 前者には Precision と Recall、F1、HITS (予測したクラス $k$ 個のうち，いくつが正解したかの絶対数)を使用した。また、後者には MAP と MRR、NDCG を使用した. また，モデルの予測する材料クラスの偏りを見る指標として，全クラス数のうち予測したクラスの重複を排除した数の割合を Coverage と定義し， その值についても確認した。

## 4.4 実験結果

表 2 に実験結果を示す。推薦されるアイテムの幅広さを示す Coverage が最も高かったのは k-NN であったが，提案手法がそれ以外の全ての指標で最も高い精度を記録した。提案手法についても Converage は 0.6 程度という値から，偏りのある推薦表 2 各評価指標における性能比較

 & 提案手法 \\

Recall@5 & 0.38 & 0.48 & $\mathbf{0 . 4 9}$ \\
F1@5 & 0.37 & 0.47 & $\mathbf{0 . 4 8}$ \\
NDCG@5 & 0.43 & 0.54 & $\mathbf{0 . 5 5}$ \\
MAP@5 & 0.30 & 0.41 & $\mathbf{0 . 4 2}$ \\
MRR@5 & 0.71 & 0.83 & $\mathbf{0 . 8 4}$ \\
HITS@5 & 2.01 & 2.56 & $\mathbf{2 . 6 1}$ \\
Coverage & $\mathbf{0 . 7 8}$ & 0.50 & 0.64 \\

結果でないことが示された.

表 1 に各モデルの出力結果を示す. 1 例目について，k-NN は「真鯛」と「甘塩鮭」が同時に出ている. モデルの性質上，魚系でベクトル表現が近いレシピタイトルを取得した結果，「真鯛」のレシピと 「甘塩鮭」のレシピとが近かったことによるものだと考えられる。

2 例目について, $\mathrm{k}-\mathrm{NN}$ ・提案手法 (IE なし) はいずれも「ディル」が当てられていない. 「ディル詰め」というレシピがそもそもあまり多いものではないため，集計べースのモデルの場合「いわし」や 「オーブン焼き」などのキーワードに出現する材料に引きずられた傾向が見られる。提案手法 (IE なし) については，「しお・こしょう」などといった出現数の多い調味料に引きずられるきらいがあった.これらに対して提案手法は，モデル内に組み込まれた材料クラスのベクトル表現によって，提案手法 (IE なし) と比較すると改善傾向が伺える。

3 例目について，前述したようにマルチラベル分類モデルは出現数の多いクラスに引きずられてしまう.この例ではその傾向が顕著に出ており，上位 5 つの出力結果が調味料ばかりに偏り主材料を出力できていない。これに対して，k-NN は適切に主材料を当てることができている.

## 4.5 オンライン評価と考察

最後に，ここまでオフラインテストで検証したモデルについて，オンライン上で実際にユーザへ推薦
表 3 オンラインでの材料推薦結果

図 3 レシピ投稿画面でユーザに表出した材料推薦の様子

表 4 豆腐を例とした同一系統材料のレシピ出現頻度

結果を表出する検証を行った. 図 3 がユーザへ推薦結果を表出した画面である。 ユーザがレシピタイトルを入力した後, 材料入力の位置までスクロールすると推薦画面が表出する仕様とした. 2020 年 11 月初旬にデプロイしてから 2020 年 12 月末までの期間を対象として，提案手法によって推薦された材料をユーザが一度でも選択した割合の平均を計測したところ，14.97\%となった.

表 3 にユーザに推薦された材料とユーザによって選択された材料の例を示す。上から 2 つの例「超簡単！超時短！生チョコくるみタルト」や「ケンタ味！カリカリのフライドポテト！」のように推薦材料の殆どが選択され，うまく機能しているケースも見られた. 一方で下から 2 つの例「驚きの美味しさ！塩麹とカレーの鶏唐揚げ」や「白身魚の和風レモンマスタードソース」というレシピタイトルについては，主材料である「鶏肉」や「白身魚」を推薦できていないからか，推薦されたいずれの材料も選択されなかった. このことから，調味料などの周辺材料を正しく推薦することよりも主材料を推薦することがユーザにとって重要ではないかと考えられる。

また，改善点として材料ラベル間の共起関係に着目することが挙げられる。具体例として，同一種類の材料が同時に出現する可能性は低いことがわかっている. 表 4 では「もめん豆腐」と「絹ごし豆腐」，及び「高野豆腐」が同じレシピに出現する分布を示している.この表を見るとこれら材料が同時に出現する可能性が低いことがわかる. Chen らの提案手法 [7] では画像中にテニスラケットと人は同時に写っていることが多いといった，物体ラベルに依存関係があることを示している。その関係性をグラフ畳み込みニューラルネットワークで学習させ，その重みを分類時に適用させるモデルを提案している.本タスクにおいても同様に，ラベル間の関係性を考慮するアプローチは有効だと考えられる。

## 5 結論

本研究ではレシピタイトルを入力として適切な材料を予測するタスクに取り組んだ。またそれを解くモデルとして予め学習した材料クラスのベクトル表現を組み込んだマルチラベル分類モデルを提案した. $\mathrm{k}$ 近傍探索モデルと比較した結果，提案手法のほうがより正確に材料推薦ができること，また全体的に高い精度で材料推薦が可能であることが示された. 今後の展望としては，材料ラベル間の共起関係を考慮すること，調味料などの周辺材料の場合と主材料などの場合とで損失に対する重み付けを調整するといったモデル改善を行っていくことが挙げられる. さらにオンライン上での $\mathrm{AB}$ テストを実施することで実用観点におけるモデルの比較を行うことが課題である.

## 参考文献

[1]Mansura A. Khan, Ellen Rushe, Barry Smyth, and David Coyle. Personalized, health-aware recipe recommendation: An ensemble topic modeling based approach. In Proceedings of the 4th International Workshop on Health Recommender Systems co-located with the 13th ACM Conference on Recommender Systems 2019, 2019.

[2]Xiaooyan Gao, Fuli Feng, Xiangnan He, Heyan Huang, Xinyu Guan, Chong Feng, Zhaoyan Ming, and Tat-Seng Chua. Hierarchical attention network for visually-aware food recommendation. IEEE Transactions on Multimedia, 2019.

[3]Donghyeon Park, Keonwoo Kim, Yonggyu Park, Jungwoon Shin, and Jaewoo Kang. Kitchenette: Predicting and ranking food ingredient pairings using siamese neural network. In Proceedings of the 28th International Joint Conference on Artificial Intelligence, 2019.

[4]Jun Harashima and Yoshiaki Yamada. Two-step validation in character-based ingredient normalization. In Proceedings of the Joint Workshop on Multimedia for Cooking and Eating Activities and Multimedia Assisted Dietary Management, 2018.

[5]Yasuhiro Yamaguchi, Shintaro Inuzuka, Makoto Hiramatsu, and Jun Harashima. Non-ingredient detection in usergenerated recipes using the sequence tagging approach. In Proceedings of the 6th Workshop on Noisy User-generated Text, 2020.

[6]Dong Zhang, Shu Zhao, Zhen Duan, Jie Chen, Yanping Zhang, and Jie Tang. A multi-label classification method using a hierarchical and transparent representation for paperreviewer recommendation. ACM Transactions on Information Systems, 2020.

[7]Z. Chen, X. Wei, P. Wang, and Y. Guo. Multi-label image recognition with graph convolutional networks. In Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2019.

[8]Juho Rousu, Craig Saunders, Sandor Szedmak, and John Shawe-Taylor. Kernel-based learning of hierarchical multilabel classification models. Journal of Machine Learning Research, 2006.

[9]He Huang, Yuan-Wei Chen, W. Tang, Wenhao Zheng, Qingguo Chen, Yao Hu, and Philip S. Yu. Multi-label zero-shot classification by learning to transfer from external knowledge. ArXiv, 2020.

[10]工藤拓, 山本薫, 松本裕治. Conditional random fields を用いた日本語形態素解析. 情報処理学会研究報告. NL,自然言語処理研究会報告, 2004.

[11]Piotr Bojanowski, Edouard Grave, Armand Joulin, and Tomas Mikolov. Enriching word vectors with subword information. Transactions of the Association for Computational Linguistics, 2017.

[12]Diederik P. Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In 3rd International Conference on Learning Representations, 2015.