特定の料理道具を対象としてレシピの分析を試みる | SHARPヘルシオとレシピオントロジー

:sweat: ごめんなさいまだ書き途中です :smile: 

こんにちは :smile: 今日は唐揚げです :poultry_leg:

ある概念の領域の範囲で構築されたオントロジーは**ドメインオントロジー**と呼ばれるそうです。例えば、ドメインが料理、生き物、スマホの使い方とかいろいろありそうです。今回は、料理、その中でも唐揚げだけを考えてみます。書き手本人は料理しないのでその辺含んで読んでください・・・ :sweat_drops: 

# :star: 今回の試行の目的

:smile: **鍋を使わず、SHARPヘルシオを使っておいしい唐揚げをつくりたい**

数年前、SHARPが開発した高級電子レンジのヘルシオが人気を呼び、揚げ物も少ない油でつくれるのでヘルシーだということで話題になりました。ヘルシオ自体は焼く、蒸す、揚げる、といったことができるようです。SHARPはウェブサイトでヘルシオのレシピを公開しています。http://www.cook-healsio.jp/

SHARPヘルシオを使った揚げ物、特に唐揚げのレシピを検討することにします。例えばCookpadで公開されている唐揚げのレシピの揚げる工程をSHARPヘルシオで置き換えることを考えます。

実はSHARPヘルシオを持っていませんし、料理もしませんので**机上の空論**ですすめてみようと思います。絵に描いた餅ならぬ字で書いたから揚げ。

:eyes: ちなみにSHARPヘルシオを取り上げているのはたまたま見かけたからです。

## :pencil: から揚げレシピ分析の進め方

次の手順で進めていきます。

1. :mag:SHARPヘルシオ公式のレシピからから揚げの手順を分析します
  * 公式レシピは表記の揺れが小さそうです
  * 表記の揺れが小さい方がから揚げのレシピの概念の理解がしやすそうです
2. :mag:Cookpadのレシピからから揚げの手順を分析します
  * 書き手がいろいろなので表記の揺れは大きそうです
  * いろいろなから揚げがありそうですが、共通項を抽出すればから揚げの概念の整理ができそうです
  * 写真があるとみてるだけで楽しいです
3. :ballot_box_with_check: から揚げレシピの考察
  * 標準的なから揚げレシピの構築をしてみます
  * 自然言語処理の視点からレシピの特徴を考えてみます


# :poultry_leg: 唐揚げレシピの分析：どのようにから揚げをつくるのか？

## SHARPヘルシオウェブサイト上の唐揚げレシピ

5種類のレシピがみつかりました http://www.cook-healsio.jp/

- :fish:  かれいのあんかけ
- :pig: 酢豚
- :chicken: 鶏のから揚げ（手羽元）
- :chicken: 鶏のから揚げ（もも肉）
- :pig: 豚肉のから揚げ

|レシピ名|食材|料理方法|メモ|
|:--|:--|:--|:--|
|かれいのあんかけ|かれい|あんかけ||
|酢豚|？|？|名前が固有名詞的|
|鶏のから揚げ（手羽元）|鶏：手羽元|から揚げ||
|鶏のから揚げ（もも肉）|鶏：もも肉|から揚げ|から揚げの定番といえばこれ|
|豚肉のから揚げ|豚肉|から揚げ||

