Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sudip-mondal-2002/67c735d0e1cbd768b698e47dd1404f58 to your computer and use it in GitHub Desktop.
Save sudip-mondal-2002/67c735d0e1cbd768b698e47dd1404f58 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Copy of FakeNewsDetectionUsingLSTM.ipynb",
"provenance": [],
"collapsed_sections": [],
"machine_shape": "hm"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "yen7XGzttxem",
"outputId": "bf0607a3-1626-45d9-9b3e-6ddcc8a49923"
},
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Mounted at /content/drive\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NRI7QElNX1ST"
},
"source": [
"# Downloading the dependencies\n",
"\n",
"- Downloading the dataset from kaggle using the kaggle API\n",
"- Downloading pretrained GloVe embeddings"
]
},
{
"cell_type": "code",
"metadata": {
"id": "xl6JPS-GuTqh"
},
"source": [
"from IPython.display import clear_output\n",
"\n",
"!pip install kaggle\n",
"%env KAGGLE_USERNAME=xerefic\n",
"%env KAGGLE_KEY=83aac7088c3bb8150fcf8197ab22c67b\n",
"\n",
"!kaggle competitions download -c fake-news\n",
"!unzip /content/train.csv.zip\n",
"!unzip /content/test.csv.zip\n",
"!rm *.zip\n",
"\n",
"clear_output()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "B6Xay_piI0GH"
},
"source": [
"!wget https://nlp.stanford.edu/data/glove.6B.zip\n",
"!mkdir embeddings\n",
"!mkdir embeddings/glove.6B\n",
"!unzip /content/glove.6B.zip -d \"/content/embeddings/glove.6B/\"\n",
"\n",
"clear_output()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "2J2M_Ur-uXF3"
},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "e_AiF3bjYEeq"
},
"source": [
"# Importing Libraries"
]
},
{
"cell_type": "code",
"metadata": {
"id": "tu6wb15KuU0U"
},
"source": [
"import re\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"import os\n",
"import gc\n",
"import sys\n",
"import pickle\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "45cu-piJugZE"
},
"source": [
"from tensorflow.keras.layers import Embedding,LSTM,Dense,Dropout\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.layers.experimental.preprocessing import TextVectorization\n",
"import keras"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "FulQCI7EwhHN"
},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_ONcF1cgYLT3"
},
"source": [
"# Processing the Dataset\n",
"\n",
"Concatenating the title and text to increase the learning scope of our model."
]
},
{
"cell_type": "code",
"metadata": {
"id": "PTb3Vj1U7ZGT"
},
"source": [
"train = pd.read_csv('/content/train.csv')\n",
"test = pd.read_csv('/content/test.csv')\n",
"\n",
"train = train.dropna()\n",
"test = test.dropna()\n",
"\n",
"train['text'] = train['title']+train['text']\n",
"test['text'] = test['title']+test['text']\n",
"\n",
"train = train.drop(columns=['id', 'title', 'author'])\n",
"test = test.drop(columns=['id', 'title', 'author'])"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "lm5myaGUYXwE"
},
"source": [
"Visualizing the dataset"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"id": "-Nb-2U2aPU1p",
"outputId": "bc5be4ed-c863-4107-e2a0-5802348c0bc8"
},
"source": [
"train.head()"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>text</th>\n",
" <th>label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>House Dem Aide: We Didn’t Even See Comey’s Let...</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>FLYNN: Hillary Clinton, Big Woman on Campus - ...</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Why the Truth Might Get You FiredWhy the Truth...</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>15 Civilians Killed In Single US Airstrike Hav...</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Iranian woman jailed for fictional unpublished...</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" text label\n",
"0 House Dem Aide: We Didn’t Even See Comey’s Let... 1\n",
"1 FLYNN: Hillary Clinton, Big Woman on Campus - ... 0\n",
"2 Why the Truth Might Get You FiredWhy the Truth... 1\n",
"3 15 Civilians Killed In Single US Airstrike Hav... 1\n",
"4 Iranian woman jailed for fictional unpublished... 1"
]
},
"metadata": {
"tags": []
},
"execution_count": 7
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OucLYeCpYbAX"
},
"source": [
"Converting into a iterable format"
]
},
{
"cell_type": "code",
"metadata": {
"id": "TEApOLWXPtph"
},
"source": [
"x_train = train['text'].to_numpy()\n",
"y_train = train['label'].to_numpy()\n",
"x_test = test['text'].to_numpy()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "9-dzvXYma4D5"
},
"source": [
"## Visualizing the data"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 296
},
"id": "g5BdAuSSa3tL",
"outputId": "74df59a5-9b46-4578-dfcd-9bde0dda42aa"
},
"source": [
"sns.countplot(x='label', data=train)"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7eff1bc3e590>"
]
},
"metadata": {
"tags": []
},
"execution_count": 22
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oD-B7DGVQurh"
},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ti-JEHayYfrw"
},
"source": [
"# Creating the Vocabulary"
]
},
{
"cell_type": "code",
"metadata": {
"id": "SUXL7sKHI4Ln"
},
"source": [
"embeddings = {}\n",
"with open(\"/content/embeddings/glove.6B/glove.6B.50d.txt\", 'r') as f:\n",
" for line in f:\n",
" values = line.split()\n",
" word = \" \".join(t for t in values[:-50])\n",
" vector = np.asarray(values[-50:], \"float64\")\n",
" embeddings[word] = vector"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Pq6Xgx_XQwGl"
},
"source": [
"vectorizer = TextVectorization(max_tokens=20000, output_sequence_length=200)\n",
"vectorizer.adapt(x_train)\n",
"voc = vectorizer.get_vocabulary()\n",
"word_index = dict(zip(voc, range(len(voc))))"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "qhc31xjmRZgA",
"outputId": "fb837432-8ae4-4f5c-f589-ec278f7cbb0a"
},
"source": [
"num_tokens = len(voc) + 2\n",
"embedding_dim = 50\n",
"hits = 0\n",
"misses = 0\n",
"\n",
"embedding_matrix = np.zeros((num_tokens, embedding_dim))\n",
"for word, i in word_index.items():\n",
" embedding_vector = embeddings.get(word)\n",
" if embedding_vector is not None:\n",
" embedding_matrix[i] = embedding_vector\n",
" hits += 1\n",
" else:\n",
" misses += 1\n",
"print(\"Converted %d words (%d misses)\" % (hits, misses))"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Converted 18146 words (1854 misses)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ufVRRppeYjgm"
},
"source": [
"Saving the vocabulary data to load during testing phase"
]
},
{
"cell_type": "code",
"metadata": {
"id": "pkoALiNWxjL7"
},
"source": [
"DUMP = \"/content/drive/MyDrive/Projects/Hackathons/FakeNews-Team_Hackers/checkpoints/embeddings/\"\n",
"\n",
"pickle.dump({'config': vectorizer.get_config(),\n",
" 'weights': vectorizer.get_weights()}, \n",
" open(os.path.join(DUMP, \"vectorizer.pkl\"), \"wb\"))\n",
"\n",
"pickle.dump(embedding_matrix,\n",
" open(os.path.join(DUMP, \"embedding.pkl\"), \"wb\"))"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "swCcDln-IFR2"
},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "b5RvMu4KYqEM"
},
"source": [
"# Model Architecture"
]
},
{
"cell_type": "code",
"metadata": {
"id": "oSGbee7YFCEK"
},
"source": [
"model = Sequential()\n",
"\n",
"model.add(Embedding(num_tokens, embedding_dim, keras.initializers.Constant(embedding_matrix), trainable=False ))\n",
"model.add(Dropout(0.5))\n",
"\n",
"model.add(LSTM(384))\n",
"model.add(Dropout(0.5))\n",
"\n",
"model.add(Dense(1, activation=\"sigmoid\"))\n",
"\n",
"model.compile(loss=\"binary_crossentropy\",optimizer=\"adam\",metrics=[\"accuracy\"])"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "pWZg8suoTSzw",
"outputId": "a17a67df-981c-4100-f371-2353a6859e68"
},
"source": [
"model.summary()"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"embedding (Embedding) (None, None, 50) 1000100 \n",
"_________________________________________________________________\n",
"dropout (Dropout) (None, None, 50) 0 \n",
"_________________________________________________________________\n",
"lstm (LSTM) (None, 384) 668160 \n",
"_________________________________________________________________\n",
"dropout_1 (Dropout) (None, 384) 0 \n",
"_________________________________________________________________\n",
"dense (Dense) (None, 1) 385 \n",
"=================================================================\n",
"Total params: 1,668,645\n",
"Trainable params: 668,545\n",
"Non-trainable params: 1,000,100\n",
"_________________________________________________________________\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "XXo2-NkZYsoi"
},
"source": [
"# Training Phase"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_hXkfU84Yvos"
},
"source": [
"Converting the input to the encoding format"
]
},
{
"cell_type": "code",
"metadata": {
"id": "eogE0KHIToJ2"
},
"source": [
"x_train = vectorizer(np.array([[s] for s in x_train])).numpy()\n",
"x_test = vectorizer(np.array([[s] for s in x_test])).numpy()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "IRcdBBFYY4KU"
},
"source": [
"## Training the model"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "eE2565IdPNmx",
"outputId": "2617a464-6f09-4769-b5e3-519f1bf922ae"
},
"source": [
"history = model.fit(x_train, y_train, epochs = 16, batch_size = 64)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/16\n",
"286/286 [==============================] - 12s 27ms/step - loss: 0.6391 - accuracy: 0.6444\n",
"Epoch 2/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6290 - accuracy: 0.6494\n",
"Epoch 3/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6309 - accuracy: 0.6580\n",
"Epoch 4/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6586 - accuracy: 0.6187\n",
"Epoch 5/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6598 - accuracy: 0.6148\n",
"Epoch 6/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6515 - accuracy: 0.6322\n",
"Epoch 7/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6454 - accuracy: 0.6339\n",
"Epoch 8/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6310 - accuracy: 0.6472\n",
"Epoch 9/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.6087 - accuracy: 0.6734\n",
"Epoch 10/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.5630 - accuracy: 0.7189\n",
"Epoch 11/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.4648 - accuracy: 0.7917\n",
"Epoch 12/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.3497 - accuracy: 0.8490\n",
"Epoch 13/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.2789 - accuracy: 0.8850\n",
"Epoch 14/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.2597 - accuracy: 0.8883\n",
"Epoch 15/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.2222 - accuracy: 0.9117\n",
"Epoch 16/16\n",
"286/286 [==============================] - 8s 27ms/step - loss: 0.1941 - accuracy: 0.9228\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4atVNRj-Y8dC"
},
"source": [
"Saving the model weights to load during the test phase"
]
},
{
"cell_type": "code",
"metadata": {
"id": "6P6YFQcKTdsL"
},
"source": [
"model.save_weights(\"/content/drive/MyDrive/Projects/Hackathons/FakeNews-Team_Hackers/checkpoints/embeddings/\")"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZT2q50YLZ8Sl"
},
"source": [
"## Visualizing the Loss and Accuracy"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 295
},
"id": "pdpZF57aaC29",
"outputId": "9669b7e4-474b-45e1-ed00-3f139bd0067c"
},
"source": [
"plt.plot(history.history['accuracy'])\n",
"plt.title('Model Accuracy')\n",
"plt.ylabel('Accuracy')\n",
"plt.xlabel('Epochs')\n",
"plt.legend(['train'], loc='best')\n",
"plt.show()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 295
},
"id": "Iv1iGfh_aLXg",
"outputId": "d7105b4f-2806-48c4-bd40-e71d9ab68b0b"
},
"source": [
"plt.plot(history.history['loss'])\n",
"plt.title('Model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('Epochs')\n",
"plt.legend(['train'], loc='best')\n",
"plt.show()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9vxjwBRwu9Ck"
},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8tTTeUYNZCFF"
},
"source": [
"# Testing Phase"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7YqesBrLZYSI"
},
"source": [
"DUMP = \"/content/drive/MyDrive/Projects/Hackathons/FakeNews-Team_Hackers/checkpoints/embeddings/\""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Pz_Y4mfgvP4t"
},
"source": [
"def isFake(text, DUMP):\n",
" vectorizer_disk = pickle.load(open(os.path.join(DUMP, \"vectorizer.pkl\"), \"rb\"))\n",
" embedding_matrix = pickle.load(open(os.path.join(DUMP, \"embedding.pkl\"), \"rb\"))\n",
"\n",
" vectorizer = TextVectorization.from_config(vectorizer_disk['config'])\n",
" vectorizer.adapt(tensorflow.data.Dataset.from_tensor_slices([\"xyz\"]))\n",
" vectorizer.set_weights(vectorizer_disk['weights'])\n",
"\n",
" embedding_dim = 50\n",
"\n",
" model = Sequential()\n",
" model.add(Embedding(len(embedding_matrix), embedding_dim, keras.initializers.Constant(embedding_matrix), trainable=False))\n",
" model.add(Dropout(0.5))\n",
" model.add(LSTM(384))\n",
" model.add(Dropout(0.5))\n",
" model.add(Dense(1, activation=\"sigmoid\"))\n",
" model.compile(loss=\"binary_crossentropy\",optimizer=\"adam\",metrics=[\"accuracy\"])\n",
" model.load_weights(DUMP)\n",
"\n",
" text = np.array(text)\n",
" text = vectorizer([text]).numpy()\n",
" y_preds = model.predict(text)\n",
"\n",
" return \"The news is {0} % Fake\".format(int(y_preds.item()*10000)/100)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1hcVTWgIZTRk"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment