master-thesis/EvolutionaryAlgorithm/EvolutionaryAlgorithm.ipynb
2019-11-02 10:58:23 +01:00

1 line
138 KiB
Plaintext

{"cells":[{"cell_type":"markdown","metadata":{},"source":"# Evolutionary Algorithm"},{"cell_type":"markdown","metadata":{},"source":"the Evolutionary Algorithm that is supposed to create new recipes based on the Recipe Matrices that are created during the *Recipe Analysis* step.\n\nThe Population of the Evolutional Algorithm consists of a set of recipe trees. Each Recipe Tree consists of several Nodes where each node is of one of the following Types:\n\n* **Ingredient Node:**\n these are the leaf nodes. Containing an ingredient. The score is determined by the actions, that are applied if you follow up the path. At the Moment it measures how many duplicate actions are applied.\n* **Action Node:**\n An Action that is applied on it's child and this child's subtree. Score indicates the average likelihood that this action is applied on the ingredients inside the subtree\n* **Mix Node:**\n Mixing ingredients together. This is also the only Node that can have more than one child. The score is the average of all pairwise likelihoods that two ingredients are mixed togethter"},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"text/html":" <script type=\"text/javascript\">\n window.PlotlyConfig = {MathJaxConfig: 'local'};\n if (window.MathJax) {MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n if (typeof require !== 'undefined') {\n require.undef(\"plotly\");\n requirejs.config({\n paths: {\n 'plotly': ['https://cdn.plot.ly/plotly-latest.min']\n }\n });\n require(['plotly'], function(Plotly) {\n window._Plotly = Plotly;\n });\n }\n </script>\n "},"metadata":{},"output_type":"display_data"},{"data":{"text/html":" <script type=\"text/javascript\">\n window.PlotlyConfig = {MathJaxConfig: 'local'};\n if (window.MathJax) {MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n if (typeof require !== 'undefined') {\n require.undef(\"plotly\");\n requirejs.config({\n paths: {\n 'plotly': ['https://cdn.plot.ly/plotly-latest.min']\n }\n });\n require(['plotly'], function(Plotly) {\n window._Plotly = Plotly;\n });\n }\n </script>\n "},"metadata":{},"output_type":"display_data"}],"source":"import sys\nsys.path.append(\"../\")\nsys.path.append(\"../RecipeAnalysis/\")\n\nimport settings\n\nimport pycrfsuite\n\nimport json\n\nimport db.db_settings as db_settings\nfrom db.database_connection import DatabaseConnection\n\nfrom Tagging.conllu_generator import ConlluGenerator\nfrom Tagging.crf_data_generator import *\n\nfrom RecipeAnalysis.Recipe import Ingredient\n\nfrom difflib import SequenceMatcher\n\nimport numpy as np\n\nimport plotly.graph_objs as go\nfrom plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot\nfrom plotly.subplots import make_subplots\ninit_notebook_mode(connected=True)\n\nfrom graphviz import Digraph\n\nimport itertools\n\nimport random\n\nimport plotly.io as pio\npio.renderers.default = \"jupyterlab\"\n\nfrom IPython.display import Markdown, HTML, display\n\nfrom copy import deepcopy"},{"cell_type":"code","execution_count":59,"metadata":{},"outputs":[],"source":"def gaussian(x, mu, sig):\n return 1./(np.sqrt(2.*np.pi)*sig)*np.exp(-np.power((x - mu)/sig, 2.)/2)"},{"cell_type":"markdown","metadata":{},"source":"## load adjacency matrices"},{"cell_type":"code","execution_count":2,"metadata":{},"outputs":[],"source":"import dill\nm_act = dill.load(open(\"../RecipeAnalysis/m_act.dill\", \"rb\"))\nm_mix = dill.load(open(\"../RecipeAnalysis/m_mix.dill\", \"rb\"))\nm_base_act = dill.load(open(\"../RecipeAnalysis/m_base_act.dill\", \"rb\"))\nm_base_mix = dill.load(open(\"../RecipeAnalysis/m_base_mix.dill\", \"rb\"))\n\n#m_act.apply_threshold(3)\n#m_mix.apply_threshold(3)\n#m_base_act.apply_threshold(5)\n#m_base_mix.apply_threshold(5)\n\n\n#c_act = m_act.get_csr()\n#c_mix = m_mix.get_csr()\n#c_base_act = m_base_act.get_csr()\n#c_base_mix = m_base_mix.get_csr()\n\nc_act = m_act._csr\nc_mix = m_mix._csr\nc_base_act = m_base_act._csr\nc_base_mix = m_base_mix._csr\n"},{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[],"source":"actions = m_act.get_labels()[0]"},{"cell_type":"code","execution_count":4,"metadata":{},"outputs":[],"source":"base_ingredients = m_base_mix.get_labels()"},{"cell_type":"code","execution_count":5,"metadata":{},"outputs":[],"source":"sym_label_buffer = {}\nfw_label_buffer = {}\nbw_label_buffer = {}"},{"cell_type":"markdown","metadata":{},"source":"### helper functions for adjacency matrices"},{"cell_type":"code","execution_count":6,"metadata":{},"outputs":[],"source":"def get_sym_adjacent(key, m, c):\n index = m._label_index[key]\n i1 = c[index,:].nonzero()[1]\n i2 = c[:,index].nonzero()[0]\n \n i = np.concatenate((i1,i2))\n \n if m in sym_label_buffer:\n names = sym_label_buffer[m][i]\n else:\n names = np.array(m.get_labels())\n sym_label_buffer[m] = names\n names = names[i]\n \n counts = np.concatenate((c[index, i1].toarray().flatten(), c[i2, index].toarray().flatten()))\n \n s = np.argsort(-counts)\n \n return names[s], counts[s]"},{"cell_type":"code","execution_count":7,"metadata":{},"outputs":[],"source":"def get_forward_adjacent(key, m, c):\n index = m._x_label_index[key]\n i = c[index,:].nonzero()[1]\n \n if m in fw_label_buffer:\n names = fw_label_buffer[m][i]\n else:\n names = np.array(m._y_labels)\n fw_label_buffer[m] = names\n names = names[i]\n \n \n counts = c[index, i].toarray().flatten()\n \n s = np.argsort(-counts)\n \n return names[s], counts[s]"},{"cell_type":"code","execution_count":8,"metadata":{},"outputs":[],"source":"def get_backward_adjacent(key, m, c):\n index = m._y_label_index[key]\n i = c[:,index].nonzero()[0]\n \n if m in bw_label_buffer:\n names = bw_label_buffer[m][i]\n else:\n names = np.array(m._x_labels)\n bw_label_buffer[m] = names\n names = names[i]\n \n \n counts = c[i, index].toarray().flatten()\n \n s = np.argsort(-counts)\n \n return names[s], counts[s]"},{"cell_type":"code","execution_count":9,"metadata":{},"outputs":[{"data":{"text/plain":"(array(['heat', 'simmer', 'cook', 'boil', 'bake', 'place', 'slice', 'cut',\n 'chop', 'cool', 'dice', 'refrigerate', 'pour', 'drain', 'brown',\n 'warm', 'blend', 'chill', 'spread', 'thicken', 'grill', 'saute',\n 'peel', 'fry', 'mash', 'whisk', 'break', 'freeze', 'melt'],\n dtype='<U11'),\n array([1673, 1323, 1265, 798, 722, 656, 511, 461, 396, 375, 366,\n 307, 298, 286, 232, 228, 227, 183, 172, 142, 124, 115,\n 113, 86, 82, 77, 59, 59, 56]))"},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":"get_backward_adjacent(\"tomato\", m_base_act, c_base_act)"},{"cell_type":"code","execution_count":12,"metadata":{},"outputs":[],"source":"v, w = get_forward_adjacent(\"cook\", m_act, c_act)"},{"cell_type":"code","execution_count":187,"metadata":{},"outputs":[],"source":"ing = Ingredient(\"bacon\")\ning.apply_action(\"cook\")"},{"cell_type":"code","execution_count":188,"metadata":{},"outputs":[{"data":{"text/plain":"(array(['{\"base\": \"cheese\", \"actions\": []}',\n '{\"base\": \"sprinkle\", \"actions\": []}',\n '{\"base\": \"crisp\", \"actions\": [\"cook\"]}',\n '{\"base\": \"crumble\", \"actions\": []}',\n '{\"base\": \"salt\", \"actions\": []}',\n '{\"base\": \"sugar\", \"actions\": []}',\n '{\"base\": \"crisp\", \"actions\": [\"heat\"]}'], dtype='<U206'),\n array([31., 22., 14., 13., 12., 11., 11.]))"},"execution_count":188,"metadata":{},"output_type":"execute_result"}],"source":"m_mix.get_adjacent(ing.to_json())"},{"cell_type":"code","execution_count":23,"metadata":{},"outputs":[],"source":"m_mix.get_adjacent(ing.to_json())"},{"cell_type":"code","execution_count":24,"metadata":{},"outputs":[],"source":"def sym_sum(key, m, c):\n return np.sum(get_sym_adjacent(key,m,c)[1])\n\ndef fw_sum(key, m, c):\n return np.sum(get_forward_adjacent(key,m,c)[1])\n\ndef bw_sum(key, m, c):\n return np.sum(get_backward_adjacent(key,m,c)[1])"},{"cell_type":"markdown","metadata":{},"source":"#### different score functions"},{"cell_type":"markdown","metadata":{},"source":"##### normalizations"},{"cell_type":"code","execution_count":25,"metadata":{},"outputs":[],"source":"def fw_normalization_factor(key, m, c, quotient_func):\n ia = m._x_label_index[key]\n \n occurances = c[ia,:].nonzero()[1]\n \n return 1. / quotient_func(c[ia,occurances].toarray())\n\ndef bw_normalization_factor(key, m, c, quotient_func):\n ib = m._y_label_index[key]\n \n occurances = c[:,ib].nonzero()[0]\n \n return 1. / quotient_func(c[occurances,ib].toarray())\n\ndef sym_normalization_factor(key, m, c, quotient_func):\n ii = m._label_index[key]\n \n fw_occurances = c[ii,:].nonzero()[1]\n bw_occurances = c[:,ii].nonzero()[0]\n \n return 1. / quotient_func(np.concatenate(\n [c[ii,fw_occurances].toarray().flatten(),\n c[bw_occurances,ii].toarray().flatten()]\n ))"},{"cell_type":"code","execution_count":26,"metadata":{},"outputs":[],"source":"def sym_p_a_given_b(key_a, key_b, m, c, quot_func = np.max):\n ia = m._label_index[key_a]\n ib = m._label_index[key_b]\n \n v = c[ia,ib] + c[ib,ia]\n \n return v * sym_normalization_factor(key_b, m, c, quot_func)\n\ndef fw_p_a_given_b(key_a, key_b, m, c, quot_func = np.max):\n ia = m._x_label_index[key_a]\n ib = m._y_label_index[key_b]\n \n v = c[ia,ib]\n \n return v * bw_normalization_factor(key_b, m, c, quot_func)\n\ndef bw_p_a_given_b(key_a, key_b, m, c, quot_func = np.max):\n ia = m._y_label_index[key_a]\n ib = m._x_label_index[key_b]\n \n v = c[ib,ia]\n \n return v * fw_normalization_factor(key_b, m, c, quot_func)\n"},{"cell_type":"code","execution_count":27,"metadata":{},"outputs":[],"source":"def sym_score(key_a, key_b, m, c):\n\n ia = m._label_index[key_a]\n ib = m._label_index[key_b]\n \n v = c[ia,ib] + c[ib,ia]\n \n if v == 0:\n return 0\n \n return max((v/sym_sum(key_a, m, c)), (v/sym_sum(key_b, m, c)))\n\ndef asym_score(key_a, key_b, m, c):\n ia = m._x_label_index[key_a]\n ib = m._y_label_index[key_b]\n \n v = c[ia,ib]\n \n if v == 0:\n return 0\n \n return max(v/fw_sum(key_a, m, c), v/bw_sum(key_b, m, c))"},{"cell_type":"code","execution_count":28,"metadata":{},"outputs":[],"source":"def p_ingredient_unprepared(base_ing):\n ing = Ingredient(base_ing)\n base_sum = sym_sum(base_ing, m_base_mix, c_base_mix)\n specialized_sum = sym_sum(ing.to_json(), m_mix, c_mix)\n return specialized_sum / base_sum"},{"cell_type":"code","execution_count":29,"metadata":{},"outputs":[],"source":"def p_heat(base_ing):\n heat_actions = [\"heat\",\"cook\",\"simmer\",\"bake\"]\n heat_sum = 0\n m"},{"cell_type":"code","execution_count":114,"metadata":{},"outputs":[{"data":{"text/plain":"0.09869773817683344"},"execution_count":114,"metadata":{},"output_type":"execute_result"}],"source":"p_ingredient_unprepared(\"noodle\")"},{"cell_type":"markdown","metadata":{},"source":"## Recipe Tree\n### Tree Node Base Class"},{"cell_type":"code","execution_count":31,"metadata":{},"outputs":[],"source":"class RecipeTreeNode(object):\n \n id = 0\n \n def __init__(self, name, constant=False, single_child=False):\n self._constant = constant\n self._name = name\n self._parent = None\n \n self._id = str(RecipeTreeNode.id)\n RecipeTreeNode.id += 1\n \n self._single_child = single_child\n \n if self._single_child:\n self._child = None\n \n def child():\n return self._child\n \n def remove_child(c):\n assert c == self._child\n self._child._parent = None\n self._child = None\n \n def childs():\n c = self.child()\n if c is None:\n return set()\n return set([c])\n \n def add_child(n):\n self._child = n\n n._parent = self\n \n self.child = child\n self.childs = childs\n self.add_child = add_child\n self.remove_child = remove_child\n else:\n self._childs = set()\n \n def childs():\n return self._childs\n \n def add_child(n):\n self._childs.add(n)\n n._parent = self\n \n def remove_child(c):\n assert c in self._childs\n c._parent = None\n self._childs.remove(c)\n \n self.childs = childs\n self.add_child = add_child\n self.remove_child = remove_child\n \n def parent(self):\n return self._parent\n \n def name(self):\n return self._name\n \n def traverse(self):\n l = []\n \n for c in self.childs():\n l += c.traverse()\n \n return [self] + l\n \n def traverse_ingredients(self):\n ingredient_set = []\n for c in self.childs():\n ingredient_set += c.traverse_ingredients()\n \n return ingredient_set\n \n def remove(self):\n p = self.parent()\n childs = self.childs().copy()\n \n assert p is None or not (len(childs) > 1 and p._single_child)\n \n for c in childs:\n self.remove_child(c)\n \n if p is not None:\n p.remove_child(self)\n \n if self._single_child and self._child is not None and p._name == self._child._name:\n # two adjacent nodes with same name would remain after deletion.\n # merge them! (by adding the child's childs to our parent instead of our childs)\n childs = self._child.childs()\n self._child.remove()\n \n \n for c in childs:\n p.add_child(c)\n \n def insert_before(self, n):\n p = self._parent\n if p is not None:\n p.remove_child(self)\n p.add_child(n)\n n.add_child(self)\n \n def mutate(self):\n n_node = self.n_node_mutate_options()\n n_edge = self.n_edge_mutate_options()\n \n choice = random.choice(range(n_node + n_edge))\n if choice < n_node:\n self.mutate_node()\n else:\n self.mutate_edges()\n \n def mutate_edges(self):\n ings = self.traverse_ingredients()\n ing = random.choice(ings)\n \n a, w = get_backward_adjacent(ing._base_ingredient, m_base_act, c_base_act)\n \n action = random.choices(a, w)[0]\n self.insert_before(ActionNode(action))\n \n def mutate_node(self):\n raise NotImplementedError\n \n def n_node_mutate_options(self):\n \n return 0 if self._constant else 1\n \n def n_edge_mutate_options(self):\n n = 1 if self._parent is not None else 0\n return n\n \n def n_mutate_options(self):\n return self.n_edge_mutate_options() + self.n_node_mutate_options()\n \n def dot_node(self, dot):\n raise NotImplementedError()\n \n def dot(self, d=None):\n if d is None:\n d = Digraph()\n self.dot_node(d)\n \n else:\n self.dot_node(d)\n if self._parent is not None:\n d.edge(self._parent._id, self._id)\n \n \n for c in self.childs():\n c.dot(d)\n \n return d\n \n def serialize(self):\n r = {}\n r['type'] = str(self.__class__.__name__)\n r['id'] = self._id\n r['parent'] = self._parent._id if self._parent is not None else None\n r['name'] = self._name\n r['childs'] = [c._id for c in self.childs()]\n r['constant'] = self._constant\n r['single_child'] = self._single_child\n \n return r\n \n def node_score(self):\n raise NotImplementedError()\n \n"},{"cell_type":"markdown","metadata":{},"source":"### Mix Node"},{"cell_type":"code","execution_count":32,"metadata":{},"outputs":[],"source":"class MixNode(RecipeTreeNode):\n def __init__(self, constant=False):\n super().__init__(\"mix\", constant, single_child=False)\n \n def dot_node(self, dot):\n dot.node(self._id, label=f\"< <B>{self._name}</B><BR/>node score: {self.node_score()}>\", shape=\"diamond\")\n \n def split(self, set_above, set_below, node_between):\n assert len(set_above.difference(self.childs())) == 0\n assert len(set_below.difference(self.childs())) == 0\n \n n_above = MixNode()\n n_below = MixNode()\n \n p = self.parent()\n \n for c in self.childs().copy():\n self.remove_child(c)\n self.remove()\n \n for c in set_below:\n n_below.add_child(c)\n \n for c in set_above:\n n_above.add_child(c)\n \n n_above.add_child(node_between)\n node_between.add_child(n_below)\n \n if p is not None:\n p.add_child(n_above)\n \n # test whether the mix nodes are useless\n if len(n_above.childs()) == 1:\n n_above.remove()\n \n if len(n_below.childs()) == 1:\n n_below.remove()\n \n def n_node_mutate_options(self):\n return 0 if self._constant or len(self.childs()) <= 2 else len(self.childs())\n \n def mutate_node(self):\n \n childs = self.childs()\n \n if len(childs) <= 2:\n print(\"Warning: cannot modify mix node\")\n return\n \n childs = random.sample(childs, len(childs))\n \n n = random.choice(range(1, len(childs)-1))\n \n between_node = ActionNode(random.choice(actions))\n \n self.split(set(childs[:n]), set(childs[n:]), between_node)\n \n \n def node_score(self):\n child_ingredients = [c.traverse_ingredients() for c in self.childs()]\n \n tmp_set = set()\n cumulative_sets = []\n \n pairwise_tuples = []\n \n for c in child_ingredients:\n if len(tmp_set) > 0:\n cumulative_sets.append(tmp_set)\n pairwise_tuples += [x for x in itertools.product(tmp_set, c)]\n tmp_set = tmp_set.union(set(c))\n \n s_base = 0\n s = 0\n \n for ing_a, ing_b in pairwise_tuples:\n try:\n #s_base += sym_score(ing_a._base_ingredient, ing_b._base_ingredient, m_base_mix, c_base_mix)\n \n #s += sym_score(ing_a.to_json(), ing_b.to_json(), m_mix, c_mix)\n p1 = sym_p_a_given_b(ing_a.to_json(), ing_b.to_json(), m_mix, c_mix)\n p2 = sym_p_a_given_b(ing_b.to_json(), ing_a.to_json(), m_mix, c_mix)\n \n s += 0.5 * p1 + 0.5 * p2\n \n except:\n pass\n \n #s_base /= len(pairwise_tuples)\n s /= len(pairwise_tuples)\n \n #return 0.5 * (s_base + s)\n return s\n \n \n \n"},{"cell_type":"markdown","metadata":{},"source":"### Ingredient Node Class"},{"cell_type":"code","execution_count":163,"metadata":{},"outputs":[],"source":"class IngredientNode(RecipeTreeNode):\n def __init__(self, name, constant=False):\n super().__init__(name, constant, single_child=True)\n \n def get_actions(self):\n a_list = []\n n = self.parent()\n while n is not None:\n if type(n) == ActionNode:\n a_list.append(n.name())\n n = n.parent()\n return a_list\n \n def mutate_node(self):\n self._name = random.choice(base_ingredients)\n #TODO: change w.r.t. mixing probabilities \n \n def traverse_ingredients(self):\n return [Ingredient(self._name)]\n \n def node_score(self):\n actions = self.get_actions()\n \n if len(actions) == 0:\n if p_ingredient_unprepared(self._name) < 0.2:\n return 0\n return 1\n \n seen_actions = set()\n n_duplicates = 0\n for act in actions:\n if act in seen_actions:\n n_duplicates += 1\n else:\n seen_actions.add(act)\n \n duplicate_actions_score = len(seen_actions) / len(actions)\n \n return duplicate_actions_score\n \n \n def dot_node(self, dot):\n dot.node(self._id, label=f\"< <B>{self._name}</B><BR/>node score:{self.node_score()}>\", shape=\"box\")"},{"cell_type":"markdown","metadata":{},"source":"### Action Node Class"},{"cell_type":"code","execution_count":164,"metadata":{},"outputs":[],"source":"class ActionNode(RecipeTreeNode):\n def __init__(self, name, constant=False):\n super().__init__(name, constant, single_child=True)\n \n def n_node_mutate_options(self):\n # beacause we can change or remove ourselve!\n return 0 if self._constant else 2 \n def mutate_node(self):\n if random.choice(range(2)) == 0:\n # change action\n self._name = random.choice(actions)\n else:\n # delete\n self.remove()\n \n def traverse_ingredients(self):\n ingredient_set = super().traverse_ingredients()\n for ing in ingredient_set:\n ing.apply_action(self._name)\n \n return ingredient_set\n \n def node_score(self):\n ings = self.child().traverse_ingredients()\n \n s = 0\n \n for ing in ings:\n try:\n #score = asym_score(self._name, ing.to_json(), m_act, c_act)\n #base_score = asym_score(self._name, ing._base_ingredient, m_base_act, c_base_act)\n \n score = fw_p_a_given_b(self._name, ing._base_ingredient, m_base_act, c_base_act)\n \n s += score\n except KeyError as e:\n pass\n \n \n return s / len(ings)\n \n def dot_node(self, dot):\n dot.node(self._id, label=f\"< <B>{self._name}</B><BR/>node score: {self.node_score()}>\", shape=\"ellipse\")"},{"cell_type":"markdown","metadata":{},"source":"### Tree Class"},{"cell_type":"code","execution_count":166,"metadata":{},"outputs":[],"source":"class Tree(object):\n \n @staticmethod\n def from_ingredients(ingredients: list):\n root = MixNode()\n \n for ing in ingredients:\n root.add_child(IngredientNode(ing, constant=True))\n \n return Tree(root)\n \n @staticmethod\n def from_serialization(s):\n def empty_node(raw_n):\n if raw_n['type'] == \"MixNode\":\n node = MixNode(raw_n['constant'])\n elif raw_n['type'] == \"IngredientNode\":\n node = IngredientNode(raw_n['name'], raw_n['constant'])\n elif raw_n['type'] == \"ActionNode\":\n node = ActionNode(raw_n['name'], raw_n['constant'])\n else:\n print(\"unknown node detected\")\n return\n \n return node\n \n nodes = {}\n for n in s:\n nodes[n['id']] = empty_node(n)\n \n for n in s:\n childs = n['childs']\n id = n['id']\n for c in childs:\n nodes[id].add_child(nodes[c])\n \n return Tree(nodes[s[0]['id']])\n \n \n def __init__(self, root):\n # create a dummy entry node\n self._root = RecipeTreeNode(\"root\", single_child=True)\n self._root.add_child(root)\n \n def root(self):\n return self._root.child()\n \n def mutate(self):\n nodes = self.root().traverse()\n weights = [n.n_mutate_options() for n in nodes]\n \n n = random.choices(nodes, weights)[0]\n \n n.mutate()\n \n def dot(self):\n return self.root().dot()\n \n def serialize(self):\n return [n.serialize() for n in self.root().traverse()]\n \n def structure_score(self):\n n_duplicates = 0\n \n \n def collect_scores(self):\n self._mix_scores = []\n self._act_scores = []\n self._ing_scores = []\n \n nodes = self.root().traverse()\n self._n_mix_nodes = 0\n self._n_act_nodes = 0\n self._n_ing_nodes = 0\n \n s = 0\n for n in nodes:\n if type(n) == MixNode:\n self._mix_scores.append(n.node_score())\n self._n_mix_nodes += 1\n if type(n) == ActionNode:\n self._act_scores.append(n.node_score())\n self._n_act_nodes += 1\n if type(n) == IngredientNode:\n self._ing_scores.append(n.node_score())\n self._n_ing_nodes += 1\n \n self._n_duplicates = 0\n seen_actions = set()\n \n for n in nodes:\n if type(n) == ActionNode:\n if n.name() in seen_actions:\n self._n_duplicates += 1\n else:\n seen_actions.add(n.name())\n \n self._mix_scores = np.array(self._mix_scores)\n self._act_scores = np.array(self._act_scores)\n self._ing_scores = np.array(self._ing_scores)\n \n \n def mix_scores(self):\n return self._mix_scores\n \n def action_scores(self):\n return self._act_scores\n \n def ing_scores(self):\n return self._ing_scores\n \n def bounds_mix_scores(self):\n \n nonzeros = self._mix_scores[self._mix_scores > 0]\n if len(nonzeros) > 0:\n mmax = np.max(nonzeros)\n mmin = np.min(nonzeros)\n return mmin, mmax\n else:\n return None, None\n \n def bounds_act_scores(self):\n \n if len(self._act_scores) == 0:\n return None, None\n nonzeros = self._act_scores[self._act_scores > 0]\n if len(nonzeros) > 0:\n mmax = np.max(nonzeros)\n mmin = np.min(nonzeros)\n return mmin, mmax\n else:\n return None, None\n \n def normalized_mix_scores(self, min, max):\n if (max != min):\n normalized = (self._mix_scores - min)/(max-min)\n normalized[normalized <= 0] = 0\n return normalized\n else:\n return None\n \n def normalized_act_scores(self, min, max):\n if len(self._act_scores) == 0 or max == min:\n return None\n normalized = (self._act_scores - min)/(max-min)\n normalized[normalized <= 0] = 0\n return normalized\n \n def copy(self):\n return Tree.from_serialization(self.serialize())\n"},{"cell_type":"markdown","metadata":{},"source":"## Population"},{"cell_type":"code","execution_count":167,"metadata":{},"outputs":[],"source":"class Population(object):\n def __init__(self, start_ingredients, n_population = 10):\n self.population = [Tree.from_ingredients(start_ingredients) for i in range(n_population)]\n self._n = n_population\n self._mix_min = None\n self._mix_max = None\n self._act_min = None\n self._act_max = None\n self._mix_scores = None\n self._act_scores = None\n self._scores = None\n \n def mutate(self):\n for tree in self.population.copy():\n t_clone = tree.copy()\n t_clone.mutate()\n self.population.append(t_clone)\n \n def pairwise_competition(self):\n new_population = []\n indices = list(range(len(self.population)))\n random.shuffle(indices)\n \n for i in range(len(self.population) // 2):\n i_a = indices[2*i]\n i_b = indices[2*i+1]\n \n if self._scores[i_a] > self._scores[i_b]:\n new_population.append(self.population[i_a])\n else:\n new_population.append(self.population[i_b])\n \n self.population = new_population\n \n def hold_best(self, n=10):\n sorted_indices = np.argsort(-self._scores)\n \n self.population = np.array(self.population)[sorted_indices[:n]].tolist()\n \n def analyse_scores(self):\n for tree in self.population:\n min, max = tree.bounds_mix_scores()\n if min is not None and max is not None:\n if self._mix_min is None or min < self._mix_min:\n self._mix_min = min\n if self._mix_max is None or max > self._mix_max:\n self._mix_max = max\n \n min, max = tree.bounds_act_scores()\n if min is not None and max is not None:\n if self._act_min is None or min < self._act_min:\n self._act_min = min\n if self._act_max is None or max > self._act_max:\n self._act_max = max\n \n def single_score(self, mix_scores, act_scores, ing_scores):\n if mix_scores is None or act_scores is None or ing_scores is None:\n return 0\n score = (0.5 * np.average(mix_scores) + 0.5 * np.average(act_scores)) * np.average(ing_scores)\n # judging also how many actions we have. So far use a gaussian with mean at number of ingredients\n \n score *= gaussian(len(act_scores), len(mix_scores), 1)\n return score\n \n \n \n def collect_scores(self):\n for tree in self.population:\n tree.collect_scores()\n \n self.analyse_scores()\n \n if self._mix_min is not None and self._mix_max is not None:\n self._mix_scores = [t.normalized_mix_scores(self._mix_min, self._mix_max) for t in self.population]\n else:\n # if no normalization can be done, all values are the same or 0.\n # in this case just fill in zeros as score\n self._mix_scores = [np.zeros(shape=t._mix_scores.shape) for t in self.population]\n \n if self._act_min is not None and self._act_max is not None:\n self._act_scores = [t.normalized_act_scores(self._act_min, self._act_max) for t in self.population]\n else:\n self._act_scores = [np.zeros(shape=t._act_scores) for t in self.population]\n \n self._scores = []\n for i in range(len(self._mix_scores)):\n #print (self._mix_scores[i], self._act_scores[i])\n if self._act_scores is None or self._mix_scores is None or self._act_scores[i] is None:\n self._scores.append(0)\n continue\n \n s = self.single_score(self._mix_scores[i], self._act_scores[i], self.population[i].ing_scores())\n self._scores.append(s)\n self._scores = np.array(self._scores)\n \n def run(self, n=50):\n for i in range(n):\n print(i)\n self.mutate()\n self.mutate()\n self.collect_scores()\n #self.pairwise_competition()\n #self.collect_scores()\n self.hold_best(self._n)\n \n \n \n def plot_population(self):\n self.collect_scores()\n #print(self._mix_scores)\n #print(self._act_scores)\n #print(self._scores)\n for i, t in enumerate(self.population):\n display(self._scores[i])\n display(t.root().dot())"},{"cell_type":"markdown","metadata":{},"source":"## Run Evolutionary Algorithm"},{"cell_type":"code","execution_count":176,"metadata":{},"outputs":[],"source":"p = Population([\"noodle\", \"bacon\", \"salt\", \"pepper\", \"tomato\", \"onion\"])"},{"cell_type":"code","execution_count":172,"metadata":{},"outputs":[],"source":"#p_ingredient_unprepared(list(p.population[0].root().childs())[0]._name) < 0.2"},{"cell_type":"code","execution_count":177,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"0\n1\n2\n3\n4\n"}],"source":"p.run(5)"},{"cell_type":"code","execution_count":178,"metadata":{},"outputs":[{"data":{"text/plain":"0.23706667598847336"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"674pt\" height=\"239pt\"\n viewBox=\"0.00 0.00 674.00 238.91\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 234.9117)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-234.9117 670,-234.9117 670,4 -4,4\"/>\n<!-- 28554 -->\n<g id=\"node1\" class=\"node\">\n<title>28554</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"333\" cy=\"-205.4558\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"318.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"322.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"240.5\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.7713748266936733</text>\n</g>\n<!-- 28546 -->\n<g id=\"node2\" class=\"node\">\n<title>28546</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"333,-144 139,-108 333,-72 527,-108 333,-144\"/>\n<text text-anchor=\"start\" x=\"319.5\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"323.5\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"244\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.256507387234994</text>\n</g>\n<!-- 28554&#45;&gt;28546 -->\n<g id=\"edge1\" class=\"edge\">\n<title>28554&#45;&gt;28546</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M333,-179.8505C333,-171.9868 333,-163.0773 333,-154.2748\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"336.5001,-154.0596 333,-144.0596 329.5001,-154.0597 336.5001,-154.0596\"/>\n</g>\n<!-- 28548 -->\n<g id=\"node3\" class=\"node\">\n<title>28548</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"96,-36 0,-36 0,0 96,0 96,-36\"/>\n<text text-anchor=\"start\" x=\"25\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"29\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"8\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28546&#45;&gt;28548 -->\n<g id=\"edge2\" class=\"edge\">\n<title>28546&#45;&gt;28548</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M261.0825,-85.2892C212.997,-70.1043 150.5662,-50.3893 105.7282,-36.2299\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"106.7447,-32.8807 96.1549,-33.2068 104.6368,-39.5557 106.7447,-32.8807\"/>\n</g>\n<!-- 28552 -->\n<g id=\"node4\" class=\"node\">\n<title>28552</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"210,-36 114,-36 114,0 210,0 210,-36\"/>\n<text text-anchor=\"start\" x=\"149.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"153.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"122\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28546&#45;&gt;28552 -->\n<g id=\"edge3\" class=\"edge\">\n<title>28546&#45;&gt;28552</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M282.1573,-81.2407C257.7349,-68.3868 228.7713,-53.1428 205.4001,-40.8422\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"206.8917,-37.6721 196.4123,-36.1118 203.6314,-43.8665 206.8917,-37.6721\"/>\n</g>\n<!-- 28547 -->\n<g id=\"node5\" class=\"node\">\n<title>28547</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"324,-36 228,-36 228,0 324,0 324,-36\"/>\n<text text-anchor=\"start\" x=\"254.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"258.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"236\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28546&#45;&gt;28547 -->\n<g id=\"edge4\" class=\"edge\">\n<title>28546&#45;&gt;28547</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M312.5827,-75.7621C306.1259,-65.5672 299.0658,-54.4196 292.8849,-44.6604\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"295.8058,-42.7308 287.4984,-36.1553 289.8921,-46.4762 295.8058,-42.7308\"/>\n</g>\n<!-- 28551 -->\n<g id=\"node6\" class=\"node\">\n<title>28551</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"438,-36 342,-36 342,0 438,0 438,-36\"/>\n<text text-anchor=\"start\" x=\"370.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"374.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"350\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28546&#45;&gt;28551 -->\n<g id=\"edge5\" class=\"edge\">\n<title>28546&#45;&gt;28551</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M353.4173,-75.7621C359.8741,-65.5672 366.9342,-54.4196 373.1151,-44.6604\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"376.1079,-46.4762 378.5016,-36.1553 370.1942,-42.7308 376.1079,-46.4762\"/>\n</g>\n<!-- 28549 -->\n<g id=\"node7\" class=\"node\">\n<title>28549</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"552,-36 456,-36 456,0 552,0 552,-36\"/>\n<text text-anchor=\"start\" x=\"485.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"489.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"464\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28546&#45;&gt;28549 -->\n<g id=\"edge6\" class=\"edge\">\n<title>28546&#45;&gt;28549</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M383.8427,-81.2407C408.2651,-68.3868 437.2287,-53.1428 460.5999,-40.8422\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"462.3686,-43.8665 469.5877,-36.1118 459.1083,-37.6721 462.3686,-43.8665\"/>\n</g>\n<!-- 28550 -->\n<g id=\"node8\" class=\"node\">\n<title>28550</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"666,-36 570,-36 570,0 666,0 666,-36\"/>\n<text text-anchor=\"start\" x=\"595.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"599.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"578\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28546&#45;&gt;28550 -->\n<g id=\"edge7\" class=\"edge\">\n<title>28546&#45;&gt;28550</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M404.9175,-85.2892C453.003,-70.1043 515.4338,-50.3893 560.2718,-36.2299\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"561.3632,-39.5557 569.8451,-33.2068 559.2553,-32.8807 561.3632,-39.5557\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.20204020608318787"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"634pt\" height=\"434pt\"\n viewBox=\"0.00 0.00 634.00 433.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 429.8234)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-429.8234 630,-429.8234 630,4 -4,4\"/>\n<!-- 29216 -->\n<g id=\"node1\" class=\"node\">\n<title>29216</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"360\" cy=\"-400.3675\" rx=\"147.1565\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"346\" y=\"-404.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"350\" y=\"-404.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cool</text>\n<text text-anchor=\"start\" x=\"264\" y=\"-390.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.24156450774085103</text>\n</g>\n<!-- 29226 -->\n<g id=\"node2\" class=\"node\">\n<title>29226</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"360,-338.9117 139,-302.9117 360,-266.9117 581,-302.9117 360,-338.9117\"/>\n<text text-anchor=\"start\" x=\"346.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"350.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"257.5\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0031457570642523616</text>\n</g>\n<!-- 29216&#45;&gt;29226 -->\n<g id=\"edge1\" class=\"edge\">\n<title>29216&#45;&gt;29226</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M360,-374.7622C360,-366.8985 360,-357.989 360,-349.1865\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"363.5001,-348.9713 360,-338.9713 356.5001,-348.9714 363.5001,-348.9713\"/>\n</g>\n<!-- 29219 -->\n<g id=\"node3\" class=\"node\">\n<title>29219</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"96,-223.4558 0,-223.4558 0,-187.4558 96,-187.4558 96,-223.4558\"/>\n<text text-anchor=\"start\" x=\"28.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"32.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"8\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29226&#45;&gt;29219 -->\n<g id=\"edge2\" class=\"edge\">\n<title>29226&#45;&gt;29219</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M271.3757,-281.2657C221.8719,-268.3362 159.3874,-250.6171 105,-230.9117 101.9431,-229.8041 98.8199,-228.6066 95.6879,-227.3553\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"96.9013,-224.0696 86.323,-223.4768 94.2227,-230.5369 96.9013,-224.0696\"/>\n</g>\n<!-- 29225 -->\n<g id=\"node4\" class=\"node\">\n<title>29225</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"256\" cy=\"-205.4558\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"240\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"244\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cook</text>\n<text text-anchor=\"start\" x=\"163.5\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.7852322377351193</text>\n</g>\n<!-- 29226&#45;&gt;29225 -->\n<g id=\"edge3\" class=\"edge\">\n<title>29226&#45;&gt;29225</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M327.0938,-272.0761C315.3779,-261.0974 302.1603,-248.7115 290.3282,-237.624\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"292.4728,-234.837 282.7826,-230.5531 287.6863,-239.9449 292.4728,-234.837\"/>\n</g>\n<!-- 29221 -->\n<g id=\"node9\" class=\"node\">\n<title>29221</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"512,-223.4558 416,-223.4558 416,-187.4558 512,-187.4558 512,-223.4558\"/>\n<text text-anchor=\"start\" x=\"441\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"445\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"424\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29226&#45;&gt;29221 -->\n<g id=\"edge8\" class=\"edge\">\n<title>29226&#45;&gt;29221</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M392.9063,-272.0761C407.1336,-258.7439 423.5755,-243.3367 437.0615,-230.6992\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"439.7176,-233.0069 444.6213,-223.6152 434.9311,-227.899 439.7176,-233.0069\"/>\n</g>\n<!-- 29220 -->\n<g id=\"node10\" class=\"node\">\n<title>29220</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"626,-223.4558 530,-223.4558 530,-187.4558 626,-187.4558 626,-223.4558\"/>\n<text text-anchor=\"start\" x=\"556.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"560.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"538\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29226&#45;&gt;29220 -->\n<g id=\"edge9\" class=\"edge\">\n<title>29226&#45;&gt;29220</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M419.2815,-276.4102C453.4784,-261.1226 495.9846,-242.1205 528.4001,-227.6292\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"529.986,-230.7542 537.6869,-223.4776 527.1291,-224.3636 529.986,-230.7542\"/>\n</g>\n<!-- 29227 -->\n<g id=\"node5\" class=\"node\">\n<title>29227</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"256,-144 55,-108 256,-72 457,-108 256,-144\"/>\n<text text-anchor=\"start\" x=\"242.5\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"246.5\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"163.5\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.6102252273053411</text>\n</g>\n<!-- 29225&#45;&gt;29227 -->\n<g id=\"edge4\" class=\"edge\">\n<title>29225&#45;&gt;29227</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M256,-179.8505C256,-171.9868 256,-163.0773 256,-154.2748\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"259.5001,-154.0596 256,-144.0596 252.5001,-154.0597 259.5001,-154.0596\"/>\n</g>\n<!-- 29218 -->\n<g id=\"node6\" class=\"node\">\n<title>29218</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"190,-36 94,-36 94,0 190,0 190,-36\"/>\n<text text-anchor=\"start\" x=\"129.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"133.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"102\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29227&#45;&gt;29218 -->\n<g id=\"edge5\" class=\"edge\">\n<title>29227&#45;&gt;29218</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M218.6721,-78.5306C203.9073,-66.8742 187.1353,-53.6331 173.0507,-42.5137\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"175.1215,-39.6893 165.1039,-36.2399 170.784,-45.1835 175.1215,-39.6893\"/>\n</g>\n<!-- 29222 -->\n<g id=\"node7\" class=\"node\">\n<title>29222</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"304,-36 208,-36 208,0 304,0 304,-36\"/>\n<text text-anchor=\"start\" x=\"233.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"237.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"216\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29227&#45;&gt;29222 -->\n<g id=\"edge6\" class=\"edge\">\n<title>29227&#45;&gt;29222</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M256,-71.9121C256,-63.3433 256,-54.3253 256,-46.1692\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"259.5001,-46.0539 256,-36.0539 252.5001,-46.0539 259.5001,-46.0539\"/>\n</g>\n<!-- 29223 -->\n<g id=\"node8\" class=\"node\">\n<title>29223</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"418,-36 322,-36 322,0 418,0 418,-36\"/>\n<text text-anchor=\"start\" x=\"351.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"355.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"330\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29227&#45;&gt;29223 -->\n<g id=\"edge7\" class=\"edge\">\n<title>29227&#45;&gt;29223</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M293.3279,-78.5306C308.0927,-66.8742 324.8647,-53.6331 338.9493,-42.5137\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"341.216,-45.1835 346.8961,-36.2399 336.8785,-39.6893 341.216,-45.1835\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.17162627779561146"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"907pt\" height=\"434pt\"\n viewBox=\"0.00 0.00 907.13 433.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 429.8234)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-429.8234 903.1285,-429.8234 903.1285,4 -4,4\"/>\n<!-- 29095 -->\n<g id=\"node1\" class=\"node\">\n<title>29095</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"486.1285,-425.8234 386.1285,-389.8234 486.1285,-353.8234 586.1285,-389.8234 486.1285,-425.8234\"/>\n<text text-anchor=\"start\" x=\"472.6285\" y=\"-393.6234\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"476.6285\" y=\"-393.6234\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"444.1285\" y=\"-379.6234\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 29094 -->\n<g id=\"node2\" class=\"node\">\n<title>29094</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"364.1285\" cy=\"-292.3675\" rx=\"70.922\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"348.1285\" y=\"-296.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"352.1285\" y=\"-296.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cook</text>\n<text text-anchor=\"start\" x=\"322.1285\" y=\"-282.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 1.0</text>\n</g>\n<!-- 29095&#45;&gt;29094 -->\n<g id=\"edge1\" class=\"edge\">\n<title>29095&#45;&gt;29094</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M455.027,-364.979C438.7677,-351.9907 418.7432,-335.9948 401.631,-322.3252\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"403.4913,-319.3317 393.4936,-315.825 399.1224,-324.8009 403.4913,-319.3317\"/>\n</g>\n<!-- 29084 -->\n<g id=\"node7\" class=\"node\">\n<title>29084</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"627.1285\" cy=\"-292.3675\" rx=\"156.0415\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"610.6285\" y=\"-296.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"614.6285\" y=\"-296.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">whip</text>\n<text text-anchor=\"start\" x=\"524.6285\" y=\"-282.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0026102706158107817</text>\n</g>\n<!-- 29095&#45;&gt;29084 -->\n<g id=\"edge6\" class=\"edge\">\n<title>29095&#45;&gt;29084</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M520.6209,-365.983C539.3115,-353.0645 562.6175,-336.956 582.6586,-323.104\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"584.7886,-325.8865 591.0249,-317.3215 580.8085,-320.1281 584.7886,-325.8865\"/>\n</g>\n<!-- 29096 -->\n<g id=\"node3\" class=\"node\">\n<title>29096</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"327.1285,-230.9117 227.1285,-194.9117 327.1285,-158.9117 427.1285,-194.9117 327.1285,-230.9117\"/>\n<text text-anchor=\"start\" x=\"313.6285\" y=\"-198.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"317.6285\" y=\"-198.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"285.1285\" y=\"-184.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 29094&#45;&gt;29096 -->\n<g id=\"edge2\" class=\"edge\">\n<title>29094&#45;&gt;29096</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M354.5037,-267.0166C350.9299,-257.6034 346.777,-246.6649 342.8024,-236.1959\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0456,-234.8773 339.224,-226.7707 339.5014,-237.3619 346.0456,-234.8773\"/>\n</g>\n<!-- 29091 -->\n<g id=\"node4\" class=\"node\">\n<title>29091</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"142.1285\" cy=\"-97.4558\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"127.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"131.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"49.6285\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.9351222826086957</text>\n</g>\n<!-- 29096&#45;&gt;29091 -->\n<g id=\"edge3\" class=\"edge\">\n<title>29096&#45;&gt;29091</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M286.5294,-173.5246C260.328,-159.722 225.9121,-141.5921 197.2516,-126.4941\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"198.645,-123.2722 188.1662,-121.708 195.3824,-129.4654 198.645,-123.2722\"/>\n</g>\n<!-- 29090 -->\n<g id=\"node6\" class=\"node\">\n<title>29090</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"398.1285,-115.4558 302.1285,-115.4558 302.1285,-79.4558 398.1285,-79.4558 398.1285,-115.4558\"/>\n<text text-anchor=\"start\" x=\"328.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"332.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"310.1285\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29096&#45;&gt;29090 -->\n<g id=\"edge5\" class=\"edge\">\n<title>29096&#45;&gt;29090</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M334.9794,-161.6455C337.7692,-149.8246 340.8786,-136.6495 343.5509,-125.3264\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.9698,-126.0769 345.8604,-115.5403 340.157,-124.469 346.9698,-126.0769\"/>\n</g>\n<!-- 29092 -->\n<g id=\"node5\" class=\"node\">\n<title>29092</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"190.1285,-36 94.1285,-36 94.1285,0 190.1285,0 190.1285,-36\"/>\n<text text-anchor=\"start\" x=\"123.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"127.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"102.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29091&#45;&gt;29092 -->\n<g id=\"edge4\" class=\"edge\">\n<title>29091&#45;&gt;29092</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M142.1285,-71.8782C142.1285,-63.7122 142.1285,-54.6289 142.1285,-46.2824\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"145.6286,-46.2287 142.1285,-36.2288 138.6286,-46.2288 145.6286,-46.2287\"/>\n</g>\n<!-- 29085 -->\n<g id=\"node8\" class=\"node\">\n<title>29085</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"646.1285,-230.9117 445.1285,-194.9117 646.1285,-158.9117 847.1285,-194.9117 646.1285,-230.9117\"/>\n<text text-anchor=\"start\" x=\"632.6285\" y=\"-198.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"636.6285\" y=\"-198.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"553.6285\" y=\"-184.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.3944813826951458</text>\n</g>\n<!-- 29084&#45;&gt;29085 -->\n<g id=\"edge7\" class=\"edge\">\n<title>29084&#45;&gt;29085</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M632.1205,-266.7622C633.7354,-258.4791 635.5765,-249.0355 637.3811,-239.779\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"640.8343,-240.3568 639.3126,-229.8718 633.9637,-239.0172 640.8343,-240.3568\"/>\n</g>\n<!-- 29088 -->\n<g id=\"node9\" class=\"node\">\n<title>29088</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"557.1285,-115.4558 461.1285,-115.4558 461.1285,-79.4558 557.1285,-79.4558 557.1285,-115.4558\"/>\n<text text-anchor=\"start\" x=\"486.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"490.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"469.1285\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29085&#45;&gt;29088 -->\n<g id=\"edge8\" class=\"edge\">\n<title>29085&#45;&gt;29088</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M605.3949,-165.9356C585.5591,-151.8253 561.9842,-135.0551 543.1288,-121.6422\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"545.0055,-118.682 534.828,-115.7374 540.9478,-124.386 545.0055,-118.682\"/>\n</g>\n<!-- 29087 -->\n<g id=\"node10\" class=\"node\">\n<title>29087</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"671.1285,-115.4558 575.1285,-115.4558 575.1285,-79.4558 671.1285,-79.4558 671.1285,-115.4558\"/>\n<text text-anchor=\"start\" x=\"610.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"614.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"583.1285\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29085&#45;&gt;29087 -->\n<g id=\"edge9\" class=\"edge\">\n<title>29085&#45;&gt;29087</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M637.9548,-160.278C635.2542,-148.835 632.2858,-136.2574 629.7191,-125.3819\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"633.1066,-124.4975 627.4032,-115.5688 626.2938,-126.1054 633.1066,-124.4975\"/>\n</g>\n<!-- 29086 -->\n<g id=\"node11\" class=\"node\">\n<title>29086</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"785.1285,-115.4558 689.1285,-115.4558 689.1285,-79.4558 785.1285,-79.4558 785.1285,-115.4558\"/>\n<text text-anchor=\"start\" x=\"717.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"721.6285\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"697.1285\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29085&#45;&gt;29086 -->\n<g id=\"edge10\" class=\"edge\">\n<title>29085&#45;&gt;29086</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M675.1716,-163.8081C687.4911,-150.6146 701.6708,-135.429 713.3535,-122.9175\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"715.9993,-125.2123 720.266,-115.5145 710.883,-120.4349 715.9993,-125.2123\"/>\n</g>\n<!-- 29089 -->\n<g id=\"node12\" class=\"node\">\n<title>29089</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"899.1285,-115.4558 803.1285,-115.4558 803.1285,-79.4558 899.1285,-79.4558 899.1285,-115.4558\"/>\n<text text-anchor=\"start\" x=\"828.1285\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"832.1285\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"811.1285\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29085&#45;&gt;29089 -->\n<g id=\"edge11\" class=\"edge\">\n<title>29085&#45;&gt;29089</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M701.3344,-168.6671C733.361,-153.4418 773.2775,-134.4658 803.8501,-119.9317\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"805.4904,-123.0274 813.0191,-115.5728 802.4849,-116.7054 805.4904,-123.0274\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.1713840220963046"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"661pt\" height=\"347pt\"\n viewBox=\"0.00 0.00 661.00 346.91\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 342.9117)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-342.9117 657,-342.9117 657,4 -4,4\"/>\n<!-- 29967 -->\n<g id=\"node1\" class=\"node\">\n<title>29967</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"175,-338.9117 75,-302.9117 175,-266.9117 275,-302.9117 175,-338.9117\"/>\n<text text-anchor=\"start\" x=\"161.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"165.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"133\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 29970 -->\n<g id=\"node2\" class=\"node\">\n<title>29970</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"86,-223.4558 0,-223.4558 0,-187.4558 86,-187.4558 86,-223.4558\"/>\n<text text-anchor=\"start\" x=\"21.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"25.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"8\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:0</text>\n</g>\n<!-- 29967&#45;&gt;29970 -->\n<g id=\"edge1\" class=\"edge\">\n<title>29967&#45;&gt;29970</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M142.0313,-278.5709C121.8526,-263.6729 96.1236,-244.6771 75.9486,-229.7818\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"77.7984,-226.797 67.6746,-223.6731 73.6406,-232.4285 77.7984,-226.797\"/>\n</g>\n<!-- 29968 -->\n<g id=\"node3\" class=\"node\">\n<title>29968</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"175\" cy=\"-205.4558\" rx=\"70.922\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"159\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"163\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cook</text>\n<text text-anchor=\"start\" x=\"133\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 1.0</text>\n</g>\n<!-- 29967&#45;&gt;29968 -->\n<g id=\"edge2\" class=\"edge\">\n<title>29967&#45;&gt;29968</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M175,-266.8996C175,-258.5122 175,-249.5843 175,-241.2082\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"178.5001,-240.9756 175,-230.9757 171.5001,-240.9757 178.5001,-240.9756\"/>\n</g>\n<!-- 29971 -->\n<g id=\"node5\" class=\"node\">\n<title>29971</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"426\" cy=\"-205.4558\" rx=\"147.1565\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"401\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"405\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">simmer</text>\n<text text-anchor=\"start\" x=\"330\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.41806154430428866</text>\n</g>\n<!-- 29967&#45;&gt;29971 -->\n<g id=\"edge4\" class=\"edge\">\n<title>29967&#45;&gt;29971</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M223.3953,-284.1212C261.1407,-269.4658 314.0787,-248.9116 356.3763,-232.4887\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"357.7243,-235.7199 365.7795,-228.8377 355.1907,-229.1945 357.7243,-235.7199\"/>\n</g>\n<!-- 29969 -->\n<g id=\"node4\" class=\"node\">\n<title>29969</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"215,-126 119,-126 119,-90 215,-90 215,-126\"/>\n<text text-anchor=\"start\" x=\"148.5\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"152.5\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"127\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29968&#45;&gt;29969 -->\n<g id=\"edge3\" class=\"edge\">\n<title>29968&#45;&gt;29969</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M172.8981,-179.8505C171.8022,-166.5006 170.4589,-150.1364 169.3312,-136.3988\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"172.7884,-135.7326 168.4819,-126.0525 165.8119,-136.3053 172.7884,-135.7326\"/>\n</g>\n<!-- 29972 -->\n<g id=\"node6\" class=\"node\">\n<title>29972</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"434,-144 233,-108 434,-72 635,-108 434,-144\"/>\n<text text-anchor=\"start\" x=\"420.5\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"424.5\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"341.5\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.3944813826951458</text>\n</g>\n<!-- 29971&#45;&gt;29972 -->\n<g id=\"edge5\" class=\"edge\">\n<title>29971&#45;&gt;29972</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M428.1019,-179.8505C428.7612,-171.8194 429.51,-162.6974 430.2475,-153.7127\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"433.7401,-153.9453 431.0701,-143.6924 426.7636,-153.3725 433.7401,-153.9453\"/>\n</g>\n<!-- 29973 -->\n<g id=\"node7\" class=\"node\">\n<title>29973</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"311,-36 215,-36 215,0 311,0 311,-36\"/>\n<text text-anchor=\"start\" x=\"250.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"254.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"223\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29972&#45;&gt;29973 -->\n<g id=\"edge6\" class=\"edge\">\n<title>29972&#45;&gt;29973</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M382.6944,-80.997C358.2899,-68.1526 329.4355,-52.966 306.1722,-40.7222\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"307.7064,-37.5745 297.2271,-36.0142 304.4461,-43.769 307.7064,-37.5745\"/>\n</g>\n<!-- 29976 -->\n<g id=\"node8\" class=\"node\">\n<title>29976</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"425,-36 329,-36 329,0 425,0 425,-36\"/>\n<text text-anchor=\"start\" x=\"357.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"361.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"337\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29972&#45;&gt;29976 -->\n<g id=\"edge7\" class=\"edge\">\n<title>29972&#45;&gt;29976</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M413.4217,-75.5079C406.9762,-65.3309 399.9435,-54.2266 393.7918,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"396.7394,-42.626 388.432,-36.0505 390.8257,-46.3714 396.7394,-42.626\"/>\n</g>\n<!-- 29974 -->\n<g id=\"node9\" class=\"node\">\n<title>29974</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"539,-36 443,-36 443,0 539,0 539,-36\"/>\n<text text-anchor=\"start\" x=\"468.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"472.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"451\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29972&#45;&gt;29974 -->\n<g id=\"edge8\" class=\"edge\">\n<title>29972&#45;&gt;29974</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M454.5783,-75.5079C461.0238,-65.3309 468.0565,-54.2266 474.2082,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"477.1743,-46.3714 479.568,-36.0505 471.2606,-42.626 477.1743,-46.3714\"/>\n</g>\n<!-- 29975 -->\n<g id=\"node10\" class=\"node\">\n<title>29975</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"653,-36 557,-36 557,0 653,0 653,-36\"/>\n<text text-anchor=\"start\" x=\"582\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"586\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"565\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29972&#45;&gt;29975 -->\n<g id=\"edge9\" class=\"edge\">\n<title>29972&#45;&gt;29975</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M485.3056,-80.997C509.7101,-68.1526 538.5645,-52.966 561.8278,-40.7222\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"563.5539,-43.769 570.7729,-36.0142 560.2936,-37.5745 563.5539,-43.769\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.1659860909419401"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"775pt\" height=\"347pt\"\n viewBox=\"0.00 0.00 775.13 346.91\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 342.9117)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-342.9117 771.1285,-342.9117 771.1285,4 -4,4\"/>\n<!-- 28699 -->\n<g id=\"node1\" class=\"node\">\n<title>28699</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"345.1285,-338.9117 245.1285,-302.9117 345.1285,-266.9117 445.1285,-302.9117 345.1285,-338.9117\"/>\n<text text-anchor=\"start\" x=\"331.6285\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"335.6285\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"303.1285\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 28690 -->\n<g id=\"node2\" class=\"node\">\n<title>28690</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"142.1285\" cy=\"-205.4558\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"127.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"131.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"49.6285\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.9351222826086957</text>\n</g>\n<!-- 28699&#45;&gt;28690 -->\n<g id=\"edge1\" class=\"edge\">\n<title>28699&#45;&gt;28690</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M302.0774,-282.2438C272.7353,-268.1573 233.5076,-249.325 201.2443,-233.836\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"202.4394,-230.5274 191.9097,-229.3547 199.4099,-236.8379 202.4394,-230.5274\"/>\n</g>\n<!-- 28696 -->\n<g id=\"node4\" class=\"node\">\n<title>28696</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"388.1285,-223.4558 302.1285,-223.4558 302.1285,-187.4558 388.1285,-187.4558 388.1285,-223.4558\"/>\n<text text-anchor=\"start\" x=\"323.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"327.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"310.1285\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:0</text>\n</g>\n<!-- 28699&#45;&gt;28696 -->\n<g id=\"edge3\" class=\"edge\">\n<title>28699&#45;&gt;28696</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M345.1285,-266.8996C345.1285,-255.9536 345.1285,-244.0871 345.1285,-233.7278\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"348.6286,-233.5795 345.1285,-223.5795 341.6286,-233.5795 348.6286,-233.5795\"/>\n</g>\n<!-- 28698 -->\n<g id=\"node5\" class=\"node\">\n<title>28698</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"548.1285\" cy=\"-205.4558\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"523.1285\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"527.1285\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">simmer</text>\n<text text-anchor=\"start\" x=\"455.6285\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.4180615443042887</text>\n</g>\n<!-- 28699&#45;&gt;28698 -->\n<g id=\"edge4\" class=\"edge\">\n<title>28699&#45;&gt;28698</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M388.1795,-282.2438C417.5216,-268.1573 456.7493,-249.325 489.0127,-233.836\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"490.8471,-236.8379 498.3473,-229.3547 487.8175,-230.5274 490.8471,-236.8379\"/>\n</g>\n<!-- 28691 -->\n<g id=\"node3\" class=\"node\">\n<title>28691</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"190.1285,-126 94.1285,-126 94.1285,-90 190.1285,-90 190.1285,-126\"/>\n<text text-anchor=\"start\" x=\"123.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"127.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"102.1285\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28690&#45;&gt;28691 -->\n<g id=\"edge2\" class=\"edge\">\n<title>28690&#45;&gt;28691</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M142.1285,-179.8505C142.1285,-166.5006 142.1285,-150.1364 142.1285,-136.3988\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"145.6286,-136.0524 142.1285,-126.0525 138.6286,-136.0525 145.6286,-136.0524\"/>\n</g>\n<!-- 28700 -->\n<g id=\"node6\" class=\"node\">\n<title>28700</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"548.1285,-144 347.1285,-108 548.1285,-72 749.1285,-108 548.1285,-144\"/>\n<text text-anchor=\"start\" x=\"534.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"538.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"455.6285\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.3944813826951458</text>\n</g>\n<!-- 28698&#45;&gt;28700 -->\n<g id=\"edge5\" class=\"edge\">\n<title>28698&#45;&gt;28700</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M548.1285,-179.8505C548.1285,-171.9868 548.1285,-163.0773 548.1285,-154.2748\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"551.6286,-154.0596 548.1285,-144.0596 544.6286,-154.0597 551.6286,-154.0596\"/>\n</g>\n<!-- 28692 -->\n<g id=\"node7\" class=\"node\">\n<title>28692</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"425.1285,-36 329.1285,-36 329.1285,0 425.1285,0 425.1285,-36\"/>\n<text text-anchor=\"start\" x=\"364.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"368.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"337.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28700&#45;&gt;28692 -->\n<g id=\"edge6\" class=\"edge\">\n<title>28700&#45;&gt;28692</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M496.8228,-80.997C472.4184,-68.1526 443.5639,-52.966 420.3006,-40.7222\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"421.8349,-37.5745 411.3555,-36.0142 418.5746,-43.769 421.8349,-37.5745\"/>\n</g>\n<!-- 28695 -->\n<g id=\"node8\" class=\"node\">\n<title>28695</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"539.1285,-36 443.1285,-36 443.1285,0 539.1285,0 539.1285,-36\"/>\n<text text-anchor=\"start\" x=\"468.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"472.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"451.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28700&#45;&gt;28695 -->\n<g id=\"edge7\" class=\"edge\">\n<title>28700&#45;&gt;28695</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M527.5502,-75.5079C521.1047,-65.3309 514.072,-54.2266 507.9202,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"510.8679,-42.626 502.5605,-36.0505 504.9542,-46.3714 510.8679,-42.626\"/>\n</g>\n<!-- 28693 -->\n<g id=\"node9\" class=\"node\">\n<title>28693</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"653.1285,-36 557.1285,-36 557.1285,0 653.1285,0 653.1285,-36\"/>\n<text text-anchor=\"start\" x=\"582.1285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"586.1285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"565.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28700&#45;&gt;28693 -->\n<g id=\"edge8\" class=\"edge\">\n<title>28700&#45;&gt;28693</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M568.7068,-75.5079C575.1523,-65.3309 582.1849,-54.2266 588.3367,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"591.3028,-46.3714 593.6965,-36.0505 585.389,-42.626 591.3028,-46.3714\"/>\n</g>\n<!-- 28694 -->\n<g id=\"node10\" class=\"node\">\n<title>28694</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"767.1285,-36 671.1285,-36 671.1285,0 767.1285,0 767.1285,-36\"/>\n<text text-anchor=\"start\" x=\"699.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"703.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"679.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 28700&#45;&gt;28694 -->\n<g id=\"edge9\" class=\"edge\">\n<title>28700&#45;&gt;28694</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M599.4341,-80.997C623.8386,-68.1526 652.693,-52.966 675.9563,-40.7222\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"677.6823,-43.769 684.9014,-36.0142 674.4221,-37.5745 677.6823,-43.769\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.16337906864086424"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"951pt\" height=\"542pt\"\n viewBox=\"0.00 0.00 951.13 541.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 537.8234)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-537.8234 947.1285,-537.8234 947.1285,4 -4,4\"/>\n<!-- 29574 -->\n<g id=\"node1\" class=\"node\">\n<title>29574</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"439.1285,-533.8234 339.1285,-497.8234 439.1285,-461.8234 539.1285,-497.8234 439.1285,-533.8234\"/>\n<text text-anchor=\"start\" x=\"425.6285\" y=\"-501.6234\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"429.6285\" y=\"-501.6234\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"397.1285\" y=\"-487.6234\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 29575 -->\n<g id=\"node2\" class=\"node\">\n<title>29575</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"317.1285\" cy=\"-400.3675\" rx=\"70.922\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"301.1285\" y=\"-404.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"305.1285\" y=\"-404.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cook</text>\n<text text-anchor=\"start\" x=\"275.1285\" y=\"-390.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 1.0</text>\n</g>\n<!-- 29574&#45;&gt;29575 -->\n<g id=\"edge1\" class=\"edge\">\n<title>29574&#45;&gt;29575</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M408.027,-472.979C391.7677,-459.9907 371.7432,-443.9948 354.631,-430.3252\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"356.4913,-427.3317 346.4936,-423.825 352.1224,-432.8009 356.4913,-427.3317\"/>\n</g>\n<!-- 29580 -->\n<g id=\"node7\" class=\"node\">\n<title>29580</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"562.1285\" cy=\"-400.3675\" rx=\"156.0415\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"545.6285\" y=\"-404.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"549.6285\" y=\"-404.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">whip</text>\n<text text-anchor=\"start\" x=\"459.6285\" y=\"-390.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0026102706158107817</text>\n</g>\n<!-- 29574&#45;&gt;29580 -->\n<g id=\"edge6\" class=\"edge\">\n<title>29574&#45;&gt;29580</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M470.4848,-472.979C486.2657,-460.4754 505.5647,-445.1844 522.3754,-431.8649\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"524.7373,-434.4589 530.4017,-425.5054 520.3901,-428.9724 524.7373,-434.4589\"/>\n</g>\n<!-- 29576 -->\n<g id=\"node3\" class=\"node\">\n<title>29576</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"317.1285,-338.9117 217.1285,-302.9117 317.1285,-266.9117 417.1285,-302.9117 317.1285,-338.9117\"/>\n<text text-anchor=\"start\" x=\"303.6285\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"307.6285\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"275.1285\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 29575&#45;&gt;29576 -->\n<g id=\"edge2\" class=\"edge\">\n<title>29575&#45;&gt;29576</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M317.1285,-374.7622C317.1285,-366.8985 317.1285,-357.989 317.1285,-349.1865\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"320.6286,-348.9713 317.1285,-338.9713 313.6286,-348.9714 320.6286,-348.9713\"/>\n</g>\n<!-- 29577 -->\n<g id=\"node4\" class=\"node\">\n<title>29577</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"142.1285\" cy=\"-205.4558\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"127.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"131.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"49.6285\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.9351222826086957</text>\n</g>\n<!-- 29576&#45;&gt;29577 -->\n<g id=\"edge3\" class=\"edge\">\n<title>29576&#45;&gt;29577</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M277.855,-281.0407C253.3192,-267.3769 221.4259,-249.6158 194.7212,-234.7442\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"196.3213,-231.6293 185.8818,-229.8217 192.9156,-237.7449 196.3213,-231.6293\"/>\n</g>\n<!-- 29579 -->\n<g id=\"node6\" class=\"node\">\n<title>29579</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"398.1285,-223.4558 302.1285,-223.4558 302.1285,-187.4558 398.1285,-187.4558 398.1285,-223.4558\"/>\n<text text-anchor=\"start\" x=\"328.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"332.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"310.1285\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29576&#45;&gt;29579 -->\n<g id=\"edge5\" class=\"edge\">\n<title>29576&#45;&gt;29579</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M328.0254,-270.7309C332.1201,-258.6383 336.7372,-245.0029 340.6886,-233.3336\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"344.0676,-234.2674 343.9598,-223.6731 337.4374,-232.0223 344.0676,-234.2674\"/>\n</g>\n<!-- 29578 -->\n<g id=\"node5\" class=\"node\">\n<title>29578</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"190.1285,-126 94.1285,-126 94.1285,-90 190.1285,-90 190.1285,-126\"/>\n<text text-anchor=\"start\" x=\"123.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"127.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"102.1285\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29577&#45;&gt;29578 -->\n<g id=\"edge4\" class=\"edge\">\n<title>29577&#45;&gt;29578</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M142.1285,-179.8505C142.1285,-166.5006 142.1285,-150.1364 142.1285,-136.3988\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"145.6286,-136.0524 142.1285,-126.0525 138.6286,-136.0525 145.6286,-136.0524\"/>\n</g>\n<!-- 29588 -->\n<g id=\"node8\" class=\"node\">\n<title>29588</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"562.1285,-338.9117 462.1285,-302.9117 562.1285,-266.9117 662.1285,-302.9117 562.1285,-338.9117\"/>\n<text text-anchor=\"start\" x=\"548.6285\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"552.6285\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"520.1285\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 29580&#45;&gt;29588 -->\n<g id=\"edge7\" class=\"edge\">\n<title>29580&#45;&gt;29588</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M562.1285,-374.7622C562.1285,-366.8985 562.1285,-357.989 562.1285,-349.1865\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"565.6286,-348.9713 562.1285,-338.9713 558.6286,-348.9714 565.6286,-348.9713\"/>\n</g>\n<!-- 29584 -->\n<g id=\"node9\" class=\"node\">\n<title>29584</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"577.1285,-223.4558 481.1285,-223.4558 481.1285,-187.4558 577.1285,-187.4558 577.1285,-223.4558\"/>\n<text text-anchor=\"start\" x=\"509.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"513.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"489.1285\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29588&#45;&gt;29584 -->\n<g id=\"edge8\" class=\"edge\">\n<title>29588&#45;&gt;29584</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M551.2316,-270.7309C547.1368,-258.6383 542.5197,-245.0029 538.5683,-233.3336\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"541.8195,-232.0223 535.2971,-223.6731 535.1893,-234.2674 541.8195,-232.0223\"/>\n</g>\n<!-- 29587 -->\n<g id=\"node10\" class=\"node\">\n<title>29587</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"742.1285\" cy=\"-205.4558\" rx=\"147.1565\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"724.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"728.6285\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">place</text>\n<text text-anchor=\"start\" x=\"646.1285\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.39444081146694154</text>\n</g>\n<!-- 29588&#45;&gt;29587 -->\n<g id=\"edge9\" class=\"edge\">\n<title>29588&#45;&gt;29587</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M602.0763,-281.2831C627.387,-267.5793 660.4417,-249.6828 688.082,-234.7177\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"690.1017,-237.6044 697.2291,-229.7653 686.7689,-231.4487 690.1017,-237.6044\"/>\n</g>\n<!-- 29589 -->\n<g id=\"node11\" class=\"node\">\n<title>29589</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"742.1285,-144 541.1285,-108 742.1285,-72 943.1285,-108 742.1285,-144\"/>\n<text text-anchor=\"start\" x=\"728.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"732.6285\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"649.6285\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.5773519979266957</text>\n</g>\n<!-- 29587&#45;&gt;29589 -->\n<g id=\"edge10\" class=\"edge\">\n<title>29587&#45;&gt;29589</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M742.1285,-179.8505C742.1285,-171.9868 742.1285,-163.0773 742.1285,-154.2748\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"745.6286,-154.0596 742.1285,-144.0596 738.6286,-154.0597 745.6286,-154.0596\"/>\n</g>\n<!-- 29582 -->\n<g id=\"node12\" class=\"node\">\n<title>29582</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"676.1285,-36 580.1285,-36 580.1285,0 676.1285,0 676.1285,-36\"/>\n<text text-anchor=\"start\" x=\"605.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"609.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"588.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29589&#45;&gt;29582 -->\n<g id=\"edge11\" class=\"edge\">\n<title>29589&#45;&gt;29582</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M704.8006,-78.5306C690.0358,-66.8742 673.2637,-53.6331 659.1792,-42.5137\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"661.25,-39.6893 651.2324,-36.2399 656.9125,-45.1835 661.25,-39.6893\"/>\n</g>\n<!-- 29583 -->\n<g id=\"node13\" class=\"node\">\n<title>29583</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"790.1285,-36 694.1285,-36 694.1285,0 790.1285,0 790.1285,-36\"/>\n<text text-anchor=\"start\" x=\"729.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"733.6285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"702.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29589&#45;&gt;29583 -->\n<g id=\"edge12\" class=\"edge\">\n<title>29589&#45;&gt;29583</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M742.1285,-71.9121C742.1285,-63.3433 742.1285,-54.3253 742.1285,-46.1692\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"745.6286,-46.0539 742.1285,-36.0539 738.6286,-46.0539 745.6286,-46.0539\"/>\n</g>\n<!-- 29585 -->\n<g id=\"node14\" class=\"node\">\n<title>29585</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"904.1285,-36 808.1285,-36 808.1285,0 904.1285,0 904.1285,-36\"/>\n<text text-anchor=\"start\" x=\"833.1285\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"837.1285\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"816.1285\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29589&#45;&gt;29585 -->\n<g id=\"edge13\" class=\"edge\">\n<title>29589&#45;&gt;29585</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M779.4563,-78.5306C794.2211,-66.8742 810.9932,-53.6331 825.0778,-42.5137\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"827.3445,-45.1835 833.0245,-36.2399 823.0069,-39.6893 827.3445,-45.1835\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.1579882299064732"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"720pt\" height=\"326pt\"\n viewBox=\"0.00 0.00 720.00 325.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 321.8234)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-321.8234 716,-321.8234 716,4 -4,4\"/>\n<!-- 29552 -->\n<g id=\"node1\" class=\"node\">\n<title>29552</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"379\" cy=\"-292.3675\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"364.5\" y=\"-296.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"368.5\" y=\"-296.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"286.5\" y=\"-282.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.7713748266936734</text>\n</g>\n<!-- 29553 -->\n<g id=\"node2\" class=\"node\">\n<title>29553</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"379,-230.9117 171,-194.9117 379,-158.9117 587,-194.9117 379,-230.9117\"/>\n<text text-anchor=\"start\" x=\"365.5\" y=\"-198.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"369.5\" y=\"-198.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"283\" y=\"-184.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.25828931697593543</text>\n</g>\n<!-- 29552&#45;&gt;29553 -->\n<g id=\"edge1\" class=\"edge\">\n<title>29552&#45;&gt;29553</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M379,-266.7622C379,-258.8985 379,-249.989 379,-241.1865\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"382.5001,-240.9713 379,-230.9713 375.5001,-240.9714 382.5001,-240.9713\"/>\n</g>\n<!-- 29559 -->\n<g id=\"node3\" class=\"node\">\n<title>29559</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"96,-115.4558 0,-115.4558 0,-79.4558 96,-79.4558 96,-115.4558\"/>\n<text text-anchor=\"start\" x=\"25.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"29.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"8\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29553&#45;&gt;29559 -->\n<g id=\"edge2\" class=\"edge\">\n<title>29553&#45;&gt;29559</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M287.1658,-174.7402C233.419,-161.9577 164.6156,-143.8988 105,-122.9117 101.9331,-121.832 98.8023,-120.6558 95.6646,-119.4206\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"96.8682,-116.1313 86.288,-115.5749 94.212,-122.6078 96.8682,-116.1313\"/>\n</g>\n<!-- 29561 -->\n<g id=\"node4\" class=\"node\">\n<title>29561</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"185\" cy=\"-97.4558\" rx=\"70.922\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"169\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"173\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cook</text>\n<text text-anchor=\"start\" x=\"143\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 1.0</text>\n</g>\n<!-- 29553&#45;&gt;29561 -->\n<g id=\"edge3\" class=\"edge\">\n<title>29553&#45;&gt;29561</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M325.4751,-168.0235C297.3621,-153.9009 263.1061,-136.6924 235.4604,-122.8046\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"236.8637,-119.5928 226.3567,-118.2314 233.7214,-125.8479 236.8637,-119.5928\"/>\n</g>\n<!-- 29554 -->\n<g id=\"node6\" class=\"node\">\n<title>29554</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"370,-115.4558 274,-115.4558 274,-79.4558 370,-79.4558 370,-115.4558\"/>\n<text text-anchor=\"start\" x=\"299\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"303\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"282\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29553&#45;&gt;29554 -->\n<g id=\"edge5\" class=\"edge\">\n<title>29553&#45;&gt;29554</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M359.8613,-162.1892C352.6647,-149.8848 344.5722,-136.0487 337.7218,-124.3363\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"340.605,-122.3332 332.5351,-115.4683 334.5627,-125.8673 340.605,-122.3332\"/>\n</g>\n<!-- 29555 -->\n<g id=\"node7\" class=\"node\">\n<title>29555</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"484,-115.4558 388,-115.4558 388,-79.4558 484,-79.4558 484,-115.4558\"/>\n<text text-anchor=\"start\" x=\"423.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"427.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"396\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29553&#45;&gt;29555 -->\n<g id=\"edge6\" class=\"edge\">\n<title>29553&#45;&gt;29555</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M398.1387,-162.1892C405.3353,-149.8848 413.4278,-136.0487 420.2782,-124.3363\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"423.4373,-125.8673 425.4649,-115.4683 417.395,-122.3332 423.4373,-125.8673\"/>\n</g>\n<!-- 29558 -->\n<g id=\"node8\" class=\"node\">\n<title>29558</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"598,-115.4558 502,-115.4558 502,-79.4558 598,-79.4558 598,-115.4558\"/>\n<text text-anchor=\"start\" x=\"531.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"535.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"510\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29553&#45;&gt;29558 -->\n<g id=\"edge7\" class=\"edge\">\n<title>29553&#45;&gt;29558</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M427.5443,-167.2454C453.4868,-152.4604 485.0502,-134.4719 509.6343,-120.461\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"511.3974,-123.4847 518.3525,-115.4923 507.9313,-117.403 511.3974,-123.4847\"/>\n</g>\n<!-- 29557 -->\n<g id=\"node9\" class=\"node\">\n<title>29557</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"712,-115.4558 616,-115.4558 616,-79.4558 712,-79.4558 712,-115.4558\"/>\n<text text-anchor=\"start\" x=\"644.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"648.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"624\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29553&#45;&gt;29557 -->\n<g id=\"edge8\" class=\"edge\">\n<title>29553&#45;&gt;29557</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M457.5818,-172.5121C501.8857,-159.2832 558.0075,-141.5177 607,-122.9117 609.8464,-121.8307 612.7545,-120.6804 615.6766,-119.489\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"617.1303,-122.6748 624.9977,-115.5787 614.4223,-116.2197 617.1303,-122.6748\"/>\n</g>\n<!-- 29556 -->\n<g id=\"node5\" class=\"node\">\n<title>29556</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"233,-36 137,-36 137,0 233,0 233,-36\"/>\n<text text-anchor=\"start\" x=\"163.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"167.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"145\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29561&#45;&gt;29556 -->\n<g id=\"edge4\" class=\"edge\">\n<title>29561&#45;&gt;29556</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M185,-71.8782C185,-63.7122 185,-54.6289 185,-46.2824\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"188.5001,-46.2287 185,-36.2288 181.5001,-46.2288 188.5001,-46.2287\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.15466055286561975"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"764pt\" height=\"542pt\"\n viewBox=\"0.00 0.00 764.00 541.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 537.8234)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-537.8234 760,-537.8234 760,4 -4,4\"/>\n<!-- 29590 -->\n<g id=\"node1\" class=\"node\">\n<title>29590</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"246,-533.8234 146,-497.8234 246,-461.8234 346,-497.8234 246,-533.8234\"/>\n<text text-anchor=\"start\" x=\"232.5\" y=\"-501.6234\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"236.5\" y=\"-501.6234\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"204\" y=\"-487.6234\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.0</text>\n</g>\n<!-- 29593 -->\n<g id=\"node2\" class=\"node\">\n<title>29593</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"86,-418.3675 0,-418.3675 0,-382.3675 86,-382.3675 86,-418.3675\"/>\n<text text-anchor=\"start\" x=\"21.5\" y=\"-404.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"25.5\" y=\"-404.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"8\" y=\"-390.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:0</text>\n</g>\n<!-- 29590&#45;&gt;29593 -->\n<g id=\"edge1\" class=\"edge\">\n<title>29590&#45;&gt;29593</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M202.6593,-477.3027C172.4448,-462.9615 131.2185,-443.3228 95,-425.8234 93.0146,-424.8641 90.9875,-423.8823 88.9407,-422.8888\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"90.4297,-419.7211 79.9063,-418.4926 87.3667,-426.0154 90.4297,-419.7211\"/>\n</g>\n<!-- 29591 -->\n<g id=\"node3\" class=\"node\">\n<title>29591</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"246\" cy=\"-400.3675\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"231.5\" y=\"-404.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"235.5\" y=\"-404.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"153.5\" y=\"-390.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.9351222826086957</text>\n</g>\n<!-- 29590&#45;&gt;29591 -->\n<g id=\"edge2\" class=\"edge\">\n<title>29590&#45;&gt;29591</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M246,-461.8113C246,-453.4239 246,-444.496 246,-436.1199\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"249.5001,-435.8873 246,-425.8874 242.5001,-435.8874 249.5001,-435.8873\"/>\n</g>\n<!-- 29594 -->\n<g id=\"node5\" class=\"node\">\n<title>29594</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"548\" cy=\"-400.3675\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"523\" y=\"-404.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"527\" y=\"-404.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">simmer</text>\n<text text-anchor=\"start\" x=\"455.5\" y=\"-390.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.4180615443042887</text>\n</g>\n<!-- 29590&#45;&gt;29594 -->\n<g id=\"edge4\" class=\"edge\">\n<title>29590&#45;&gt;29594</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M298.95,-480.7363C346.0091,-465.5503 415.4526,-443.1408 469.064,-425.8403\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"470.4393,-429.0743 478.8812,-422.6723 468.2895,-422.4126 470.4393,-429.0743\"/>\n</g>\n<!-- 29592 -->\n<g id=\"node4\" class=\"node\">\n<title>29592</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"294,-320.9117 198,-320.9117 198,-284.9117 294,-284.9117 294,-320.9117\"/>\n<text text-anchor=\"start\" x=\"227.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"231.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"206\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29591&#45;&gt;29592 -->\n<g id=\"edge3\" class=\"edge\">\n<title>29591&#45;&gt;29592</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M246,-374.7622C246,-361.4123 246,-345.0481 246,-331.3105\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"249.5001,-330.9641 246,-320.9642 242.5001,-330.9642 249.5001,-330.9641\"/>\n</g>\n<!-- 29602 -->\n<g id=\"node6\" class=\"node\">\n<title>29602</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"548,-338.9117 340,-302.9117 548,-266.9117 756,-302.9117 548,-338.9117\"/>\n<text text-anchor=\"start\" x=\"534.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"538.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"452\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.07341265771678888</text>\n</g>\n<!-- 29594&#45;&gt;29602 -->\n<g id=\"edge5\" class=\"edge\">\n<title>29594&#45;&gt;29602</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M548,-374.7622C548,-366.8985 548,-357.989 548,-349.1865\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"551.5001,-348.9713 548,-338.9713 544.5001,-348.9714 551.5001,-348.9713\"/>\n</g>\n<!-- 29601 -->\n<g id=\"node7\" class=\"node\">\n<title>29601</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"411\" cy=\"-205.4558\" rx=\"70.922\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"396.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"400.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"369\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 1.0</text>\n</g>\n<!-- 29602&#45;&gt;29601 -->\n<g id=\"edge6\" class=\"edge\">\n<title>29602&#45;&gt;29601</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M507.2664,-273.9356C489.6428,-261.3989 469.0676,-246.7626 451.4733,-234.2468\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"453.2789,-231.236 443.1015,-228.2914 449.2213,-236.9401 453.2789,-231.236\"/>\n</g>\n<!-- 29599 -->\n<g id=\"node11\" class=\"node\">\n<title>29599</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"596,-223.4558 500,-223.4558 500,-187.4558 596,-187.4558 596,-223.4558\"/>\n<text text-anchor=\"start\" x=\"528.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"532.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"508\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29602&#45;&gt;29599 -->\n<g id=\"edge10\" class=\"edge\">\n<title>29602&#45;&gt;29599</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M548,-266.8996C548,-255.9536 548,-244.0871 548,-233.7278\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"551.5001,-233.5795 548,-223.5795 544.5001,-233.5795 551.5001,-233.5795\"/>\n</g>\n<!-- 29596 -->\n<g id=\"node12\" class=\"node\">\n<title>29596</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"710,-223.4558 614,-223.4558 614,-187.4558 710,-187.4558 710,-223.4558\"/>\n<text text-anchor=\"start\" x=\"649.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"653.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"622\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29602&#45;&gt;29596 -->\n<g id=\"edge11\" class=\"edge\">\n<title>29602&#45;&gt;29596</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M583.134,-272.8765C599.0314,-259.2861 617.6036,-243.4092 632.7307,-230.4775\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"635.4145,-232.7878 640.7413,-223.6294 630.8659,-227.467 635.4145,-232.7878\"/>\n</g>\n<!-- 29603 -->\n<g id=\"node8\" class=\"node\">\n<title>29603</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"411,-144 203,-108 411,-72 619,-108 411,-144\"/>\n<text text-anchor=\"start\" x=\"397.5\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"401.5\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"315\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.19925133063788839</text>\n</g>\n<!-- 29601&#45;&gt;29603 -->\n<g id=\"edge7\" class=\"edge\">\n<title>29601&#45;&gt;29603</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M411,-179.8505C411,-171.9868 411,-163.0773 411,-154.2748\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"414.5001,-154.0596 411,-144.0596 407.5001,-154.0597 414.5001,-154.0596\"/>\n</g>\n<!-- 29598 -->\n<g id=\"node9\" class=\"node\">\n<title>29598</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"402,-36 306,-36 306,0 402,0 402,-36\"/>\n<text text-anchor=\"start\" x=\"331\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"335\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"314\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29603&#45;&gt;29598 -->\n<g id=\"edge8\" class=\"edge\">\n<title>29603&#45;&gt;29598</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M390.4217,-75.5079C383.9762,-65.3309 376.9435,-54.2266 370.7918,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"373.7394,-42.626 365.432,-36.0505 367.8257,-46.3714 373.7394,-42.626\"/>\n</g>\n<!-- 29597 -->\n<g id=\"node10\" class=\"node\">\n<title>29597</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"516,-36 420,-36 420,0 516,0 516,-36\"/>\n<text text-anchor=\"start\" x=\"445.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"449.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"428\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29603&#45;&gt;29597 -->\n<g id=\"edge9\" class=\"edge\">\n<title>29603&#45;&gt;29597</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M431.5783,-75.5079C438.0238,-65.3309 445.0565,-54.2266 451.2082,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"454.1743,-46.3714 456.568,-36.0505 448.2606,-42.626 454.1743,-46.3714\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.15272938996506372"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"643pt\" height=\"434pt\"\n viewBox=\"0.00 0.00 643.00 433.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 429.8234)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-429.8234 639,-429.8234 639,4 -4,4\"/>\n<!-- 29059 -->\n<g id=\"node1\" class=\"node\">\n<title>29059</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"427\" cy=\"-400.3675\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"412.5\" y=\"-404.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"416.5\" y=\"-404.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">heat</text>\n<text text-anchor=\"start\" x=\"334.5\" y=\"-390.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.7713748266936734</text>\n</g>\n<!-- 29069 -->\n<g id=\"node2\" class=\"node\">\n<title>29069</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"427,-338.9117 219,-302.9117 427,-266.9117 635,-302.9117 427,-338.9117\"/>\n<text text-anchor=\"start\" x=\"413.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"417.5\" y=\"-306.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"331\" y=\"-292.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.29412064068068344</text>\n</g>\n<!-- 29059&#45;&gt;29069 -->\n<g id=\"edge1\" class=\"edge\">\n<title>29059&#45;&gt;29069</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M427,-374.7622C427,-366.8985 427,-357.989 427,-349.1865\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"430.5001,-348.9713 427,-338.9713 423.5001,-348.9714 430.5001,-348.9713\"/>\n</g>\n<!-- 29068 -->\n<g id=\"node3\" class=\"node\">\n<title>29068</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"219\" cy=\"-205.4558\" rx=\"142.257\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"204.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"208.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">slice</text>\n<text text-anchor=\"start\" x=\"126.5\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.1757654159815022</text>\n</g>\n<!-- 29069&#45;&gt;29068 -->\n<g id=\"edge2\" class=\"edge\">\n<title>29069&#45;&gt;29068</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M370.7122,-276.5387C342.3772,-263.2627 308.0094,-247.1601 279.1541,-233.6403\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"280.5341,-230.4218 269.9938,-229.3484 277.5642,-236.7606 280.5341,-230.4218\"/>\n</g>\n<!-- 29062 -->\n<g id=\"node9\" class=\"node\">\n<title>29062</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"475,-223.4558 379,-223.4558 379,-187.4558 475,-187.4558 475,-223.4558\"/>\n<text text-anchor=\"start\" x=\"414.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"418.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"387\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29069&#45;&gt;29062 -->\n<g id=\"edge8\" class=\"edge\">\n<title>29069&#45;&gt;29062</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M427,-266.8996C427,-255.9536 427,-244.0871 427,-233.7278\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"430.5001,-233.5795 427,-223.5795 423.5001,-233.5795 430.5001,-233.5795\"/>\n</g>\n<!-- 29066 -->\n<g id=\"node10\" class=\"node\">\n<title>29066</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"589,-223.4558 493,-223.4558 493,-187.4558 589,-187.4558 589,-223.4558\"/>\n<text text-anchor=\"start\" x=\"518.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"522.5\" y=\"-209.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"501\" y=\"-195.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29069&#45;&gt;29066 -->\n<g id=\"edge9\" class=\"edge\">\n<title>29069&#45;&gt;29066</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M462.134,-272.8765C478.0314,-259.2861 496.6036,-243.4092 511.7307,-230.4775\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"514.4145,-232.7878 519.7413,-223.6294 509.8659,-227.467 514.4145,-232.7878\"/>\n</g>\n<!-- 29070 -->\n<g id=\"node4\" class=\"node\">\n<title>29070</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"219,-144 11,-108 219,-72 427,-108 219,-144\"/>\n<text text-anchor=\"start\" x=\"205.5\" y=\"-111.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"209.5\" y=\"-111.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"123\" y=\"-97.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.06751022103892917</text>\n</g>\n<!-- 29068&#45;&gt;29070 -->\n<g id=\"edge3\" class=\"edge\">\n<title>29068&#45;&gt;29070</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M219,-179.8505C219,-171.9868 219,-163.0773 219,-154.2748\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"222.5001,-154.0596 219,-144.0596 215.5001,-154.0597 222.5001,-154.0596\"/>\n</g>\n<!-- 29063 -->\n<g id=\"node5\" class=\"node\">\n<title>29063</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"96,-36 0,-36 0,0 96,0 96,-36\"/>\n<text text-anchor=\"start\" x=\"26.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"30.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"8\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29070&#45;&gt;29063 -->\n<g id=\"edge4\" class=\"edge\">\n<title>29070&#45;&gt;29063</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M167.2303,-80.7528C142.9317,-67.9641 114.3046,-52.8971 91.192,-40.7326\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"92.7817,-37.6142 82.3024,-36.0539 89.5215,-43.8086 92.7817,-37.6142\"/>\n</g>\n<!-- 29064 -->\n<g id=\"node6\" class=\"node\">\n<title>29064</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"210,-36 114,-36 114,0 210,0 210,-36\"/>\n<text text-anchor=\"start\" x=\"142.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"146.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"122\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29070&#45;&gt;29064 -->\n<g id=\"edge5\" class=\"edge\">\n<title>29070&#45;&gt;29064</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M198.4217,-75.5079C191.9762,-65.3309 184.9435,-54.2266 178.7918,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"181.7394,-42.626 173.432,-36.0505 175.8257,-46.3714 181.7394,-42.626\"/>\n</g>\n<!-- 29065 -->\n<g id=\"node7\" class=\"node\">\n<title>29065</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"324,-36 228,-36 228,0 324,0 324,-36\"/>\n<text text-anchor=\"start\" x=\"257.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"261.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"236\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29070&#45;&gt;29065 -->\n<g id=\"edge6\" class=\"edge\">\n<title>29070&#45;&gt;29065</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M239.5783,-75.5079C246.0238,-65.3309 253.0565,-54.2266 259.2082,-44.5133\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"262.1743,-46.3714 264.568,-36.0505 256.2606,-42.626 262.1743,-46.3714\"/>\n</g>\n<!-- 29061 -->\n<g id=\"node8\" class=\"node\">\n<title>29061</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"438,-36 342,-36 342,0 438,0 438,-36\"/>\n<text text-anchor=\"start\" x=\"367\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"371\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"350\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 29070&#45;&gt;29061 -->\n<g id=\"edge7\" class=\"edge\">\n<title>29070&#45;&gt;29061</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M270.7697,-80.7528C295.0683,-67.9641 323.6954,-52.8971 346.808,-40.7326\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"348.4785,-43.8086 355.6976,-36.0539 345.2183,-37.6142 348.4785,-43.8086\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":"0.14929647567328216"},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"720pt\" height=\"326pt\"\n viewBox=\"0.00 0.00 720.00 325.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 321.8234)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-321.8234 716,-321.8234 716,4 -4,4\"/>\n<!-- 30129 -->\n<g id=\"node1\" class=\"node\">\n<title>30129</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"344\" cy=\"-292.3675\" rx=\"137.3577\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"328\" y=\"-296.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"332\" y=\"-296.1675\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cook</text>\n<text text-anchor=\"start\" x=\"255\" y=\"-282.1675\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.851970571945862</text>\n</g>\n<!-- 30131 -->\n<g id=\"node2\" class=\"node\">\n<title>30131</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"344,-230.9117 136,-194.9117 344,-158.9117 552,-194.9117 344,-230.9117\"/>\n<text text-anchor=\"start\" x=\"330.5\" y=\"-198.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"334.5\" y=\"-198.7117\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">mix</text>\n<text text-anchor=\"start\" x=\"248\" y=\"-184.7117\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 0.25828931697593543</text>\n</g>\n<!-- 30129&#45;&gt;30131 -->\n<g id=\"edge1\" class=\"edge\">\n<title>30129&#45;&gt;30131</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M344,-266.7622C344,-258.8985 344,-249.989 344,-241.1865\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"347.5001,-240.9713 344,-230.9713 340.5001,-240.9714 347.5001,-240.9713\"/>\n</g>\n<!-- 30137 -->\n<g id=\"node3\" class=\"node\">\n<title>30137</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"96,-115.4558 0,-115.4558 0,-79.4558 96,-79.4558 96,-115.4558\"/>\n<text text-anchor=\"start\" x=\"25\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"29\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">tomato</text>\n<text text-anchor=\"start\" x=\"8\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 30131&#45;&gt;30137 -->\n<g id=\"edge2\" class=\"edge\">\n<title>30131&#45;&gt;30137</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M262.1152,-173.0362C215.5685,-159.9087 156.4771,-142.0714 105,-122.9117 102.0973,-121.8313 99.1323,-120.6749 96.1552,-119.4729\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"97.2433,-116.1346 86.6665,-115.5161 94.5491,-122.5953 97.2433,-116.1346\"/>\n</g>\n<!-- 30132 -->\n<g id=\"node4\" class=\"node\">\n<title>30132</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"210,-115.4558 114,-115.4558 114,-79.4558 210,-79.4558 210,-115.4558\"/>\n<text text-anchor=\"start\" x=\"143.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"147.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">onion</text>\n<text text-anchor=\"start\" x=\"122\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 30131&#45;&gt;30132 -->\n<g id=\"edge3\" class=\"edge\">\n<title>30131&#45;&gt;30132</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M292.8185,-167.5055C265.0738,-152.6489 231.1778,-134.4986 204.8414,-120.3962\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"206.3316,-117.224 195.8636,-115.5889 203.0271,-123.395 206.3316,-117.224\"/>\n</g>\n<!-- 30134 -->\n<g id=\"node5\" class=\"node\">\n<title>30134</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"324,-115.4558 228,-115.4558 228,-79.4558 324,-79.4558 324,-115.4558\"/>\n<text text-anchor=\"start\" x=\"253.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"257.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">pepper</text>\n<text text-anchor=\"start\" x=\"236\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 30131&#45;&gt;30134 -->\n<g id=\"edge4\" class=\"edge\">\n<title>30131&#45;&gt;30134</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M321.5458,-162.7309C312.7673,-150.1497 302.8235,-135.8985 294.4717,-123.929\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"297.3038,-121.8713 288.7111,-115.6731 291.5631,-125.8769 297.3038,-121.8713\"/>\n</g>\n<!-- 30135 -->\n<g id=\"node6\" class=\"node\">\n<title>30135</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"413\" cy=\"-97.4558\" rx=\"70.922\" ry=\"25.4118\"/>\n<text text-anchor=\"start\" x=\"397\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"401\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">cook</text>\n<text text-anchor=\"start\" x=\"371\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score: 1.0</text>\n</g>\n<!-- 30131&#45;&gt;30135 -->\n<g id=\"edge5\" class=\"edge\">\n<title>30131&#45;&gt;30135</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M366.7844,-162.7309C374.0832,-152.422 382.1759,-140.9919 389.5233,-130.6145\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"392.564,-132.3767 395.4859,-122.1928 386.8509,-128.3318 392.564,-132.3767\"/>\n</g>\n<!-- 30133 -->\n<g id=\"node8\" class=\"node\">\n<title>30133</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"598,-115.4558 502,-115.4558 502,-79.4558 598,-79.4558 598,-115.4558\"/>\n<text text-anchor=\"start\" x=\"537.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"541.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">salt</text>\n<text text-anchor=\"start\" x=\"510\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 30131&#45;&gt;30133 -->\n<g id=\"edge7\" class=\"edge\">\n<title>30131&#45;&gt;30133</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M399.7466,-168.5387C431.9261,-153.315 471.9619,-134.3746 502.6133,-119.8739\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"504.2627,-122.9655 511.8054,-115.5252 501.2691,-116.6379 504.2627,-122.9655\"/>\n</g>\n<!-- 30138 -->\n<g id=\"node9\" class=\"node\">\n<title>30138</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"712,-115.4558 616,-115.4558 616,-79.4558 712,-79.4558 712,-115.4558\"/>\n<text text-anchor=\"start\" x=\"644.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"648.5\" y=\"-101.2558\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">bacon</text>\n<text text-anchor=\"start\" x=\"624\" y=\"-87.2558\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:1.0</text>\n</g>\n<!-- 30131&#45;&gt;30138 -->\n<g id=\"edge8\" class=\"edge\">\n<title>30131&#45;&gt;30138</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M432.7104,-174.2223C484.1973,-161.3258 549.9473,-143.3258 607,-122.9117 610.0613,-121.8163 613.1879,-120.6281 616.3224,-119.3838\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"617.7821,-122.5679 625.6924,-115.5197 615.1133,-116.0966 617.7821,-122.5679\"/>\n</g>\n<!-- 30136 -->\n<g id=\"node7\" class=\"node\">\n<title>30136</title>\n<polygon fill=\"none\" stroke=\"#000000\" points=\"461,-36 365,-36 365,0 461,0 461,-36\"/>\n<text text-anchor=\"start\" x=\"391.5\" y=\"-21.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> </text>\n<text text-anchor=\"start\" x=\"395.5\" y=\"-21.8\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">noodle</text>\n<text text-anchor=\"start\" x=\"373\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">node score:0.5</text>\n</g>\n<!-- 30135&#45;&gt;30136 -->\n<g id=\"edge6\" class=\"edge\">\n<title>30135&#45;&gt;30136</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M413,-71.8782C413,-63.7122 413,-54.6289 413,-46.2824\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"416.5001,-46.2287 413,-36.2288 409.5001,-46.2288 416.5001,-46.2287\"/>\n</g>\n</g>\n</svg>\n","text/plain":"<graphviz.dot.Digraph at 0x7f56cbd91940>"},"metadata":{},"output_type":"display_data"}],"source":"p.plot_population()"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":""}],"nbformat":4,"nbformat_minor":2,"metadata":{"language_info":{"name":"python","codemirror_mode":{"name":"ipython","version":3}},"orig_nbformat":2,"file_extension":".py","mimetype":"text/x-python","name":"python","npconvert_exporter":"python","pygments_lexer":"ipython3","version":3}}