言語処理学会 第25回年次大会 発表論文集 (2019年3月)

確率⽊置換⽂法と分散表現に基づくレシピ構造⽊の⽣成モデルの学習
吉成 未菜里 1
1東北大学

2

横井 祥 1,3

進藤 裕之 2,3奈良先端科学技術大学院大学

3

理化学研究所 AIP センター

{yoshinari, yokoi, inui}@ecei.tohoku.ac.jp
1

はじめに乾 健太郎 1,3

shindo@is.naist.jpの中の特徴的な部分⽊（カタマリと考えて良い部分，置き換え

一般ユーザが CGM (Consumer Generated Media)*1 に投稿した大量の料理レシピを利活用するため，検索，分類，生成といった料理レシピの情報処理の研究が活発におこなわれている [4, 13, 15]*2 ．
各レシピの意味表現としては，特に，調理⼿順を⽊やグラフによって構造化する試みが盛んである．例えば Mori らはレシ
ピの無閉路有向グラフによる表現 Flow Graph を定義し，日本語のレシピ投稿サイトであるクックパッド*3 のレシピの一部を Flow Graph 形式に変換したコーパスを作成した [9]．またWang らは調理動作の順序を表す action flow と材料に対して適用される動作を表す ingredient flow の 2 種類のフローを持
つレシピのグラフ表現 Cooking Graph を定義し [14]，これを中国語のレシピ検索*4 に活用した [15]．以下本稿ではレシピの表現としてとくに木構造を扱う（実際に実験に用いたレシピのて良い部分）を捉える必要があるだろう (図3) ．レシピの木の中に意味的なまとまりは記載されていないため，レシピの木を教師なしで分割する必要がある．二点目として，そのように分割された部分⽊同⼠の類似度をソフトに捉える必要がある．代
替食材・方法の提示においては，部分木同士をその類似度に基づいて置き換えることになると考えられるが，これをシンボルでおこなうのは困難である．たとえば「みじん切りにした長ネギ」と「細かく刻まれた葱」は文字列としては全く異なるがほとんど同じものを指している．本研究では，これらの二点のニーズを満たしたレシピの木の新しい意味表現を教師なしで学習することを試みる．

1.1

本研究の貢献は以下の通り：• レシピの木を教師なしで分割し特徴的な部分木を捉える問題
を，構文木の教師なし分割と捉えて確率木置換文法の学習に木構造表現の構成方法は2.1節参照）．
料理レシピに対する情報処理では，このような料理レシピの⽊の全体を用いることがしばしばである．たとえば類似レシピ検索や推薦ではレシピの木同士の何らかの意味での類似度や距離が用いられる [15, 18]．しかし実際には，料理レシピの⽊のよって実現した．

• レシピの部分木の連続表現を，分布仮説に基づく単語埋め込みや句の埋め込みと同様の手法で構成した．

• これらの手法を実際の大規模データに適用した際に学習される意味表現を確認した．

⼀部に着目したい場合もある．例えば，用意できない食材や手元の機材では不可能な調理手順に注目し，その部分のみをその他の食材や方法で代替したい，というのはユーザの一般的なニーズであろう．あるいは，料理レシピを検索する際には，各レシピの特徴（他の類似レシピとの違いがよく表れた部分）が有用な情報になる．たとえばクックパッドで「肉じゃが」を検索すると 10,740 件*5 のレシピがヒットするが，ユーザにとってその違いを見分けることは簡単でない．
前述した「レシピの木の一部に着目した情報処理」（代替食材・手法の提示，特徴的な部分の提示）をおこなうためには，どういった意味表現が必要だろうか？一点目として，レシピの木*1 クックパッド (日本語) https://cookpad.com/，楽天レシピ (日本語)

貢献

提案⼿法

2

本研究では，部分構造のまとまりを捉えながらそれらの連続的な類似度も考慮したレシピの意味表現を学習することを試み
る．学習は 3 段階に分けておこなう：

1. 各レシピを表す木を構文木と考え，木置換文法の学習の枠組みでレシピの特徴的な部分構造を取り出す．

2. 各ノードに単語ベクトルと同様の分散表現を与え，その和によって各部分構造に連続表現を付与する．