レシピの名前が、[食材]と[料理方法]の組み合わせで明確です。酢豚は例外です。酢豚と言えばパイナップルが有名です。「酢豚に入っているパイナップルがけしからん」という話を時々耳にします。Wikipediaによれば、[酢豚](http://ja.wikipedia.org/wiki/%E9%85%A2%E8%B1%9A)とは

> 酢豚（すぶた）とは、下味をつけた角切りの豚肉を用い、衣をつけて油で揚げ、甘酢あんをからませた中華料理である。

です。簡単そうですが、酢豚には玉ねぎやピーマン、パイナップルが入っていたはずですのでこの記載よりは複雑そうだと想像できます。魚、鶏、豚をから揚げにしていますが、牛肉はから揚げにしないのでしょうか？どうでもいいですね、先に進みましょう。

**あんかけ**もから揚げの分類に入るのですね。知りませんでした。では、定番のもも肉のから揚げを見てみましょう。

## :chicken: もも肉のから揚げレシピ（ヘルシオウェブサイトより）

- （1）水タンクに水を入れる。（水位1以上）
- （2）鶏肉は1枚をそれぞれ8等分に切る。
  - ※小さく切ると、焼き過ぎになります。
  - から揚げ粉を入れたビニール袋に鶏肉を入れる。空気を入れて袋の口を閉じ、袋を振って粉をまぶす。
- （3）角皿に油をぬった調理網2枚をのせ、（2）の余分な粉を払って、粉が湿らないうちに皮を上にして中央寄りに並べる。
  - ※角皿にアルミホイルを敷くとお手入れが楽です。
- （4）（3）を上段に入れる。
  - 次へ → お料理選択 → メニュー検索 → メニュー番号 → 58（から揚げ（鶏もも肉）） → 分量選択 → スタート
  - 手動でするときは：下段に入れ、ウォーターグリル・予熱なしで18～22分（2人分は15～18分）※自動加熱とは棚位置が異なります

## :chicken: :capital_abcd: 動作の抽出：タスクユニットとタスクアクティビティの整理

**タスクユニットの抽出**を試み、概念化した**タスクアクティビティ**を整理してみました。タスクユニットの抽出は以下の手順に従います。レシピ自体が手順/ステップとして整理されているので(1)の作業は終わっていると考えても良さそうです。

> * (1) ドキュメント内のテキストを少数文章からなるブロックに分割する。具体的には、一つのブロックが一つの問題解決の中の一連の作業の1ステップだけ含むように分割する。
> * (2) 各ブロックからタスクユニットを抽出する。タスクユニットとはちょうど一つの動作/操作とその対象物からなる「動詞＋対象物」構造を言う。

:hand: 動詞を全部抜き出す

```
入れる、切る、入れる、閉じる、振る、まぶす、のせる、払う、並べる、入れる、スタートする（スイッチを押す）
```

:hand: 対象物を明確にして書き換える

```
水を入れる、鶏肉を切る、鶏肉を入れる、袋を閉じる、袋を振る、粉をまぶす、調理網をのせる、粉を払う、鶏肉を並べる、角皿を入れる、スタートする（スイッチを押す）
```

|動作（タスクユニット）|一般化（タスクアクティビティ）|
|:--|:--|
|水を入れる|器具の準備|
|鶏肉を切る|食材を切る（加工）|
|鶏肉を入れる|食材の下準備（味付け）|
|袋を閉じる|食材の下準備（味付け）|
|袋を振る|食材の下準備（味付け）|
|粉をまぶす|食材の下準備（味付け）|
|調理網を並べる|食材を（器具へ）セット|
|粉を払う|食材の下準備（味付け）|
|鶏肉を並べる|食材を（器具へ）セット|
|角皿を入れる|食材を（器具へ）セット|
|スタートする|器具の開始|

普段料理しないので語彙が乏しいのですがこんな感じになりました。豚肉のから揚げと比較してみましょう。同じように、レシピとタスクユニットの抽出をしてみます。

## :pig: 豚肉のから揚げレシピ（ヘルシオウェブサイトより）

- （1）水タンクに水を入れる。（水位1以上）
- （2）豚肉は3㎝角に切り、ビニール袋に入れ、から揚げ粉を加えて袋をゆすり、から揚げ粉をまぶしつける。
- （3）油をぬった調理網2枚を角皿にのせて脂身を上にして中央寄りに並べる。
- （4）（3）を上段に入れる。
  - 次へ → お料理選択 → メニュー検索 → メニュー番号 → 58（から揚げ（鶏もも肉）） → 分量選択 → スタート
  - 手動でするときは：下段に入れ、ウォーターグリル・予熱なしで18～22分（2人分は15～18分）※自動加熱とは棚位置が異なります。
- （5）混ぜ合わせた[A]をかける

## :pig: :capital_abcd:  動作の抽出：タスクユニットとタスクアクティビティの整理

:hand: 動詞を全部抜き出す

```
入れる、切る、入れる、閉じる、ゆする、まぶす、のせる、並べる、入れる、スタートする（スイッチを押す）、かける
```

:hand: 対象物を明確にして書き換える

```
水を入れる、豚肉を切る、豚肉を入れる、袋を閉じる、袋をゆする、粉をまぶす、調理網をのせる、豚肉を並べる、角皿を入れる、スタートする（スイッチを押す）、[A]をかける
```

|動作（タスクユニット）|一般化（タスクアクティビティ）|
|:--|:--|
|水を入れる|器具の準備|
|豚肉を切る|食材を切る（加工）|
|豚肉を入れる|食材の下準備（味付け）|
|袋を閉じる|食材の下準備（味付け）|
|袋を**ゆする**|食材の下準備（味付け）|
|粉をまぶす|食材の下準備（味付け）|
|調理網を並べる|食材を（器具へ）セット|
|~~粉を払う~~|~~食材の下準備（味付け）~~|
|豚肉を並べる|食材を（器具へ）セット|
|角皿を入れる|食材を（器具へ）セット|
|スタートする|器具の開始|
|Aをかける|味付け|

豚肉の場合は袋を**振る**のではなく**ゆする**ようにし、粉を払わないのが特徴のようです。振るとゆするの違いがわかりませんので辞書を引いてみましょう。

## 振るとゆするの違いについて

goo辞書を使用

<dl>
  <dt>振る</dt>
  <dd>からだの一部を、また物の一方の端をもって上下・左右・前後に何度も繰り返すようにして動かす。</dd>
  <dt>ゆする</dt>
  <dd>ゆり動かす。</dd>
</dl>

ゆする方はブランコのようにゆり動かすのでしょうか？ゆり動かすというのはどういうことでしょうか？揺れるように動かすということでしょうか？この手順の目的は「粉をまぶす」ことのようなので、どうでもいい違いのようです。飛ばしましょう。

## :chicken: :pig: もも肉と豚肉の比較

タスクユニットの冗長な部分をまとめてみました。「食材の下準備（味付け）」と「食材を（器具へ）セット」を一つにまとめています。

|鶏もも肉のから揚げ|豚肉にから揚げ|
|:--|:--|
|器具の準備|器具の準備|
|食材を切る（加工）|食材を切る（加工）|
|食材の下準備（味付け）|食材の下準備（味付け）|
|食材を（器具へ）セット|食材を（器具へ）セット|
|器具の開始|器具の開始|
|N/A|味付け|

ところで豚肉の方には最後に味付けをしています。豚肉の場合は味付けするのが普通なのでしょうか？臭みとかそういうのでしょうか？

## :chicken: Coockpadのから揚げレシピ

**鶏の唐揚げ**
http://cookpad.com/recipe/3111639

> 冷めても美味しい唐揚げ(´～｀*)

- (1) 鶏肉の周りに付いている余分な皮は取り除く。
- (2) 揚げると縮むので、
  - １枚８等分に切る。
  - 弁当用の１枚は、小さく切る。
- (3) ボウルに②を入れ☆を入れ混ぜる。混ざったら☆☆を入れ再度全体を混ぜラップをして１時間~２時間冷蔵庫に入れる。
- (4) 別のボウルに、★を入れ③を少しずつ入れる。
  - ★をたっぷり付ける
  - 余分についた★は払って落とす。
- (5) １８０度の油で揚げる。
  - 揚がったら、バットに入れ、油切りして皿に盛る
- (6) にんにく醤油漬け

:fire: (6) のにんにく醤油漬けは(3)で使う味付け用のものらしいので無視

## :chicken: :capital_abcd:  動作の抽出：タスクユニットとタスクアクティビティの整理

:hand: 動詞を全部抜き出す

```
取り除く、切る、入れる、入れる、混ぜる、入れる、混ぜる、ラップをする、入れる、入れる、入れる、付ける、落とす、揚げる、入れる、切る、盛る
```

:hand: 対象物を明確にして書き換える

```
皮を取り除く、鶏肉を切る、②を入れる、☆を入れる、②と☆を混ぜる、☆☆を入れる、全体を混ぜる、ラップをする、鶏肉を入れる、★を入れる、③を入れる、★を付ける、★を落とす、鶏肉を揚げる、鶏肉を入れる、油を切る、鶏肉（から揚げ）を盛る
```

:fire:**TODO 後で下表修正**

|動作（タスクユニット）|一般化（タスクアクティビティ）|
|:--|:--|
|皮を取り除く|食材の加工|
|鶏肉を切る|食材を切る（加工）|
|☆を混ぜる（は？ :sweat_smile: ）|食材の下準備（味付け）|
|★を付ける（は？ :sweat_smile: ）|食材の下準備（味付け）|
|揚げる|調理|
|油切りする|？何と表現したらいいのか？仕上げ？|


## :chicken: Coockpadのから揚げレシピ　その２

**鶏のから揚げ**
http://cookpad.com/recipe/3094320
> 白だしをじっくりとしみ込ませて作る、風味豊かでジューシーなから揚げ♪とろみあんがほどよく絡む、和風の味わいです。

- 1 今回は、ヤマキ「割烹白だし」を使います。
- 2 鶏もも肉はひと口大に切ってビニール袋に入れ、【A】を加えて袋の外から軽くもみ、冷蔵庫で30分ほど寝かせる。
- 3 別のビニール袋に片栗粉を入れ、<2>を入れる。袋に空気を入れて口を閉じ、軽くふって片栗粉をまぶし、180℃の油で揚げる。
- 4 フライパンに【B】を入れて一度かき混ぜ、強火にしてフツフツとしたら透き通るまで火にかける。
- 5 レタスを敷いた器にから揚げを盛り、<4>のあんをかける。

## :chicken: :capital_abcd:  動作の抽出：タスクユニットとタスクアクティビティの整理

:hand: 動詞を全部抜き出す

```
切る、入れる、加える、もむ、寝かせる、入れる、入れる、入れる、閉じる、ふる、まぶす、あげる、入れる、かき混ぜる、強火にする、火にかける、盛る、かける
```

:hand: 対象物を明確にして書き換える

```
鶏肉を切る、鶏肉を入れる、【A】を加える、鶏肉をもむ、鶏肉を寝かせる、片栗粉を入れる、<2>を入れる、空気を入れる、袋を閉じる、袋をふる、片栗粉をまぶす、鶏肉をあげる、【B】を入れる、【B】をかき混ぜる、火を強火にする、【B】を火にかける、鶏肉（から揚げ）を盛る、<4>をかける
```

:fire:**TODO 後で下表修正**

|動作（タスクユニット）|一般化（タスクアクティビティ）|
|:--|:--|
|鶏肉を切る|食材を切る（加工）|
|【A】を混ぜる（は？ :sweat_smile: ）|食材の下準備（味付け）|
| 2と片栗粉をまぶす|食材の下準備（味付け）|
|揚げる|調理|
|【B】を火にかける|仕上げの準備|
|あんをかける|盛り付け|

## :chicken: Coockpadのから揚げレシピ　その３

**鶏のから揚げ**
http://cookpad.com/recipe/3099993
> ある居酒屋さんのから揚げがおいしかったので

- 1 肉はそぎ切りで薄く切る
- 2 ☆のつけ汁に5分くらいつける
- 3 汁気を切り粉をつけて揚げる

## :chicken: :capital_abcd:  動作の抽出：タスクユニットとタスクアクティビティの整理

:hand: 動詞を全部抜き出す

```
切る、つける、切る、つける、揚げる
```

:hand: 対象物を明確にして書き換える

```
肉を切る、☆につける、汁気を切る、粉をつける、肉を揚げる
```

|動作（タスクユニット）|一般化（タスクアクティビティ）|
|:--|:--|
|肉を切る|食材を切る（加工）|
|☆につける|食材の下準備（味付け）|
|汁気を切る|食材の下準備（味付け）|
|粉をつける|食材の下準備（味付け）|
|揚げる|調理|

このような単純な記述のレシピも存在するので、同じような料理でも記述・表記のゆれは大きそうです。料理に慣れたひとには当たり前の前提知識を省かれるケースもあります。また、その３の事例のように「居酒屋」らしさを出すのが仮に☆の味付け（この場合は、酒：醤油 １：１に生姜適宜、ニンニク適宜を加えたもの）だけなら、その他の手順を簡単に記述するのも納得できます。

# :star: ここまでのまとめ

:exclamation: 表記ゆれはかなりありそう
:exclamation: もも肉から揚げオントロジーはつくれそう
:exclamation: 市販のから揚げ粉を使うと寝かせる必要が無い
:exclamation: 寝かせる時間は20分-1時間とさまざま


## 不明な点

:exclamation: 揚げが完了したときに見分け方が不明
:exclamation: とにかく180度らしい、どうやって180度に調節するのか不明

## :pushpin: 鶏もも肉のから揚げの標準的な手順

これまで見た鶏もも肉のから揚げレシピから標準的な手順を考えてみます。

|タスクアクティビティ|備考|
|:--|:--|
|食材を加工|例）皮を取る、切る ※皮を取らない場合もあり|
|食材の下準備 味付け|寝かせるための味付け ※市販の粉使う場合は省略|
|揚げの前処理|片栗粉まぶす、隠し味的な何かを混ぜるとか|
|揚げる|油で180度的な|
|揚げの後処理|例）油を切る|
|仕上げの準備|後で何かかける場合はここで何かする|
|盛り付け|かけるものがある場合はかける|

## SHARPヘルシオを使った場合

|タスクアクティビティ|備考|
|:--|:--|
|食材を加工|例）皮を取る、切る ※皮を取らない場合もあり|
|食材の下準備 味付け|寝かせるための味付け ※市販の粉使う場合は省略|
|揚げの前処理|片栗粉まぶす、隠し味的な何かを混ぜるとか|
|~~揚げる~~|~~油で180度的な~~|
|食材を（器具へ）セット||
|器具の開始||
|~~揚げの後処理~~|~~例）油を切る~~|
|仕上げの準備|後で何かかける場合はここで何かする|
|盛り付け|かけるものがある場合はかける|

:exclamation: 「食材をセット」を独立させるなら、標準的な手順に「鍋に肉を投入」を入れるべきか
:exclamation: 「器具の開始」を独立させるなら、標準的な手順に「コンロに火を入れ180度まで待つ」を入れるべきか
:exclamation: ヘルシオの場合は揚げの後処理（油を切る）が**不要になる**

料理の手順としての違いは限定的で、片付けの簡易さ、油の少なさといった別の訴求要素がある

# :star: 自然言語処理の観点からの考察

ここで、自然言語処理の意味解析の考え方に基づき、レシピがどのように表記されるのかをみてみます。自然言語処理（[長尾真著 岩波書店 1996](http://www.amazon.co.jp/%E5%B2%A9%E6%B3%A2%E8%AC%9B%E5%BA%A7-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E7%A7%91%E5%AD%A6%E3%80%88%E3%80%94%E7%9F%A5%E8%AD%98%E3%80%9515%E3%80%89%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86-%E9%95%B7%E5%B0%BE-%E7%9C%9F/dp/4000103555) ）を参考にしています。本書の5章意味解析において、フィルモアの深層格という「文中の動詞に対して他の単語がどのような役割をもつかということを考えた」ものを使います。

※フィルモアの深層格自体は格文法の原理（チャールズJ.フィルモア 三省堂 1975）からの引用のようです

|深層格|意味|
|:--|:--|
|動作主格| ある動作を引き起こす者の役割．|
|経験者格| ある心理事象を体験する者の役割．|
|道具格| ある出来事の直接原因となったり，ある心理事象と関係して反応を起こされる刺激となる役割．|
|対象格| 移動する対象物や変化する対象物．あるいは，判断，想像のような心理事象の内容を表す役割．|
|源泉格| 対象物の移動における起点，および状態変化と形状変化における最初の状態や形状を表す役割．|
|目標格| 対象物の移動における終点，および状態変化と形状変化における最終的な状態，結果を表す役割．|
|場所格| ある出来事が起こる場所および位置を表す役割．|
|時間格| ある出来事が起こる時間を表す役割．|

このフィルモアの深層格から料理レシピの特徴をこれまで見たから揚げレシピを踏まえて考えてみます。今のところ仮説です。実際のデータに基づいた数値的な検証を行う必要があります。

|深層格|料理レシピでの特徴|
|:--|:--|
|動作主格| 料理をする、読み手にとっての私、書き手にとってのあなたはほとんど省略されている。|
|経験者格| ?|
|道具格| 料理に使う道具は省略されることも多い　例）「包丁で切る」⇒「切る」、「鍋に油を入れて揚げる」⇒「揚げる」|
|対象格| 食材として具体的に記述されている。複数種の調味料はまとめて記号で参照することもある。中間生成物は特に名前を付けずに表現されることが多い。|
|源泉格| 基本省略：食材の「いま」の状態に対応|
|目標格| 次の手順のきっかけとなる特徴として記載されることがある。|
|場所格| 動作主格が移動することは無いのでほとんど省略される。|
|時間格| 基本省略：いまやる手順を記述しているのでほとんど省略される。「20分寝かせる」「1時間つける」等の記述はある。|

## 動作に関する記述は省略されない

レシピは料理の手順を記述した文章です。動作の順序を記述したものとも言えそうです。詳細な動作は省略されますが、肝心な動作の記述は省略されないと考えても良さそうです。

```
鶏肉を切る
```

は道具を省略しています。何を使って切っても良いとしていると言えます。

```
鶏肉を包丁で切る、鶏肉をナイフで切る、鶏肉を手刀で切る
```

どの方法でも切れていれば構いません。

## 今後の取組み

* レシピを動作主格、動詞を中心にして特徴づける仕組みの実験的考察