# レシピに含まれる不使用な材料等に関する記述の抽出

山口泰弘 ${ }^{1}$ 染谷大河 ${ }^{2}$ 深澤祐援 ${ }^{1}$ 原島純 1
1 クックパッド株式会社 2 東京大学大学院 総合文化研究科
\{yasuhiro-yamaguchi, yusuke-fukasawa, jun-harashima\}@cookpad.com
taiga98-0809@g.ecc.u-tokyo.ac.jp

## 概要

レシピ中のテキストには，しばしば「卵不使用」 のように特定の材料等について不使用である旨を示 す記述が含まれる。こうした記述は，例えば検索に おいて「卵」で検索した際に「卵不使用」のレシピ が表示される等，不都合な場合がある．そこで，本研究では系列ラベリングモデルを用いてレシピに含 まれるテキストから不使用な材料／調理器具／調理工程を抽出する手法を提案する。 また，レシピ特有の表現に着目したデータ拡張手法も併せて検討 した. 実験の結果，F185.1\% の抽出精度を達成し， データ拡張手法についてもその有効性が示された。

## 1 はじめに

クックパッドをはじめとしたユーザー投稿型のレ シピサービスには多様なレシピが存在する. 投稿さ れるレシピの中には, しばしば特定の材料や調理器具等を使わずに調理できる旨を明示的に記載したも のがある.「小麦粉不使用」や「卵アレルギー対応」等特定の食材を使わないことを示すものや，「火を 使わずに」「圧力鍋なしで」のように調理法や道具を 使わないことを表すもの等，対象となるアイテムや 行為，表記方法は様々である。こうした記述は，閲覧者がアレルギーに配慮したレシピを探す際や，よ り簡単な調理法を探す際に有益な情報となり得る。

一方，このような不使用な食材等に関する記述は レシピ検索等の応用において不都合な場合がある.単純なテキストのマッチングに基づく検索では,「卵」で検索した際に「卵不使用」と記載のあるレシ ピが検索結果に表示されることがある. しかし材料名で検索を行うユーザーの多くはその材料を使った レシピを探している可能性が高く, 当該材料を使わ ないレシピが検索結果に載ることは不自然だと考え られる。こうした課題を解決するためには，予めレ シピ中から不使用と書かれた材料等の記述を検出し
ておく，といった対応が必要になる。

そこで本研究では，レシピ中のテキストから系列 ラベリングモデルを用いて不使用な材料／調理器具 ／調理工程を抽出する手法を提案する。また，不使用に関連する記述に着目したいくつかのデータ拡張手法を検討し，実験を通してその効果を調査する。

## 2 関連研究

系列ラベリングは入力系列の各トークンにラ ベルを割り当てる手法であり, 固有表現認識や品詞タグ付け等のタスクで利用されている. 本研究 では固有表現認識タスクの代表的な手法である BiLSTM-CRF [1]を元にしたモデルを利用する.

レシピ中のテキストを対象にした系列ラベリング の研究として, 材料や調理工程を検出する手法がい くつか提案されている [2] [3]. また, Cookpad Parsed Corpus (CPC) [4]のようにレシピに対して形態素, 固有表現，係り受けの情報を付与する取り組みもあ る. CPC では調理中に除去される材料の検出等, 文脈を考慮したより詳細な解析が試みられている。

また, レシピの材料や調理工程に着目した研究と して，材料名の正規化 [5]，材料欄に含まれる非材料 の検出 [6]，タイトルに基づく材料の予測 [7]，調理工程のグラフ構造化 [8] [9], 材料の上位下位関係の 検出 [10]等がある. これらの研究はレシピ中で使用 される材料や調理工程に着目しているが, 本研究で は不使用な項目に焦点を当てる。

テキストのデータ拡張に関する研究には，単語の 挿入・削除・置換等の処理を行う EDA [11] 等があ り, 文分類タスク等での有効性が確認されている. また，Dai ら [12] は固有表現認識タスクを対象にし たデータ拡張としてメンションの置換やメンション 以外のトークンのシャッフル等の手法を提案し, 予測性能の向上を示している.これらの研究とは異な り, 本研究ではレシピ固有の表現に着目したデータ 拡張手法を用いることで性能改善を試みる。
表 1 アノテーションしたレシピの例 テキスト

 \\

## 3 提案手法

## 3.1 データセットの作成