3. 部分構造に付与された連続表現を用いてレシピの木の中間ノードに対するシンボル細分化を行う．
提案する学習手法の (1) 特徴的な部分構造の獲得および (2)https://recipe.rakuten.co.jp/，
GENIUS KITCHEN (英語) https://www.geniuskitchen.com/，愛料理 (中国語) https://icook.tw/，な

単語ベクトルの学習は，それぞれでこれらの巨大な生コーパス

ど．

を活用できることを付記する．まず (1) の入力である「レシピ*2 http://www.ieice.org/~cea/workshop/2018/を表す木」は，生テキストで書かれた大量のレシピを木構造に*3 https://cookpad.com/*4 中国語のレシピには，日本語や英語のレシピとは異なり，食材や調理方法と変換するパーザ [5] を活用することで自動生成することができ無関係のタイトルがつけられている場合がある．このため，レシピタイトルでの類似レシピ検索が困難であり，レシピの構造を活用する必要性が特に高い．
*5 2018 年 1 月 14 日現在

る．エッジの種類を区別しない場合のエッジ推定の精度は 70%台後半程度である*6 ．また (2) の単語ベクトルの学習でも，生*6 著者に確認．

― 300 ―

Copyright(C) 2019 The Association for Natural Language Processing.
All Rights Reserved.

テキストで書かれた大量のレシピをそのまま活用できる．

2.1

データ

本研究では木構造レシピデータとして，172 万品の日本語レシピデータからなるクックパッドデータセット*7 を一旦 Flow

Graph 形式 [9] にパーズした上で，これを木構造に変換して用いる．手順は以下の通り．

1. ⽣テキスト → 情報付きテキスト: 生テキストで書かれたレシピに対して，形態素解析器 KyTea*8 を用いて形態素解析およびレシピ用語認識 [8] をおこない，各単語に形態素情報やレシピ用語の種別等の情報が付与された情報付きテキストにする．同時に，動詞や助動詞の終止形の復元用のファイルを作る．

2. 情報付きテキスト → フローグラフパーザ⼊⼒形式: ステッ

図1: ⽊置換⽂法 (図は進藤 (2012) https://www.hshindo.

com/data/shindo-NLP2012-talk.pdf による．)

プ1で得られる情報付きテキストをフローグラフパーザに入部分⽊力するため形式的に変換する．

3. フローグラフパーザ⼊⼒形式 → フローグラフ: フローグラ
フパーザ [5] を用いる．

温める⽣クリームAcF

補助⽊

4. フローグラフ → レシピの⽊:a) ステップ1で作成した終止形復元用ファイルを参照し，動詞や助動詞の終止形を復元する．

補助⽊

acat

Det

NTomb) 料理オントロジ [17] を用いて同義語を寄せる．例えば，「たNPVの表現に統一する．
NPc) 食材 (F), 道具 (T), 調理者の動作 (Ac), 食材の動作 (Af) 以ベツ))」は「(Ac(茹でる))→(F(キャベツ))」とする．

e) 調理者の動作と共参照関係にある食材や道具ノードは削F

混ぜる
AcI

部分⽊
ココアパウダー

冷やすI

まぶすFAc

F

レシピの⾻格Root

レシピの⽊の教師なし分割

