{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport random\nimport re\nfrom collections import Counter\nimport unidecode\n\nfrom nltk.stem import WordNetLemmatizer\nfrom sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.metrics import accuracy_score, confusion_matrix, classification_report\nfrom sklearn.model_selection import KFold, cross_validate, train_test_split\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.svm import SVC\nfrom sklearn.multiclass import OneVsRestClassifier\nfrom sklearn import model_selection ","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-06-24T03:04:05.650813Z","iopub.execute_input":"2022-06-24T03:04:05.65118Z","iopub.status.idle":"2022-06-24T03:04:05.658221Z","shell.execute_reply.started":"2022-06-24T03:04:05.651137Z","shell.execute_reply":"2022-06-24T03:04:05.657128Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:05.7164Z","iopub.execute_input":"2022-06-24T03:04:05.716814Z","iopub.status.idle":"2022-06-24T03:04:05.731558Z","shell.execute_reply.started":"2022-06-24T03:04:05.716782Z","shell.execute_reply":"2022-06-24T03:04:05.730595Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''function to generate random colors for visualization'''\ndef random_colors(num_of_colors):\n    colors = []\n    for i in range(num_of_colors):\n        colors.append(\"#\"+''.join([random.choice('0123456789ABCDEF') for j in range(6)]))\n    return colors","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:05.768257Z","iopub.execute_input":"2022-06-24T03:04:05.768895Z","iopub.status.idle":"2022-06-24T03:04:05.774786Z","shell.execute_reply.started":"2022-06-24T03:04:05.768862Z","shell.execute_reply":"2022-06-24T03:04:05.773983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_json(\"/kaggle/input/whats-cooking-kernels-only/train.json\")\ntest = pd.read_json(\"/kaggle/input/whats-cooking-kernels-only/test.json\")","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:05.82574Z","iopub.execute_input":"2022-06-24T03:04:05.826511Z","iopub.status.idle":"2022-06-24T03:04:06.917788Z","shell.execute_reply.started":"2022-06-24T03:04:05.826465Z","shell.execute_reply":"2022-06-24T03:04:06.916743Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:06.919672Z","iopub.execute_input":"2022-06-24T03:04:06.91994Z","iopub.status.idle":"2022-06-24T03:04:06.933313Z","shell.execute_reply.started":"2022-06-24T03:04:06.919913Z","shell.execute_reply":"2022-06-24T03:04:06.932291Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['cuisine'].unique()","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:06.934692Z","iopub.execute_input":"2022-06-24T03:04:06.935009Z","iopub.status.idle":"2022-06-24T03:04:06.969098Z","shell.execute_reply.started":"2022-06-24T03:04:06.934979Z","shell.execute_reply":"2022-06-24T03:04:06.968043Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.info()","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:06.972107Z","iopub.execute_input":"2022-06-24T03:04:06.972565Z","iopub.status.idle":"2022-06-24T03:04:07.003231Z","shell.execute_reply.started":"2022-06-24T03:04:06.972515Z","shell.execute_reply":"2022-06-24T03:04:07.00201Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test.info()","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:07.004434Z","iopub.execute_input":"2022-06-24T03:04:07.005272Z","iopub.status.idle":"2022-06-24T03:04:07.019823Z","shell.execute_reply.started":"2022-06-24T03:04:07.005239Z","shell.execute_reply":"2022-06-24T03:04:07.018991Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['cuisine'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:07.020853Z","iopub.execute_input":"2022-06-24T03:04:07.021382Z","iopub.status.idle":"2022-06-24T03:04:07.049712Z","shell.execute_reply.started":"2022-06-24T03:04:07.021352Z","shell.execute_reply":"2022-06-24T03:04:07.04791Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['cuisine'].value_counts().plot.bar(color=random_colors(len(train['cuisine'].value_counts())), figsize=(16,6))","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:07.051377Z","iopub.execute_input":"2022-06-24T03:04:07.053412Z","iopub.status.idle":"2022-06-24T03:04:07.346124Z","shell.execute_reply.started":"2022-06-24T03:04:07.053373Z","shell.execute_reply":"2022-06-24T03:04:07.345178Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['ing_count'] = train['ingredients'].apply(lambda x : len(x))\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:07.347588Z","iopub.execute_input":"2022-06-24T03:04:07.348419Z","iopub.status.idle":"2022-06-24T03:04:07.376789Z","shell.execute_reply.started":"2022-06-24T03:04:07.348392Z","shell.execute_reply":"2022-06-24T03:04:07.375745Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"raw_ingredients = [j for ing in train['ingredients'] for j in ing ]\nlen(raw_ingredients)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:07.378102Z","iopub.execute_input":"2022-06-24T03:04:07.378343Z","iopub.status.idle":"2022-06-24T03:04:07.433314Z","shell.execute_reply.started":"2022-06-24T03:04:07.37832Z","shell.execute_reply":"2022-06-24T03:04:07.432254Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('Maximum Number of Ingredients in a Dish: ',train['ingredients'].str.len().max())\nprint('Minimum Number of Ingredients in a Dish: ',train['ingredients'].str.len().min())","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:07.437463Z","iopub.execute_input":"2022-06-24T03:04:07.437782Z","iopub.status.idle":"2022-06-24T03:04:07.521603Z","shell.execute_reply.started":"2022-06-24T03:04:07.437753Z","shell.execute_reply":"2022-06-24T03:04:07.520524Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(16,6))\nsns.distplot(train['ing_count'], bins=60)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:07.523346Z","iopub.execute_input":"2022-06-24T03:04:07.52371Z","iopub.status.idle":"2022-06-24T03:04:08.212377Z","shell.execute_reply.started":"2022-06-24T03:04:07.523671Z","shell.execute_reply":"2022-06-24T03:04:08.211328Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Number of long recipes**","metadata":{}},{"cell_type":"code","source":"len(train[train['ing_count']>35])","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:08.214189Z","iopub.execute_input":"2022-06-24T03:04:08.214852Z","iopub.status.idle":"2022-06-24T03:04:08.223864Z","shell.execute_reply.started":"2022-06-24T03:04:08.214814Z","shell.execute_reply":"2022-06-24T03:04:08.222501Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Number of small recipes**","metadata":{}},{"cell_type":"code","source":"len(train[train['ing_count']<=2])","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:08.225631Z","iopub.execute_input":"2022-06-24T03:04:08.226493Z","iopub.status.idle":"2022-06-24T03:04:08.238085Z","shell.execute_reply.started":"2022-06-24T03:04:08.226465Z","shell.execute_reply":"2022-06-24T03:04:08.23709Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(16,6))\nsns.boxplot(x='cuisine', y='ing_count', data=train)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:08.239451Z","iopub.execute_input":"2022-06-24T03:04:08.239916Z","iopub.status.idle":"2022-06-24T03:04:08.658517Z","shell.execute_reply.started":"2022-06-24T03:04:08.239892Z","shell.execute_reply":"2022-06-24T03:04:08.657429Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"[ing for ing in raw_ingredients if len(ing)<=2]","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:08.659943Z","iopub.execute_input":"2022-06-24T03:04:08.660568Z","iopub.status.idle":"2022-06-24T03:04:08.749368Z","shell.execute_reply.started":"2022-06-24T03:04:08.660518Z","shell.execute_reply":"2022-06-24T03:04:08.748653Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''check if anything other than alphabets are present'''\n' '.join(sorted([char for char in set(''.join(raw_ingredients)) if re.findall('[^A-Za-z]', char)]))","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:08.750402Z","iopub.execute_input":"2022-06-24T03:04:08.751341Z","iopub.status.idle":"2022-06-24T03:04:08.881467Z","shell.execute_reply.started":"2022-06-24T03:04:08.75131Z","shell.execute_reply":"2022-06-24T03:04:08.880385Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list(set([ing for ing in raw_ingredients if re.findall('-', ing)]))[:5]","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:08.882942Z","iopub.execute_input":"2022-06-24T03:04:08.88385Z","iopub.status.idle":"2022-06-24T03:04:09.227772Z","shell.execute_reply.started":"2022-06-24T03:04:08.883811Z","shell.execute_reply":"2022-06-24T03:04:09.226767Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list(set([ing for ing in raw_ingredients if re.findall('[0-9]', ing)]))[:5]","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:09.229127Z","iopub.execute_input":"2022-06-24T03:04:09.22939Z","iopub.status.idle":"2022-06-24T03:04:09.92848Z","shell.execute_reply.started":"2022-06-24T03:04:09.229365Z","shell.execute_reply":"2022-06-24T03:04:09.926602Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"units = ['inch ', 'oz.', ' lb.', 'ounc', '%', 'oz ']\nlist(set([ing for ing in raw_ingredients if any(unit in ing for unit in units)]))","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:09.929854Z","iopub.execute_input":"2022-06-24T03:04:09.930245Z","iopub.status.idle":"2022-06-24T03:04:10.278718Z","shell.execute_reply.started":"2022-06-24T03:04:09.930211Z","shell.execute_reply":"2022-06-24T03:04:10.277768Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"top_ing = Counter([x for ing in train['ingredients'] for x in ing])\ntop_ing.most_common(20)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:10.279857Z","iopub.execute_input":"2022-06-24T03:04:10.280084Z","iopub.status.idle":"2022-06-24T03:04:10.440087Z","shell.execute_reply.started":"2022-06-24T03:04:10.280061Z","shell.execute_reply":"2022-06-24T03:04:10.438843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"temp = pd.DataFrame(top_ing.most_common(20),columns=['Ingredients', 'Count'])\nplt.figure(figsize=(28,6))\nsns.barplot(x='Ingredients', y='Count', data=temp)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:10.442143Z","iopub.execute_input":"2022-06-24T03:04:10.442741Z","iopub.status.idle":"2022-06-24T03:04:10.750185Z","shell.execute_reply.started":"2022-06-24T03:04:10.442699Z","shell.execute_reply":"2022-06-24T03:04:10.748845Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lemmatizer = WordNetLemmatizer()\ndef preprocess_ing(ingredients):\n    ing_string = ' '.join(ingredients)\n    ing_string = ing_string.lower()\n    ing_string = ing_string.replace('-',' ')\n    words = []\n    for word in ing_string.split():\n        word = re.sub(r'\\d+\\.\\d+',\" \", word)\n        word = re.sub(r\"\\b(oz.|lb.|ounc|inch|%)\\b\",\" \",word)\n        if len(word)<=2:\n            continue\n        word = unidecode.unidecode(word)\n        word = lemmatizer.lemmatize(word)\n        if len(word)>0:\n            words.append(word)\n    return ' '.join(words)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:10.75236Z","iopub.execute_input":"2022-06-24T03:04:10.752719Z","iopub.status.idle":"2022-06-24T03:04:10.761955Z","shell.execute_reply.started":"2022-06-24T03:04:10.752682Z","shell.execute_reply":"2022-06-24T03:04:10.760599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for ingredient, expected in [\n    ('Eggs', 'egg'),\n    ('all-purpose flour', 'all purpose flour'),\n    ('purée', 'puree'),\n    ('1% low-fat milk', 'low fat milk'),\n    ('half & half', 'half half'),\n    ('safetida (powder)', 'safetida (powder)')\n]:\n    actual = preprocess_ing([ingredient])\n    print(actual)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:10.763726Z","iopub.execute_input":"2022-06-24T03:04:10.764125Z","iopub.status.idle":"2022-06-24T03:04:10.773559Z","shell.execute_reply.started":"2022-06-24T03:04:10.764095Z","shell.execute_reply":"2022-06-24T03:04:10.772587Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['x'] = train['ingredients'].apply(lambda y : preprocess_ing(y))\ntest['x'] = test['ingredients'].apply(lambda y : preprocess_ing(y))\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:10.774799Z","iopub.execute_input":"2022-06-24T03:04:10.775172Z","iopub.status.idle":"2022-06-24T03:04:23.588162Z","shell.execute_reply.started":"2022-06-24T03:04:10.775111Z","shell.execute_reply":"2022-06-24T03:04:23.587027Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"raw_ingredients = [j for ing in train['x'] for j in ing ]\nlen(raw_ingredients)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:23.589948Z","iopub.execute_input":"2022-06-24T03:04:23.590645Z","iopub.status.idle":"2022-06-24T03:04:23.809703Z","shell.execute_reply.started":"2022-06-24T03:04:23.590614Z","shell.execute_reply":"2022-06-24T03:04:23.808779Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"units = ['inch ', 'oz.', ' lb.', 'ounc', '%', 'oz ']\nlist(set([ing for ing in raw_ingredients if any(unit in ing for unit in units)]))","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:23.81124Z","iopub.execute_input":"2022-06-24T03:04:23.811524Z","iopub.status.idle":"2022-06-24T03:04:28.851063Z","shell.execute_reply.started":"2022-06-24T03:04:23.811496Z","shell.execute_reply":"2022-06-24T03:04:28.849897Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"vectorizer = TfidfVectorizer(sublinear_tf=True)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:28.852586Z","iopub.execute_input":"2022-06-24T03:04:28.853004Z","iopub.status.idle":"2022-06-24T03:04:28.857557Z","shell.execute_reply.started":"2022-06-24T03:04:28.852981Z","shell.execute_reply":"2022-06-24T03:04:28.856724Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = vectorizer.fit_transform(train['x'].values)\nX_train.sort_indices()\nX_test = vectorizer.transform(test['x'].values)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:28.861708Z","iopub.execute_input":"2022-06-24T03:04:28.862864Z","iopub.status.idle":"2022-06-24T03:04:30.592373Z","shell.execute_reply.started":"2022-06-24T03:04:28.862788Z","shell.execute_reply":"2022-06-24T03:04:30.591212Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"label_encoder = LabelEncoder()\nY_train = label_encoder.fit_transform(train['cuisine'].values)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:30.593812Z","iopub.execute_input":"2022-06-24T03:04:30.594206Z","iopub.status.idle":"2022-06-24T03:04:30.627762Z","shell.execute_reply.started":"2022-06-24T03:04:30.594165Z","shell.execute_reply":"2022-06-24T03:04:30.626632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X, X_val, Y, y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=1)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:30.628929Z","iopub.execute_input":"2022-06-24T03:04:30.629218Z","iopub.status.idle":"2022-06-24T03:04:30.648335Z","shell.execute_reply.started":"2022-06-24T03:04:30.629191Z","shell.execute_reply":"2022-06-24T03:04:30.647091Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"classifier = SVC(kernel='rbf',random_state=0)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:30.651092Z","iopub.execute_input":"2022-06-24T03:04:30.651449Z","iopub.status.idle":"2022-06-24T03:04:30.656902Z","shell.execute_reply.started":"2022-06-24T03:04:30.651425Z","shell.execute_reply":"2022-06-24T03:04:30.655866Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = OneVsRestClassifier(classifier, n_jobs=4)\nmodel.fit(X, Y)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:04:30.658479Z","iopub.execute_input":"2022-06-24T03:04:30.659121Z","iopub.status.idle":"2022-06-24T03:09:56.264574Z","shell.execute_reply.started":"2022-06-24T03:04:30.659079Z","shell.execute_reply":"2022-06-24T03:09:56.263522Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print (\"Predict on test data ... \")\nY_test = model.predict(X_val)\nY_pred = label_encoder.inverse_transform(Y_test)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:09:56.266033Z","iopub.execute_input":"2022-06-24T03:09:56.266337Z","iopub.status.idle":"2022-06-24T03:11:45.106656Z","shell.execute_reply.started":"2022-06-24T03:09:56.266307Z","shell.execute_reply":"2022-06-24T03:11:45.105632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"Accuracy Score:\", accuracy_score(y_val, Y_test))","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:11:45.108103Z","iopub.execute_input":"2022-06-24T03:11:45.108523Z","iopub.status.idle":"2022-06-24T03:11:45.116427Z","shell.execute_reply.started":"2022-06-24T03:11:45.10848Z","shell.execute_reply":"2022-06-24T03:11:45.115089Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Y_pred[:20]","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:11:45.117968Z","iopub.execute_input":"2022-06-24T03:11:45.118415Z","iopub.status.idle":"2022-06-24T03:11:45.129287Z","shell.execute_reply.started":"2022-06-24T03:11:45.118375Z","shell.execute_reply":"2022-06-24T03:11:45.128284Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_test = model.predict(X_test)\ny_pred = label_encoder.inverse_transform(y_test)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:38:37.288498Z","iopub.execute_input":"2022-06-24T03:38:37.288906Z","iopub.status.idle":"2022-06-24T03:40:50.480601Z","shell.execute_reply.started":"2022-06-24T03:38:37.288875Z","shell.execute_reply":"2022-06-24T03:40:50.479472Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_id = test['id']\nsub = pd.DataFrame({'id': test_id, 'cuisine': y_pred}, columns=['id', 'cuisine'])\nsub.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-06-24T03:46:27.942407Z","iopub.execute_input":"2022-06-24T03:46:27.942883Z","iopub.status.idle":"2022-06-24T03:46:27.969045Z","shell.execute_reply.started":"2022-06-24T03:46:27.94285Z","shell.execute_reply":"2022-06-24T03:46:27.967877Z"},"trusted":true},"execution_count":null,"outputs":[]}]}