不使用に関する記述に着目したデータセットを 新たに作成するために，172万品のレシピデータを 含む Cookpad Recipe Dataset [13] から「不使用」等の 記述を含むレシピ 7,000 件と無作為に選択したレシ ピ 3,000 件の計 1 万レシピを抽出した. 1 人のアノ テータにより, 抽出したレシピのタイトル，説明の テキストに対して不使用であることが明記された材料/調理器具/調理工程のスパンのアノテーション を行った。表 1 にアノテーションしたレシピの例を 示す. 作成したーデータセットは学習用／検証用／ テスト用に分割し, 学習と評価に利用した. 分割し たデータセットの統計を表 2 に示す. データの収集 やアノテーション方法に関するより詳しい情報は付録 A に記す。

## 3.2 データ拡張

作成したデータセットの観察から, 不使用に関連 する記述には多様性があり, 各表現の出現頻度は不均衡であることがわかった。そこで，以下のデータ 拡張手法を適用することでこの問題に対処する.

ReplaceSuffix “〜なし”のように，対象となるス パンの後方に続くことでそれらが不使用であること を示す表現について，それらの表現をランダムに入 れ替える手法. 付録 B. 1 に示した表現に該当する箇所を，他の表現でランダムに置き換える.

ReplaceSeparator “A・Bを使わない...” のよう に複数のアイテムを対象に不使用であることを示す 表現について, 列挙のパターンをランダムに入れ替
える手法. アノテーションされた直近 2 つのスパン に挟まれたテキストのうち，付録B. 2 に示した表現 に該当するものを他の表現で置き換える。

SuffixToPrefix “〜なし”のようにスパンの後方 に続く表現を，“ノン〜”(“ノンオイル”，等)のよう にスパンの前方に付く表現に置き換える手法. アノ テーションされたスパンの後に付録 B. 3 に示す表現 が続く場合，“ノン〜”という形式に置き換える。

## 3.3 同義語による置換

上記のデータ拡張手法では，対象となる表現以外 は変化せず，似た表記を持つテキストが多く生成さ れるため過学習につながる可能性がある. そこで, データのバリエーションを増やすためにデータ拡張 によって生成されたテキストを対象としてテキスト 中に含まれる単語をランダムに同義語に置き換え る処理を合わせて行う．テキストを分かち書きした 後, 各単語について料理関連語を対象として事前に 定義した同義語辞書をもとに他の同義語へとランダ ムに置き換える。

## 3.4 不使用に関する記述の抽出

図 1 にスパン抽出に用いる系列ラベリングモデ ルの構造を示す. BiLSTM-CRF [1] をべースとした ニューラルモデルであり，レシピ中のテキストを入力として, 各トークンに対して BIOUL タグを出力 することで不使用なアイテムのスパンと，それらの カテゴリ (材料／調理器具／工程)を予測する.

入力のテキストは形態素解析を行なったあと文字レベルでトークン化し, 文字系列 $\left(c_{1}, \cdots, c_{T}\right)$ と 品詞系列 $\left(\tau_{1}, \cdots, \tau_{T}\right)$ に変換する。単語の境界情報 を与えるために，品詞系列には図 1 に示すように BIOUL スキーマを用いて文字ごとに品詞情報を 割り当てる方法を採用した. エンコーダへの入力 は文字／品詞に対応する学習可能な埋め込み表現 $\boldsymbol{e}_{\mathrm{CHAR}}\left(c_{t}\right), \boldsymbol{e}_{\mathrm{POS}}\left(\tau_{t}\right)$ を結合したべクトル $\boldsymbol{x}_{t}$ の系列と する.

$
\begin{aligned}
\boldsymbol{x}_{t} & =\boldsymbol{e}_{\mathrm{CHAR}}\left(c_{t}\right) \| \boldsymbol{e}_{\mathrm{POS}}\left(\boldsymbol{\tau}_{t}\right) \\
\boldsymbol{h}_{1}, \cdots, \boldsymbol{h}_{T} & =\operatorname{Encoder}\left(\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{T}\right)
\end{aligned}
$

エンコーダの出力から， CRFを通してタグ 系列 $\boldsymbol{y}=\left(y_{1}, \cdots, y_{T}\right)$ の確率を計算する. 以下の $\theta_{y_{t-1}, y_{t}}, \boldsymbol{w}_{y_{t}}$ は CRF の学習パラメータを表す.

$
p\left(\boldsymbol{y} \mid \boldsymbol{h}_{1}, \cdots, \boldsymbol{h}_{T}\right) \propto \exp \left(\sum_{t=2}^{T} \theta_{y_{t-1}, y_{t}}+\sum_{t=1}^{T} \boldsymbol{w}_{y_{t}}^{\top} \boldsymbol{h}_{t}\right)
$

図 1 スパン抽出モデル

