{"metadata":{"accelerator":"TPU","colab":{"gpuType":"V28","provenance":[]},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":19018,"databundleVersionId":2703900,"sourceType":"competition"},{"sourceId":11650,"sourceType":"datasetVersion","datasetId":8327}],"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false},"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Overview\n\nIt only takes one toxic comment to sour an online discussion. The Conversation AI team, a research initiative founded by Jigsaw and Google, builds technology to protect voices in conversation. A main area of focus is machine learning models that can identify toxicity in online conversations, where toxicity is defined as anything rude, disrespectful or otherwise likely to make someone leave a discussion.\n\nIn this Notebook I will start with the very Basics of NLP and Build all the way to latest deep learning architectures, It will cover the Following:\n\n- Simple BagOfWords Machine Learning Model (Benchmark)\n- RNN\n- LSTM/GRU\n- BI-Directional LSTM\n- Transformers - Attention is all you need\n\n# Evaluation\nSubmissions are evaluated on area under the ROC curve between the predicted probability and the observed target.\n\nSubmission File\nFor each ID in the test set, you must predict a probability for the toxic variable. The file should contain a header and have the following format:\n\n> id,  toxic\n>\n> 0,  0.5\n>\n> 1,  1","metadata":{"id":"vXwpHsKDZBu-"}},{"cell_type":"code","source":"# import libraries\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n%matplotlib inline\n\nimport joblib\nfrom tqdm import tqdm\nfrom sklearn import metrics\nfrom sklearn.feature_extraction.text import TfidfVectorizer # CountVectorizer[Bad Choice Acc=80%]\nfrom sklearn.model_selection import train_test_split, GridSearchCV\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import LinearSVC\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import classification_report\n\nimport tensorflow as tf\nfrom tensorflow.keras.preprocessing import text\nfrom tensorflow.keras.preprocessing.sequence import pad_sequences\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Input, Flatten, GlobalMaxPooling1D, Bidirectional, SpatialDropout1D, LSTM, GRU, SimpleRNN, Dense, Activation, Dropout, Embedding, BatchNormalization, TextVectorization\nfrom tensorflow.keras.optimizers import RMSprop\nfrom tensorflow.keras.preprocessing import sequence\nfrom tensorflow.keras.callbacks import EarlyStopping\nimport warnings\nwarnings.filterwarnings('ignore')\n\nnp.random.seed(123)\n\nprint(tf.__version__)","metadata":{"id":"QwtPl7tIZBvB","outputId":"ec58390b-7cce-402c-e139-5f328c69dfb8","execution":{"iopub.status.busy":"2024-07-20T02:24:03.958463Z","iopub.execute_input":"2024-07-20T02:24:03.958727Z","iopub.status.idle":"2024-07-20T02:24:21.135379Z","shell.execute_reply.started":"2024-07-20T02:24:03.958705Z","shell.execute_reply":"2024-07-20T02:24:21.134493Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# TPU detection and initialization (Kaggle/Colab)\ntry:\n    tpu = tf.distribute.cluster_resolver.TPUClusterResolver()\n    print('Running on TPU')\n    tf.config.experimental_connect_to_cluster(tpu)\n    tf.tpu.experimental.initialize_tpu_system(tpu)\n    strategy = tf.distribute.TPUStrategy(tpu)\nexcept ValueError as e:\n    print('TPU not found. Error:', e)\n    tpu = None\n    strategy = tf.distribute.get_strategy()  # Fallback to default strategy\nexcept Exception as e:\n    print(\"Error during TPU initialization:\", e)\n    strategy = tf.distribute.get_strategy()  # Fallback to default strategy\n\nprint(\"REPLICAS:\", strategy.num_replicas_in_sync)","metadata":{"id":"GTlZqWQvESCV","outputId":"c2eb46c6-df60-423b-ee99-c4bba5487e4f","execution":{"iopub.status.busy":"2024-07-20T02:24:21.164231Z","iopub.execute_input":"2024-07-20T02:24:21.164536Z","iopub.status.idle":"2024-07-20T02:24:21.176012Z","shell.execute_reply.started":"2024-07-20T02:24:21.164512Z","shell.execute_reply":"2024-07-20T02:24:21.175103Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_all = pd.read_csv('/kaggle/input/jigsaw-multilingual-toxic-comment-classification/jigsaw-toxic-comment-train.csv', engine=\"python\")\ndf_all","metadata":{"id":"33bvV823ZBvE","outputId":"4245f10b-bf99-4b5a-a6f3-05094ca51f66","execution":{"iopub.status.busy":"2024-07-20T02:24:21.177067Z","iopub.execute_input":"2024-07-20T02:24:21.177312Z","iopub.status.idle":"2024-07-20T02:24:24.933398Z","shell.execute_reply.started":"2024-07-20T02:24:21.177291Z","shell.execute_reply":"2024-07-20T02:24:24.932488Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_all.info()","metadata":{"id":"gHCkmlmmZBvF","outputId":"a7d4693e-7193-477d-9edc-366564644426","execution":{"iopub.status.busy":"2024-07-20T02:24:24.934700Z","iopub.execute_input":"2024-07-20T02:24:24.935008Z","iopub.status.idle":"2024-07-20T02:24:25.010728Z","shell.execute_reply.started":"2024-07-20T02:24:24.934984Z","shell.execute_reply":"2024-07-20T02:24:25.009855Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**See the num.of presented Samples in DataFrame**","metadata":{"id":"DHU4AsWyASL7"}},{"cell_type":"code","source":"(df_all.drop(['id','comment_text'], axis=1)).apply(lambda a: a.value_counts())","metadata":{"id":"lWOiru3SZBvF","outputId":"11ec907d-8861-4431-a1a4-983bdd64251f","execution":{"iopub.status.busy":"2024-07-20T02:24:25.011856Z","iopub.execute_input":"2024-07-20T02:24:25.012131Z","iopub.status.idle":"2024-07-20T02:24:25.077613Z","shell.execute_reply.started":"2024-07-20T02:24:25.012108Z","shell.execute_reply":"2024-07-20T02:24:25.076758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Merge Columns in One Column 'is_offensive' expressing to any form of offensive sentence (toxic, severe_toxic, obscene, threat, insult, identity_hate)**","metadata":{"id":"0QB8z1stASL8"}},{"cell_type":"code","source":"df_all['is_offensive'] = df_all['toxic'] | df_all['severe_toxic'] | df_all['obscene'] | df_all['threat'] | df_all['insult'] | df_all['identity_hate'] | 0\n(df_all.drop(['id','comment_text'], axis=1)).apply(lambda a: a.value_counts())","metadata":{"id":"RNYAJ38eESCW","outputId":"54162bb4-2105-4a62-cf1f-204f776265ea","execution":{"iopub.status.busy":"2024-07-20T02:24:25.078997Z","iopub.execute_input":"2024-07-20T02:24:25.079359Z","iopub.status.idle":"2024-07-20T02:24:25.112432Z","shell.execute_reply.started":"2024-07-20T02:24:25.079326Z","shell.execute_reply":"2024-07-20T02:24:25.111576Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Split DataFrame to train & test sets to compute the accuracy of the models**","metadata":{"id":"5aAxzru9ASL8"}},{"cell_type":"code","source":"df = df_all.iloc[:200_000, :]\ntest = df_all.iloc[200_000:, :]\n\nprint(\"The Shape of Train Data: \", df.shape)\nprint(\"The Shape of Test Data: \", test.shape)","metadata":{"id":"s5FwW212ESCX","outputId":"7883214e-7b37-4e53-c979-03afbee1d3af","execution":{"iopub.status.busy":"2024-07-20T02:24:25.113692Z","iopub.execute_input":"2024-07-20T02:24:25.114020Z","iopub.status.idle":"2024-07-20T02:24:25.119969Z","shell.execute_reply.started":"2024-07-20T02:24:25.113990Z","shell.execute_reply":"2024-07-20T02:24:25.119143Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**UnderSampling for the class 0 to the length of class 1 to solve imbalanced data and decreased the size of the data**","metadata":{"id":"_YnKF55gZBvG"}},{"cell_type":"markdown","source":"**Trying to get smaller subset of data and overcome the imbalanced data problem [IF Needed]**","metadata":{"id":"7RNJbQ2wASL9"}},{"cell_type":"code","source":"# # the count of rows in each class of the is_offensive 1/0\n# len_class = np.min(df.is_offensive.value_counts())\n\n# # separate according to `label`\n# df_class_0 = df[df['is_offensive'] == 0]\n# df_class_1 = df[df['is_offensive'] == 1]\n\n# # sample only from class 0 quantity of rows of class 1\n# df_class_0 = df_class_0.sample(len_class)\n# df_class_1 = df_class_1.sample(len_class)\n\n# df = pd.concat([df_class_0, df_class_1], ignore_index = True, axis=0).sample(frac = 1).reset_index()\n# (df['is_offensive'].value_counts())","metadata":{"id":"ID02otJHZBvH","outputId":"6b19596b-2350-42a9-a0b8-4b2b2e8c9472","execution":{"iopub.status.busy":"2024-07-20T02:24:25.123815Z","iopub.execute_input":"2024-07-20T02:24:25.124074Z","iopub.status.idle":"2024-07-20T02:24:25.129645Z","shell.execute_reply.started":"2024-07-20T02:24:25.124052Z","shell.execute_reply":"2024-07-20T02:24:25.128872Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Bag of Words - Traditional ML","metadata":{"id":"YVnmeoEJZBvH"}},{"cell_type":"markdown","source":"**This is the matrix will used in the competition**","metadata":{"id":"pOQXeoXDESCZ"}},{"cell_type":"code","source":"def AUC_accuracy(target, predictions):\n    '''\n    Compute the Area Under Curve (AUC) Score to get the accuracy of the model\n\n    Paramas:\n        target -> list of real numbers\n        predictions -> list of predictions numbers\n\n    return auc accuracy (float)\n    '''\n\n    fpr, tpr, thresholds = metrics.roc_curve(target, predictions)\n    roc_auc = metrics.auc(fpr, tpr)\n    return roc_auc","metadata":{"id":"ZlvCyKwdESCZ","execution":{"iopub.status.busy":"2024-07-20T02:24:25.130638Z","iopub.execute_input":"2024-07-20T02:24:25.130890Z","iopub.status.idle":"2024-07-20T02:24:25.140647Z","shell.execute_reply.started":"2024-07-20T02:24:25.130869Z","shell.execute_reply":"2024-07-20T02:24:25.139758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# get the comment text in X and is_offensive in Y\nX = df['comment_text']\ny = df['is_offensive']\n\n# spliting the train dataset to sub-train and validation data\nX_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, stratify=y.values, random_state=42)\n\nprint(\"The Shape of Train Data: \", X_train.shape)\nprint(\"The Shape of Validation Data: \", X_val.shape)","metadata":{"id":"LKpTqT71ZBvI","outputId":"1e0167eb-e384-489c-af79-75f1d42cf294","execution":{"iopub.status.busy":"2024-07-20T02:24:25.154671Z","iopub.execute_input":"2024-07-20T02:24:25.154911Z","iopub.status.idle":"2024-07-20T02:24:25.261959Z","shell.execute_reply.started":"2024-07-20T02:24:25.154890Z","shell.execute_reply":"2024-07-20T02:24:25.261089Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Vectorize text\nvectorizer = TfidfVectorizer(stop_words='english')\nX_train_vec = vectorizer.fit_transform(X_train)\nX_val_vec = vectorizer.transform(X_val)\n\nprint(\"The Shape of Train Data After Victorizer: \", X_train_vec.shape)\nprint(\"The Shape of Validation Data After Victorizer: \", X_val_vec.shape)","metadata":{"id":"5XPYTc4_ZBvJ","outputId":"0eec269e-2041-4fb2-8acc-bef8aaedb3f8","execution":{"iopub.status.busy":"2024-07-20T02:24:25.268387Z","iopub.execute_input":"2024-07-20T02:24:25.268691Z","iopub.status.idle":"2024-07-20T02:24:38.630374Z","shell.execute_reply.started":"2024-07-20T02:24:25.268670Z","shell.execute_reply":"2024-07-20T02:24:38.629486Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Train simple ML model for text classification task\nLRmodel  =  LogisticRegression(max_iter=1000, n_jobs=-1)\nLRmodel.fit(X_train_vec, y_train)\n\n# Predict on validation data\ny_predLR = LRmodel.predict(X_val_vec)\n\n# Evaluate the model\nprint(\"Logistic Regression on Validation Data\")\nprint(classification_report(y_val, y_predLR))","metadata":{"id":"SzIPyc3pESCb","outputId":"fa848adb-e537-4d6c-9874-b71f3d421cc0","execution":{"iopub.status.busy":"2024-07-20T02:24:38.631664Z","iopub.execute_input":"2024-07-20T02:24:38.631975Z","iopub.status.idle":"2024-07-20T02:24:46.810960Z","shell.execute_reply.started":"2024-07-20T02:24:38.631948Z","shell.execute_reply":"2024-07-20T02:24:46.809708Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Let's try to get the accuracy on test dataset**","metadata":{"id":"znVDXq4BESCb"}},{"cell_type":"code","source":"X_test = test['comment_text']#.apply(clean_text)\ntest_vec = vectorizer.transform(X_test)\ny_test = test['is_offensive']\ny_preds = LRmodel.predict(test_vec)\n\n# Evaluate the model\nprint(\"Logistic Regression on Test Data\")\nprint(classification_report(y_test, y_preds))","metadata":{"id":"wp1kqylFESCc","outputId":"c48362b4-4144-4609-ea70-ad04a3eb0336","execution":{"iopub.status.busy":"2024-07-20T02:24:46.812801Z","iopub.execute_input":"2024-07-20T02:24:46.813200Z","iopub.status.idle":"2024-07-20T02:24:48.352184Z","shell.execute_reply.started":"2024-07-20T02:24:46.813161Z","shell.execute_reply":"2024-07-20T02:24:48.351257Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Note we need the decision_function to predict confidence scores for samples\n# (the distance between point and hyperplane)\n# for getting area under curve (auc) as an accuracy matrix\ny_preds_prob = LRmodel.decision_function(test_vec)\nlr_score = AUC_accuracy(y_test, y_preds_prob)\nlr_score","metadata":{"id":"oA9otQZLESCd","outputId":"25267646-3a9f-49cb-ab13-f363b13fabca","execution":{"iopub.status.busy":"2024-07-20T02:24:48.354120Z","iopub.execute_input":"2024-07-20T02:24:48.354411Z","iopub.status.idle":"2024-07-20T02:24:48.369247Z","shell.execute_reply.started":"2024-07-20T02:24:48.354386Z","shell.execute_reply":"2024-07-20T02:24:48.368401Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**NOTE:// This Accuracy is not true because the imbalanced data problem in Traditional ML**","metadata":{}},{"cell_type":"markdown","source":"# Deep Learning","metadata":{"id":"JrcNEwEiZBvK"}},{"cell_type":"markdown","source":"**Get The longest sequance on the Train data**","metadata":{"id":"zYRzE-tAASMA"}},{"cell_type":"code","source":"df['comment_text'].apply(lambda comment: len(comment.split())).max()","metadata":{"id":"rWHmKBmdhhm_","outputId":"321faef2-c71d-41ff-89a7-2065c6f27841","execution":{"iopub.status.busy":"2024-07-20T02:24:48.370434Z","iopub.execute_input":"2024-07-20T02:24:48.370729Z","iopub.status.idle":"2024-07-20T02:24:49.405655Z","shell.execute_reply.started":"2024-07-20T02:24:48.370706Z","shell.execute_reply":"2024-07-20T02:24:49.404774Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Tokenize & Padding Sequance of the training data from tensorflow pre-processing**","metadata":{"id":"gOKgGt6JASMA"}},{"cell_type":"code","source":"# Define embedding dimensions and maximum sequence length\n# embedding_dim: the number of features that represent the word\nembedding_dim = 300\nmax_len = 2000\n\n# using keras tokenizer here\ntoken = text.Tokenizer(oov_token=\"<OOV>\")\n\n# tokenize the texts to sort desc\n# the highest counts for the word\n# in the corpus and get the indeces\ntoken.fit_on_texts(X_train.to_list() + X_val.to_list())\nX_train_seq = token.texts_to_sequences(X_train)\nX_val_seq = token.texts_to_sequences(X_val)\n\n# padding the sequences to 2000 indices [constant shape]\n# for fitting input layer of the Deep Learning model\nX_train_pad = sequence.pad_sequences(X_train_seq, maxlen=max_len, padding='post')\nX_val_pad = sequence.pad_sequences(X_val_seq, maxlen=max_len, padding='post')\n\nword2idx = token.word_index\nvocab_size = len(token.word_index) + 1\n\nprint(\"The distinct number of words in corpus\", vocab_size)","metadata":{"id":"BAbVgqOGESCf","outputId":"1571f974-27a4-407e-c27c-bb8672d44cb0","execution":{"iopub.status.busy":"2024-07-20T02:24:49.406657Z","iopub.execute_input":"2024-07-20T02:24:49.406906Z","iopub.status.idle":"2024-07-20T02:25:17.263123Z","shell.execute_reply.started":"2024-07-20T02:24:49.406884Z","shell.execute_reply":"2024-07-20T02:25:17.262221Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Tokenize & Padding Sequance of the TEST data**","metadata":{"id":"xt5fqVXfASME"}},{"cell_type":"code","source":"X_test_seq = token.texts_to_sequences(X_test)\nX_test_pad = sequence.pad_sequences(X_test_seq, maxlen=max_len, padding='post')\nprint(\"tokenize the test dataset ..\")\nprint(\"The Test Shape: \", X_test_pad.shape)","metadata":{"id":"6xheO5M7ESCg","outputId":"537c0fda-762a-4173-b27f-2087f6f90447","execution":{"iopub.status.busy":"2024-07-20T02:25:17.264128Z","iopub.execute_input":"2024-07-20T02:25:17.264390Z","iopub.status.idle":"2024-07-20T02:25:18.797951Z","shell.execute_reply.started":"2024-07-20T02:25:17.264368Z","shell.execute_reply":"2024-07-20T02:25:18.796954Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Let's Make Simple Neural Nets for BagOfWords [Count matrix] model to get the best accuracy for Traditional ML**","metadata":{"id":"3Y8ljQVhASL_"}},{"cell_type":"code","source":"with strategy.scope():\n    # Create the model\n    model = Sequential()\n\n    # Add layers\n    model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_len))\n    model.add(GlobalMaxPooling1D())\n\n    model.add(Dense(1024, activation='relu'))\n    model.add(BatchNormalization())\n\n    model.add(Dense(512, activation='relu'))\n    model.add(BatchNormalization())\n\n    model.add(Dense(256, activation='relu'))\n    model.add(BatchNormalization())\n\n    # For binary classification\n    model.add(Dense(1, activation='sigmoid'))\n\n    # Compile the model\n    model.compile(optimizer='adam',\n                  loss='binary_crossentropy',\n                  metrics=['accuracy'])\n\n# Train the model\nhistory = model.fit(X_train_pad, y_train,\n                    validation_data=(X_val_pad, y_val),\n                    epochs=5,\n                    batch_size=64*strategy.num_replicas_in_sync,\n                    callbacks=[EarlyStopping(monitor='val_loss', patience=3, verbose=1)])\n\n\n# Summary of the model\nmodel.summary()","metadata":{"id":"2u26ug40fDNX","outputId":"8ba4b70c-09ad-4a30-cca6-5f6ccad2808c","execution":{"iopub.status.busy":"2024-07-20T02:25:18.799184Z","iopub.execute_input":"2024-07-20T02:25:18.799517Z","iopub.status.idle":"2024-07-20T02:31:49.597344Z","shell.execute_reply.started":"2024-07-20T02:25:18.799490Z","shell.execute_reply":"2024-07-20T02:31:49.596452Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Getting the accuracy on Test Dataset**","metadata":{"id":"04EHw738sxqb"}},{"cell_type":"code","source":"preds_prob = model.predict(X_test_pad)\nprint(\"Simple Neural Nets BagOfWords Result\\n\")\nprint(classification_report(y_test, (preds_prob>0.5).astype(int))) # convert probabilities to 1 or 0 according the threshold 0.5","metadata":{"id":"o4e3doDiv0N2","execution":{"iopub.status.busy":"2024-07-20T02:31:49.598626Z","iopub.execute_input":"2024-07-20T02:31:49.598921Z","iopub.status.idle":"2024-07-20T02:31:52.079362Z","shell.execute_reply.started":"2024-07-20T02:31:49.598896Z","shell.execute_reply":"2024-07-20T02:31:52.078491Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"BagOfWords_score = AUC_accuracy(y_test, preds_prob)\nBagOfWords_score","metadata":{"id":"F3_ve7lxESCh","execution":{"iopub.status.busy":"2024-07-20T02:31:52.080558Z","iopub.execute_input":"2024-07-20T02:31:52.080896Z","iopub.status.idle":"2024-07-20T02:31:52.092222Z","shell.execute_reply.started":"2024-07-20T02:31:52.080869Z","shell.execute_reply":"2024-07-20T02:31:52.091402Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**It is Limited, The Traditional Machine Learning and Simple Neural Nets is not the solution**","metadata":{"id":"lCfUm_r2sxqc"}},{"cell_type":"markdown","source":"## GloVe (Word Embeddings)","metadata":{"id":"h4YC4fB3ESCh"}},{"cell_type":"code","source":"def word2GloVeEmbed(corpus, filepath= r'/kaggle/input/glove840b300dtxt/glove.840B.300d.txt'):\n    \"\"\"\n    Load GloVe embeddings for specific words from a file\n\n    Args:\n        corpus (set): A set of words to extract embeddings for\n        filepath (str): Path to the GloVe embeddings file\n\n    Returns:\n        dict: A dictionary mapping words to their GloVe embeddings\n    \"\"\"\n    word2vec = {}\n    with open(filepath, 'r', encoding='utf-8') as file:\n        for line in tqdm(file):\n            values = line.rstrip().split(' ')\n            word = ' '.join(values[:-300])\n            if word in corpus: # if the word in the corpus\n                vector = np.asarray(values[-300:], dtype='float32') # 300 is the number of the length of the embeddings\n                word2vec[word] = vector\n            if len(word2vec) == len(corpus):  # Stop early if all words are found\n                break\n    return word2vec","metadata":{"id":"zZ-yroIhESCh","execution":{"iopub.status.busy":"2024-07-20T02:31:52.093479Z","iopub.execute_input":"2024-07-20T02:31:52.093813Z","iopub.status.idle":"2024-07-20T02:31:52.101407Z","shell.execute_reply.started":"2024-07-20T02:31:52.093782Z","shell.execute_reply":"2024-07-20T02:31:52.100702Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**We have already tokenized and paded our text to extract the words from train dateset**","metadata":{"id":"hvs2ZEDdESCi"}},{"cell_type":"code","source":"# convert all the words of the train-data into GloVe Embedding Vectors\nword2vec = word2GloVeEmbed(word2idx.keys())\nprint(f'The shape of the word2vec: {len(word2vec)}')","metadata":{"id":"29njm17KZBvK","execution":{"iopub.status.busy":"2024-07-20T02:31:52.102266Z","iopub.execute_input":"2024-07-20T02:31:52.102535Z","iopub.status.idle":"2024-07-20T02:33:25.453231Z","shell.execute_reply.started":"2024-07-20T02:31:52.102513Z","shell.execute_reply":"2024-07-20T02:33:25.452347Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# # Save the subset to a text file\n# with open(\"dataset_glove.txt\", 'w', encoding='utf-8') as output_file:\n#     for word, vector in word2vec.items():\n#         vector_str = ' '.join(map(str, vector))\n#         output_file.write(f\"{word} {vector_str}\\n\")","metadata":{"id":"iUjEuAMWrneb","execution":{"iopub.status.busy":"2024-07-20T02:33:25.454548Z","iopub.execute_input":"2024-07-20T02:33:25.454843Z","iopub.status.idle":"2024-07-20T02:33:25.458989Z","shell.execute_reply.started":"2024-07-20T02:33:25.454819Z","shell.execute_reply":"2024-07-20T02:33:25.458071Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"The vector of the word 'The'\", word2vec['the'])","metadata":{"id":"vC9roIwYESCi","execution":{"iopub.status.busy":"2024-07-20T02:33:25.464654Z","iopub.execute_input":"2024-07-20T02:33:25.464936Z","iopub.status.idle":"2024-07-20T02:33:25.473133Z","shell.execute_reply.started":"2024-07-20T02:33:25.464893Z","shell.execute_reply":"2024-07-20T02:33:25.472237Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Extract Vectors of the unique words in dataset**","metadata":{}},{"cell_type":"code","source":"# create an embeddings matrix for the words we have in the dataset\nembed_matrix = np.zeros((vocab_size, embedding_dim))\nfor word, i in tqdm(word2idx.items()):\n    vector = word2vec.get(word, None)\n    if vector is not None:\n        embed_matrix[i] = vector\n\nprint(f'\\nThe shape of embeddings matrix: {embed_matrix.shape}')","metadata":{"id":"06Lcg_0HESCj","execution":{"iopub.status.busy":"2024-07-20T02:33:25.474096Z","iopub.execute_input":"2024-07-20T02:33:25.474360Z","iopub.status.idle":"2024-07-20T02:33:26.224060Z","shell.execute_reply.started":"2024-07-20T02:33:25.474339Z","shell.execute_reply":"2024-07-20T02:33:26.223208Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# RNN model","metadata":{"id":"PF6ittpUESCj"}},{"cell_type":"markdown","source":"**Recurrent Neural Network(RNN) is a type of Neural Network where the output from the previous step is fed as input to the current step. In traditional neural networks, all the inputs and outputs are independent of each other. Still, in cases when it is required to predict the next word of a sentence, the previous words are required and hence there is a need to remember the previous words. Thus RNN came into existence, which solved this issue with the help of a Hidden Layer. The main and most important feature of RNN is its Hidden state, which remembers some information about a sequence. The state is also referred to as Memory State since it remembers the previous input to the network. It uses the same parameters for each input as it performs the same task on all the inputs or hidden layers to produce the output. This reduces the complexity of parameters, unlike other neural networks.**","metadata":{"id":"ehSVErbTZBvK"}},{"cell_type":"markdown","source":"![What-is-Recurrent-Neural-Network-660.jpeg](attachment:8f48ea54-39de-4695-bb7a-b575c7f35291.jpeg)","metadata":{},"attachments":{"8f48ea54-39de-4695-bb7a-b575c7f35291.jpeg":{"image/jpeg":"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAFKApQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKTdQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUmRQAtFeL/GL9qbwl8JbiTTnaTWtdTGdPsiP3ef+ejn5U+nJ9q8Cvv+CgHiV5d1l4U01IG6LNPK7j64AwfwrlqYmnSdpPU8qtmmEw8uSc9T7ipVr5M8Aft9aLqVzFbeK9Em0VG4N/aOZ4AfddoYD3ANfUWj61ZeINMttR066hvbG4QSQz27h0dT0II6itKVWFZXizoo4yjiFelK5pUNTadj3rY7BaKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU1mUDk4oAdRXzl8VP20vCvgm8n03QrabxTqcL7JDauEtkIOCPMIO4j/ZBHvXkp/wCCgfiPz9w8K6WIe6/aJN3/AH1/9auWWKpRdmzyKua4OjPklPU+5d1G6vm34X/treGP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XUqwyDTlp1Imx8h/Gz/gnH4F+JGoz6t4ZvZPBGqzFpJIbWATWcjnOW8nI2E552kD/ZrwNv8Agld49+0YHjLw4Yez+VcBv++dv9a/TXNPrN04voYuhTluj41+DP8AwTZ8FeBtQttU8W383jfUrdlkit5ojb2Ubg5yYwSZOn8TbT3WvsO1gjt41jjRUVFChVAAUAcAAdsVMBRmmoKOxpCEYfCFDUi9aD1rQsdRRRQMKKKKACiiigBCBivlb46f8E9fAfxZ1K41rRZ5fBuuzuZJ2sohJaTsTks8BIAY9yhXPU819VUmKlxUtyJRU1Zn5lzf8EsfHS3RSLxn4ceDszxXCvj/AHQD/OvYPhD/AMEyfCHhPUYNS8a6vL4vnjIcabFD9mstw/vDJaQexIB7jmvtRulNqfZxXQyVGnHZEFhp9vplvFb2sMdvbxosccMKBI0VRgKqjgADjAqelanVXwm4gGKWiiqGFFFFABRRRQA3bSU6kbrSJZ80fHz9gzwH8btUuNdtnm8JeJrg7ptQ02NWiuG/vSwnCs3qwKk9ya+Yr3/glf45juD9k8a+H57cE4knt7iJseu0Bv51+mi06s+SN9jCVCE3do+GfhT/AMEvfDeh31ve+O/EU3ifyju/suyiNtascDh3yZGHXjK19q6Jo9j4f0u107TbWGxsLWNY4La2jCRxoBgKoHAA9BV9aM4Y01BLY2jCMfhQ6kAxS0VZYUUUUwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAaOKWhaCcUALRRRQAUUUUAFFFFABRRRQAUUUUAFJS0UANHWloWgnFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//2Q=="}}},{"cell_type":"code","source":"# A SimpleRNN with GloVe embeddings\nwith strategy.scope():\n    # Create the model\n    model = Sequential()\n\n    # Add layers\n    model.add(Embedding(input_dim=vocab_size,\n                        output_dim=embedding_dim,\n                        input_length=max_len,\n                        weights=[embed_matrix],\n                        trainable=False\n                       ))\n\n    model.add(SimpleRNN(128, return_sequences=True))\n    model.add(Dropout(0.2))\n\n    model.add(SimpleRNN(128))\n    model.add(Dropout(0.2))\n\n    model.add(Dense(1024, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(512, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(256, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    # Output layer\n    model.add(Dense(1, activation='sigmoid'))\n    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n\nmodel.fit(X_train_pad, y_train,\n          validation_data=(X_val_pad, y_val),\n          epochs=20,\n          batch_size=64*strategy.num_replicas_in_sync,\n          callbacks=[EarlyStopping(monitor='val_loss', patience=3, verbose=1)])\n\nmodel.summary()","metadata":{"id":"vTHtFkG7ZBvK","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.evaluate(X_test_pad, y_test)[1]","metadata":{"id":"FF3E0igPxfTu","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# get predictions\nSimpleRNN_preds = (model.predict(X_test_pad) > 0.5).astype(int)\nprint(\"Simple RNN predictions \\n\", classification_report(y_test, SimpleRNN_preds))","metadata":{"id":"D46cNs4_ZBvL","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rnn_score = AUC_accuracy(y_test, SimpleRNN_preds)\nrnn_score","metadata":{"id":"tLcj4xH2ESCr","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Advantages and Disadvantages of Recurrent Neural Network\n## Advantages\n- An RNN remembers each and every piece of information through time. It is useful in time series prediction only because of the feature to remember previous inputs as well. This is called Long Short Term Memory.\n- Recurrent neural networks are even used with convolutional layers to extend the effective pixel neighborhood.\n\n## Disadvantages\n- Gradient vanishing and exploding problems.\n- Training an RNN is a very difficult task.\n- It cannot process very long sequences if using tanh or relu as an activation function.\n\n**For these problems, the LSTM came.**","metadata":{}},{"cell_type":"markdown","source":"# LSTM","metadata":{"id":"PGZE6OiDESCr"}},{"cell_type":"markdown","source":"**LSTM networks are an extension of recurrent neural networks (RNNs) mainly introduced to handle situations where RNNs fail**\n\n- It fails to store information for a longer period of time. At times, a reference to certain information stored quite a long time ago is required to predict the current output. But RNNs are absolutely incapable of handling such “long-term dependencies”.\n- There is no finer control over which part of the context needs to be carried forward and how much of the past needs to be ‘forgotten’. \n- Other issues with RNNs are exploding and vanishing gradients (explained later) which occur during the training process of a network through backtracking. \n\n**The basic difference between the architectures of RNNs and LSTMs is that the hidden layer of LSTM is a gated unit or gated cell. It consists of four layers that interact with one another in a way to produce the output of that cell along with the cell state. These two things are then passed onto the next hidden layer. Unlike RNNs which have got only a single neural net layer of tanh, LSTMs comprise three logistic sigmoid gates and one tanh layer. Gates have been introduced in order to limit the information that is passed through the cell. They determine which part of the information will be needed by the next cell and which part is to be discarded. The output is usually in the range of 0-1 where ‘0’ means ‘reject all’ and ‘1’ means ‘include all’.**\n\n","metadata":{}},{"cell_type":"markdown","source":"![newContent1.png](attachment:923c38b3-e178-47fe-83d0-67042b34126a.png)","metadata":{},"attachments":{"923c38b3-e178-47fe-83d0-67042b34126a.png":{"image/png":"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rlvYDLycYPSs1wCnBk2WAPxyfwuTHQk+A/i+V/kc8GPf49Oj85MCnOr+HNFAyGRP7DLYmZSEoOV/gFuAm4EfOk6udOgzIzK7KQARERGRGc1xch7w/fLrfa5bOAG4uPx6le+zwO5kHgQSARM/hO+1MiJ+7L38LTKKVXUn8zCLUf38kRr2ArcSBB3fdZzctloLihyvFICIiIjIrOI4uaeAfwf+3XULWSBPkBnJAzngRLPsJJmHiDDRkZQxCbeR1I/kENt/EigAgwRBxz3l/i4ic5YCEBEREZm1ypX5u8ovAFy30A6cTBCM2K91QFPSdpKyJ8nfE00AjxAEGub1MPBLx8kNT+1IROYOBSAiIiJyXHGc3Ahwf/lVUc6WrADmA51AV/m9E+i8++5FcuIBAAAgAElEQVTvbvJ9b2VzcyvNzS2Mj48xPj5KKpV66rzzLr4W2A8csF77y69tjpObqNfxicx2CkBERERkTihnSx6vNT+fz18GrEyYte3qq99zzTErmMgcowcRioiIiIhI3SgAERERERGRulEAIiIiIiIidaMARERERERE6kYBiIiIiIiI1I0CEBERERERqRsFICIiIiIiUjcKQEREREREpG4UgIiIiIiISN0oABERERERkbpRACIiIiIiInWjAEREREREROpGAYiIiIiIiNSNAhAREREREakbBSAiIiIiIlI3CkBERERERKRuFICIiIiIiEjdKAAREREREZG6UQAiIiIiIiJ1owBERERERETqRgGIiIiIiIjUjQIQERERERGpGwUgIiIiIiJSNwpARERERESkbhSAiIiIiIhI3SgAERERERGRulEAIiIiIiIidaMARERERERE6kYBiIiIiIiI1I0CEBERERERqZtsowsgIiIzh+sWlgDnAMvuuOPG7ra2Djo7F9Da2sHIyAEOHNiD7/snf/jDX3gb8BRwt+PkDjS00CJHwXULC4FzgeV33XXzyqamZjo7F9Le3ln5zU9MjJ3w4Q9/4R3AMwS/+T2NLbXI7KYARERkjnPdwjqgH7gMuABIAVx44etqrXIq8Lny5zHXLXwf+BbgOk5ux7EtrcjRc93CCsLf/Esp14de9KLX1lplBfDv5c8l1y3cTvCbH3Cc3NZjW1qR448CEBGROch1C1ngrcCfEAQUAGSzaRYv7qCtLUtLS5bW1uA9m80wMVFkdLTI2FiJ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"}}},{"cell_type":"code","source":"# A LSTM with GloVe embeddings\nwith strategy.scope():\n    # Create the model\n    model = Sequential()\n\n    # Add layers\n    model.add(Embedding(input_dim=vocab_size,\n                        output_dim=embedding_dim,\n                        input_length=max_len,\n                        weights=[embed_matrix],\n                        trainable=False\n                       ))\n\n    model.add(LSTM(128, return_sequences=True))\n    model.add(Dropout(0.2))\n\n    model.add(LSTM(128))\n    model.add(Dropout(0.2))\n\n    model.add(Dense(1024, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(512, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(256, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    # for binary classification\n    model.add(Dense(1, activation='sigmoid'))\n    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n\nmodel.fit(X_train_pad, y_train,\n          validation_data=(X_val_pad, y_val),\n          epochs=20,\n          batch_size=64*strategy.num_replicas_in_sync,\n          callbacks=[EarlyStopping(monitor='val_loss', patience=3, verbose=1)])\n\nmodel.summary()","metadata":{"id":"wH8w4iBWESCr","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.evaluate(X_test_pad, y_test)[1]","metadata":{"id":"3-PviYpwESCs","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# get predictions\nLSTM_preds = (model.predict(X_test_pad) > 0.5).astype(int)\nprint(\"Simple LSTM predictions \\n\", classification_report(y_test, LSTM_preds))","metadata":{"id":"ltg3uMMcESCt","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"LSTM_score = AUC_accuracy(y_test, LSTM_preds)\nLSTM_score","metadata":{"id":"qUXOrjAhESCt","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Drawbacks of Using LSTM Networks\n##### As it is said, everything in this world comes with its own advantages and disadvantages, LSTMs too, have a few drawbacks which are discussed below: \n\n- LSTMs became popular because they could solve the problem of vanishing gradients. But it turns out, they fail to remove it completely. The problem lies in the fact that the data still has to move from cell to cell for its evaluation. Moreover, the cell has become quite complex now with additional features (such as forget gates) being brought into the picture.\n- They require a lot of resources and time to get trained and become ready for real-world applications. In technical terms, they need high memory bandwidth because of the linear layers present in each cell which the system usually fails to provide. Thus, hardware-wise, LSTMs become quite inefficient.\n- With the rise of data mining, developers are looking for a model that can remember past information for a longer time than LSTMs. The source of inspiration for such kind of model is the human habit of dividing a given piece of information into small parts for easy remembrance.\n- LSTMs get affected by different random weight initialization and hence behave quite similarly to that of a feed-forward neural net. They prefer small-weight initialization instead.\n- LSTMs are prone to overfitting and it is difficult to apply the dropout algorithm to curb this issue. Dropout is a regularization method where input and recurrent connections to LSTM units are probabilistically excluded from activation and weight updates while training a network.\n","metadata":{}},{"cell_type":"markdown","source":"# GRU","metadata":{}},{"cell_type":"markdown","source":"#### GRU v/s LSTM\n**In spite of being quite similar to LSTMs, GRUs have never been so popular. But what are GRUs? GRU stands for Gated Recurrent Units. As the name suggests, these recurrent units, proposed by Cho, are also provided with a gated mechanism to effectively and adaptively capture dependencies of different time scales. They have an update gate and a reset gate. The former is responsible for selecting what piece of knowledge is to be carried forward, whereas the latter lies in between two successive recurrent units and decides how much information needs to be forgotten**\n\n![unrolled3.png](attachment:2a478b22-79d3-4006-a2e3-68d99c119d4d.png)","metadata":{},"attachments":{"2a478b22-79d3-4006-a2e3-68d99c119d4d.png":{"image/png":"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Bgs3GCz3leLfJX3iDWHWDWCOif7bPWwj7FCWX375h3+dZpnNui9ed/DUDz91sNzPi7dFMkgossb9rJqlm5VWWmkw7y3zBst9rXhbJIM85adPGfuzOmlmuxZcKIrGPW7ShDMvZnL11VePfdyk+frXv14+crxQFI173KSZrbgLR2KMe9ykme1VAUMhNO5xk2a2IjCc5jzuccti1tt0vcGq/7TqYLnbi7dFMsjTt3762J/VNk94QanwB/APXPeB6Csdk/h576TnqKOlUchoYVVldH22ImvShPuEjPvY49ZTF1nhFXo+/vGPD4466qjBxz72seGh80ccccTgH/7hHwYf+chHhhc2/tCHPjT44Ac/OFi0aNHgAx/4wPAV/EJjH14F433ve9/goIMOGrz3ve8dXkvigAMOGF5j6l3vetdg//33H77a19vf/vbB3/7t3w4Po9tnn30Ge++99/Aw1nCBtHC1/7e+9a3Di6u++c1vHuy6667Dc0jDqTrh5e9f//rXD3baaafBwoULB6973esGCxYsGJ7X/Zd/+ZfDC6htt912w1cbCqcJbL311oNXvepVg/nz5w9e+cpXDv7iL/5i8IpXvGKwxRZbDP7n//yfg80222x4ocNw1NSGG2442GCDDYanC7zsZS8brLfeeoOXvOQlw5fPXG211R75TZ7jhOvmfO5znxuesuiIrDG5spiz67eWPoqspcoTV3vi8OfbTJ4nP/nJD/9ZWIKpjsgKhx87IktySyiyxv3M93FSHJEVTl9wRJbklHBE1iqrrTL2Z37czFbEhNNtxj1u0szliKxxj5s0czkia9zjJk04HWgm4YiscY+bNLMdkRWKu3GPmzRzOSJr3OPiWWWVVcbut+Yy1RFZ4RIujsiS3LLGa9YYnpYXyp/w+/Zaa601vJbls571rMH/+B//Y/jz+/znP3/wwhe+cDBv3rzhCzS99KUvHT7PD8/3w3P/0AOEPiC8smDoCEJfEHqDV7/61cMuIfQK4XTB0DWEziH0DzvvvPOwkwjdROgpQmcRuos99thjsO66647dlmabv/qrvxp89atfLbfsOZxaGD/vnSnVfaqCaa5F1mxr8fsMqdaq5+CjhVWVceuT7jsxLJFQutXf4DlMKMFC6Tf6SmaKrCh3FfPOYsL3bGnP3Y2jyFqquEbW7FwjS7oa18hazDWypItxjSxcI0u6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AF30whe+8BH7vL333ru8FRhHkUXrhJfef/zjH/+IHX6Y73//++W9gK7Yf//9x27vu+++e3kPoCuuuuqqsdt7mF//+tflvQC6YdIf61ZZZZXBH//4x/JewChFFq1z4oknjt3hh3nHO95R3gvoinB9nHHb+4orrji4//77y3sBXbBo0aKx23uYo48+urwXQDe8853vHLu/C/PFL36xvBcwSpFF6/zlX/7l2J19mKc97WnlvYAuOOecc8Zu69Ucd9xx5T2BLggXOR63rYfZeOONy3sBdMOkP9aFec1rXlPeCxilyKJV7rjjjrE7+ni+/OUvl/cG2i6cPjhuO69m/vz55T2Btvve9743djuP57LLLivvDdBuX/va18bu5+K5/vrry3sDMUUWrfLpT3967E4+nh133LG8N9B24RoR47bzeH7605+W9wba7N3vfvfYbTyecB+ALpjtj3VhPvShD5X3BmKKLFplyy23HLuTH51bbrmlfATQVqeeeurY7Xt0PvCBD5SPANps7bXXHruNx7PmmmuW9wZorwcffHBOf6z78z//8/IRQEyRRWtcd911Y3fw4+bII48sHwW01cKFC8du36Pz3Oc+t3wE0Fbf+MY3xm7f4+Zf/uVfykcBtNNc/1gX5vzzzy8fBVQUWbTGRz7ykbE793Hzspe9rHwU0EZ333332G170oQnwUB7ve1tbxu7bY+bnXbaqXwUQDvN9Y91Yfbaa6/yUUBFkUVrhHJq3M590lx88cXlI4G2+fznPz92u540b33rW8tHAm30lKc8Zey2PWnCi78AtNGS/rFu5ZVXHvzhD38oHw0Eiixa4fLLLx+7Y59p3v72t5ePBtrm1a9+9djtetI8/vGPH9x3333lo4E2+epXvzp2u55pjj766PLRAO2ypH+sC3PCCSeUjwYCRRatcPDBBw/e8pa3DPbYY4/h6Qf77LPPYMGCBfXOfd68eYP3vOc9g/e+972D973vfYNDDjlkcOihh5aPBtrkxhtvHOy6666D3XbbbfiKPmGb33vvvQdPe9rT6m1+v/32GxxwwAGDAw88cLh/+Pu///vBscceW74HoE122WWXwZvf/ObhkZV77rnn8DSa+MVdNttss+GrFYb/zx900EHD/8+///3vLx8N0C7j9nkbb7xxvc/baquthvu88DuOfR6Mp8iitS688MJ6hx/+ZwB02/rrr19v8+GwfKC7/s//+T/19n7YYYeVqwDd9LGPfaze5336058uV4FJFFm0VrgGVrXD/+u//utyFeiqDTbYoN7m77zzznIV6KJwGk21vS9atKhcBeimj3/84/U+75Of/GS5CkyiyKK1fvCDH9Q7/De+8Y3lKtBV8WH3LvQM3XbSSSfV27tLBQBdF677V+3zPvGJT5SrwCSKLFrrhz/8Yb3D33nnnctVoKs23XTTepu/7bbbylWgi0455ZR6ew/XvQTosk996lP1Pu+oo44qV4FJFFm0VvxKhgsXLixXga7afPPN623+lltuKVeBLjr11FPr7T28oANAl33mM5+p93lHHnlkuQpMosiita644op6hx9ewRDotle84hX1Nv/LX/6yXAW66Ktf/Wq9vYdXJAbosmOOOabe5/3DP/xDuQpMosiitX784x/XO/zXvva15SrQVa985Svrbf6GG24oV4EuOv300+vt/YADDihXAbrp2GOPrfd5H/7wh8tVYBJFFq119dVX1zv87bffvlwFumr+/Pn1Nn/99deXq0AXnXnmmfX2/q53vatcBeim448/vt7nHXbYYeUqMIkii9b6yU9+Uu/wX/Oa15SrQFdtvfXW9Tb/s5/9rFwFuuiss86qt/f999+/XAXophNOOKHe5y1atKhcBSZRZNFa4YlstcMPT3CBbtt2223rbT4U2UB3nXPOOfX2vt9++5WrAN104okn1vu8Qw89tFwFJlFk0Vo///nP6x1+OOUI6LZwCnG1zYdTi4HuOvfcc+vtfd999y1XAbrplFNOqfd5hxxySLkKTKLIorXCxZ6rHX64CDTQbeFFHaptPrzYA9Bd3/zmN+vtfe+99y5XAbrpS1/6Ur3PO/jgg8tVYBJFFq0VXn6/2uGHl+UHum3BggX1Nn/FFVeUq0AX/du//Vu9ve+5557lKkA3feUrX6n3eQceeGC5CkyiyKK1brnllnqHv/nmm5erQFctXLiw3uYvv/zychXoovPPP7/e3nffffdyFaCbTj/99Hqfd8ABB5SrwCSKLFrrtttuq3f4m266abkKdNXOO+9cb/OXXnppuQp00Xe/+916e99tt93KVYBuOuOMM+p93rve9a5yFZhEkUVr3XHHHfUOf6ONNipXga564xvfWG/zP/jBD8pVoIsuuuiienvfddddy1WAbjrrrLPqfd7+++9frgKTKLJorTvvvLPe4W+wwQblKtBVu+yyS73NX3zxxeUq0EXf//736+39TW96U7kK0E1nn312vc/bb7/9ylVgEkUWrfX//t//q3f4L3vZy8pVoKve/OY319v8hRdeWK4CXXTJJZfU2/sb3vCGchWgm84999x6n/c3f/M35SowiSKL1rr33nvrHf5LX/rScnUOLj6sftxh1UEdN500WFCuLTj51nIRyMlb3/rWetv9zne+U67OgW0eWueyyy6rt9uddtqpXAXopm984xv1Pm/vvfcuV4FJFFm01m9/+9t6h/+iF72oXJ2bixY99LjlljtscNHg1sFJC8u3F55UvAXkaI899qi3+W9/+9vl6tzY5qFd/v3f/73e3l/3uteVqwDddN5559X7vD333LNcBSZRZNFa999/f73DnzdvXrk6VxcNDisfu3gWDE66qbwZyM5ee+1Vb6/f+ta3ytW5ss1Dm1x55ZX1trrjjjuWqwDddP7559f7vN13371cBSZRZNFaDzzwQL3Df8ELXlCuLoHodKMw9SlHQJb22WefensNh+AvMds8tMZVV11Vb6s77LBDuQrQTRdccEG9z9ttt93KVWASRRat9cc//rHe4T/3uc8tV5dEfIRGON0IyNnf/u3f1tv81772tXJ1SdjmoS2uueaaenvfbrvtytVZuB4e0FIXXXRRvf/addddy9UlYP9HzyiyaLXll19+uHNeZ511ypW5W3zNnHIWeVoLOXvHO95Rb6//+q//Wq7OnW0e2uPaa6+tt9VtttmmXJ2d6+EBbfS9732v3ue96U1vKleXjP0ffaLIotUe85jHDHfQz3rWs8qVOYr/arFozF8wgOy8853vrLfV//t//2+5Oke2eWiV6667rt5OX/3qV5erc+F6eED7XHLJJfU+6/Wvf325uqTs/+gPRRat9rjHPW64k1577bXLlbmIdvLlERmL/4JhZw+5eve7311up8sN/uVf/qVcnQvbPLTNL37xi3p732qrrcrVOXI9PKBlLr300nqftdNOO5WrS8H+j55QZNFqK6644nAnvdZaa5Urs3v4YbeV6Imuw28hS+95z3vKbXe5wWmnnVauzs42D+1z00031dv7lltuWa7OVXxUguvhAfn70Y9+VO/zXve615WrS8P+j35QZNFqT3jCE4Y76mc84xnlSmoPnV/uAonQvIMOOqj+Je/LX/5yuZrOrScvqN+/cguadfPNN9fb4xZbbFGuzs3i8roc18MDMnfllVfW+6wdd9yxXF1y9n/0hSKLVltllVWGO+mnP/3p5UpKiy+SqMiC5r3vfe+rfzH70pe+VK6m8tBfMB86BF+BDU371a9+VW/vm222Wbk6B66HB7TQf/zHf9T7qx122KFcXUL2f/SIIotWe8pTnjLcQT/1qU8tV9IJf9FYcPJJwye3ntBC897//vfXv5SdfPLJ5eqy8FCpZbuH5tx+++319r7JJpuUq7OJTqlxPTygRa655pp6n7fddtuVq0vC/o9+UWTRaqutttpwB73qqquWK6l5Qgu5+MAHPlD+Qrbc4Itf/GK5mlp1JKZf+qBJv/nNb+rtfcMNNyxXZ7b4SZvr4QHt8tOf/rTe522zzTbl6tzZ/9E3iixabfXVVx/unJ/0pCeVK6kpsiAXH/zgB8tf0pYbfOELXyhXU1p8OrHD8KFZd911V729v/zlLy9XE4lOv/H/dyAH1113Xb1fetWrXlWuLjvD4ku5RYspsmi1NdZYY7jDX3nllcuV1BRZkIvDDz+8/iXvuOOOK1fTeeivmY7Eghzcc8899fa+3nrrlaspRP9fv+mkwQLbPJCB66+/vt7nbbXVVuXqMlKV+YosWkyRRautueaawx3xSiutVK6kpsiCXHzkIx+pf8n7/Oc/X64mMnxC+9D7rsZ2D835z//8z3pbfPGLX1yuJqbIAjJx44031vu8LbfcslxdFsJzm8MGhzkii5ZTZNFqf/Znfzbc4f/pn/5puQJ01Uc/+tH6l7zPfe5z5SrQRffdd1+9va+77rrlakJlee00YiAHN998c73P22KLLcrV9G49ecHwD3VOLaTtFFm02jOf+czhDv+xj31suQJ01cc+9rH6l7zPfOYz5SrQRb///e/r7f2FL3xhuZraQ9fFc/Ql0LRbb7213udtttlm5WpiocAvyytFFm2nyKLVnv3sZw93+CussEK5AnTVxz/+8fqXvE9+8pPlKtBFf/jDH+rt/fnPf365msJDlwx46Egslw8A8nD77bfX+7xNNtmkXE0rHI1VfYx6Fi1+jUNoE0UWrfac5zyn3hED3Xb00UfX2/snPvGJchXoqmp7D/+vTyp61UJHJAA5+PWvf13vlzbccMNyddlxRBZt59k/rRb+Slvt9MNfb4Hu+tSnPlVv70cddVS5CnRVONo6bO/h6GuALrvrrrvq33HWX3/9chWYRJFFq4XrZlQ7/XA9DaC7PvvZz9bb+5FHHlmuAl0Vrn8ZtvdwPUyALrv77rvr33HWW2+9chWYRJFFq4VXMqp2+uEVjoDuOuaYY+rt/YgjjihXga4Kr0gctvfwCsUAXfaf//mf9e84L37xi8tVYBJFFq0WdvTVTj/8DwDormOPPbbe3j/84Q+Xq0BXrbTSSsPtfc011yxXALop/EG++h0n/KEemJkii1YLh95WO/177rmnXAW66Pjjj6+398MOO6xcBbpq5ZVXHm7va6yxRrkC0E2/+93v6t9xwqVTgJkpsmi1cDHEaqcfLpIIdNcJJ5xQb++LFi0qV4GuetKTnjTc3ldfffVyBaCbwotWVb/jPO95zytXgUkUWbRaeHnaaqf/m9/8plwFuuikk06qt/dDDz20XAW6atVVVx1u76uttlq5AtBNDz74YP07znOe85xyFZhEkUWrbbLJJvVO//bbby9XgS465ZRT6u39kEMOKVeBrnrqU5863N6f/OQnlysA3bXCCisM93nPfvazyxVgEkUWrbbZZpvVT2x/9atflatAF5166qn19n7wwQeXq0BXPf3pTx9u76usskq5AtBdj33sY4f7vGc+85nlCjCJIotW22KLLeontjfffHO5CnTRV77ylXp7f+9731uuAl31jGc8Y7i9P+EJTyhXALrr8Y9//HCf92d/9mflCjCJIotW23LLLesntjfeeGO5CnTR6aefXm/vBxxwQLkKdNVaa6013N5XXHHFcgWgu1ZaaaXhPm/NNdcsV4BJFFm02lZbbVU/sf3FL35RrgJddMYZZ9Tb+9/93d+Vq0BXrb322sPt/XGPe1y5AtBdK6+88nCft8Yaa5QrwCSKLFrtVa96Vf3E9rrrritXgS4666yz6u19//33L1eBrnrWs5413N4f85jHlCsA3fWkJz1puM972tOeVq4AkyiyaLVtttmmfmJ77bXXlqtAF51zzjn19r7ffvuVq0BXrbPOOsPtffnlly9XALpr1VVXHe7zVltttXIFmESRRattt9129RPba665plwFuujcc8+tt/d99923XAW66nnPe169zT/44IPlKkA3hSOxwv7uyU9+crkCTKLIotV22GGH+pfcq666qlwFuuib3/xmvb3vvffe5SrQVS94wQvqbf6BBx4oVwG66elPf/pwf7fKKquUK8Akiixabccdd6x/yb3yyivLVaCLzjvvvHp7f9vb3lauAl01b968epu///77y1WAbnrGM54x3N894QlPKFeASRRZtNrrXve6+pfcH/3oR+Uq0EXnn39+vb3vvvvu5SrQVS960Yvqbf63v/1tuQrQTWuttdZwf7fiiiuWK8Akiixabaeddqp/yb3sssvKVaCLvvvd79bb+2677VauAl310pe+tN7m77333nIVoJvWXnvt4f7ucY97XLkCTKLIotVe//rX17/kXnLJJeUq0EUXXXRRvb3vuuuu5SrQVeuvv369zd99993lKkA3PetZzxru7/7kT/6kXAEmUWTRam9605vqX3K///3vl6tAF4VtvNrew7YPdNsGG2xQb/N33nlnuQrQTeuss85wf7f88suXK8AkiixaLRyVUf2SG47WALorHHVZbe9veMMbylWgqzbeeON6m//1r39drgJ00/Oe97x6n/fggw+Wq8A4iixaLVwnp9rhX3DBBeUq0EXhOnjV9h6ujwd026abblpv87fddlu5CtBNL3jBC+p93gMPPFCuAuMosmi18Mpl1Q4/vKIZ0F3hlUmr7f2v/uqvylWgqzbffPN6m7/lllvKVYBumjdvXr3Pu//++8tVYBxFFq2255571jv88847r1wFuujKK6+st/cdd9yxXAW66hWveEW9zf/yl78sVwG66UUvelG9z/vtb39brgLjKLJotb333rve4X/zm98sV4Euuuqqq+rtfYcddihXga565StfWW/zN9xwQ7kK0E0vfelL633evffeW64C4yiyaLV999233uGfe+655SrQRddcc029vW+33XblKtBV8+fPr7f566+/vlwF6KaXvexl9T7v7rvvLleBcRRZtNp+++1X7/DPOeecchXoomuvvbbe3rfZZptyFeiqrbfeut7mf/azn5WrAN20wQYb1Pu8O++8s1wFxlFk0Wr7779/vcM/66yzylWgi6677rp6e3/1q19drgJdte2229bb/E9/+tNyFaCbNt5443qfd8cdd5SrwDiKLFrtXe96V73DP+OMM8pVoIt+8Ytf1Nv7VlttVa4CXbX99tvX2/zVV19drgJ006abblrv82677bZyFRhHkUWrHXDAAfUO//TTTy9XgS666aab6u39L/7iL8pVoKte+9rX1tv8j3/843IVoJs233zzep93yy23lKvAOIosWu3AAw+sd/hf+cpXylWgi26++eZ6e99iiy3KVaCrFixYUG/zV1xxRbkK0E2veMUr6n3eL3/5y3IVGEeRRasdfPDB9Q7/1FNPLVeBLvrVr35Vb++bbbZZuQp01cKFC+tt/vLLLy9XAbrpla98Zb3Pu+GGG8pVYBxFFq12yCGH1Dv8U045pVwFuuj222+vt/dNNtmkXAW6auedd663+UsvvbRcBeim+fPn1/u866+/vlwFxlFk0WqHHnpovcM/6aSTylWgi37zm9/U2/uGG25YrgJd9cY3vrHe5n/wgx+UqwDdtPXWW9f7vJ/97GflKjCOIotWW7RoUb3DP+GEE8pVoIvuuuuuent/+ctfXq4CXbXLLrvU2/z3vve9chWgm7bddtt6n/eTn/ykXAXGUWTRaocddli9wz/++OPLVaCL7rnnnnp7X2+99cpVoKve/OY319v8hRdeWK4CdNP2229f7/OuvvrqchUYR5FFq334wx+ud/jHHntsuQp00X/913/V2/tLXvKSchXoqre+9a31Nv+d73ynXAXopte+9rX1Pu/HP/5xuQqMo8ii1Y444oh6h3/MMceUq0AX3XffffX2vu6665arQFftscce9Tb/7W9/u1wF6KYFCxbU+7wrrriiXAXGUWTRakceeWS9w//sZz9brgJd9Pvf/77e3l/4wheWq0BX7bXXXvU2/61vfatcBeimhQsX1vu8yy+/vFwFxlFk0WpHHXXUYPnllx885jGPGXzqU58qV4Eu+sMf/jD85S5s889//vPLVaCr9tlnn+E2v8IKKwy+8Y1vlKsA3fT617++3uddeuml5SowjiKLVvvjH/9Y/hvQB7Z56I9QXj/44IPlWwDdZp8Hc6fIAgAAAKAVFFkAAAAAtIIiCwAAAIBWUGQBAAAA0AqKLAAAAABaQZEFAAAAQCsosgAAAABoBUUWAAAAAK2gyAIAAACgFRRZAAAAALSCIgsAAACAVlBkAQAAANAKiiwAAAAAWkGRBQAAAEArKLIAAAAAaAVFFgAAAACtoMgCAAAAoBUUWQAAAAC0giILAAAAgFZQZAEAAADQCoosAAAAAFpBkQUAAABAKyiyAAAAAGgFRRYAAAAAraDIAgAAAKAVFFkAAAAAtIIiCwAAAIBWUGQBAAAA0AqKLAAAAABaQZEFAAAAQCsosgAAAABoBUUWAAAAAK2gyAIAAACgFRRZAAAAALSCIgsAAACAVlBkAQAAANAKiiwAAAAAWkGRBQAAAEALDAb/H02/TVBUYODBAAAAAElFTkSuQmCC"}}},{"cell_type":"code","source":"# A GRU with GloVe embeddings\nwith strategy.scope():\n    # Create the model\n    model = Sequential()\n\n    # Add layers\n    model.add(Embedding(input_dim=vocab_size,\n                        output_dim=embedding_dim,\n                        input_length=max_len,\n                        weights=[embed_matrix],\n                        trainable=False\n                       ))\n\n    model.add(GRU(128, return_sequences=True))\n    model.add(Dropout(0.2))\n\n    model.add(GRU(128))\n    model.add(Dropout(0.2))\n\n    model.add(Dense(1024, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(512, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(256, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    # for binary classification\n    model.add(Dense(1, activation='sigmoid'))\n    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n\nmodel.fit(X_train_pad, y_train,\n          validation_data=(X_val_pad, y_val),\n          epochs=20,\n          batch_size=64*strategy.num_replicas_in_sync,\n          callbacks=[EarlyStopping(monitor='val_loss', patience=3, verbose=1)])\n\nmodel.summary()","metadata":{"id":"DNXrHPHlESCt","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.evaluate(X_test_pad, y_test)[1]","metadata":{"id":"TugIWFvUESCu","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# get predictions\nGRU_preds = (model.predict(X_test_pad) > 0.5).astype(int)\nprint(\"Simple GRU predictions \\n\", classification_report(y_test, GRU_preds))","metadata":{"id":"zFEN-WCNESCu","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"GRU_score = AUC_accuracy(y_test, GRU_preds)\nGRU_score","metadata":{"id":"dAxtGngTESCu","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Bidirectional LSTM","metadata":{}},{"cell_type":"markdown","source":"**The architecture of bidirectional LSTM comprises of two unidirectional LSTMs which process the sequence in both forward and backward directions. This architecture can be interpreted as having two separate LSTM networks, one gets the sequence of tokens as it is while the other gets in the reverse order. Both of these LSTM network returns a probability vector as output and the final output is the combination of both of these probabilities. It can be represented as:**\n\n![Bidirectional-LSTM-(1).jpg](attachment:07fd33ac-fcbc-42c5-b5e1-a5028a1969bb.jpg)","metadata":{},"attachments":{"07fd33ac-fcbc-42c5-b5e1-a5028a1969bb.jpg":{"image/jpeg":"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"}}},{"cell_type":"markdown","source":"**To better understand this let us see an example. The first statement is “Server can you bring me this dish” and the second statement is “He crashed the server”. In both these statements, the word server has different meanings and this relationship depends on the following and preceding words in the statement. The bidirectional LSTM helps the machine to understand this relationship better than compared with unidirectional LSTM. This ability of BiLSTM makes it a suitable architecture for tasks like sentiment analysis, text classification, and machine translation.**","metadata":{}},{"cell_type":"code","source":"# A simpleRNN without any pretrained embeddings and one dense layer\nwith strategy.scope():\n    # Create the model\n    model = Sequential()\n\n    # Add layers\n    model.add(Embedding(input_dim=vocab_size,\n                        output_dim=embedding_dim,\n                        input_length=max_len,\n                        weights=[embed_matrix],\n                        trainable=False\n                       ))\n\n    model.add(Bidirectional(LSTM(100, return_sequences=True)))\n    model.add(Dropout(0.2))\n\n    model.add(Bidirectional(LSTM(100)))\n    model.add(Dropout(0.2))\n\n    model.add(Dense(1024, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(512, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    model.add(Dense(256, activation='relu'))\n    model.add(BatchNormalization())\n    model.add(Dropout(0.2))\n\n    # for binary classification\n    model.add(Dense(1, activation='sigmoid'))\n    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n\nmodel.fit(X_train_pad, y_train,\n          validation_data=(X_val_pad, y_val),\n          epochs=20,\n          batch_size=64*strategy.num_replicas_in_sync,\n          callbacks=[EarlyStopping(monitor='val_loss', patience=3, verbose=1)])\n\nmodel.summary()","metadata":{"id":"zcJ2s_eLeilZ","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.evaluate(X_test_pad, y_test)[1]","metadata":{"id":"VSck4pf5ESCv","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# get predictions\nBiLSTM_preds = (model.predict(X_test_pad) > 0.5).astype(int)\nprint(\"Bidirectional LSTM predictions \\n\", classification_report(y_test, BiLSTM_preds))","metadata":{"id":"cAdgCPT_ESCv","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"BiLSTM_score = AUC_accuracy(y_test, BiLSTM_preds)\nBiLSTM_score","metadata":{"id":"aFY6qImuESCv","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"##### Continued With BERT and GPTs ..","metadata":{}},{"cell_type":"code","source":"# ..","metadata":{},"execution_count":null,"outputs":[]}]}