{"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 pandas as pd\nfrom numpy import array\nfrom keras.preprocessing.text import one_hot\nfrom keras.preprocessing.sequence import pad_sequences\nfrom keras.models import Sequential\nfrom keras.layers.core import Activation, Dropout, Dense\nfrom keras.layers import Flatten\nfrom keras.layers import GlobalMaxPooling1D\nfrom keras.layers.embeddings import Embedding\nfrom sklearn.preprocessing import OneHotEncoder\nimport nltk\nfrom nltk.corpus import stopwords\nfrom nltk.stem.porter import PorterStemmer\nfrom wordcloud import WordCloud,STOPWORDS\nfrom nltk.stem import WordNetLemmatizer\nfrom nltk.tokenize import word_tokenize,sent_tokenize\nfrom bs4 import BeautifulSoup\nimport re,string,unicodedata\nfrom keras.preprocessing import text, sequence\nfrom sklearn.metrics import classification_report,confusion_matrix,accuracy_score\nfrom sklearn.model_selection import train_test_split\nfrom string import punctuation\nimport keras\nfrom keras.models import Sequential\nimport tensorflow as tf\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom tensorflow.keras.preprocessing.text import Tokenizer\nfrom tensorflow.keras.preprocessing.sequence import pad_sequences\nfrom nltk.corpus import stopwords\nimport tensorflow as tf\nimport nltk\nnltk.download('stopwords')\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:10:58.036215Z","iopub.execute_input":"2022-08-12T05:10:58.037188Z","iopub.status.idle":"2022-08-12T05:11:18.079831Z","shell.execute_reply.started":"2022-08-12T05:10:58.037150Z","shell.execute_reply":"2022-08-12T05:11:18.078791Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Loading Data ","metadata":{}},{"cell_type":"code","source":"df=pd.read_csv(\"../input/feedback-prize-effectiveness/train.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.081138Z","iopub.execute_input":"2022-08-12T05:11:18.082982Z","iopub.status.idle":"2022-08-12T05:11:18.222784Z","shell.execute_reply.started":"2022-08-12T05:11:18.082944Z","shell.execute_reply":"2022-08-12T05:11:18.221715Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.224086Z","iopub.execute_input":"2022-08-12T05:11:18.224447Z","iopub.status.idle":"2022-08-12T05:11:18.237639Z","shell.execute_reply.started":"2022-08-12T05:11:18.224411Z","shell.execute_reply":"2022-08-12T05:11:18.236650Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df=df[['discourse_text', 'discourse_effectiveness']]\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.239238Z","iopub.execute_input":"2022-08-12T05:11:18.239997Z","iopub.status.idle":"2022-08-12T05:11:18.250534Z","shell.execute_reply.started":"2022-08-12T05:11:18.239936Z","shell.execute_reply":"2022-08-12T05:11:18.249540Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Preprocessing our Data","metadata":{}},{"cell_type":"code","source":"df['discourse_effectiveness'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.252479Z","iopub.execute_input":"2022-08-12T05:11:18.252949Z","iopub.status.idle":"2022-08-12T05:11:18.270436Z","shell.execute_reply.started":"2022-08-12T05:11:18.252911Z","shell.execute_reply":"2022-08-12T05:11:18.269526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Encoding the target variables","metadata":{}},{"cell_type":"markdown","source":"# The target variable must be encoded into discrete numbers before passing to a learning model So lets encode our target variable ","metadata":{}},{"cell_type":"code","source":"import numpy as np\nfrom sklearn import preprocessing\nle = preprocessing.LabelEncoder()\ndiscourse_effectiveness=df['discourse_effectiveness']\ndiscourse_effectiveness=np.array(discourse_effectiveness).reshape(-1,1)\n\ndf['encoded_labels']=''\nenc=le.fit_transform(discourse_effectiveness)\ndf['encoded_labels']=enc\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.272549Z","iopub.execute_input":"2022-08-12T05:11:18.273458Z","iopub.status.idle":"2022-08-12T05:11:18.299366Z","shell.execute_reply.started":"2022-08-12T05:11:18.273424Z","shell.execute_reply":"2022-08-12T05:11:18.298265Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.tail()","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.303952Z","iopub.execute_input":"2022-08-12T05:11:18.304258Z","iopub.status.idle":"2022-08-12T05:11:18.314654Z","shell.execute_reply.started":"2022-08-12T05:11:18.304233Z","shell.execute_reply":"2022-08-12T05:11:18.313691Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"\n\n<font size=\"3\">  First of all we remove english stop words becuase they  occur in abundance, hence providing little to no unique information that can be used for classification or clustering\n </font>","metadata":{}},{"cell_type":"code","source":"#function to remove stop words \ndef clean(text):\n  from nltk.corpus import stopwords\n  stop_word = stopwords.words('english')\n  text=str(text)\n  #     remove stop words \n  text = text.split()\n  text = \" \".join([word for word in text if not word in stop_word])\n  return text\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.316217Z","iopub.execute_input":"2022-08-12T05:11:18.317298Z","iopub.status.idle":"2022-08-12T05:11:18.323829Z","shell.execute_reply.started":"2022-08-12T05:11:18.317260Z","shell.execute_reply":"2022-08-12T05:11:18.322895Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def find(sentence):\n  lenth=len(sentence.split())\n  return lenth\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.325220Z","iopub.execute_input":"2022-08-12T05:11:18.325785Z","iopub.status.idle":"2022-08-12T05:11:18.337485Z","shell.execute_reply.started":"2022-08-12T05:11:18.325751Z","shell.execute_reply":"2022-08-12T05:11:18.336307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Lets remove stop words and , also lets remove integer as they also add no meaning to our data. Beside as we will be using LSTM so we need to find maximum lenght of row","metadata":{}},{"cell_type":"code","source":"df['discourse_text']=df['discourse_text'].str.replace('\\d+','')\ndf['discourse_text']=df['discourse_text'].apply(lambda x:clean(x))\nmax_len = np.max(df['discourse_text'].apply(lambda x :find(x)))\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:18.339945Z","iopub.execute_input":"2022-08-12T05:11:18.342793Z","iopub.status.idle":"2022-08-12T05:11:26.669551Z","shell.execute_reply.started":"2022-08-12T05:11:18.342763Z","shell.execute_reply":"2022-08-12T05:11:26.668582Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"The maximum length is \", max_len)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:26.671154Z","iopub.execute_input":"2022-08-12T05:11:26.671549Z","iopub.status.idle":"2022-08-12T05:11:26.677470Z","shell.execute_reply.started":"2022-08-12T05:11:26.671511Z","shell.execute_reply":"2022-08-12T05:11:26.676159Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:26.679205Z","iopub.execute_input":"2022-08-12T05:11:26.680230Z","iopub.status.idle":"2022-08-12T05:11:26.693656Z","shell.execute_reply.started":"2022-08-12T05:11:26.680194Z","shell.execute_reply":"2022-08-12T05:11:26.692375Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Now lets tokenize our input before passing to model ","metadata":{}},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tokenizer = Tokenizer()\ntokenizer.fit_on_texts(df['discourse_text'])\nvocab_length = len(tokenizer.word_index) + 1\ntokens= tokenizer.texts_to_sequences(df['discourse_text'])","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:26.695493Z","iopub.execute_input":"2022-08-12T05:11:26.695965Z","iopub.status.idle":"2022-08-12T05:11:28.299114Z","shell.execute_reply.started":"2022-08-12T05:11:26.695923Z","shell.execute_reply":"2022-08-12T05:11:28.298096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df['Tokenized']=''\ndf['Tokenized']=tokens\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:28.300709Z","iopub.execute_input":"2022-08-12T05:11:28.301378Z","iopub.status.idle":"2022-08-12T05:11:28.321095Z","shell.execute_reply.started":"2022-08-12T05:11:28.301312Z","shell.execute_reply":"2022-08-12T05:11:28.320218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:28.324253Z","iopub.execute_input":"2022-08-12T05:11:28.324538Z","iopub.status.idle":"2022-08-12T05:11:28.337241Z","shell.execute_reply.started":"2022-08-12T05:11:28.324512Z","shell.execute_reply":"2022-08-12T05:11:28.336155Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Becuase each recored of our discourse_text  contains different number of words so number of tokens generated are different for every record. To proceed further we need to make sure that the lenght of each row should be the same. Therefore we are padding each input sequence of our data with zeros","metadata":{}},{"cell_type":"code","source":"padded_tokens=pad_sequences(df.Tokenized, maxlen=max_len, padding='post', value=0).tolist()\npadded_tokens=np.array(padded_tokens)\npadded_tokens","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:28.338865Z","iopub.execute_input":"2022-08-12T05:11:28.339590Z","iopub.status.idle":"2022-08-12T05:11:30.411809Z","shell.execute_reply.started":"2022-08-12T05:11:28.339552Z","shell.execute_reply":"2022-08-12T05:11:30.410751Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### We need both vocabulary length and maximum length of sequence later","metadata":{}},{"cell_type":"code","source":"print(\"Vocab length:\", vocab_length)\nprint(\"Max sequence length:\", max_len)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:30.413483Z","iopub.execute_input":"2022-08-12T05:11:30.413853Z","iopub.status.idle":"2022-08-12T05:11:30.419358Z","shell.execute_reply.started":"2022-08-12T05:11:30.413817Z","shell.execute_reply":"2022-08-12T05:11:30.418085Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Lets divide the data into training and testing ","metadata":{}},{"cell_type":"code","source":"X=padded_tokens\ny=df['encoded_labels']","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:30.420835Z","iopub.execute_input":"2022-08-12T05:11:30.421561Z","iopub.status.idle":"2022-08-12T05:11:30.428861Z","shell.execute_reply.started":"2022-08-12T05:11:30.421521Z","shell.execute_reply":"2022-08-12T05:11:30.427658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:30.430119Z","iopub.execute_input":"2022-08-12T05:11:30.431200Z","iopub.status.idle":"2022-08-12T05:11:30.484424Z","shell.execute_reply.started":"2022-08-12T05:11:30.431166Z","shell.execute_reply":"2022-08-12T05:11:30.483425Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.utils import to_categorical\n\ny_train = to_categorical(y_train, 3)\ny_test = to_categorical(y_test, 3)\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:30.486021Z","iopub.execute_input":"2022-08-12T05:11:30.486398Z","iopub.status.idle":"2022-08-12T05:11:30.493622Z","shell.execute_reply.started":"2022-08-12T05:11:30.486351Z","shell.execute_reply":"2022-08-12T05:11:30.492534Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Lets Define our model and start Training ","metadata":{}},{"cell_type":"code","source":"embedding_dim = 16\n\nmodel = tf.keras.Sequential([\n    tf.keras.layers.Embedding(vocab_length, embedding_dim, input_length=max_len),\n    tf.keras.layers.Bidirectional(tf.keras.layers.GRU(256, return_sequences=True)),\n    tf.keras.layers.GlobalAveragePooling1D(),\n    tf.keras.layers.Dense(64, activation='relu'),\n    tf.keras.layers.Dropout(0.4),\n    tf.keras.layers.Dense(3, activation='softmax')\n])\nmodel.compile(loss='categorical_crossentropy',optimizer=\"adam\",metrics=['accuracy'])\n\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:30.495750Z","iopub.execute_input":"2022-08-12T05:11:30.496262Z","iopub.status.idle":"2022-08-12T05:11:33.893047Z","shell.execute_reply.started":"2022-08-12T05:11:30.496221Z","shell.execute_reply":"2022-08-12T05:11:33.891775Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_epochs = 4\nhistory = model.fit(X_train, y_train, epochs=num_epochs, \n                    validation_data=(X_test, y_test))","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:11:33.894495Z","iopub.execute_input":"2022-08-12T05:11:33.894880Z","iopub.status.idle":"2022-08-12T05:15:58.519381Z","shell.execute_reply.started":"2022-08-12T05:11:33.894843Z","shell.execute_reply":"2022-08-12T05:15:58.518283Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.predict(X_test)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:15:58.521480Z","iopub.execute_input":"2022-08-12T05:15:58.521889Z","iopub.status.idle":"2022-08-12T05:16:03.079738Z","shell.execute_reply.started":"2022-08-12T05:15:58.521850Z","shell.execute_reply":"2022-08-12T05:16:03.078782Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# predicting","metadata":{}},{"cell_type":"code","source":"df_test=pd.read_csv('../input/feedback-prize-effectiveness/test.csv')","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.081206Z","iopub.execute_input":"2022-08-12T05:16:03.081850Z","iopub.status.idle":"2022-08-12T05:16:03.095799Z","shell.execute_reply.started":"2022-08-12T05:16:03.081809Z","shell.execute_reply":"2022-08-12T05:16:03.094870Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test.shape","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.102506Z","iopub.execute_input":"2022-08-12T05:16:03.102803Z","iopub.status.idle":"2022-08-12T05:16:03.109349Z","shell.execute_reply.started":"2022-08-12T05:16:03.102776Z","shell.execute_reply":"2022-08-12T05:16:03.108240Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test['discourse_text']=df_test['discourse_text'].str.replace('\\d+','')\ndf_test['discourse_text']=df_test['discourse_text'].apply(lambda x:clean(x))","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.110985Z","iopub.execute_input":"2022-08-12T05:16:03.111766Z","iopub.status.idle":"2022-08-12T05:16:03.126306Z","shell.execute_reply.started":"2022-08-12T05:16:03.111575Z","shell.execute_reply":"2022-08-12T05:16:03.125233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tokenstest= tokenizer.texts_to_sequences(df_test['discourse_text'])","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.127562Z","iopub.execute_input":"2022-08-12T05:16:03.128135Z","iopub.status.idle":"2022-08-12T05:16:03.133894Z","shell.execute_reply.started":"2022-08-12T05:16:03.128082Z","shell.execute_reply":"2022-08-12T05:16:03.132785Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test['Tokenized']=''\ndf_test['Tokenized']=tokenstest","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.135308Z","iopub.execute_input":"2022-08-12T05:16:03.136221Z","iopub.status.idle":"2022-08-12T05:16:03.144244Z","shell.execute_reply.started":"2022-08-12T05:16:03.136184Z","shell.execute_reply":"2022-08-12T05:16:03.143243Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"padded_tokenstest=pad_sequences(df_test.Tokenized, maxlen=max_len, padding='post', value=0).tolist()\npadded_tokenstest=np.array(padded_tokenstest)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.145418Z","iopub.execute_input":"2022-08-12T05:16:03.145917Z","iopub.status.idle":"2022-08-12T05:16:03.155791Z","shell.execute_reply.started":"2022-08-12T05:16:03.145882Z","shell.execute_reply":"2022-08-12T05:16:03.154833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predicted=model.predict(padded_tokenstest)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.157668Z","iopub.execute_input":"2022-08-12T05:16:03.158328Z","iopub.status.idle":"2022-08-12T05:16:03.221625Z","shell.execute_reply.started":"2022-08-12T05:16:03.158294Z","shell.execute_reply":"2022-08-12T05:16:03.220739Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(predicted)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.222817Z","iopub.execute_input":"2022-08-12T05:16:03.223147Z","iopub.status.idle":"2022-08-12T05:16:03.232320Z","shell.execute_reply.started":"2022-08-12T05:16:03.223111Z","shell.execute_reply":"2022-08-12T05:16:03.231227Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_check=pd.read_csv('../input/feedback-prize-effectiveness/sample_submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.233871Z","iopub.execute_input":"2022-08-12T05:16:03.234905Z","iopub.status.idle":"2022-08-12T05:16:03.243880Z","shell.execute_reply.started":"2022-08-12T05:16:03.234866Z","shell.execute_reply":"2022-08-12T05:16:03.242957Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_check.columns","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.245648Z","iopub.execute_input":"2022-08-12T05:16:03.246005Z","iopub.status.idle":"2022-08-12T05:16:03.254619Z","shell.execute_reply.started":"2022-08-12T05:16:03.245973Z","shell.execute_reply":"2022-08-12T05:16:03.253552Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_new=df_test.drop(['essay_id','discourse_type','Tokenized','discourse_text'],axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.255792Z","iopub.execute_input":"2022-08-12T05:16:03.256055Z","iopub.status.idle":"2022-08-12T05:16:03.264864Z","shell.execute_reply.started":"2022-08-12T05:16:03.256031Z","shell.execute_reply":"2022-08-12T05:16:03.263688Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_new.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.266282Z","iopub.execute_input":"2022-08-12T05:16:03.266800Z","iopub.status.idle":"2022-08-12T05:16:03.278803Z","shell.execute_reply.started":"2022-08-12T05:16:03.266758Z","shell.execute_reply":"2022-08-12T05:16:03.277757Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_new['Ineffective']=''\ndf_new['Adequate']=''\ndf_new['Effective']=''","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.280295Z","iopub.execute_input":"2022-08-12T05:16:03.280661Z","iopub.status.idle":"2022-08-12T05:16:03.288503Z","shell.execute_reply.started":"2022-08-12T05:16:03.280627Z","shell.execute_reply":"2022-08-12T05:16:03.287236Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_new['Adequate']=predicted[:,0]\ndf_new['Ineffective']=predicted[:,2]\ndf_new['Effective']=predicted[:,1]\n","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.289931Z","iopub.execute_input":"2022-08-12T05:16:03.290412Z","iopub.status.idle":"2022-08-12T05:16:03.298841Z","shell.execute_reply.started":"2022-08-12T05:16:03.290368Z","shell.execute_reply":"2022-08-12T05:16:03.297911Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_new.to_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-08-12T05:16:03.300134Z","iopub.execute_input":"2022-08-12T05:16:03.300673Z","iopub.status.idle":"2022-08-12T05:16:03.312406Z","shell.execute_reply.started":"2022-08-12T05:16:03.300636Z","shell.execute_reply":"2022-08-12T05:16:03.311396Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}