学習では以下の負の対数尤度を最小化するように モデルのパラメータを最適化する.

$
\mathscr{L}=-\sum_{i} \log p\left(\boldsymbol{y}^{(i)} \mid \boldsymbol{h}_{1}^{(i)}, \cdots, \boldsymbol{h}_{T}^{(i)}\right)
$

## 3.5 スパンのフィルタリング処理

本研究で抽出対象とする 3 種類のスパンのうち,特に材料に関するものはレシピの材料闌の情報と組 み合わせることで抽出精度の改善が期待できる. そ こで，レシピの材料欄に基づいて抽出されたスパン のフィルタリングを行う方法を提案する。

前処理として, 抽出された材料のスパンと材料欄 の材料名を対象に Harashima ら [5] の手法を利用し て材料名の正規化を行う. 正規化した材料名同士を 比較し，抽出した材料スパンのうち材料欄に含まれ るものがあればそれらを取り除く。このフィルタリ ング処理により誤って抽出された可能性の高いスパ ンを除去することができるため，モデルの適合率の 改善が期待できる.

## 4 実験と結果

## 4.1 実験方法

各種データ拡張手法を適用したデータセットを用 いてスパン抽出モデルの学習を行い，性能の評価を 行った. データ拡張処理では各手法について拡張対象の表現と変換パターンを可能な限り適用した. 学習データにデータ拡張を施した場合のデータセット 規模の変化を表 3 に示す。より詳細なデータ拡張の 設定，結果は付録 B に記す。表 3 各データ拡張手法適用後のデータセット規模

各テキストは予め fugashi [14] と IPAdic ${ }^{1)}$ により 形態素解析を行い，その結果得られた品詞情報をモ デルの入力とする. また，モデルのエンコーダには 2 層の双方向 GRU (BiGRU) [15] を利用した. モデルの学習では分割したアノテーションデータ のうち学習データを用いてモデルのパラメータの 更新を行い，検証データを用いた評価による Early Stopping を実施した. モデルのパラメータの最適化 には AdamW [16]を用いた。

モデルの性能評価にはスパンベースの F1／ Precision / Recall を利用した. 学習時には Early Stopping を行い，検証データにおいて最も高いF1 ス コアを達成した時点のモデルを採用した。

## 4.2 ベースライン手法

ベースライン手法として，以下 2 つの抽出方法を 採用した. どちらの手法についても， 3.5 節のフィ ルタリング処理と併せて予測を行なった。

Dictionary-based Extractor Cookpad のサービス で利用されている独自の辞書に基づいてテキスト中 から候補となる材料・調理工程・調理器具のスパン を抽出する手法.

Dependency-based Extractor テキストの依存構造解析を行い，「不使用」等のキーワードと係り受 け関係にある名詞を抽出する手法. 依存構造解析に は $\mathrm{GiNZ}^{2}$ を利用した。抽出したスパンのラベルは Dictionary-based Extractor でも利用した独自の辞書に 基づいて決定した.

## 5 結果と考察

表 4 に実験結果を示す. 2 つのベースライン 手法と BiGRU-CRF を比較すると，F1において BiGRU-CRF モデルが+20\%以上高い性能を示した. Dictionary-based Extractorについては， Recall は比較的高いが，材料以外はフィルタリング処理されない ことや，“〜にもあう”のような表現を伴うレシピ

表 4

テストデータにおけるモデルの予測精度

表 5 ラベルごとの予測精度

と直接関係のない食品のスパンも抽出されたこと で，Precision は他の手法に比べて特に低い結果と なった. Dependency-based Extractor では BiGRU-CRF と比較して高い Precision を達成したが, 予め定義し たパターン以外は抽出できないことや依存構造解析の誤り等の影響で，特に Recall が低くなる結果と なった.

データ拡張の効果 各データ拡張手法に着目す ると，すべての手法でデータ拡張を用いない場合 と比べて F1 スコアの上昇が見られた. データ拡張 を個々に適用した場合，いずれの手法においても Precision の上昇が確認できたが，Recall については 下がる傾向が見られた. 一方，全てのデータ拡張手法を適用した場合には全ての指標について改善が見 られ, Precisionでは+3.9\%の改善, Recall においても $+0.1 \%$ と若干の上昇となった. データ拡張で考慮さ れた記述パターンを含むテキストについて検出精度が向上することで Precision の上昇につながった と考えられる。一方，false-negative な誤りの多くは “〜の代わりに”や“〜を避けたい”のように今回の データ拡張の設定で考慮されていないものであり， Recall の更なる改善にはこうした表現に対応する学習データの追加やデータ拡張の設定が必要になると 考えられる。