構⽂⽊の教師なし分割みを残す．たとえば，「(Ac(茹でる))→(F(芯))→(F(キャAcAcS 初期⽊d) 食材や道具ノードが連続している場合は，末端のノードのチョコ
レートINP

VP

外のノードを削除する．

刻むINPlikes

N

まねぎ」
「玉ねぎ」
「玉葱」などの表現を「玉葱」という単一I

図2: 構⽂⽊の教師なし分割とレシピの⽊の教師なし分割の対応除する．たとえば，「(Ac(焼く))→(F(具)) → (Ac(混ぜequalる))→ . . .」は「(Ac(焼く))→(Ac(混ぜる))→ . . .」とす

2.2

る．

⽊置換⽂法学習によるレシピの⽊の教師なし分割f) 各調理者の動作ノード（Ac）を中間生成物ノード（I）の子にレシピの特徴的な部分構造の獲得する問題（レシピの木の集する．たとえば，「(Ac(切る)(F(キャベツ)))」は「(I(Ac(切合を入力として各木を教師なしで分割する問題）を，確率木置る)(F(キャベツ))」とする．

換文法の学習（構文木の集合を入力として各木を教師なしで分割する問題）と捉えて解く.

本稿における “レシピの⽊” のノードの意味• F: 食材．子ノードとして食材の名前のノードを持つ．

確率木置換文法（PTSG）とは，任意の大きさの部分木を基• T: 道具．子ノードとして道具の名前のノードを持つ．

本単位とし，これらを組み合わせて構文木を構成する確率文法• Ac: 調理者の動作．子ノードとして調理者の動作の名前のノである1．
すなわち，構文木の生成確率 p(tree; θ)（構文木の導出の確ードを持つ．

• Af: 食材の動作．子ノードとして食材の動作の名前のノード率）が，構文木を構成する部分木の生成確率 p(subtree; θ) の積（導出を構成する生成規則の確率の積）として与えられる：を持つ．

• I: 中間生成物．子として 1 つの Ac または Af ノードと，0p(tree; θ) =*7 https://www.nii.ac.jp/dsc/idr/cookpad/cookpad.html*8 http://www.phontron.com/kytea/index-ja.html

p(subtree; θ).

(1)subtree∈tree

個以上の F,T,I ノードを持つ．

• Root: 根ノード．子ノードの種類は I と同じ．

∏

各部分木の生成確率はこれをより単純化した部分木の生成確率によって補完（スムージング）することでゼロ頻度問題に対応できる．モデルパラメータ θ の推定方法，および推定された θの下で尤もらしい木の分割（導出）を求める具体的な方法については，Cohn ら [2] や Shindo ら [12] を参照されたい．
レシピの木の特徴的な部分構造の学習（レシピの木の教師な― 301 ―Copyright(C) 2019 The Association for Natural Language Processing.
All Rights Reserved.

し分割）と確率木置換文法による文法抽出（構文木の教師なし

2.4

分割）の対応は図 2の通り．すなわち，部分⽊のクラスタリング

フローグラフで用いられる中間ノードは F（食材）や T（道• レシピの木 ↔ 構文木具）など比較的大きな単位でまとめられている．つまり，F とい• Root ノード ↔ 開始記号

うという共通の非終端記号（文脈）から，(F(鶏肉)) と (F(生• 食材 (F), 道具 (T), 調理者の動作 (Ac), 食材の動作 (Af), 中クリーム)) という実用上全く別の文脈で用いられる部分木（食間生成物 (I) ノード ↔ 非終端記号材）たちがともに生成されることになる．しかし実際には，例え• レシピ用語ノード ↔ 終端記号

ばシュークリームのレシピの生成時は（お菓子を作るという文

このように，レシピの木の集合を構文木の集合と見れば，レシ脈であれば），F という記号からは (F(生クリーム)) や (F(バピの特徴的な部分構造は文法抽出の枠組みで学習できることがター)) などお菓子に使い得る食材のみが生成されることが望分かる．本研究では木置換文法の学習に Julia による実装を用ましい．本節では，前節で学習された部分木の連続表現に基づいた*9 ．

き，共通の非終端記号を根とする部分木たちを，肉類クラスタ

2.3

単語ベクトルの和による部分⽊の分散表現

2.2節で獲得したレシピの部分木間の類似性を測る際，部分木をシンボルとして扱うのは難しい．本節では，単語埋め込みや{(F(鶏肉)),(F(牛肉)), . . .} や乳製品クラスタ {(F(生クリーム)),(F(バター)), . . .} にクラスタリングすることでこの問題に対処する．

句の埋め込みと同様の枠組みで各部分木に分散表現を与える．

具体的には，共通の非終端記号を根とする部分木たちに割り単語埋め込みと句の埋め込みについて簡単に触れる．生コー

当てられた分散表現をそれぞれユークリッド距離で正規化した

パス上における単語の共起情報を教師信号として学習された単上で k-近傍法（ユークリッド距離）を適用する．実験ではクラ語の分散表現（ベクトル表現）は今日の自然言語処理においてn
スタ数 k をクラスタリング対象の部分木の数 n を用いて ⌈ 20⌉

不可欠な基本的ツールである [1, 7, 10, 11]．また，こうして学とした．

習された単語の分散表現の（単なる）和が，句や文の分散表現として有用に働くことが確認されている [6, 16]．

なお文法抽出においても同様の試みは見られ，非終端記号をサブカテゴリに細分化することで文脈情報を捉えた生成規則が本研究では，単語埋め込みおよび句の埋め込みの学習手法に若干の工夫を加え部分木の分散表現を学習する．

学習できることが指摘されている [3, 12]．

2.5

部分⽊の葉へのクラスタ離散分布の割り当て

レシピ⽤語の単語ベクトルの学習 事前準備として，生の自然部分木のクラスタの情報を活用しながらレシピの木をサンプ

言語文で書かれたレシピデータから，レシピ用語の単語ベクトリングできるよう，各部分木の葉に割り当てられている中間ノルを学習する．アルゴリズムは word2vec，コーパスはクックード（F など）に，クラスタの離散分布を最尤推定で割り当て

パッドと国立情報学研究所が公開するデータセット*10 を用いる．たとえば部分木る．

(ROOT(AC(煮る))(I))

終端記号 終端記号，たとえば “生クリーム”，“鍋”，“炒める”(2)などの分散表現は，前述の単語ベクトルをそのまま用いる．の 葉 の I の ク ラ ス タ 分 布 を 推 定 す る 際 は， ま ず 訓 練 デ葉がすべて終端記号になっている部分⽊ 葉がすべて終端記号

ー タ 上 で 部 分 木(2)に 接 続 さ れ て い る I か ら は じ ま るになっている部分木，たとえば (F(生クリーム))，(T(鍋))，部 分 木 た ち ク ラ ス タ 番 号 を 確 認 す る． こ れ が た と え ば(Ac(炒める))，(I(Ac(茹でる))(I((Af(しんなりする))(F(キ{I3 , I10 , I3 , I3 , I5 , I3 } であれば，部分木(2)の葉 I にはクラャベツ))))) などの分散表現は，終端記号（ここでは “茹でる”，スタ分布 {I3 : 74 , I5 : 71 , I10 : 71 } を割り当てる．

“しんなりする”，“キャベツ”）の分散表現の相加平均を用いる．

2.6

葉に⾮終端記号が残っている部分⽊ 葉に非終端記号が残っている部分木に関しては，レシピの⽊の⽣成・サンプリング

レシピの木のサンプリング時は以下を再帰的に繰り返す．

1. 葉に割り当てられたクラスタの離散分布からクラスタ番号を• 葉の終端記号：終端記号の分散表現

サンプリング；• 葉の⾮終端記号（F，T，Ac，Af）：訓練データ上でここから2. 当該クラスタの部分木たちから部分木をサンプリング（生成伸びている部分木（たとえば (F(人参))）たちの分散表現の平均確率は当該の部分木たち全体で正規化）．

実験3• 葉の⾮終端記号（I）：無視*11として，これらの平均を分散表現として与える．

提案手法により分割されたロールキャベツのレシピの例を図3に示す．ただし，例として挙げたレシピの部分木と同じク*9 https://github.com/hshindo/TSGs.jl*10 https://www.nii.ac.jp/dsc/idr/cookpad/cookpad.html

ラスタに属する他の部分木については，紙面の都合上 2 つのみ

ただし，投稿されたレシピのデータを保持する recipes テーブルのみを使用した．
*11 相互再帰に陥る可能性があるため．

掲載している．
木の分割に注目すると，細かい手順の集まりであるレシピの木をある程度の大きさをもつ “かたまり” に分割できていることがわかる．ただし，I22 , I352 , I477 のそれぞれを根とする木は「キャベツの下準備」としてまとめたほうが妥当であると考― 302 ―

Copyright(C) 2019 The Association for Natural Language Processing.
All Rights Reserved.

茹でキャベツのクラスタ
茹でる

キャベツ

下ゆでする

AcFAc

キャベツ

茹でる

FAc

I22

I22 0.334

しんなりする

キャベツ

AfFII22 0.0130.014
くぐらせる

飲料⽔

Ac

スープの味付けのクラスタ
固形コンソメ
F1

鶏ガラ
スープの素

F10.047

F10.059

沸騰させる

⼊れる

しばる

⼝⼊れる

Ac

FAc

AcI

電⼦レンジ

I477
I

包むシュウマイ

AcFI

I

I

I 176: 0.333, I 22: 0.111,
I 256: 0.111, …

T0.595

FI352

Ac

F1: 1.000

Ac

FI

チン
ブイヨン

I

たこ⽷

塩コショウ

調味F

FF

I114
煮るAc

I
Root19図3: 提案⼿法により分割された「ロールキャベツ」のレシピえられる．これに対しては，より高さのある部分木を選好する，[3]

階層的な分割を行う，などの学習アルゴリズムの改善が考えら

[4]

れる．
クラスタリングの結果に注目すると，スープの味付けをする食材や，キャベツを茹でる部分木が同じクラスタ (それぞれ ([5][6]F1 , I22 ) に入っていることがわかる．ただし，I22 には，春雨を茹でる部分木なども含まれている．これは，部分木に分散表[7]

現を割り当てる際に，葉の分散表現の平均をとっているためで[8]あると考えられる．つまり，提案手法では部分木の分散表現を計算する際に「その部分木には何が使われているか」は葉の分散表現を使うことで考慮しているが．「その部分木はどのように使われるか」を考慮していない．
「どのように使われるか」の情報を取り入れることは今後の課題である．
謝辞

[9]
[10]
[11]
[12]

本研究の一部は JST CREST（JPMJCR1301）および株式会社日立製作所の支援を受けて行った．また本研究では，[13]

クックパッド株式会社と国立情報学研究所が提供する「クック[14]パッドデータ」を利用した．
[15]

参考⽂献

[16]
[1]
[2]

Piotr Bojanowski et al. “Enriching Word Vectors with Subword Information”. In: Proc. of TACL 5 (2017), pp. 135–146.
Trevor Cohn, Phil Blunsom, and Sharon Goldwater. “Inducing treesubstitution grammars”. In: Journal of Machine Learning Research
11.Nov (2010), pp. 3053–3096.

[17]
[18]

― 303 ―

Michael Collins. “Head-driven statistical models for natural language
parsing”. In: Computational linguistics 29.4 (2003), pp. 589–637.
Chloé Kiddon, Luke Zettlemoyer, and Yejin Choi. “Globally coherent
text generation with neural checklist models”. In: Proc. of EMNLP.
2016, pp. 329–339.
Hirokuni Maeta, Tetsuro Sasada, and Shinsuke Mori. “A frameworkfor procedural text understanding”. In: Proceedings of IWPT. 2015,
pp. 50–60.
Tomas Mikolov et al. “Distributed Representations of Words andPhrases and their Compositionality”. In: Proc. of NIPS. 2013,
pp. 3111–3119.
Tomas Mikolov et al. “Efficient Estimation of Word Representations
in Vector Space”. In: ICLR workshop. 2013, pp. 1–12.
Shinsuke Mori et al. “A machine learning approach to recipe textprocessing”. In: Proc. of the 1st Cooking with Computer Workshop.
2012, pp. 29–34.
Shinsuke Mori et al. “Flow Graph Corpus from Recipe Texts.” In:Proc. of LREC. 2014, pp. 2370–2377.
Jeffrey Pennington, Richard Socher, and Christopher D Manning.
“GloVe: Global Vectors for Word Representation”. In: Proc. ofEMNLP. 2014, pp. 1532–1543.
Matthew E. Peters et al. “Deep contextualized word representations”. In: Proc. of NAACL. 2018, pp. 2227–2237.
Hiroyuki Shindo et al. “Bayesian symbol-refined tree substitution
grammars for syntactic parsing”. In: Proceedings of ACL. Association for Computational Linguistics. 2012, pp. 440–448.
Han Su et al. “Automatic recipe cuisine classification by ingredients”.
In: Proc. of Ubicomp. ACM. 2014, pp. 565–570.
Liping Wang and Qing Li. “A personalized recipe database systemwith user-centered adaptation and tutoring support”. In: ACM SIGMOD Ph. D. workshop on Innovative database research. Citeseer.
2007.
Liping Wang et al. “Substructure similarity measurement in chineserecipes”. In: Proc. of WWW . ACM. 2008, pp. 979–988.
John Wieting et al. “Towards Universal Paraphrastic Sentence Embeddings”. In: Proc. of ICLR. 2016, pp. 1–19.
土居洋子 et al. “料理レシピと特許データベースからの料理オントロジーの構築”. In: 電子情報通信学会技術研究報告 113.470 (2014), pp. 37–42.
山肩洋子 et al. “ワークフロー表現を用いたレシピの典型性評価と典型的なレシピの生成”. In: 電子情報通信学会論文誌 D 99.4 (2016), pp. 378–391.

Copyright(C) 2019 The Association for Natural Language Processing.
All Rights Reserved.