From 20340a6bdb0aa4783eda0e6373759f54b8221dd6 Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 15:53:08 +0530 Subject: [PATCH 01/18] Create Toxic Comment Analysis --- Toxic Comment Analysis | 1 + 1 file changed, 1 insertion(+) create mode 100644 Toxic Comment Analysis diff --git a/Toxic Comment Analysis b/Toxic Comment Analysis new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Toxic Comment Analysis @@ -0,0 +1 @@ + From 561201374362add0faad5106bb286de6224d554e Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 15:54:31 +0530 Subject: [PATCH 02/18] Delete Toxic Comment Analysis --- Toxic Comment Analysis | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Toxic Comment Analysis diff --git a/Toxic Comment Analysis b/Toxic Comment Analysis deleted file mode 100644 index 8b1378917..000000000 --- a/Toxic Comment Analysis +++ /dev/null @@ -1 +0,0 @@ - From fac547d00fc09439ba1b434d6f16bb2e5e5d45db Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 15:56:02 +0530 Subject: [PATCH 03/18] Create index.html --- Toxic Comment Analysis/index.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 Toxic Comment Analysis/index.html diff --git a/Toxic Comment Analysis/index.html b/Toxic Comment Analysis/index.html new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Toxic Comment Analysis/index.html @@ -0,0 +1 @@ + From 3753949cdd73277d0ca640e54469f0005bdefa2a Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 15:57:22 +0530 Subject: [PATCH 04/18] Create Dataset --- Toxic Comment Analysis/Dataset | 1 + 1 file changed, 1 insertion(+) create mode 100644 Toxic Comment Analysis/Dataset diff --git a/Toxic Comment Analysis/Dataset b/Toxic Comment Analysis/Dataset new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Toxic Comment Analysis/Dataset @@ -0,0 +1 @@ + From 5f3f4b3b9d42e2fd2bb26ce51e3738a3e172a4cd Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:05:29 +0530 Subject: [PATCH 05/18] Delete Dataset --- Toxic Comment Analysis/Dataset | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Toxic Comment Analysis/Dataset diff --git a/Toxic Comment Analysis/Dataset b/Toxic Comment Analysis/Dataset deleted file mode 100644 index 8b1378917..000000000 --- a/Toxic Comment Analysis/Dataset +++ /dev/null @@ -1 +0,0 @@ - From ac2045e35e71146e8f9842a6ce48f038e0b2c854 Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:05:46 +0530 Subject: [PATCH 06/18] Delete index.html --- Toxic Comment Analysis/index.html | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Toxic Comment Analysis/index.html diff --git a/Toxic Comment Analysis/index.html b/Toxic Comment Analysis/index.html deleted file mode 100644 index 8b1378917..000000000 --- a/Toxic Comment Analysis/index.html +++ /dev/null @@ -1 +0,0 @@ - From 5fd63695677a8adca1eeb46e7bf5552109dd5100 Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:09:06 +0530 Subject: [PATCH 07/18] Create README.md --- Toxic Comment Analysis/Dataset/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Toxic Comment Analysis/Dataset/README.md diff --git a/Toxic Comment Analysis/Dataset/README.md b/Toxic Comment Analysis/Dataset/README.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Toxic Comment Analysis/Dataset/README.md @@ -0,0 +1 @@ + From 606c83cdc2922a21957422db829ba0152744cdfb Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:38:35 +0530 Subject: [PATCH 08/18] Update README.md --- Toxic Comment Analysis/Dataset/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Toxic Comment Analysis/Dataset/README.md b/Toxic Comment Analysis/Dataset/README.md index 8b1378917..120e9c8eb 100644 --- a/Toxic Comment Analysis/Dataset/README.md +++ b/Toxic Comment Analysis/Dataset/README.md @@ -1 +1,3 @@ - +DATASET +Dataset can be found at below link. +https://www.kaggle.com/datasets/devkhant24/toxic-comment From 72f747b09462ffa8bc53f7e95ffe534915ebe26d Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:38:54 +0530 Subject: [PATCH 09/18] Update README.md --- Toxic Comment Analysis/Dataset/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Toxic Comment Analysis/Dataset/README.md b/Toxic Comment Analysis/Dataset/README.md index 120e9c8eb..61d692dfe 100644 --- a/Toxic Comment Analysis/Dataset/README.md +++ b/Toxic Comment Analysis/Dataset/README.md @@ -1,3 +1,6 @@ DATASET + + + Dataset can be found at below link. https://www.kaggle.com/datasets/devkhant24/toxic-comment From 0182cf54c453f1568f67920df2a7ca32980e38bf Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:39:16 +0530 Subject: [PATCH 10/18] Update README.md --- Toxic Comment Analysis/Dataset/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Toxic Comment Analysis/Dataset/README.md b/Toxic Comment Analysis/Dataset/README.md index 61d692dfe..d5e3ea76c 100644 --- a/Toxic Comment Analysis/Dataset/README.md +++ b/Toxic Comment Analysis/Dataset/README.md @@ -2,5 +2,6 @@ DATASET -Dataset can be found at below link. +Dataset can be found at below link: + https://www.kaggle.com/datasets/devkhant24/toxic-comment From 31cbcf4afdbcff52eaaa45fa931128e670601c1c Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:57:27 +0530 Subject: [PATCH 11/18] Create toxic_comment_analysis.ipynb --- .../Models/README.md/toxic_comment_analysis.ipynb | 1 + 1 file changed, 1 insertion(+) create mode 100644 Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb diff --git a/Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb b/Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb @@ -0,0 +1 @@ + From 25d5fdc355049e95a58ec90df3c9b086593c548f Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 17:23:15 +0530 Subject: [PATCH 12/18] Delete Toxic Comment Analysis/Models/README.md directory --- .../Models/README.md/toxic_comment_analysis.ipynb | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb diff --git a/Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb b/Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb deleted file mode 100644 index 8b1378917..000000000 --- a/Toxic Comment Analysis/Models/README.md/toxic_comment_analysis.ipynb +++ /dev/null @@ -1 +0,0 @@ - From 5e17b9db045aa7c88e4cc14bece1caf02bfa5152 Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 18:07:55 +0530 Subject: [PATCH 13/18] Create README.md --- Toxic Comment Analysis/Model/README.md | 49 ++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Toxic Comment Analysis/Model/README.md diff --git a/Toxic Comment Analysis/Model/README.md b/Toxic Comment Analysis/Model/README.md new file mode 100644 index 000000000..db8ff72a0 --- /dev/null +++ b/Toxic Comment Analysis/Model/README.md @@ -0,0 +1,49 @@ +TOXIC COMMENT ANALYSIS + + +GOAL + +Implementtion of algorithm like keras Model with GRU units to see the accuracy score. + + +DATASET + +https://www.kaggle.com/datasets/devkhant24/toxic-comment + + +DESCRIPTION + +The main aim of the project is to make a model that helps to predict toxic comment on the given dataset. + + +WORK DONE + +Defining constants and cleaning of the comments. +Balacing the dataset and defining keras Model with GRU units. +Then tokenizing the comments from train dataset and predicting acuracy score of comment id. + + +LIBRARIES NEEDED + +Numpy +Pandas +math +os +re +unidecode + + +ACCURACY SCORE + +rosp + + +CONCLUSION + +We created a model which predict the toxic comments. The model gives an accuracy score of the comments on the dataset. + + +CONTRIBUTION BY + +Sumaiya Khan + From 6329efc2e269d4cd2ac57b5dcc30f75cc077e2cf Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 18:09:45 +0530 Subject: [PATCH 14/18] Add files via upload --- .../Model/TOXIC_COMMENT_ANALYSIS.ipynb | 825 ++++++++++++++++++ 1 file changed, 825 insertions(+) create mode 100644 Toxic Comment Analysis/Model/TOXIC_COMMENT_ANALYSIS.ipynb diff --git a/Toxic Comment Analysis/Model/TOXIC_COMMENT_ANALYSIS.ipynb b/Toxic Comment Analysis/Model/TOXIC_COMMENT_ANALYSIS.ipynb new file mode 100644 index 000000000..e4fa9f0c5 --- /dev/null +++ b/Toxic Comment Analysis/Model/TOXIC_COMMENT_ANALYSIS.ipynb @@ -0,0 +1,825 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4c7ae996", + "metadata": { + "papermill": { + "duration": 0.013811, + "end_time": "2021-11-14T04:34:51.059041", + "exception": false, + "start_time": "2021-11-14T04:34:51.045230", + "status": "completed" + }, + "tags": [], + "id": "4c7ae996" + }, + "source": [ + "\n", + "##Introduction \n", + "\n", + "It is simple approach to rate severity of toxic comments. And find probability of the comment to be toxic one and give the score based on the probability.\n", + "The final score is the probability predicted by the Model.\n", + "\n", + "Notebook is build upon this public kernel: https://www.kaggle.com/datasets/devkhant24/toxic-comment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f79be62", + "metadata": { + "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", + "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5", + "execution": { + "iopub.execute_input": "2021-11-14T04:34:51.092708Z", + "iopub.status.busy": "2021-11-14T04:34:51.091887Z", + "iopub.status.idle": "2021-11-14T04:34:57.436680Z", + "shell.execute_reply": "2021-11-14T04:34:57.435929Z", + "shell.execute_reply.started": "2021-11-14T04:24:35.812950Z" + }, + "papermill": { + "duration": 6.366657, + "end_time": "2021-11-14T04:34:57.436825", + "exception": false, + "start_time": "2021-11-14T04:34:51.070168", + "status": "completed" + }, + "tags": [], + "id": "9f79be62" + }, + "outputs": [], + "source": [ + "# Importing libraries\n", + "\n", + "import math\n", + "import os\n", + "import random\n", + "import numpy as np\n", + "import pandas as pd\n", + "import re\n", + "import unidecode\n", + "\n", + "from sklearn.model_selection import StratifiedKFold\n", + "from sklearn.metrics import accuracy_score\n", + "from bs4 import BeautifulSoup\n", + "from nltk.corpus import stopwords\n", + "from nltk.tokenize import word_tokenize\n", + "from imblearn.under_sampling import RandomUnderSampler\n", + "\n", + "import tensorflow as tf\n", + "from tensorflow.keras.layers import Dense, Dropout, GRU, Embedding, Bidirectional\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.preprocessing.text import Tokenizer\n", + "from tensorflow.keras.preprocessing.sequence import pad_sequences\n", + "from tensorflow.keras.callbacks import EarlyStopping" + ] + }, + { + "cell_type": "markdown", + "source": [ + " Defining constants" + ], + "metadata": { + "id": "F8Kg8G-p2zAr" + }, + "id": "F8Kg8G-p2zAr" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49a3ab06", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:34:57.467075Z", + "iopub.status.busy": "2021-11-14T04:34:57.466106Z", + "iopub.status.idle": "2021-11-14T04:34:57.467969Z", + "shell.execute_reply": "2021-11-14T04:34:57.468493Z", + "shell.execute_reply.started": "2021-11-14T04:19:34.522370Z" + }, + "papermill": { + "duration": 0.019856, + "end_time": "2021-11-14T04:34:57.468627", + "exception": false, + "start_time": "2021-11-14T04:34:57.448771", + "status": "completed" + }, + "tags": [], + "id": "49a3ab06" + }, + "outputs": [], + "source": [ + "\n", + "voc_size = 50000\n", + "max_sequence_length = 250\n", + "embedding_dim = 100\n", + "Batch_size = 16\n", + "\n", + "train_prev_comp = \"../input/toxic-comment/jigsaw-toxic-comment-train.csv\"\n", + "test_cur_comp = \"../input/jigsaw-toxic-severity-rating/comments_to_score.csv\"\n", + "\n", + "\n", + "def seed_everything():\n", + " np.random.seed(123)\n", + " random.seed(123)\n", + " tf.random.set_seed(123)\n", + " os.environ[\"TF_CPP_MIN_LOG_LEVEL\"] = '2'\n", + " os.environ['PYTHONHASHSEED'] = str(123)\n", + "\n", + "seed_everything()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab0dd5fe", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:34:57.500523Z", + "iopub.status.busy": "2021-11-14T04:34:57.499735Z", + "iopub.status.idle": "2021-11-14T04:34:57.501985Z", + "shell.execute_reply": "2021-11-14T04:34:57.502459Z", + "shell.execute_reply.started": "2021-11-14T04:19:34.533779Z" + }, + "papermill": { + "duration": 0.022171, + "end_time": "2021-11-14T04:34:57.502606", + "exception": false, + "start_time": "2021-11-14T04:34:57.480435", + "status": "completed" + }, + "tags": [], + "id": "ab0dd5fe" + }, + "outputs": [], + "source": [ + "# Function for cleaning comments\n", + "\n", + "def clean_data(data):\n", + " final = []\n", + " for sent in data:\n", + " sent = sent.replace('\\\\n', ' ').replace('\\n', ' ').replace('\\t',' ').replace('\\\\', ' ').replace('. com', '.com')\n", + " soup = BeautifulSoup(sent, \"html.parser\")\n", + " sent = soup.get_text(separator=\" \")\n", + " remove_https = re.sub(r'http\\S+', '', sent)\n", + " sent = re.sub(r\"\\ [A-Za-z]*\\.com\", \" \", remove_https)\n", + " sent = unidecode.unidecode(sent)\n", + " sent = sent.lower()\n", + " sent = re.sub(r\"[^a-zA-Z0-9:$-,()%.?!]+\", ' ', sent) \n", + " sent = re.sub(r\"[:$-,()%.?!]+\", ' ',sent)\n", + " stoplist = stopwords.words(\"english\")\n", + " sent = [word for word in word_tokenize(sent) if word not in stoplist]\n", + " sent = \" \".join(sent)\n", + " final.append(sent)\n", + " \n", + " return final" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "905c0723", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:34:57.531781Z", + "iopub.status.busy": "2021-11-14T04:34:57.531111Z", + "iopub.status.idle": "2021-11-14T04:35:00.259353Z", + "shell.execute_reply": "2021-11-14T04:35:00.260529Z", + "shell.execute_reply.started": "2021-11-14T04:19:34.546950Z" + }, + "papermill": { + "duration": 2.746227, + "end_time": "2021-11-14T04:35:00.260737", + "exception": false, + "start_time": "2021-11-14T04:34:57.514510", + "status": "completed" + }, + "tags": [], + "id": "905c0723", + "outputId": "45b5bf8b-756a-4a5a-8460-fda673716ded" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
comment_texty
0Explanation\\nWhy the edits made under my usern...0
1D'aww! He matches this background colour I'm s...0
2Hey man, I'm really not trying to edit war. It...0
3\"\\nMore\\nI can't make any real suggestions on ...0
4You, sir, are my hero. Any chance you remember...0
\n", + "
" + ], + "text/plain": [ + " comment_text y\n", + "0 Explanation\\nWhy the edits made under my usern... 0\n", + "1 D'aww! He matches this background colour I'm s... 0\n", + "2 Hey man, I'm really not trying to edit war. It... 0\n", + "3 \"\\nMore\\nI can't make any real suggestions on ... 0\n", + "4 You, sir, are my hero. Any chance you remember... 0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Reading train file from previous competition\n", + "\n", + "df = pd.read_csv(train_prev_comp)\n", + "\n", + "\n", + "df[\"y\"] = (df[[\"toxic\", \"severe_toxic\", \"obscene\", \"threat\", \"insult\", \"identity_hate\"]].sum(axis=1) > 0).astype(int)\n", + "df.drop([\"id\",\"toxic\", \"severe_toxic\", \"obscene\", \"threat\", \"insult\", \"identity_hate\"], axis=1, inplace = True)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2c0e3db0", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:35:00.316965Z", + "iopub.status.busy": "2021-11-14T04:35:00.314873Z", + "iopub.status.idle": "2021-11-14T04:35:00.321233Z", + "shell.execute_reply": "2021-11-14T04:35:00.322026Z", + "shell.execute_reply.started": "2021-11-14T04:19:37.178205Z" + }, + "papermill": { + "duration": 0.039247, + "end_time": "2021-11-14T04:35:00.322245", + "exception": false, + "start_time": "2021-11-14T04:35:00.282998", + "status": "completed" + }, + "tags": [], + "id": "2c0e3db0", + "outputId": "9cd6dfda-1f09-4669-e48b-1289938d74f0" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 201081\n", + "1 22468\n", + "Name: y, dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Seeing that dataset is imbalanced\n", + "\n", + "df[\"y\"].value_counts()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Balacing dataset" + ], + "metadata": { + "id": "XSrdS9zI2-8p" + }, + "id": "XSrdS9zI2-8p" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbed13aa", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:35:00.375695Z", + "iopub.status.busy": "2021-11-14T04:35:00.374580Z", + "iopub.status.idle": "2021-11-14T04:35:00.540196Z", + "shell.execute_reply": "2021-11-14T04:35:00.541009Z", + "shell.execute_reply.started": "2021-11-14T04:19:37.189664Z" + }, + "papermill": { + "duration": 0.196883, + "end_time": "2021-11-14T04:35:00.541396", + "exception": false, + "start_time": "2021-11-14T04:35:00.344513", + "status": "completed" + }, + "tags": [], + "id": "dbed13aa", + "outputId": "158e832e-a549-4401-bd85-bc1f95db87c5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 22468\n", + "1 22468\n", + "Name: target, dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "X = np.array(df[\"comment_text\"].values)\n", + "X = X.reshape(-1,1)\n", + "y = np.array(df[\"y\"].values)\n", + "rus = RandomUnderSampler(random_state=0)\n", + "x, y = rus.fit_resample(X, y)\n", + "\n", + "x = x.flatten()\n", + "df = pd.DataFrame()\n", + "df[\"text\"] = x\n", + "df[\"target\"] = y\n", + "\n", + "\n", + "# Now its balanced\n", + "\n", + "df[\"target\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bf1cc71c", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:35:00.600340Z", + "iopub.status.busy": "2021-11-14T04:35:00.599491Z", + "iopub.status.idle": "2021-11-14T04:35:46.833670Z", + "shell.execute_reply": "2021-11-14T04:35:46.833209Z", + "shell.execute_reply.started": "2021-11-14T04:19:37.291635Z" + }, + "papermill": { + "duration": 46.26705, + "end_time": "2021-11-14T04:35:46.833796", + "exception": false, + "start_time": "2021-11-14T04:35:00.566746", + "status": "completed" + }, + "tags": [], + "id": "bf1cc71c" + }, + "outputs": [], + "source": [ + "# Creating column clean_text for cleaned comments\n", + "\n", + "df[\"text\"] = clean_data(df[\"text\"])" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Defining keras Model with GRU units" + ], + "metadata": { + "id": "t66LA_jV3Ikb" + }, + "id": "t66LA_jV3Ikb" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6218d295", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:35:46.866116Z", + "iopub.status.busy": "2021-11-14T04:35:46.865533Z", + "iopub.status.idle": "2021-11-14T04:35:46.868820Z", + "shell.execute_reply": "2021-11-14T04:35:46.868396Z", + "shell.execute_reply.started": "2021-11-14T04:24:27.459783Z" + }, + "papermill": { + "duration": 0.023249, + "end_time": "2021-11-14T04:35:46.868944", + "exception": false, + "start_time": "2021-11-14T04:35:46.845695", + "status": "completed" + }, + "tags": [], + "id": "6218d295" + }, + "outputs": [], + "source": [ + "\n", + "class GRU_model(tf.keras.Model):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.Embedding = Embedding(voc_size, embedding_dim, input_length = max_sequence_length)\n", + " self.GRU1 = Bidirectional(GRU(128, return_sequences=True))\n", + " self.Dropout1 = Dropout(0.25)\n", + " self.GRU2 = Bidirectional(GRU(64, return_sequences = False))\n", + " self.Dropout2 = Dropout(0.25)\n", + " self.Dense1 = Dense(64, activation=\"relu\")\n", + " self.Dropout3 = Dropout(0.2)\n", + " self.Dense2 = Dense(1, activation=\"sigmoid\")\n", + " \n", + " def call(self, inputs):\n", + " x = self.Embedding(inputs)\n", + " x = self.GRU1(x)\n", + " x = self.Dropout1(x)\n", + " x = self.GRU2(x)\n", + " x = self.Dropout2(x)\n", + " x = self.Dense1(x)\n", + " x = self.Dropout3(x)\n", + " x = self.Dense2(x)\n", + " \n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dcfbed0d", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:35:46.896473Z", + "iopub.status.busy": "2021-11-14T04:35:46.895748Z", + "iopub.status.idle": "2021-11-14T04:35:46.897736Z", + "shell.execute_reply": "2021-11-14T04:35:46.898129Z", + "shell.execute_reply.started": "2021-11-14T04:20:31.747499Z" + }, + "papermill": { + "duration": 0.017612, + "end_time": "2021-11-14T04:35:46.898247", + "exception": false, + "start_time": "2021-11-14T04:35:46.880635", + "status": "completed" + }, + "tags": [], + "id": "dcfbed0d" + }, + "outputs": [], + "source": [ + "# Using early_stopping as callback function \n", + "# It takes the weigths of epoch with the best val_accuracy\n", + "\n", + "early_stopping = EarlyStopping(patience = 5,restore_best_weights = True)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Tokenizing the comments from train dataset" + ], + "metadata": { + "id": "_Bom6ucC3N9L" + }, + "id": "_Bom6ucC3N9L" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c3898633", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:35:46.964608Z", + "iopub.status.busy": "2021-11-14T04:35:46.954704Z", + "iopub.status.idle": "2021-11-14T04:35:50.091614Z", + "shell.execute_reply": "2021-11-14T04:35:50.091002Z", + "shell.execute_reply.started": "2021-11-14T04:20:31.777482Z" + }, + "papermill": { + "duration": 3.181771, + "end_time": "2021-11-14T04:35:50.091743", + "exception": false, + "start_time": "2021-11-14T04:35:46.909972", + "status": "completed" + }, + "tags": [], + "id": "c3898633" + }, + "outputs": [], + "source": [ + "\n", + "tokenizer = Tokenizer(num_words = voc_size)\n", + "tokenizer.fit_on_texts(df[\"text\"].values)\n", + "X = tokenizer.texts_to_sequences(df[\"text\"].values)\n", + "X = pad_sequences(X, maxlen = max_sequence_length)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "58864ac8", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:35:50.121160Z", + "iopub.status.busy": "2021-11-14T04:35:50.120539Z", + "iopub.status.idle": "2021-11-14T04:46:58.436311Z", + "shell.execute_reply": "2021-11-14T04:46:58.435629Z", + "shell.execute_reply.started": "2021-11-14T04:24:39.828475Z" + }, + "papermill": { + "duration": 668.332415, + "end_time": "2021-11-14T04:46:58.436449", + "exception": false, + "start_time": "2021-11-14T04:35:50.104034", + "status": "completed" + }, + "tags": [], + "id": "58864ac8", + "outputId": "5d9d8afa-b5ba-4f72-fa0d-e43a08fc90f9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "2247/2247 [==============================] - 101s 42ms/step - loss: 0.2942 - accuracy: 0.8761 - val_loss: 0.2347 - val_accuracy: 0.9227\n", + "Epoch 2/10\n", + "2247/2247 [==============================] - 94s 42ms/step - loss: 0.1639 - accuracy: 0.9375 - val_loss: 0.2342 - val_accuracy: 0.9211\n", + "Epoch 3/10\n", + "2247/2247 [==============================] - 94s 42ms/step - loss: 0.0894 - accuracy: 0.9676 - val_loss: 0.2741 - val_accuracy: 0.9000\n", + "Epoch 4/10\n", + "2247/2247 [==============================] - 94s 42ms/step - loss: 0.0501 - accuracy: 0.9830 - val_loss: 0.4452 - val_accuracy: 0.8856\n", + "Epoch 5/10\n", + "2247/2247 [==============================] - 94s 42ms/step - loss: 0.0312 - accuracy: 0.9898 - val_loss: 0.6138 - val_accuracy: 0.8623\n", + "Epoch 6/10\n", + "2247/2247 [==============================] - 94s 42ms/step - loss: 0.0215 - accuracy: 0.9927 - val_loss: 0.5662 - val_accuracy: 0.8569\n", + "Epoch 7/10\n", + "2247/2247 [==============================] - 94s 42ms/step - loss: 0.0147 - accuracy: 0.9951 - val_loss: 0.4859 - val_accuracy: 0.9047\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = GRU_model()\n", + "model.compile(\n", + " loss = tf.keras.losses.BinaryCrossentropy(),\n", + " optimizer = \"Adam\",\n", + " metrics = [\"accuracy\"]\n", + " )\n", + "\n", + "model.fit(\n", + " X, \n", + " df.target, \n", + " epochs = 10, \n", + " validation_split = 0.2,\n", + " batch_size = Batch_size, \n", + " callbacks = [early_stopping]\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5499067b", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:47:02.789433Z", + "iopub.status.busy": "2021-11-14T04:47:02.788712Z", + "iopub.status.idle": "2021-11-14T04:47:32.291140Z", + "shell.execute_reply": "2021-11-14T04:47:32.290642Z", + "shell.execute_reply.started": "2021-11-14T04:34:08.703401Z" + }, + "papermill": { + "duration": 31.545177, + "end_time": "2021-11-14T04:47:32.291279", + "exception": false, + "start_time": "2021-11-14T04:47:00.746102", + "status": "completed" + }, + "tags": [], + "id": "5499067b" + }, + "outputs": [], + "source": [ + "# Reading given test dataset \n", + "\n", + "test = pd.read_csv(test_cur_comp)\n", + "\n", + "test[\"text\"] = clean_data(test[\"text\"])\n", + "x_test = tokenizer.texts_to_sequences(test[\"text\"].values)\n", + "x_test = pad_sequences(x_test, maxlen = max_sequence_length)\n", + "\n", + "pred = model.predict(x_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d11ff76", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:47:36.685493Z", + "iopub.status.busy": "2021-11-14T04:47:36.684828Z", + "iopub.status.idle": "2021-11-14T04:47:36.710436Z", + "shell.execute_reply": "2021-11-14T04:47:36.709543Z", + "shell.execute_reply.started": "2021-11-14T04:34:27.686805Z" + }, + "papermill": { + "duration": 2.10009, + "end_time": "2021-11-14T04:47:36.710555", + "exception": false, + "start_time": "2021-11-14T04:47:34.610465", + "status": "completed" + }, + "tags": [], + "id": "2d11ff76" + }, + "outputs": [], + "source": [ + "# Making submission file\n", + "\n", + "final = pd.DataFrame()\n", + "final[\"comment_id\"] = test[\"comment_id\"]\n", + "final[\"score\"] = pred\n", + "final.to_csv(\"submission.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ce5f54a", + "metadata": { + "execution": { + "iopub.execute_input": "2021-11-14T04:47:41.313743Z", + "iopub.status.busy": "2021-11-14T04:47:41.313173Z", + "iopub.status.idle": "2021-11-14T04:47:41.317997Z", + "shell.execute_reply": "2021-11-14T04:47:41.318382Z", + "shell.execute_reply.started": "2021-11-14T04:34:27.719860Z" + }, + "papermill": { + "duration": 2.503346, + "end_time": "2021-11-14T04:47:41.318536", + "exception": false, + "start_time": "2021-11-14T04:47:38.815190", + "status": "completed" + }, + "tags": [], + "id": "5ce5f54a", + "outputId": "88ed6f34-c7c6-497c-855d-58a8025b72e1" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
comment_idscore
01148900.001387
17328950.007995
211390510.001851
314345120.014324
420848210.828060
\n", + "
" + ], + "text/plain": [ + " comment_id score\n", + "0 114890 0.001387\n", + "1 732895 0.007995\n", + "2 1139051 0.001851\n", + "3 1434512 0.014324\n", + "4 2084821 0.828060" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final.head()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + }, + "papermill": { + "default_parameters": {}, + "duration": 783.084669, + "end_time": "2021-11-14T04:47:46.757169", + "environment_variables": {}, + "exception": null, + "input_path": "__notebook__.ipynb", + "output_path": "__notebook__.ipynb", + "parameters": {}, + "start_time": "2021-11-14T04:34:43.672500", + "version": "2.3.3" + }, + "colab": { + "provenance": [] + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From d25d624dbaaaec13064ce8e8ac92a5f48dff447e Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 18:12:50 +0530 Subject: [PATCH 15/18] Create dataset.png --- Toxic Comment Analysis/Images/dataset.png | 1 + 1 file changed, 1 insertion(+) create mode 100644 Toxic Comment Analysis/Images/dataset.png diff --git a/Toxic Comment Analysis/Images/dataset.png b/Toxic Comment Analysis/Images/dataset.png new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Toxic Comment Analysis/Images/dataset.png @@ -0,0 +1 @@ + From ad8ef33e299a3ad4d748b68b1a4e919fa74be2f7 Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 18:16:25 +0530 Subject: [PATCH 16/18] Rename dataset.png to accuracy_score.png --- Toxic Comment Analysis/Images/{dataset.png => accuracy_score.png} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Toxic Comment Analysis/Images/{dataset.png => accuracy_score.png} (100%) diff --git a/Toxic Comment Analysis/Images/dataset.png b/Toxic Comment Analysis/Images/accuracy_score.png similarity index 100% rename from Toxic Comment Analysis/Images/dataset.png rename to Toxic Comment Analysis/Images/accuracy_score.png From cb56d925aa27fce68aedc8390b09f108aefe39ab Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 18:25:30 +0530 Subject: [PATCH 17/18] Add files via upload --- .../Images/Accuracy_score.png | Bin 0 -> 24395 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Toxic Comment Analysis/Images/Accuracy_score.png diff --git a/Toxic Comment Analysis/Images/Accuracy_score.png b/Toxic Comment Analysis/Images/Accuracy_score.png new file mode 100644 index 0000000000000000000000000000000000000000..118afb62e06016cf381b0ccb231afeea5a16ee86 GIT binary patch literal 24395 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 R-wN>Wyj0dws(4`$`Y(Ok8@K=f literal 0 HcmV?d00001 From 30618087468d9d745317fb3d7e121dfa90eeb70a Mon Sep 17 00:00:00 2001 From: KhanSumaiyaS <85989194+KhanSumaiyaS@users.noreply.github.com> Date: Mon, 24 Oct 2022 18:26:07 +0530 Subject: [PATCH 18/18] Delete accuracy_score.png --- Toxic Comment Analysis/Images/accuracy_score.png | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Toxic Comment Analysis/Images/accuracy_score.png diff --git a/Toxic Comment Analysis/Images/accuracy_score.png b/Toxic Comment Analysis/Images/accuracy_score.png deleted file mode 100644 index 8b1378917..000000000 --- a/Toxic Comment Analysis/Images/accuracy_score.png +++ /dev/null @@ -1 +0,0 @@ -