ラベルごとの予測精度 表 5 に BiGRU-CRF + All モデルのラベルごとの予測精度を示す. F1による 比較では材料の抽出精度が最も高く, 次いで調理器具, 調理工程 という結果になった. 特に調理工程に ついては，調理器具よりも学習データに含まれるス パンの数が多いにも関わらず，他のラベルと比較し ていずれの指標においても低い性能を示した．材料 や調理器具のラベルが付いたスパンは，その多くは 一般名詞であることから予測が比較的容易であると表 6 同義語による置換とスパンのフィルタリングの効果

考えられる。しかし, 調理工程については学習デー タに含まれる事例が比較的少ない一方で「一晚寝か せ」のように複数の単語からなるもの等表現のバリ エーションが多いため，他の 2 つのラベルに比べて 予測が困難であると考えられる。

同義語による置換の効果 同義語による置換処理 を施していないデータセットで BiGRU-CRF + All モ デルを学習した結果を表 6 に示す. 置換処理を行わ ない場合，すべての指標において性能の低下が見ら れたが，特に Recall において $-2.2 \%$ の顕著な性能低下が見られた. 同義語置換なしの設定では共通した 語句を持つテキストが多く生成されるため，モデル が限られたパターンのみに適合したことで Recall が 減少したと考えられる.

スパンのフィルタリング処理の影響スパンの フィルタリング処理を適用しない場合の性能比較を同様に表 6 に示す. フィルタリング処理を適用した場合と比較して，F1で $-1.0 \%$, Precision では $-2.3 \%$ の性能低下が見られた. 特に Precision の変化 から，提案したフィルタリング処理を用いること でBiGRU-CRF モデルが誤って検出したスパンを排除できることがわかった。一方，Recall においては フィルタリング処理しない場合の方が $+0.5 \%$ ほど高 い精度となった. これはフィルタリング処理によっ て本来抽出するべきスパンが誤って排除されたこ とによるものと考えられる. フィルタリング処理の 導入により，Recall においては若干の性能低下が見 られたが，Precision においては期待した改善が見ら れ，F1の向上に寄与した.

## 6 おわりに

レシピ中のテキストに含まれる不使用な材料／調理器具／調理工程に関する記述を抽出するために,系列ラベリングを用いた抽出手法と，レシピ特有の 表現に着目したデータ拡張手法を提案した. 実験の 結果，F1 スコアで $85.1 \%$ の抽出精度を達成し，提案 したデータ拡張手法の有効性が示された。今後は抽出精度の改善やレシピ検索等の応用に向けて, 系列 ラベリング以外の抽出手法の検討や検索タスクによ る評価等を行いたい。

## 参考文献

[1] Guillaume Lample, Miguel Ballesteros, Sandeep Subramanian, Kazuya Kawakami, and Chris Dyer. Neural architectures for named entity recognition. In Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (NAACL-HLT 2016), 2016.

[2] Makoto Hiramatsu, Kei Wakabayashi, and Jun Harashima. Named Entity Recognition by Character-based Word Classification using a Domain Specific Dictionary. In Proceedings of the 20th International Conference on Intelligent Text Processing and Computational Linguistics (CICLing 2019), 2019.

[3] Tetsuro Sasada, Shinsuke Mori, Tatsuya Kawahara, and Yoko Yamakata. Named Entity Recognizer Trainable from Partially Annotated Data. In Conference of the Pacific Association for Computational Linguistics (PACLING 2015), 2015.

[4] Jun Harashima and Makoto Hiramatsu. Cookpad parsed corpus: Linguistic annotations of Japanese recipes. In Proceedings of the 14th Linguistic Annotation Workshop (LAW 2020), 2020.

[5] 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 (CEA 2018), 2018.

[6] Yasuhiro Yamaguchi, Shintaro Inuzuka, Makoto Hiramatsu, and Jun Harashima. Non-ingredient Detection in User-generated Recipes using the Sequence Tagging Approach. In Proceedings of the Sixth Workshop on Noisy User-generated Text (W-NUT 2020), 2020.

[7] 深澤祐援, 西川荘介, 原島純. マルチラベル分類によ る材料推薦モデル. 言語処理学会第 27 回年次大会発表論文集 (NLP 2021), 2021.

[8] Shinsuke Mori, Hirokuni Maeta, Yoko Yamakata, and Tetsuro Sasada. Flow Graph Corpus from Recipe Texts. In Proceedings of the Ninth International Conference on Language Resources and Evaluation (LREC 2014), 2014

[9] Lucia Donatelli, Theresa Schmidt, Debanjali Biswas, Arne Köhn, Fangzhou Zhai, and Alexander Koller. Aligning actions across recipe graphs. In Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing (EMNLP 2021), 2021.

[10] Young-joo Chung. Finding food entity relationships using user-generated data in recipe service. In Proceedings of the 21st ACM international conference on Information and knowledge management (CIKM 2012), 2012.

[11] Jason Wei and Kai Zou. EDA: Easy data augmentation techniques for boosting performance on text classification tasks. In Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP 2019), 2019.

[12] Xiang Dai and Heike Adel. An analysis of simple data augmentation for named entity recognition. In Proceedings of the 28th International Conference on Computational Linguistics (COLING 2020), 2020.

[13] Jun Harashima, Michiaki Ariga, Kenta Murata, and Masayuki Ioki. A large-scale recipe and meal data collection as infrastructure for food research. In Proceedings of the Tenth International Conference on Language Resources and Evaluation (LREC 2016), 2016.

[14] Paul McCann. fugashi, a tool for tokenizing Japanese in python. In Proceedings of Second Workshop for NLP Open Source Software (NLP-OSS 2020), 2020.

[15] Kyunghyun Cho, Bart van Merriënboer, Dzmitry Bahdanau, and Yoshua Bengio. On the properties of neural machine translation: Encoder-decoder approaches. In Proceedings of Eighth Workshop on Syntax, Semantics and Structure in Statistical Translation (SSST 2014), 2014.

[16] Ilya Loshchilov and Frank Hutter. Decoupled Weight Decay Regularization. In Proceedings of International Conference on Learning Representations (ICLR 2019), 2019.

## A データセットの詳細

## A. 1 レシピの収集方法

不使用に関する記述を含むレシピを効率的に収集 するために，Cookpad Recipe Dataset [13] に収録され たレシピを対象に，タイトル・説明文に以下の表現 を含むものをランダムに 7,000 件収集した:

使わ／つかわ／使い／使って／つかって／使用／不要／なし／無し／いら／要ら／せず／しない／し なく/アレルギー

また，データの偏りを考慮して上記で選ばれな かったレシピの中からランダムに 3,000 件のレシピ を取得し，データセットに加えた。

## A. 2 アノテーションの詳細

収集したレシピのタイトル (title), 説明 (description) を対象に，当該テキストの記述のみからそのレシピ 全体で不使用であることがわかるもののみを対象に スパンのアノテーションを付与した. また「○○な しでも OK」のように，アイテムを使わないことが オプションである旨が記載されたものに関してはア ノテーションを行わないこととした.

## B データ拡張手法の詳細

各種データ拡張手法について，詳細な設定を以下 に示す. また，表 7 に各手法で対象となる学習デー タ中のテキストノスパン数の統計情報を示す.

## B. 1 ReplaceSuffix

スパンの後方に続く表現が以下のいずれかに当て はまるとき，他の表現による置き換えを行う: なし /いらず／使わない／使ワナイ／を使わない／不要 ／不使用／要らず／なし／無し／ゼロ

## B. 2 ReplaceSeparator

スパンに挟まれた表現が以下のいずれかに当ては まるとき，他の表現による置き換えを行う: ・(中点) ／\&(アンパサンド) $/$ ，(読点) $/$ や(並立助詞) (空白)

## B. 3 SuffixToPrefix

スパンの後方に続く表現が以下のいずれかに当て はまるとき，それらを消してスパンの前方に“ノン” を追加する処理を行う: なし／ナシ／無し／不使用

## B. 4 データ拡張の例

全てのデータ拡張手法と同義語による置換を行な い得られたテキストを表 8 に示す.

表 8 データ拡張により生成された文の例

(a) 例文 1

原文卵・乳製品不使用の簡単もっちりスコーン』

生成例 1 卵乳製品いらずの超簡単モッチリスコーン』

生成例 2 卵\&乳製品不要のかんたんもっちりすこーん』

(b) 例文 2

原文おからでイタリアンえピザ風え小麦粉不使用

生成例 1 卯ノ花でイタリア料理凸ピザ風々ノン小麦粉

生成例 2 オカラでイタリアぬピザ風々小麦粉を使わない
 山口泰弘 ${ }^{1}$ 染谷大河 ${ }^{2}$ 深澤祐援 ${ }^{1}$ 原島純 1 1 クックパッド株式会社 2 東京大学大学院 総合文化研究科 \{yasuhiro-yamaguchi, yusuke-fukasawa, jun-harashima\}@cookpad.com taiga98-0809@g.ecc.u-tokyo.ac.jp  