diff --git a/Movie Genre Classification/Movie_genre_classification.ipynb b/Movie Genre Classification/Movie_genre_classification.ipynb new file mode 100644 index 00000000..7d4797a1 --- /dev/null +++ b/Movie Genre Classification/Movie_genre_classification.ipynb @@ -0,0 +1,2538 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "Imporitng the Dependencies" + ], + "metadata": { + "id": "xAnsf_OhJSwu" + } + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "zr0gTcDqFfd9" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import re # for pattern matching and text manipulation.\n", + "import string\n", + "import nltk\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from nltk.corpus import stopwords\n", + "from nltk.tokenize import word_tokenize\n", + "from nltk.stem import PorterStemmer, WordNetLemmatizer\n", + "from sklearn.feature_extraction.text import CountVectorizer as CV\n", + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "from sklearn.svm import SVC\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.naive_bayes import MultinomialNB\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.metrics import classification_report, confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Loading the Data" + ], + "metadata": { + "id": "dZqzFjZ8JgYu" + } + }, + { + "cell_type": "code", + "source": [ + "train_data = pd.read_csv(\"/content/train_data.txt\", sep=':::', names=[\"title\", \"genre\", \"description\"], engine='python')\n", + "test_data = pd.read_csv(\"/content/test_data.txt\", sep=':::', names=[\"title\", \"description\"], engine='python')" + ], + "metadata": { + "id": "Mu6b8P7tMAsi" + }, + "execution_count": 34, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "**Data Visualizaion**" + ], + "metadata": { + "id": "Z1SLzko8UTnp" + } + }, + { + "cell_type": "code", + "source": [ + "train_data.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "BMdL2ffAUNpS", + "outputId": "abeb99d2-dd32-47aa-8c27-1c60ba3e3c8f" + }, + "execution_count": 35, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " title genre \\\n", + "1 Oscar et la dame rose (2009) drama \n", + "2 Cupid (1997) thriller \n", + "3 Young, Wild and Wonderful (1980) adult \n", + "4 The Secret Sin (1915) drama \n", + "5 The Unrecovered (2007) drama \n", + "\n", + " description \n", + "1 Listening in to a conversation between his do... \n", + "2 A brother and sister with a past incestuous r... \n", + "3 As the bus empties the students for their fie... \n", + "4 To help their unemployed father make ends mee... \n", + "5 The film's title refers not only to the un-re... " + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlegenredescription
1Oscar et la dame rose (2009)dramaListening in to a conversation between his do...
2Cupid (1997)thrillerA brother and sister with a past incestuous r...
3Young, Wild and Wonderful (1980)adultAs the bus empties the students for their fie...
4The Secret Sin (1915)dramaTo help their unemployed father make ends mee...
5The Unrecovered (2007)dramaThe film's title refers not only to the un-re...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "source": [ + "test_data.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "MhwEX9IjUk3y", + "outputId": "61dff6bf-e460-4975-bf5b-aaa98f3b5163" + }, + "execution_count": 36, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " title \\\n", + "1 Edgar's Lunch (1998) \n", + "2 La guerra de papá (1977) \n", + "3 Off the Beaten Track (2010) \n", + "4 Meu Amigo Hindu (2015) \n", + "5 Er nu zhai (1955) \n", + "\n", + " description \n", + "1 L.R. Brane loves his life - his car, his apar... \n", + "2 Spain, March 1964: Quico is a very naughty ch... \n", + "3 One year in the life of Albin and his family ... \n", + "4 His father has died, he hasn't spoken with hi... \n", + "5 Before he was known internationally as a mart... " + ], + "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", + " \n", + " \n", + "
titledescription
1Edgar's Lunch (1998)L.R. Brane loves his life - his car, his apar...
2La guerra de papá (1977)Spain, March 1964: Quico is a very naughty ch...
3Off the Beaten Track (2010)One year in the life of Albin and his family ...
4Meu Amigo Hindu (2015)His father has died, he hasn't spoken with hi...
5Er nu zhai (1955)Before he was known internationally as a mart...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 36 + } + ] + }, + { + "cell_type": "code", + "source": [ + "plt.figure(figsize=(30,10))\n", + "counts = train_data.genre.value_counts()\n", + "sns.barplot(x=counts.index, y=counts)\n", + "plt.xlabel('Genre')\n", + "plt.ylabel('Count')\n", + "plt.xticks(rotation=90);" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 554 + }, + "id": "V1nlOD9kb599", + "outputId": "7a949d80-66ec-4f25-9e45-bbe0b462d2b4" + }, + "execution_count": 37, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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2LFq1qyZoqKiVK1aNcXGxpqO6LCuX7+uXbt26dKlSymO+evYsaOhVI7Nx8dHGzdupJArjV29elXh4eEKCwtTWFiYDh06pGzZsqlmzZqqVauW+vTpYzqiQ0pISNCuXbsUHh6u8PBwbd++XXfu3FGFChVUu3ZtjR492nREh/T8889r/vz5CgoKkqenp/bu3atChQppwYIFWrx4sdOc6OP672+Bo7t69aqGDRumLVu23Pdi4dq1a4aSObYOHTroq6++0tixY01HcXjZsmWTxWJ5qPfysCb1OA/cPuLj45U7d+4U497e3oqPjzeQyDnkyZNHx48fl6+vr834tm3b5O/vbyaUE9izZ48aNGggDw8PVapUSZI0ceJEffTRRwoNDVW5cuUMJ3Q8Li4uKly4sK5evUohVxpLTk6+7/XB1atXU+zAx4N5eXk99LUW9wapU6lSJe3bt49CrjTw12tWrl/tZ+vWrRoxYkSK8UaNGmnChAlPPpATatSokSIjI7l2TQPz589/4Os8BEsd1gvtY/369WrWrJnKlClj7dodERGhkiVLavXq1XrxxRcNJ3RMJ0+eNB3BKRUrVkxvvvmmatSoweauNLR161Z98MEHkqQVK1YoOTlZ169f17x58zR69GgKuVLpgw8+0Pvvv68FCxYoe/bspuM4lcqVK2vbtm0qXry4GjdurAEDBujAgQNavny5KleubDqew1q9erXat2+v2NhYeXp62qzLWCwWrmFTqVevXho3bpxmzZqVoos/Us/b21s5c+ZUjRo11L17dwUFBSkgIMB0LIeXPn16VatWTdWqVdP777+vX375RZ988okWLlyon376iUKuVLp27Zp1rcXT09N671q9enWnOg6YT7hnwOuvv67jx4+ra9euyp0790M/xMGDJSYmavbs2dq4ceN9W3pPnDjRUDLHs2XLFuufT506pcGDB6tz586qUqWKJGnHjh2aN2+ePv74Y1MRgX9UpUoVDR8+XPPnz7eec33z5k2NHDnS+juMR9e9e3f16dNHs2fPlsVi0a+//qodO3Zo4MCBGjp0qOl4Dqtfv35q1qyZZs6cab3RTUxMVLdu3dS3b19t3brVcELHNHbsWIWEhGjatGm0+E8DrVq1kvTnolbnzp1tOpkkJSVp//79qlq1qql4Dmny5MmmIzi9t956SwMGDNC5c+fue28QGBhoKJnzuX79Oh0i0kBsbKzc3NxSjKdPn/6ROibjn9EAP+38ffd3QkKC4uPj5ebmpowZM/IQLJVYL7SPwYMHq1+/fik2fg4ePFiDBg2ikCsN3Pt85Xf28X3yySemIzil33//3VpotG7dOrVu3VoZM2ZUkyZNFBISYjid45o6daqOHz+ufPnyqUCBAinuufbu3WsomeObOHGitevWyJEjFRsbq6+//lqFCxfmOddjGDBggIKDgzVmzBhlzJjRdBynsXv3bm3atEmhoaEKCAhI8VmwfPlyQ8kc2/79+1WyZEnTMZzO0aNHrV3OwsPDdfv2bdWoUUOffvppilN+8PD8/f118uRJPf/88ypWrJiWLl2qSpUqafXq1U61ZsjRis+ALFmyaNu2bbScTWO1a9f+x9csFos2b978BNM4j7p166pbt2567bXXbMYXLVqkL7/8UmFhYWaCOYnw8HB9+umnNu39Q0JCVKNGDcPJHNeBAwfUsGFD3b592/o5GxUVpQwZMmj9+vVc/KZScnKyxowZo48//tja2czd3V0DBw7Uhx9+aDid4/Lw8NC+fftUrFgxm/FDhw6pQoUKdJFLJS8vL8XHxysxMVFubm4pzrinm8Gj6dKliyRp3rx5atu2rc18urm5ydfXV927d1fOnDlNRQRSuN8RgBaLxdpZjq6yqTNu3Dj5+vrqlVdekSS1adNG3377rfLmzau1a9dyj/sYKlWqpJdeeknDhg2zGR8xYoRWr16tn3/+2VAy5/HX48GR9o4dO6aePXsqJCREDRo0MB3HIbFeaB8ZMmTQgQMHUnTrPXr0qAIDA3Xr1i1DyRzf/Pnz9cknn+jYsWOSpCJFiigkJESvv/664WSOjbXCtFekSBGNHj1aTZo0kZ+fn5YsWaI6deooKipKdevW1ZUrV0xHdEgjR4584OvDhw9/QkmAh5MpUyYdOHCA+4E0dm/d8J/MmTPnCSVxTpcvX9aRI0ckSUWLFlWuXLkMJ3JsLi4uypUrl/r06aOXXnpJAQEBbEZIA5MmTVK6dOnUu3dvbdy4UU2bNlVycrISEhI0ceJEpzkKlI5cz4BixYrp5s2bpmM4nb92kULa2bFjh6ZPn55ivEKFCurWrZuBRM7jv//9r7p06aJWrVqpd+/ekv5s71+3bl3NnTtX7dq1M5zQMQUEBOjYsWNauHChDh8+LEl67bXX1L59+xTFHHh4FotFH3zwgUJCQnT8+HHFxsaqRIkSypw5s+loDs3T01NnzpxJUch19uxZZcmSxVAqx0e3o7R1b8HF19dXAwcO5BjFNHDjxg15enpa//wg996HR8NxP/Yxffp0LVy4UJK0YcMGbdy4UevWrdPSpUsVEhKi0NBQwwkd19ChQ9WqVSvFxMSoTp06kqRNmzZp8eLF+uabbwyncw4zZsy47xHsSBuFCxfW2LFj1aFDB+t9GB4N64X2kStXLkVGRqYo5IqMjJS3t7ehVI5v4sSJGjp0qN5++23rkZXbtm1Tjx49dOXKFfXr189wQsfEWqF99O3bV+3bt1fmzJlVoEABa8eNrVu3ckzVY6BQy352796tu3fv6oUXXrAZ37lzp9KlS6cKFSoYSubYGjRooD179lDIlcYo1LKPuLg4vfPOO5o/f771yPV06dKpY8eOmjJlCl3lUql3797aunWrRo0apTVr1igoKEhBQUGqXr06c/oY/nrtX69ePR0+fFg///yzChUq5FSnItCR6xmwe/duDR48WMOGDVOpUqWUPn16m9d5WIOnSdGiRdW8eXONHz/eZvzdd9/VypUrrZXgeHTFixfXG2+8kWJxa+LEiZo5c6Z15x0eXkJCgooVK6Y1a9aoePHipuMA/6p3795asWKFPv30U+vRdBEREQoJCVHr1q0pSMJTa+zYserRo4dTtUZ+ktKlS6fz58/L29tbLi4u9935RecoPI08PDx09OhR5c+fX3369NGtW7c0Y8YMHT16VC+88IJ+++030xEd2vfff68xY8YoMjJSHh4eCgwM1PDhw1WrVi3T0YCHEhkZqZo1a3IcaCqxXmgfo0aN0qRJkzR48GCbe65x48apf//+Gjp0qOGEjsnPz08jR45McZTqvHnzNGLECIrqU4m1Qvv5+eefdebMGb344ovWTYnff/+9smXLZi1GxKO7fv26li1bppiYGIWEhCh79uzau3evcufOLR8fH9PxHFalSpX07rvv6uWXX7YZX758ucaNG6edO3caSuZ4Vq1aZf3z5cuXNWrUKHXp0kUBAQEprrWaNWv2pOM5FTpHpa0333xTGzdu1NSpU22K5nv37q0XX3xR06ZNM5zQsV2/fl0//vijwsPDFR4erl9++UVly5ZVRESE6WgO6datW8qQIYPpGHZHIdcz4NixY2rXrl2KM8J5WPP49uzZo6VLl+rMmTO6c+eOzWucw5w6a9euVevWrVWoUCHrDpBdu3bp2LFj+vbbb9W4cWPDCR2Xu7u7fvnlFxUqVMhm/Pjx4ypVqhTt/VPJx8dHGzdupJArDbRq1eqh38tnbOrcuXNHISEhmj59uhITEyVJ6dOnV8+ePTV27Fi5u7sbTui4YmJiNGfOHMXExOizzz6Tt7e3fvjhBz3//PMcsZoGPD09FRkZyS7GVAoPD1e1atXk6uqq8PDwB76XAo7UmT9//gNf//tDRzycfPnyadmyZapataqKFi2q0aNHq02bNjpy5IgqVqxI8QaeCq1atdLcuXPl6en5r9ezXMOmzl8fiEl/rmedP39eU6dOVf78+fXDDz8YSubYWC+0j+TkZE2ePFkTJkzQr7/+KunP77OQkBD17t2bo1RSKUOGDDp48GCKNa1jx44pICCANa1UYq0QjmT//v2qV6+esmbNqlOnTunIkSPy9/fXkCFDdObMmX+9J8M/y5w5s/bv359izeXkyZMKDAzUH3/8YSiZ43FxcXmo93GtlXp0jrKPnDlzatmyZdYukvds2bJFbdu21eXLl80EcxJXr15VeHi4tmzZorCwMB06dEheXl4ct5xKGTJkUKVKlVSrVi0FBQWpatWqTnlCEkcrPgPat2+v9OnTa9GiRcqdOzcLBmlkyZIl6tixoxo0aKDQ0FDVr19fR48e1cWLF9WyZUvT8RxW48aNdfToUU2bNs16PELTpk3Vo0cP5c+f33A6x5Y/f35t2rQpxeLMxo0bmdvH0KtXL40bN06zZs2Sqytfq48ja9aspiM4PTc3N3322Wf6+OOPFRMTI0kqWLAgN7iPKTw8XI0aNVK1atW0detWffTRR/L29lZUVJS++uorLVu2zHREh8fek8fz1+IsCrXso0+fPjY/JyQkKD4+Xm5ubsqYMSOFXKnUqlUrtWvXToULF9bVq1fVqFEjSdK+fftSXNMide7cuaNLly5ZF8Dvef755w0lcjxZs2a1rrNwPWsfLVq0sPnZYrEoV65cqlOnjiZMmGAmlBNgvdA+LBaL+vXrp379+lkffHOM/eMrVKiQli5dqvfff99m/Ouvv05xjCUeHmuF9nPu3DmtWrXqvhvAJ06caCiVY+vfv786d+6s8ePH23yuNm7cmGNAH5O7u7suXryYopDr/PnzrHc/or/fVyHt9e/fX+Hh4Vq9enWKzlEDBgygc1QqxcfHK3fu3CnGvb29FR8fbyCRc+jdu7dN4VbNmjXVvXt3BQUFcdzyY9i4caO2bt2qsLAwTZo0SYmJiapQoYK1sOvFF180HTFN0JHrGZAxY0bt27dPRYsWNR3FqQQGBurNN99Ur169lCVLFkVFRcnPz09vvvmm8ubNq5EjR5qOCNiYNm2a+vbtq+DgYJv2/nPnztVnn32mN99803BCx9SyZUtt2rRJmTNnVkBAgDJlymTzOrvuAedXpUoVtWnTRv3797deE/j7+2vXrl1q1aqVzp07Zzqiw/vrvOLx3bp1S/v3779v8Qat/dPOsWPH1LNnT4WEhKhBgwam4zikhIQEffbZZzp79qw6d+6ssmXLSpImTZqkLFmyqFu3boYTOq5jx44pODhY27dvtxmnEw/w7GC9EI7k22+/1SuvvKJ69epZH9pGRERo06ZNWrp0KZtqU4m1QvvYtGmTmjVrJn9/fx0+fFilSpXSqVOnlJycrHLlymnz5s2mIzqkrFmzau/evSpYsKDNGsHp06dVtGhROsg9htdee03nz5/XypUrrRsTrl+/rhYtWsjb21tLly41nBD4P3SOso+6desqR44cmj9/vvXIups3b6pTp066du2aNm7caDihY2rTpo21uKhUqVKm4zilxMRE7d69WzNmzNDChQt19+5dp1nTopT6GVChQgWdPXuWhZk0FhMToyZNmkj6s8NJXFycddddnTp1KOR6DD/++KNmzJihEydO6JtvvpGPj48WLFggPz8/Va9e3XQ8h9WzZ0/lyZNHEyZMsN58FS9eXF9//bWaN29uOJ3jypYtm1q3bm06BvCPOO7H/g4cOKBFixalGPf29qY9cho5dOiQ8uXLZzqGU1i3bp06dux4399NijfSVuHChTV27Fh16NDB2mkWjyZ9+vQaOHBgivF+/foZSONcOnfuLFdXV61Zs0Z58+alE08aOXnypBITE1N0hzl27JjSp08vX19fM8GA+2C9MO2UK1dOmzZtkpeXl8qWLfvAz9S/H2WJh9O6dWvt3LlTkyZN0nfffSfpzzWtXbt2WQu98ehYK7SP9957TwMHDtTIkSOVJUsWffvtt/L29lb79u3VsGFD0/Eclru7+32PVj969Khy5cplIJHz+PTTT1WzZk0VKFDA+pkaGRmp3Llza8GCBYbTObZNmzZp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zZw5Uzt27DAd0SHNmzfvga/TvAQPQiHXM+DfdtWz+J06Xbp0eeDrc+bMeUJJnEu5cuX0n//8h9aycBgXL17UwIEDtWnTJl26dCnFedccbZs6np6eioyMlL+/v+koTmfPnj1aunSpzpw5Yz1e8R4e2qatW7duKV26dCkKOgCTnnvuOf3www8KCAhQYGCg3nvvPb322mvasWOHGjZsqN9//910RId0b+HwrywWi5KTk2WxWLgeSKVMmTJp/fr1ql69uukoTqdPnz6aMWOGateufd8iOe5nAeeXKVMm/fTTTwoICLAZP3DggF544QWOrQSAVOrTp4/mz5+vwMBABQYGplgTmDhxoqFkjm348OEKDg6mi9ETtGfPHnXo0EGHDx82HcUhZciQQdHR0Q/cqAg8TZYtW6azZ8+qTZs2eu655yT9WYiULVs2NW/e3HA64NnjajoA7I9CLftgYds+xo4dqwEDBuijjz66bzcDzrjG06Zz5846c+aMhg4dqrx583LUahpp06aNQkND1aNHD9NRnMqSJUvUsWNHNWjQQKGhoapfv76OHj2qixcvqmXLlqbjObTr169r2bJliomJUUhIiLJnz65Dhw4pd+7c8vHxMR0PsKpZs6Y2bNiggIAAtWnTRn369NHmzZu1YcMG1a1b13Q8h3Xy5EnTEZxS/vz5uf63kwULFmj58uVq3Lix6SgADKlUqZK+/PJLTZkyxWZ8+vTpKl++vKFUju/q1asaNmzYP3Y85PgUPK2aNGmiWbNmKW/evKajOLz9+/erTJkykqSDBw/avMa6YeqtXLlSH330kWrVqqWuXbuqdevWcnd3Nx3Lqbm6uurXX381HcNhlSpVSidOnKCQKw20atVKc+fOlaenp1q1avXA97JROfVefvllSdK5c+d09+5dubi40DEKMIiOXMBjSExMVFhYmGJiYtSuXTtlyZJFv/76qzw9PZU5c2bT8RzSvW4Gf7+ppZsBnlZZsmTRjz/+aF2gQer9tWV/XFycJk6cqCZNmty3qLN3795POp5TCAwM1JtvvqlevXopS5YsioqKkp+fn958803lzZv3X7t44v7279+vunXrKlu2bDp16pSOHDkif39/DRkyRGfOnNH8+fNNR3QY/fv3f+j3sos5dTieCo7k+++/15QpUzR9+nT5+vqajuNU/Pz89MMPP3DsBPAMi4iIUL16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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "train_data.describe()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 175 + }, + "id": "WzU5-mYPb6Qt", + "outputId": "e5697c7d-004c-44e7-beb5-501ae35560aa" + }, + "execution_count": 38, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " title genre \\\n", + "count 54214 54214 \n", + "unique 54214 27 \n", + "top Oscar et la dame rose (2009) drama \n", + "freq 1 13613 \n", + "\n", + " description \n", + "count 54214 \n", + "unique 54086 \n", + "top Grammy - music award of the American academy ... \n", + "freq 12 " + ], + "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", + " \n", + " \n", + "
titlegenredescription
count542145421454214
unique542142754086
topOscar et la dame rose (2009)dramaGrammy - music award of the American academy ...
freq11361312
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 38 + } + ] + }, + { + "cell_type": "code", + "source": [ + "train_data.genre.value_counts()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rI6lrrOqb6yH", + "outputId": "188a9671-cb81-4410-d5ff-8e522e242200" + }, + "execution_count": 39, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " drama 13613\n", + " documentary 13096\n", + " comedy 7447\n", + " short 5073\n", + " horror 2204\n", + " thriller 1591\n", + " action 1315\n", + " western 1032\n", + " reality-tv 884\n", + " family 784\n", + " adventure 775\n", + " music 731\n", + " romance 672\n", + " sci-fi 647\n", + " adult 590\n", + " crime 505\n", + " animation 498\n", + " sport 432\n", + " talk-show 391\n", + " fantasy 323\n", + " mystery 319\n", + " musical 277\n", + " biography 265\n", + " history 243\n", + " game-show 194\n", + " news 181\n", + " war 132\n", + "Name: genre, dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 39 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Data Cleaning & Preprocessing" + ], + "metadata": { + "id": "rRW7-cLNcJls" + } + }, + { + "cell_type": "code", + "source": [ + "train_data.info()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ob5mql64b7HL", + "outputId": "271b8a6b-ff95-40d0-8e6d-730d8af7f4b0" + }, + "execution_count": 40, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "Int64Index: 54214 entries, 1 to 54214\n", + "Data columns (total 3 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 title 54214 non-null object\n", + " 1 genre 54214 non-null object\n", + " 2 description 54214 non-null object\n", + "dtypes: object(3)\n", + "memory usage: 1.7+ MB\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "train_data.isnull().sum()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Nx2spN5kb7gW", + "outputId": "aa261554-a9ce-4052-f095-70a7291c6050" + }, + "execution_count": 41, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "title 0\n", + "genre 0\n", + "description 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 41 + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(\"shape before drop nulls\",train_data.shape)\n", + "# Droping the redundant data\n", + "train_data = train_data.drop_duplicates()\n", + "print(\"shape after drop nulls\",train_data.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "R4-PYCq3b71k", + "outputId": "c0a71f9a-b1d0-4379-8fdd-a069678b9f7b" + }, + "execution_count": 42, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "shape before drop nulls (54214, 3)\n", + "shape after drop nulls (54214, 3)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Text Cleaning" + ], + "metadata": { + "id": "nxqUU3-ScRob" + } + }, + { + "cell_type": "code", + "source": [ + "nltk.download('stopwords')\n", + "nltk.download('wordnet')\n", + "nltk.download()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "b-uFVp55b8Sz", + "outputId": "4bb0fd96-7525-4076-e9df-8cf982135d17" + }, + "execution_count": 45, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package stopwords to /root/nltk_data...\n", + "[nltk_data] Unzipping corpora/stopwords.zip.\n", + "[nltk_data] Downloading package wordnet to /root/nltk_data...\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NLTK Downloader\n", + "---------------------------------------------------------------------------\n", + " d) Download l) List u) Update c) Config h) Help q) Quit\n", + "---------------------------------------------------------------------------\n", + "Downloader> q\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 45 + } + ] + }, + { + "cell_type": "code", + "source": [ + "stop_words = set(stopwords.words('english')) # stop words\n", + "def clean_data(text):\n", + " text = text.lower()\n", + " text = re.sub(r'@\\S+','',text) # [1] remove mentions\n", + " text = re.sub(r'http\\S+', '', text) # [2] remove urls\n", + " text = re.sub(r'[\\w\\.-]+@[\\w\\.-]+',\"\",text) # [3] remove emails\n", + " text = re.sub(r\"[^a-zA-Z+']\", ' ', text) # [4] keep only english chars / remove numbers\n", + " text = re.sub(r'\\s+[a-zA-Z]\\s+', ' ', text+' ') # [5] remove single chars\n", + " text = re.sub(r'pic.\\S+', '',text) # [6]\n", + " text = re.sub(r'#', \"\", text) # [7] remove hashtags\n", + " text = re.sub(r\"_\", \" \", text) # [8] remove hashtags\n", + " text = re.sub('\\n',\" . \",text) # [9] remove new lines\n", + " text = re.sub('\\[[^]]*\\]','',text) # [10] remove square prackets\n", + " text = \"\".join([char for char in text if char not in string.punctuation]) # [11] remove punctuations\n", + " text= re.sub(\"\\s[\\s]+\", \" \",text).strip() # [12] remove repeated/leading/trailing spaces\n", + " tokens = word_tokenize(text) # [13] Tokenize\n", + " text = \" \".join([word for word in tokens if word not in stop_words and len(word) > 2]) # [14] remove stop words\n", + "\n", + " return text" + ], + "metadata": { + "id": "v94Qmrhcb8hB" + }, + "execution_count": 46, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Some Data Statistics" + ], + "metadata": { + "id": "gDuUdSM9ccnt" + } + }, + { + "cell_type": "code", + "source": [ + "import nltk\n", + "nltk.download('punkt')\n", + "train_data['description_cleaned'] = train_data['description'].apply(clean_data)\n", + "test_data['description_cleaned'] = test_data['description'].apply(clean_data)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ce58fCieb8tf", + "outputId": "d7ab0804-6e4e-4798-a057-8572fc1aadf3" + }, + "execution_count": 49, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package punkt to /root/nltk_data...\n", + "[nltk_data] Unzipping tokenizers/punkt.zip.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Stemming" + ], + "metadata": { + "id": "7_VzRAg_chWT" + } + }, + { + "cell_type": "code", + "source": [ + "st = PorterStemmer()\n", + "train_data['description_cleaned'] = train_data['description_cleaned'].apply(\n", + " lambda x: ' '.join([st.stem(word) for word in x.split()]))\n", + "\n", + "test_data['description_cleaned'] = test_data['description_cleaned'].apply(\n", + " lambda x: ' '.join([st.stem(word) for word in x.split()]))" + ], + "metadata": { + "id": "U1h6vv4db86u" + }, + "execution_count": 50, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "train_data['length']=train_data['description'].apply(len)\n", + "train_data['length_cleaned']=train_data['description_cleaned'].apply(len)\n", + "train_data.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "PVPsLkmyb9HV", + "outputId": "1cf046af-7657-4492-9047-3a93e0eb67ec" + }, + "execution_count": 51, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " title genre \\\n", + "1 Oscar et la dame rose (2009) drama \n", + "2 Cupid (1997) thriller \n", + "3 Young, Wild and Wonderful (1980) adult \n", + "4 The Secret Sin (1915) drama \n", + "5 The Unrecovered (2007) drama \n", + "\n", + " description \\\n", + "1 Listening in to a conversation between his do... \n", + "2 A brother and sister with a past incestuous r... \n", + "3 As the bus empties the students for their fie... \n", + "4 To help their unemployed father make ends mee... \n", + "5 The film's title refers not only to the un-re... \n", + "\n", + " description_cleaned length length_cleaned \n", + "1 listen convers doctor parent year old oscar le... 546 339 \n", + "2 brother sister past incestu relationship curre... 184 111 \n", + "3 bu empti student field trip museum natur histo... 650 344 \n", + "4 help unemploy father make end meet edith twin ... 1082 678 \n", + "5 film titl refer recov bodi ground zero also st... 625 347 " + ], + "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", + " \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", + "
titlegenredescriptiondescription_cleanedlengthlength_cleaned
1Oscar et la dame rose (2009)dramaListening in to a conversation between his do...listen convers doctor parent year old oscar le...546339
2Cupid (1997)thrillerA brother and sister with a past incestuous r...brother sister past incestu relationship curre...184111
3Young, Wild and Wonderful (1980)adultAs the bus empties the students for their fie...bu empti student field trip museum natur histo...650344
4The Secret Sin (1915)dramaTo help their unemployed father make ends mee...help unemploy father make end meet edith twin ...1082678
5The Unrecovered (2007)dramaThe film's title refers not only to the un-re...film titl refer recov bodi ground zero also st...625347
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 51 + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(\"Average Length of Text Before Cleaning: \", train_data['length'].mean())\n", + "print(\"Average Length of Text After Cleaning: \", train_data['length_cleaned'].mean())" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "QSUwLDjMb9R9", + "outputId": "826d34c1-a181-483d-bf02-f2da18ee4115" + }, + "execution_count": 52, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average Length of Text Before Cleaning: 600.4524292618142\n", + "Average Length of Text After Cleaning: 360.2900542295348\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "plt.figure(figsize=(8, 7))\n", + "\n", + "sns.histplot(data=train_data, x='length', bins=20, kde=True, color='blue')\n", + "\n", + "plt.xlabel('Length', fontsize=14, fontweight='bold')\n", + "plt.ylabel('Frequency', fontsize=14, fontweight='bold')\n", + "plt.title('Distribution of Lengths', fontsize=16, fontweight='bold')\n", + "\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 648 + }, + "id": "MvHdc239b9cs", + "outputId": "910dac34-a6e2-43bd-dcfb-a23d8117d9f9" + }, + "execution_count": 53, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAJ3CAYAAACEKdeRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABupElEQVR4nO3deXxU1f3G8Weyh2WygCREEhZB9h3BqLhSolIriqgUFQHlJ4IKtKC2iIqtWKgLKkLVKrTVKrZ1YRFFBFQIq6DI5gIYFJKwJiwhCcn5/THOJJMFJplJZjL38369xpm598y9584N+HDyvefajDFGAAAAAM4oxN8dAAAAAOoCgjMAAADgAYIzAAAA4AGCMwAAAOABgjMAAADgAYIzAAAA4AGCMwAAAOABgjMAAADgAYIzAAAA4AGCM2BRNpvN7RESEqLIyEjFxsaqVatWuuKKKzR+/HitWbPmjNu5/PLL3bazZ8+e2jmAKlqxYoVbP++880639Xfeeafb+hUrVviln2dztuMIdsuWLdOAAQOUkJCgsLAw1/cwcOBAjz5f9ud17ty5NdrfusTqP1uAJwjOACRJxhgVFBQoJydHu3fv1ooVK/Tcc88pNTVVqamp+v7772utL4899pjlwo0Vj7mqPvnkE/Xv31+LFy9Wdna2ioqK/N2lOoGfLcB3wvzdAQCB4ZprrlF0dLRycnL09ddf68CBA651a9asUY8ePfTxxx/rwgsvdPvcZZddpsaNG7ve169fv9b6XBXnnHOOBg0a5Hp/wQUX+LE31Rcsx1Edr776qoqLi13vW7VqpS5duig0NFS9e/f2Y88AWAXBGYAk6aWXXlKLFi0kOUaf33//fY0ePVqZmZmSpGPHjun666/Xtm3b1KhRI9fnHn/8cX90t8o6duyo//znP/7uhteC5TiqIysry+394sWL1bZtWz/1BoAVUaoBoBxnzejy5cvdRpCzs7M1Y8YMt7Znq3Hevn27Ro8erY4dO6phw4YKCwtTo0aN1LZtWw0cOFB/+tOfXGUgzl8plw3jw4cPr/BXzRXVZGZnZ+u+++5Ty5YtFRERocsvv7zStmfz1VdfadCgQTrnnHMUFRWljh07asaMGSosLCzXtkWLFm7bL6uyX5f74pgrsn79et11111q166dGjZsqIiICDVt2lTXXnutXn/9dRUUFJT7TEXbzs3N1SOPPKJ27dopKipKjRs31k033aQdO3ac9furTFX75vwZK1t33q5du1ovP/j88881bNgwtWnTRg0aNFBUVJRatmypYcOGaf369RV+pqL6+U2bNunmm29WkyZNFBkZqdatW+uRRx5Rfn5+hds4cuSIJkyYoBYtWigyMlLNmjXTXXfdpZ9++slnP1sVOXnypKZOnar27dt7dP4/+ugj3XzzzWrVqpXq1auniIgIJSYmqkuXLrr99ts1c+ZMHTt27OxfNBCoDABLkuT22L17d4XtHnjgAbd2ycnJbusvu+yySrfz+eefm6ioqHL7Kvt44YUXjDHGPProo2dtK8m8/vrrxhhjli9f7rb8iiuuMM2aNXNbdtlll1XYdtiwYW7HMWzYMLf148aNM+Hh4RXuv1+/fiY/P9/t882bN3drU1bZY3Meg7fHXPY4iouLzfjx48+6va5du5off/zR7bNlt923b1/TsmXLCj8fGxtb6c9MZarbt7I/Y2f6fs6m7LY8/VxhYaEZPnz4Gftgs9nMI488Uu6zZX+2hg4dakJDQyvcxsCBA8t9/ueffzatW7eusH2jRo3MoEGDauRn61e/+pXp0KGDx+d/xowZHu1vy5YtHn3nQCCiVAPAGV177bWaOXOm6/3evXuVkZGhlJSUs372iSee0KlTp1zvu3fvruTkZB09elT79u3T7t273S7w6tChgwYNGqRt27Zp+/btruW9evVS8+bNXe+dJSVlLV++XJLUpEkTdevWTSdPnlRERITHx1rac889p/r16+uSSy7R0aNHtWnTJte6Tz75RFOnTtWf/vSnam27NG+Puaw///nPevbZZ92Wde/eXfHx8Vq3bp1rtO+rr77SNddco02bNlX6HX3++eeSHCO7SUlJWr16tet8Hj16VE8++aRefvllj4+1un1z1tGvXLlSBw8edH32mmuuUb169SR5/v1U1wMPPKDXX3/d9b5hw4bq06ePQkJCtHr1ah0/flzGGD3xxBNKSkrSPffcU+m23njjDUVGRuriiy/WkSNHtGXLFte69957T6tXr9ZFF13kWjZ8+HC3i3PDw8PVu3dvnT59WuvXr9d///vfCvfj7c/W0qVLJXl2/gsLC91GtiMiItSnTx/FxcUpOztbP/30k3766adKvxOgzvB3cgfgHyozClTZ6OH27dvLtV23bp1r/ZlGnNu0aeNaPmLE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6HPnnXee2z7L/mwtX77cbf3Zvvcz3QAlISHB3HzzzW7L3njjDbfP+/LP05nOf0xMzFm/m+joaLNs2bKqnTQggFCqAcAlLCxMdrtdLVq00KWXXqr7779fq1ev1qpVq9SqVasqb2/y5Ml64okndO2116pNmzaKj49XaGio6tWrp/PPP1+33XabVqxY4boS3ykqKkqffvqpbr31VtcodW274447tGrVKl133XWKj49XRESE2rdvr6eeekoffvhhuWnuYmNjtWrVKt15551KSEhQeHi4mjdvrvvvv19ff/21W013RXx1zDabTS+88ILS09M1YsQInX/++apfv77Cw8OVkJCgtLQ0vfLKK9qwYUON3zSkLvXtbMLDwzVv3jx98cUXGjFihNq3b68GDRooNDRUdrtdnTp10m233abXXnut0ltvV1dSUpLWrVun8ePHKyUlReHh4Tr33HM1atQobd68uVx9fdmyodr68/TPf/5TEydOVN++fdWiRQs1bNhQoaGhiomJUbdu3TRu3Dht2bJFV155ZY3sH6gNNmPKXOoMAAACxqlTp3T06NEK5z/evHmzLr74Yte1CA0bNlR2dnaNlzIBVkWNMwAAASwzM1OtWrVS79691alTJyUmJiovL0/ffvutPvzwQ7fb1j/yyCOEZqAGMeIMAEAA27Nnz1mn5gsNDdWDDz6oP//5z7XUK8CaCM4AAASwkydP6oUXXtBnn32m7du368CBAzp16pTsdrtat26tvn37asSIEerQoYO/uwoEPYIzAAAA4AFm1QAAAAA8QHAGAAAAPMCsGjWouLhY+/btU8OGDd1u1woAAIDAYIzRsWPHlJSUpJCQM48pE5xr0L59+5ScnOzvbgAAAOAs9u7dq2bNmp2xDcG5BjVs2FCS40TY7XY/9wYAAABl5ebmKjk52ZXbzoTgXIOc5Rl2u53gDAAAEMA8Kavl4kAAAADAAwRnAAAAwAMEZwAAAMADBGcAAADAAwRnAAAAwAMEZwAAAMADBGcAAADAAwRnAAAAwAMEZwAAAMADBGcAAADAAwRnAAAAwAMEZwAAAMADBGcAAADAAwRnAAAAwAMEZwAAAMADBGcAAADAAwRnAAAAwAMEZwAAAMADBGcAAADAAwRnAAAAwAMEZwAAAMADBGdozx5p/Hjpxx/93RMAAIDARXCG/vY36bnnpFmz/N0TAACA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5nwFlgcffNBccsklla4vLi42iYmJZsaMGa5lR48eNZGRkebf//63McaYbdu2GUlm/fr1rjYffvihsdls5ueffzbGGPPSSy+ZuLg41/lz7rtt27a+PqSgNmDAADNixAi3ZTfeeKMZOnSoMYbzFSjKBufaPC8333yzGTBggFt/+vTpY/7v//7Pp8dYWyjVqMMKCgq0ceNG9evXz7UsJCRE/fr1U3p6uh97Zi05OTmSpPj4eEnSxo0bVVhY6HZe2rVrp5SUFNd5SU9PV+fOnd1upJOWlqbc3Fxt3brV1ab0NpxtOLfVM2bMGA0YMKDcd8r5CiwffPCBevXqpcGDB6tJkybq3r27XnnlFdf63bt3KzMz0+27jomJUZ8+fdzOV2xsrHr16uVq069fP4WEhGjt2rWuNpdeeqkiIiJcbdLS0rRz504dOXKkpg8zaFx00UVatmyZvv32W0nSV199pS+++ELXXHONJM5XoKrN8xJsfzcSnOuwgwcPqqioqNxdDBMSEpSZmemnXllLcXGxxo0bp4svvlidOnWSJGVmZioiIkKxsbFubUufl8zMzArPm3Pdmdrk5uYqLy+vJg4naL311lv68ssvNW3atHLrOF+BZdeuXZo9e7batGmjjz76SKNHj9b999+vefPmSSr5vs/0915mZqaaNGnitj4sLEzx8fFVOqc4u4ceeki33nqr2rVrp/DwcHXv3l3jxo3T0KFDJXG+AlVtnpfK2tTV88YttwEvjBkzRt98842++OILf3cFldi7d68eeOABLV26VFFRUf7uDs6iuLhYvXr10pNPPilJ6t69u7755hvNmTNHw4YN83PvUNb8+fP1xhtv6M0331THjh21efNmjRs3TklJSZwvBCVGnOuwxo0bKzQ0tNzV/1lZWUpMTPRTr6xj7NixWrhwoZYvX65mzZq5licmJqqgoEBHjx51a1/6vCQmJlZ43pzrztTGbrcrOjra14cTtDZu3Kjs7Gz16NFDYWFhCgsL08qVK/X8888rLCxMCQkJnK8A0rRpU3Xo0MFtWfv27ZWRkSGp5Ps+0997iYmJys7Odlt/+vRpHT58uErnFGc3ceJE16hz586ddfvtt2v8+PGu3+5wvgJTbZ6XytrU1fNGcK7DIiIi1LNnTy1btsy1rLi4WMuWLVNqaqofexbcjDEaO3as3n33XX366adq2bKl2/qePXsqPDzc7bzs3LlTGRkZrvOSmpqqLVu2uP2ltHTpUtntdldoSE1NdduGsw3ntmquuuoqbdmyRZs3b3Y9evXqpaFDh7pec74Cx8UXX1xuesdvv/1WzZs3lyS1bNlSiYmJbt91bm6u1q5d63a+jh49qo0bN7rafPrppyouLlafPn1cbT777DMVFha62ixdulRt27ZVXFxcjR1fsDl58qRCQtyjRGhoqIqLiyVxvgJVbZ6XoPu70d9XJ8I7b731lomMjDRz584127ZtM6NGjTKxsbFuV//Dt0aPHm1iYmLMihUrzP79+12PkydPutrcc889JiUlxXz66admw4YNJjU11aSmprrWO6c369+/v9m8ebNZsmSJOeeccyqc3mzixIlm+/btZtasWUxv5iOlZ9UwhvMVSNatW2fCwsLMn//8Z/Pdd9+ZN954w9SrV8/861//crV56qmnTGxsrHn//ffN119/ba6//voKp9Hq3r27Wbt2rfniiy9MmzZt3KbROnr0qElISDC33367+eabb8xbb71l6tWrx/RmVTRs2DBz7rnnuqaj+9///mcaN25sJk2a5GrD+fKPY8eOmU2bNplNmzYZSeaZZ54xmzZtMj/++KMxpvbOy6pVq0xYWJj561//arZv324effRRpqODf73wwgsmJSXFREREmN69e5s1a9b4u0tBTVKFj9dff93VJi8vz9x7770mLi7O1KtXz9xwww1m//79btvZs2ePueaaa0x0dLRp3Lix+d3vfmcKCwvd2ixfvtx069bNREREmFatWrntA9VXNjhzvgLLggULTKdOnUxkZKRp166defnll93WFxcXm0ceecQkJCSYyMhIc9VVV5mdO3e6tTl06JAZMmSIadCggbHb7Wb48OHm2LFjbm2++uorc8kll5jIyEhz7rnnmqeeeqrGjy3Y5ObmmgceeMCkpKSYqKgo06pVK/PHP/7RbXoyzpd/LF++vML/Vw0bNswYU7vnZf78+eb88883ERERpmPHjmbRokU1dtw1zWZMqdv7AAAAAKgQNc4AAACABwjOAAAAgAcIzgAAAIAHCM4AAACABwjOAAAAgAcIzgAAAIAHCM4AAACABwjOAAAAgAcIzgCAgPTYY4/JZrPJZrOpRYsW/u4OABCcASDQrVixwhUgbTab5s6d6+8ueY1QDKAuIjgDAAAAHiA4AwAAAB4gOANAEMrKytIf/vAHdevWTQ0bNlRUVJRat26tMWPGKCMjo1z7O++801U6cfnll2v//v0aNWqUmjZtqsjISLVv316vvPJKhfvasmWLrrvuOtntdtntdl1zzTXavHlzheUYzrKTxx9/3PX5H3/80aNSlBMnTugPf/iDWrZsqcjISLVq1UpPPvmkjDFef18A4Ikwf3cAAOBb6enp+s1vfqODBw+6Lf/hhx/00ksv6Y033tCCBQvUt2/fCj+/d+9e9ezZU/v373ct27Fjh0aNGqXQ0FCNGDHCtXzDhg264oordPz4cdeyJUuWaMWKFZVuvzpOnjypSy+9VF9++aVr2e7du/XHP/5Rp06d0tSpU322LwCoDMEZAIJIbm6uBg4c6ArNzZs31y233KLo6Gj95z//0datW5WTk6NBgwbpu+++U0xMTLlt7Nq1S1FRURo9erSio6M1e/Zs5eXlSZKmT5/uCs7GGI0YMcItNA8ZMkStWrXS/PnztXTp0nLbPu+88zRjxgx9/PHHrvVxcXH6wx/+4GpzwQUXlPvcgQMHdOjQId1xxx1KSkrSq6++6jrGmTNnavLkyYqIiKju1wYAHiE4A0AQmTt3rrKzsyU5AumXX36p+Ph4SdLEiRPVsmVLHThwQAcOHNC8efN0//33V7idt956S9dff70kKSUlRePGjZMk7dy5U8eOHVPDhg21du1abdmyxfWZBx98UE899ZQk6Xe/+53OO+88HTlyxG27ycnJ+v3vf6/jx4+7grPdbtfvf//7sx7bM888owceeECSdOGFF2rgwIGSHP9Y2Llzpzp37uzJVwQA1UaNMwAEkVWrVrleHzlyRI0aNXLVDjdo0EAHDhxwrV+9enWF20hKSnKFZklq27at23pnGN6wYYPb8jvuuMP1Oi4uzm0b3goNDdX//d//nbVPAFCTCM4AEEQOHz7scdvSIbq0svMqR0ZGur0vLi6WJB09etRteWJi4hnfeyMhIUFRUVFn7RMA1CRKNQAgiDjLMiSpadOmmjBhQqVtk5OTK1weHh7u9t5ms1XYLjY21u19dna22/4zMzPP1l2PedonAKhJBGcACCIXXXSR5s+fL8kxoty/f3916dLFrY0xRsuWLdN5553n1b569erl9v7f//63a5q5I0eO6P3336/0s6WD8MmTJ73qBwDUFoIzANQxjz/+uF588cVyy5OSkvTPf/5Tf/rTn3Tw4EGdPn1aF198sQYPHqzWrVsrPz9fO3fu1IoVK5SVlaXly5erZcuW1e7HhRdeqM6dO7suEHziiSe0e/dupaSkaP78+WesOz733HNdrw8cOKDhw4erQ4cOstlsGjNmjKKjo6vdLwCoKQRnAKhj9uzZoz179pRbfvDgQcXExOj999/X9ddfr4MHD+r48eN6/fXXa6wvr732mmseZ2OM/vnPf0py1CBfeeWV+vTTTyVJISHul9RcffXVqlevnmu0ufRNT+68806CM4CAxMWBABBkLrroIm3dulWPPPKIevbsKbvdrtDQUMXGxqpnz54aO3asli5dqksvvdTrffXq1UurV6/WgAED1KBBAzVo0EBXXXWVPvvsM7Vp08bVrmw9dGJiohYsWKCLL75Y9evX97ofAFAbbIZ7lQIAqqmgoEBhYWHlRpSPHz+uTp066ccff5Qk3X333Xr55Zf90UUA8BlKNQAA1bZt2zb95je/0dChQ9WhQwfFxcVpz549mjNnjis0h4SEaMyYMX7uKQB4j+AMAPDK3r17XXcMLCsiIkKzZ89W165da7lXAOB7BGcAQLUlJydr/PjxWrFihTIyMpSTk6OoqCi1bNlSl19+ue699161a9fO390EAJ+gxhkAAADwALNqAAAAAB4gOAMAAAAeIDgDAAAAHiA4AwAAAB4gOAMAAAAeIDgDAAAAHiA4AwAAAB4gOAMAAAAe+H8/3qpg7QqANgAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Get Top bigrams" + ], + "metadata": { + "id": "Hd9C9jWEcsCv" + } + }, + { + "cell_type": "code", + "source": [ + "def get_top_n_bigram(corpus, n=None):\n", + " vec = CV(ngram_range=(2, 2)).fit(corpus)\n", + " bag_of_words = vec.transform(corpus)\n", + " sum_words = bag_of_words.sum(axis=0)\n", + " words_freq = [(word, sum_words[0, idx]) for word, idx in vec.vocabulary_.items()]\n", + " words_freq =sorted(words_freq, key = lambda x: x[1], reverse=True)\n", + " return words_freq[:n]" + ], + "metadata": { + "id": "ut_pswWab9mx" + }, + "execution_count": 54, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "common_words = get_top_n_bigram(train_data['description_cleaned'], 10)\n", + "common_words_df = pd.DataFrame(common_words,columns=['word','freq'])\n", + "plt.figure(figsize=(10, 6))\n", + "ax = sns.barplot(x='freq', y='word', data=common_words_df,facecolor='yellow',linewidth=3,edgecolor=sns.color_palette(\"ch:start=3, rot=.1\",10))\n", + "\n", + "plt.title(\"Top 10 bigrams\",font='Serif')\n", + "plt.xlabel(\"Frequency\", fontsize=10)\n", + "plt.yticks(fontsize=13)\n", + "plt.xticks(rotation=45, fontsize=10)\n", + "plt.ylabel(\"\");" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 582 + }, + "id": "Uz810EoKb9wE", + "outputId": "a4d26ea4-975d-40fc-e1a7-dbe414b47f1e" + }, + "execution_count": 55, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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/bJYLBo6dOg19Y+JiZHFYrm1RQEAAADANSK8AgAAAABcHuEVAAAAAODyCK8uLD09Xampqc4uAwAAAACc7q4Pr/Pnz5fFYtHUqVMvu75SpUoqW7asjDH2tt27d6t9+/YqUqSIvLy8FBYWpv79+yslJcVh2x07dqhXr16qVKmS/P395evrqxo1amjatGk5jjN06FBZLBZt27ZNr7zyiooXLy5vb2+tW7fuqvWnpKRo4MCBKlOmjKxWq0JCQvT888/rwIED13T+qamp6t+/v4oWLSofHx898MADWrJkyTVtCwAAAAC3i4ezC3C26OhohYSE6OOPP1bXrl0d1q1bt07bt2/X8OHD7Q8v2rBhg6KiohQUFKTu3burWLFi+v333zVu3DitWbNGP/zwgzw9PSVJq1at0urVq/X444+rVKlSSklJ0bx589S1a1edOHFCAwcOzFHPc889Jx8fH8XGxspisahIkSJXrD09PV1NmjTRmjVr1Lp1a8XGxmr37t2aOHGilixZol9//VXFixe/6vk/++yzWrBggaKjo9WkSRP98ccfatWqlUqVKnW930oAAAAAuHUMzMCBA40ks23bNof2Ll26GHd3d3P48GF7W0REhClfvrxJSkpy6PvVV18ZSWbGjBn2trNnz+Y4VmZmpqlfv74JCAgwFy5csLcPGTLESDL169c36enp11T3lClTjCTTv39/h/ZFixYZSaZdu3b2tn379hlJZsiQIfa2+Ph4I8l06NDBYfv58+cbSeZq/3ukpqYam81mXw4dOmQkme0/HTAZ6QWNMWJhYWFhYWFhYWFhuUVLRnpBc2jTaYclIz3TuAKbzWYkGZvNlqv7veunDUtS165dZbFYNH36dHtbSkqK5s6dq8cee0xFixaVJG3ZskWbN29W27ZtlZaWppMnT9qXunXrys/Pz2HKrZ+fn/3r1NRUJSYm6tSpU2rcuLGSkpK0Y8eOHLW89NJL8vC4tgHx+fPny83NLccIbrNmzVS1alV9/fXXysrKuuL2CxYskCT179/fob1FixYqX778VY89YsQIBQYG2pcSJUpcU80AAAAAcCMIr5JKlSqlhg0bavbs2UpPT5ckffHFF0pOTlaXLl3s/RISEiRJQ4YMUaFChRyWwoULKyUlRcePH7f3P3v2rPr166eSJUvKx8dHwcHBKlSokAYPHixJOn36dI5awsPDr7nuffv2qWjRosqfP3+OdZUqVVJycrJOnjx5xe337t0rNze3yx6zYsWKVz32wIEDZbPZ7MuhQ4euuW4AAAAAuF53/T2v2bp166annnpK33zzjZ588klNnz5dISEhatasmb2PMRcf2hQbG6tHH330svu5NEi2bdtWixYtUrdu3VSvXj0VLFhQ7u7u+u677/Tvf//7sqOivr6+uXxmt4bVapXVanV2GQAAAADuEoTX/2nevLkKFy6s6dOnq3LlylqzZo1ee+01hym85cqVkyS5u7urYcOGV93fmTNntGjRIrVv316TJk1yWLds2bJcqbl06dL6/vvvdebMGQUFBTms2759uwICAhQcHHzV7bOysrRr1y5VqlTJYV32KDMAAAAAuAKmDf+Pp6enYmJiFB8fr2HDhkmSOnfu7NCnWrVqqly5siZNmqS9e/fm2EdGRoZOnTol6WLAlf5/tDbb0aNHL/uqnBvRokULZWVlaeTIkQ7tixcv1saNG/XEE0/Ize3Kl7h58+aSpFGjRjm0L1iwQDt37syVGgEAAAAgNzDyeomuXbtq1KhR+uyzz1S/fn37SGs2i8Wi2bNnKyoqShEREerUqZMqVaqkc+fOac+ePfrqq680YsQIxcTEyN/fX40bN9Ynn3wiHx8f1axZUwcOHNDkyZNVqlQpJSYm3nS9MTExmjlzpt59913t379f9erV0549ezRhwgTdc889euedd666fZMmTRQdHa2ZM2fq1KlTevTRR/XHH39o8uTJqly5srZu3XrTNQIAAABAbiC8XqJs2bJq0KCBVqxYkWPUNVvVqlW1ceNGjRgxQt98840mTZokf39/hYWFKSYmRo888oi97yeffKIBAwZo4cKFmjlzpsqVK6fhw4fL09NTHTt2vOl6PT09FR8fr7fffltz587VV199paCgID311FN6++23r+kJwHPnztXrr7+uOXPmaOnSpapSpYq++uorffrpp4RXAAAAAC7DYv4+r/Uu17RpU61du1ZHjhyRj4+Ps8vJM5KSkhQYGKjtPx1QeK3qcve4+ZFlAAAAAJeXmVFQR7ftcWgrUilA7h7OvzM0OxvYbDYFBATk2n6df2YuZM+ePYqPj1e7du0IrgAAAADgQpg2LGn9+vVKSEjQuHHj5OXlpdjYWGeXBAAAAAC4BCOvkiZOnKhOnTopKSlJc+bMUVhYmLNLAgAAAABcgpFXSXFxcYqLi3N2GQAAAACAK2DkFQAAAADg8givAAAAAACXR3gFAAAAALg8wisAAAAAwOXxwCbkuqyMgs4uAQAAALij3Y3/5ia8Itcd37ne2SUAAAAAuMMwbRgAAAAA4PIIrwAAAAAAl0d4BQAAAAC4PO55Ra4KqRiggIAAZ5cBAAAA3HXc3C3OLuGWIrwiV7l7uMndgwF9AAAAALmLlAEAAAAAcHmEVwAAAACAy2PaMHJVxoVMZVzIdHYZAADI3dNNFsudff8XANxNCK/IVTt/PK58fuecXQYAAKoYGSIPL3dnlwEAyCVMGwYAAAAAuDzCKwAAAADA5RFeAQAAAAAuj3tekevKPRQpD69Tzi4DAHAXybhQQLv/u8rZZQAAbiHCK3Kdh9cpwisAAACAXMW0YQAAAACAyyO8AgAAAABcHuEVAAAAAODyCK8AAAAAAJdHeAUAAAAAuDzCKwAAAADA5RFeAQAAAAAuj/AKAAAAAHB5hNe73KpVq2SxWBQXF+fsUgAAAADgigivAAAAAACXR3gFAAAAALg8wutdKjk52dklAAAAAMA1u+PDa1xcnCwWi1asWKHRo0erTJkyslqtCg8P18yZMy+7zbJly9S4cWMFBQXJ29tbERERmjRpkkOfjh07ytvbW6mpqfa2tWvXymKxqECBAsrKyrK3L168WBaLRXPnzr1infPnz5fFYtHUqVMvu75SpUoqW7asjDH2ttWrV6tRo0YKDAyUj4+PqlevrunTp+fYNjIyUmFhYdq7d69at26tAgUKKCAg4Iq1SNLMmTPl6emp1q1bO5wjAAAAADjDHR9esw0aNEizZ89W9+7d9d5778nNzU0xMTFas2aNQ78pU6aocePGOnv2rAYPHqwPPvhAZcqUUc+ePdW/f397v6ioKKWlpTlsv3z5crm5uen06dPauHGjvX3FihWyWCxq0KDBFeuLjo5WSEiIPv744xzr1q1bp+3bt6tTp06yWCySpIULFyoqKkoJCQmKjY3VO++8I09PT3Xp0kWDBw/OsY+zZ8+qfv368vDw0PDhwzV06NAr1vLOO+8oJiZG3bt31xdffCFvb+8cfdLS0pSUlOSwAAAAAMAtY+5wM2bMMJJM1apVTVpamr39zz//NF5eXuaZZ56xtx05csRYrVbz7LPP5thP3759jZubm/njjz/s20sygwYNsvdp0KCBeeKJJ4y/v79599137e3Vq1c3lStX/sdaBw4caCSZbdu2ObR36dLFuLu7m8OHDxtjjMnIyDAlS5Y0gYGB9jZjjElLSzMPPfSQcXNzM7t27bK3169f30gygwcPznHMlStXGklmxowZJjMz0/Tq1ctIMsOHD79qrUOGDDGSciz//SrBpKcVMMaIhYWFhYXlti3paQXM5vg/HZb0tAwDALj9bDabkWRsNluu7veuGXnt1auXvLy87J+LFSum8PBw7d692972n//8R2lpaercubNOnjzpsERHRysrK0vLli1z2H7FihWSpNTUVK1du1ZNmjRR/fr1tXz5cknSmTNntGnTJkVFRf1jjV27dpXFYnGY+puSkqK5c+fqscceU9GiRSVJGzZs0MGDB9WpUyd7myR5eXnp1VdfVVZWlr7++usc++/Xr98Vj52amqrWrVtrypQpiouL06BBg65a68CBA2Wz2ezLoUOH/vH8AAAAAOBGeTi7gNuldOnSOdoKFiyoAwcO2D8nJCRIkho2bHjF/Rw/ftz+dVRUlKZNm6bk5GT98ssvSk1NtU8nfv3113XhwgWtWrVKWVlZ1xReS5UqpYYNG2r27NkaOXKkPD099cUXXyg5OVldunSx99u3b5+ki/fB/l122969ex3aCxUqpKCgoCse+9VXX1VycrLmzJmjtm3b/mOtVqtVVqv1H/sBAAAAQG64a8Kru7v7ZduNMTm+njVrlooUKXLZ/peG4KioKE2aNEmrV6/W2rVrVbRoUVWoUEFpaWk6d+6c1q1bpxUrVsjd3V3169e/pjq7deump556St98842efPJJTZ8+XSEhIWrWrNm1nupl+fr6XnV9ixYt9OWXX2rUqFFq0qSJChYseFPHAwAAAIDcdNeE12tRrlw5SVJwcPBVR1+zNWjQQBaLRcuXL9fatWvto6sREREKDg7W8uXLtXLlSlWrVu2qo56Xat68uQoXLqzp06ercuXKWrNmjV577TV5ePz/pcoO0Nu2bcux/fbt2x36XKuoqCh16tRJjz/+uBo0aKBly5apcOHC17UPAAAAALhV7pp7Xq9FmzZtZLVaNWTIEJ0/fz7HepvNprS0NPvn4OBgValSRYsWLdKvv/5qD6/ZTxaeN2+etm3bdk1ThrN5enoqJiZG8fHxGjZsmCSpc+fODn2qV6+ukiVLasaMGTp2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llWdOnXs/fr06aNJkyapQYMG6tevn06cOKFevXqpVKlS13W8P//8U40aNdLTTz+t1q1ba8mSJfrggw/k4eGhbdu26fz58xowYIBOnjyp0aNHq0WLFkpISJCb28XfQxw+fFjTpk3Tk08+qbZt28rDw0M//PCD3nvvPW3cuFHx8fE5jjlp0iQdP35cnTt3VlBQkD755BO99tprKl68uNq2bXvZOtPS0pSWlmb/nJSUdF3nCQAAAADXxbiggQMHGklm27ZtDu1dunQx7u7u5vDhw8YYYzIyMkzJkiVNYGCgvc0YY9LS0sxDDz1k3NzczK5du+ztoaGhpn79+jmOt3LlSiPJzJgxw942Y8YMI8lUrVrVpKWl2dv//PNP4+XlZZ555hl729atW40k06RJE5OZmWlv37x5s3FzczOSzL59+/7xvENDQ40k88UXXzi0V69e3VgsFvPEE0+YrKwse/vYsWONJPP99987nPuFCxdy7Pv11183ksz69etznHeRIkXMmTNn7O0pKSkmODjY1K5d+4q1DhkyxEjKsURHvmzOnPYxxoiFheUuWM6c9jGtGg5wWM6cTjYAAODuZbPZjCRjs9lydb8uN21Ykrp27SqLxeIw9TclJUVz587VY489pqJFi0qSNmzYoIMHD6pTp072Nkny8vLSq6++qqysLH399dc3VUuvXr3k5eVl/1ysWDGFh4dr9+7d9rZFixZJkl588UX7CKgkValSRU2aNLmu4xUrVkxPPfWUQ1vdunVljNELL7xgH3GWpIcffliSHGrx8vKSp6enJCkjI0OnT5/WyZMn1bBhQ0nS+vXrcxyzY8eOCgwMtH/29fVV7dq1Hfb7dwMHDpTNZrMvhw4duq7zBAAAAIDr4ZLhtVSpUmrYsKFmz56t9PR0SdIXX3yh5ORkdenSxd5v3759ki7eB/t32W179+69qVpKly6do61gwYJKTEzMUUf58uVz9L1c29Vcbppx/vz5L7suu/3SWiRpwoQJioiIkNVqVYECBVSoUCH7vb6nT5/Osf9rOce/s1qtCggIcFgAAAAA4FZxyfAqSd26ddOJEyf0zTffSJKmT5+ukJAQNWvW7Ib3eemo5aUyMjKuuI27u/tl240xl22/WVc63rXW8sEHH6h3794qUqSIJk+erG+//VZLly61P4wqKyvruo4JAAAAAK7A5R7YlK158+Yq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H8RUrlw5tWjRQqNGjXJylbiczMxMZWVlqXv37kpOTtYnn3wiLy8vGWPk5uamvXv3ql27dipRooTmzp0rSQ7XF86xe/dujR49Wps3b9bhw4dVpUoVvf/++woNDdX27dvVvHlzRUVFadasWZK4Zq7mgQceUL58+bRixQpJUlpamqxWqySpZs2aKlu2rD777DNnloj/ycrKsj+fITY2VnPmzNH999+v6dOn65577rH3q1y5su6//37FxcU5qVL83dmzZ/XEE0+ofPnymjhxojIzM2WMkYeHh7Zv364mTZqoZcuWGjdunLNLxf/89ttvGjRokIwxOnjwoMLCwvTOO++oYMGC2rp1q1q2bKmXX37Z4Rkrt8UtjcYAnMJmszm8kiMrK8ucPHnSPPjgg2bOnDlOrAyXk5GR4fB51apVxt3d3YwdOzZHn1WrVhk3NzezdevW21ojHP39mu3Zs8e0b9/eNGvWzOzYscNh3TfffGMsFovZuXPn7SwRl3H27FmTlJTkMFrw22+/mcKFC5tnn33W3pb9Tt5XXnnFREdH3/Y64ehy180YY0aPHm2+/PJL+wyV7D+XTz75pGnduvVtrxOOEhMTTUJCgv1n38KFC3ltn4tLTEw027dvt/89lpCQYOrUqWMaNWpk9u3b59B3/PjxJjg42Bw6dOi2XjMeLwrcgQICAuTl5WX/bLFYNG7cOJ08eVJ16tRxYmX4u127dmnMmDE6evSova1+/fp699139fLLL2vatGmSJHd3d0mSv7+/ypcvb38NEm6/y12zMmXK6O2331afPn1UunRpSRdHWKWL9zGXL19ehQsXdkq9uGj79u1q1aqV6tevr4oVK2rOnDmSpIoVK2rs2LFaunSpnnrqKaWnp9tH9/766y/5+fkpIyPDfj1xe13uumU/LTg2NlaPP/64fSaDu7u7fWbDvffeK0lcNyfZunWrGjZsqDZt2qhy5cr617/+pUaNGqlPnz5q27atFi1axGv7XEz2NXv66adVpUoVDRs2TBUqVND06dPVvXt3FStWTJLjn6kiRYooODj4tl4zj9t2JABO8fnnn2vlypWaN2+eli9fzsOZXMiePXv04IMP6vTp00pMTNQrr7yi4OBgSVLPnj2VkpKibt266cCBA2rVqpVCQ0M1b948paenE16d5GrXrGTJkipRooT9L/Hs/65bt06hoaG8jsqJtm/frnr16un555/X/fffrw0bNqhjx4669957Va1aNT3xxBPy8/NTr169FBERoQoVKsjLy0vffvut1q1bJw8P/rnkDFe6bpUqVVLVqlUlyeEXtRkZGRo2bJjWrFmjESNGSBJByAm2b9+uyMhIdezYUR07dtTixYvVv39/denSRQMGDFBqaqpatWqlcePGqUWLFgoKCuK1fU52pWsWExOj8uXLq1y5cvZrk/1navfu3QoPD1dWVtbtLfa2jfECcIrff//dNGvWjGmmLubs2bOmU6dOJiYmxnz00UfGYrGY/v37m7/++sveJzMz08ycOdOEhISYYsWKmQoVKpiiRYuaDRs2OLHyu9eVrtmlD166dOrU1q1bzeDBg01AQIDDA5tweyUmJprGjRubvn37OrRHRkaaF154waEtKSnJvPrqq6ZLly6mT58+Ztu2bbezVFziWq7bpX/elixZYqKjo01ISAivf3OiEydOmHr16pkXX3zR3paVlWWaNGli1q1bZzZv3mx+/vlnM2HCBF7b5yKudM0effRRs2bNGvPbb785vNJtz5495o033jBBQUFO+bclv0oE7nARERH66quvHH47Dedzc3NTjRo1VLBgQT399NMKDg7WM888I0nq37+/ChUqJDc3Nz3//POqV6+eDh48qHPnzqlKlSr2qTu4va52zV599VWHqVP79+9Xv379tGvXLv3www+qUqWKM0u/q6Wnp+vMmTNq3bq1pP9/6E+pUqV06tQpSRenwRlj5O/vr3fffdehH5zjWq5b9p83Y4xKlSqle++9V++9954qVKjgtLrvdhaLRY8++qj9uknS22+/rSVLlujo0aM6c+aM7r33Xn3wwQfavHmzfv/9d17b52RXumbx8fE6duyYEhMTde+99+qNN95QSEiIYmNj9fvvv2vlypWqVKnS7a/XGG4GAABnSElJcZj+O3fuXD377LOKjY3Va6+9puDgYGVkZOjIkSMqWbKkEytFtqtdswEDBqhgwYLKzMzUqVOnlJKSIjc3N66dC9i9e7fKlSsn6WIo8vT01BtvvKEDBw7YnwItSUlJSQoICJDEU6FdwbVet3PnzsnX11eZmZn25wPAeZKTk+Xv7y/p4q1Lbdu21eeff66GDRtqy5Yt6tevn5o2baphw4Y5uVJku9o127p1q/r166fHH39cAwcO1E8//aRSpUopLCzM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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Label Encodeing of the Target variable" + ], + "metadata": { + "id": "hwiJC56nczF3" + } + }, + { + "cell_type": "code", + "source": [ + "le = LabelEncoder()\n", + "train_data['genre'] = le.fit_transform(train_data['genre'].values)\n", + "\n", + "# keep only relevent columns\n", + "train_df = train_data.loc[:,['description_cleaned', 'genre']]\n", + "test_df = test_data.loc[:,['description_cleaned', 'title']]\n", + "train_df.head(10)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "8woFS3nHcz8x", + "outputId": "a0670398-5d29-425e-cfd9-c6671a963590" + }, + "execution_count": 56, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " description_cleaned genre\n", + "1 listen convers doctor parent year old oscar le... 8\n", + "2 brother sister past incestu relationship curre... 24\n", + "3 bu empti student field trip museum natur histo... 1\n", + "4 help unemploy father make end meet edith twin ... 8\n", + "5 film titl refer recov bodi ground zero also st... 8\n", + "6 qualiti control consist seri singl take shot f... 7\n", + "7 tough econom time max joey run idea discov sen... 5\n", + "8 ron petri keanu reev troubl teen whose life ha... 6\n", + "9 sudden calamit event caus great loss life dama... 18\n", + "10 four high school student embark terrifi journe... 13" + ], + "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", + " \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", + "
description_cleanedgenre
1listen convers doctor parent year old oscar le...8
2brother sister past incestu relationship curre...24
3bu empti student field trip museum natur histo...1
4help unemploy father make end meet edith twin ...8
5film titl refer recov bodi ground zero also st...8
6qualiti control consist seri singl take shot f...7
7tough econom time max joey run idea discov sen...5
8ron petri keanu reev troubl teen whose life ha...6
9sudden calamit event caus great loss life dama...18
10four high school student embark terrifi journe...13
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 56 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Train Test Split" + ], + "metadata": { + "id": "wf-EIfUjc44T" + } + }, + { + "cell_type": "code", + "source": [ + "train_set , val_set , train_label , val_label = train_test_split(train_df['description_cleaned'] , train_data['genre'] , test_size=0.2 , shuffle=True , random_state = 42)\n", + "\n", + "print(f'Split data into train and eval sets')\n", + "print(f'Trani Set\\t: {len(train_set)}\\nValidation Set\\t: {len(val_set)}')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "M_GZ6Etlc08G", + "outputId": "826e59b0-a431-41d4-d5d0-76efd87fd1b0" + }, + "execution_count": 57, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Split data into train and eval sets\n", + "Trani Set\t: 43371\n", + "Validation Set\t: 10843\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Feature Extraction" + ], + "metadata": { + "id": "Y3hByqDec9g8" + } + }, + { + "cell_type": "code", + "source": [ + "# using TF-IDF\n", + "vectorize = TfidfVectorizer(stop_words='english', max_features=100000)\n", + "train_set_tfidf = vectorize.fit_transform(train_set)\n", + "val_set_tfidf = vectorize.transform(val_set)" + ], + "metadata": { + "id": "ZjKOXXHWc0xA" + }, + "execution_count": 58, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#using BOW\n", + "vectorize = CV()\n", + "train_set_tfidf = vectorize.fit_transform(train_set)\n", + "val_set_tfidf = vectorize.transform(val_set)" + ], + "metadata": { + "id": "vQ6KcnqPc0kv" + }, + "execution_count": 60, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "[1] Logistic Regression Model (LR)" + ], + "metadata": { + "id": "UK_8NaUcdBxJ" + } + }, + { + "cell_type": "code", + "source": [ + "LR_model = LogisticRegression()\n", + "LR_model.fit(train_set_tfidf, train_label)\n", + "predict_LR = LR_model.predict(val_set_tfidf)\n", + "print(classification_report(val_label, predict_LR))\n", + "LR_accuracy = accuracy_score(predict_LR,val_label)\n", + "print('Logistic Regression accuracy is: {:.2f}%'.format(LR_accuracy*100))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ACUMWJh6c0SM", + "outputId": "d73f33c8-5566-4948-ee54-78c1a1fe939d" + }, + "execution_count": 61, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.39 0.30 0.34 263\n", + " 1 0.68 0.46 0.55 112\n", + " 2 0.31 0.23 0.26 139\n", + " 3 0.38 0.22 0.28 104\n", + " 4 0.00 0.00 0.00 61\n", + " 5 0.51 0.56 0.53 1443\n", + " 6 0.26 0.10 0.15 107\n", + " 7 0.69 0.76 0.73 2659\n", + " 8 0.55 0.67 0.61 2697\n", + " 9 0.28 0.19 0.23 150\n", + " 10 0.23 0.07 0.10 74\n", + " 11 0.80 0.50 0.62 40\n", + " 12 0.07 0.02 0.03 45\n", + " 13 0.63 0.61 0.62 431\n", + " 14 0.53 0.53 0.53 144\n", + " 15 0.22 0.08 0.12 50\n", + " 16 0.11 0.04 0.05 56\n", + " 17 0.18 0.06 0.09 34\n", + " 18 0.49 0.35 0.41 192\n", + " 19 0.20 0.09 0.12 151\n", + " 20 0.45 0.27 0.34 143\n", + " 21 0.38 0.38 0.38 1045\n", + " 22 0.61 0.37 0.46 93\n", + " 23 0.53 0.23 0.32 81\n", + " 24 0.29 0.23 0.26 309\n", + " 25 0.40 0.20 0.27 20\n", + " 26 0.88 0.78 0.82 200\n", + "\n", + " accuracy 0.55 10843\n", + " macro avg 0.41 0.31 0.34 10843\n", + "weighted avg 0.53 0.55 0.54 10843\n", + "\n", + "Logistic Regression accuracy is: 55.46%\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + " n_iter_i = _check_optimize_result(\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "[2] Multinomial Naive Bayes Model (MultinomialNB)" + ], + "metadata": { + "id": "xpibG5K_dQRx" + } + }, + { + "cell_type": "code", + "source": [ + "# Train a Naive Bayes classifier\n", + "NB_model = MultinomialNB()\n", + "NB_model.fit(train_set_tfidf, train_label)\n", + "y_pred_naive = NB_model.predict(val_set_tfidf)\n", + "print(classification_report(val_label, y_pred_naive))\n", + "naive_accuracy = accuracy_score(y_pred_naive,val_label)\n", + "print('Naive Bayes model accuracy is: {:.2f}%'.format(naive_accuracy*100))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HUk-bMmsdNbU", + "outputId": "d01bd6a3-1b51-4d30-d59d-e92a238b6159" + }, + "execution_count": 62, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.72 0.08 0.14 263\n", + " 1 0.60 0.05 0.10 112\n", + " 2 0.33 0.06 0.10 139\n", + " 3 0.00 0.00 0.00 104\n", + " 4 0.00 0.00 0.00 61\n", + " 5 0.51 0.50 0.50 1443\n", + " 6 0.00 0.00 0.00 107\n", + " 7 0.57 0.88 0.69 2659\n", + " 8 0.47 0.80 0.59 2697\n", + " 9 0.50 0.01 0.01 150\n", + " 10 0.00 0.00 0.00 74\n", + " 11 1.00 0.07 0.14 40\n", + " 12 0.00 0.00 0.00 45\n", + " 13 0.74 0.36 0.49 431\n", + " 14 0.75 0.12 0.21 144\n", + " 15 0.00 0.00 0.00 50\n", + " 16 0.00 0.00 0.00 56\n", + " 17 0.00 0.00 0.00 34\n", + " 18 1.00 0.01 0.02 192\n", + " 19 0.00 0.00 0.00 151\n", + " 20 0.75 0.02 0.04 143\n", + " 21 0.57 0.14 0.23 1045\n", + " 22 0.75 0.10 0.17 93\n", + " 23 0.00 0.00 0.00 81\n", + " 24 0.42 0.03 0.05 309\n", + " 25 0.00 0.00 0.00 20\n", + " 26 0.95 0.63 0.76 200\n", + "\n", + " accuracy 0.53 10843\n", + " macro avg 0.39 0.14 0.16 10843\n", + "weighted avg 0.52 0.53 0.45 10843\n", + "\n", + "Naive Bayes model accuracy is: 52.86%\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "[3] Decision Tree Model (ID3)" + ], + "metadata": { + "id": "3MfpYtXbdWXc" + } + }, + { + "cell_type": "code", + "source": [ + "DT = DecisionTreeClassifier(max_depth=(1), random_state=0)\n", + "DT.fit(train_set_tfidf, train_label)\n", + "predict_ID3 = DT.predict(val_set_tfidf)\n", + "print(classification_report(val_label, predict_ID3))\n", + "ID3_accuracy = accuracy_score(predict_ID3,val_label)\n", + "print('ID3 model accuracy is: {:.2f}%'.format(ID3_accuracy*100))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "k1uJXt8CdNQJ", + "outputId": "692e38cd-93f0-4ded-f5e6-a49546b33a3a" + }, + "execution_count": 63, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.00 0.00 0.00 263\n", + " 1 0.00 0.00 0.00 112\n", + " 2 0.00 0.00 0.00 139\n", + " 3 0.00 0.00 0.00 104\n", + " 4 0.00 0.00 0.00 61\n", + " 5 0.00 0.00 0.00 1443\n", + " 6 0.00 0.00 0.00 107\n", + " 7 0.82 0.31 0.45 2659\n", + " 8 0.27 0.99 0.43 2697\n", + " 9 0.00 0.00 0.00 150\n", + " 10 0.00 0.00 0.00 74\n", + " 11 0.00 0.00 0.00 40\n", + " 12 0.00 0.00 0.00 45\n", + " 13 0.00 0.00 0.00 431\n", + " 14 0.00 0.00 0.00 144\n", + " 15 0.00 0.00 0.00 50\n", + " 16 0.00 0.00 0.00 56\n", + " 17 0.00 0.00 0.00 34\n", + " 18 0.00 0.00 0.00 192\n", + " 19 0.00 0.00 0.00 151\n", + " 20 0.00 0.00 0.00 143\n", + " 21 0.00 0.00 0.00 1045\n", + " 22 0.00 0.00 0.00 93\n", + " 23 0.00 0.00 0.00 81\n", + " 24 0.00 0.00 0.00 309\n", + " 25 0.00 0.00 0.00 20\n", + " 26 0.00 0.00 0.00 200\n", + "\n", + " accuracy 0.32 10843\n", + " macro avg 0.04 0.05 0.03 10843\n", + "weighted avg 0.27 0.32 0.22 10843\n", + "\n", + "ID3 model accuracy is: 32.30%\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "[4] Support Vector Machine Model (SVC)" + ], + "metadata": { + "id": "yaDiam7_ddht" + } + }, + { + "cell_type": "code", + "source": [ + "# Train a SVC classifier\n", + "from sklearn.svm import LinearSVC\n", + "svm_model = LinearSVC()\n", + "svm_model.fit(train_set_tfidf, train_label)\n", + "predict = svm_model.predict(val_set_tfidf)\n", + "\n", + "print(classification_report(val_label, predict))\n", + "svm_accuracy = accuracy_score(predict,val_label)\n", + "print('SVC model accuracy is: {:.2f}%'.format(svm_accuracy*100))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WgtSuPc3dMdR", + "outputId": "1d5b85fe-4bc5-45d1-f939-f2f06a13eca9" + }, + "execution_count": 64, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.36 0.31 0.33 263\n", + " 1 0.47 0.38 0.42 112\n", + " 2 0.22 0.19 0.20 139\n", + " 3 0.27 0.16 0.20 104\n", + " 4 0.03 0.02 0.02 61\n", + " 5 0.48 0.51 0.49 1443\n", + " 6 0.13 0.09 0.11 107\n", + " 7 0.68 0.68 0.68 2659\n", + " 8 0.52 0.58 0.55 2697\n", + " 9 0.21 0.18 0.20 150\n", + " 10 0.19 0.11 0.14 74\n", + " 11 0.69 0.55 0.61 40\n", + " 12 0.06 0.02 0.03 45\n", + " 13 0.56 0.56 0.56 431\n", + " 14 0.51 0.54 0.52 144\n", + " 15 0.11 0.10 0.11 50\n", + " 16 0.10 0.07 0.08 56\n", + " 17 0.06 0.03 0.04 34\n", + " 18 0.37 0.30 0.33 192\n", + " 19 0.13 0.08 0.10 151\n", + " 20 0.38 0.28 0.32 143\n", + " 21 0.33 0.35 0.34 1045\n", + " 22 0.50 0.32 0.39 93\n", + " 23 0.30 0.22 0.26 81\n", + " 24 0.19 0.19 0.19 309\n", + " 25 0.12 0.10 0.11 20\n", + " 26 0.78 0.75 0.77 200\n", + "\n", + " accuracy 0.50 10843\n", + " macro avg 0.32 0.28 0.30 10843\n", + "weighted avg 0.49 0.50 0.49 10843\n", + "\n", + "SVC model accuracy is: 49.94%\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/svm/_base.py:1244: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n", + " warnings.warn(\n" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Movie Genre Classification/README.MD b/Movie Genre Classification/README.MD new file mode 100644 index 00000000..522f46f1 --- /dev/null +++ b/Movie Genre Classification/README.MD @@ -0,0 +1,94 @@ +# Movie Genre Classification using Machine Learning + +## Project Overview + +Welcome to the Movie Genre Classification project! This project is part of the GirlScript Summer of Code program. The objective is to build a machine learning model to classify movies into genres based on various features such as plot summaries, cast, crew, and other metadata. + +## Table of Contents + +- [Introduction](#introduction) +- [Installation](#installation) +- [Dataset](#dataset) +- [Data Preprocessing](#data-preprocessing) +- [Model Training](#model-training) +- [Model Evaluation](#model-evaluation) +- [Usage](#usage) +- [License](#license) + +## Introduction + +Classifying movies into genres can enhance user experience by helping them find movies of their interest more easily. Machine learning can automate this classification process by analyzing various features of the movies. + +In this project, we will: +1. Load and preprocess the movie dataset. +2. Train a machine learning model for genre classification. +3. Evaluate the performance of the model. +4. Provide usage instructions for making predictions on new data. + +## Installation + +To get started with this project, you'll need to have Python installed on your machine. You can install the necessary dependencies using pip: + +```bash +pip install -r requirements.txt +``` + +## Dataset + +The dataset used in this project consists of movie metadata, including plot summaries, cast, crew, and other relevant features. You can use publicly available datasets such as those from [IMDb](https://www.imdb.com/interfaces/) or [TMDb](https://www.themoviedb.org/documentation/api). + +## Data Preprocessing + +Data preprocessing steps include: +1. Loading the dataset. +2. Cleaning the data (handling missing values, removing duplicates, etc.). +3. Extracting relevant features (text processing for plot summaries, encoding categorical variables, etc.). +4. Splitting the dataset into training and testing sets. + +## Model Training + +We will use machine learning algorithms such as Logistic Regression, Random Forest, or a Neural Network for the classification task. The steps for training the model are as follows: +1. Choose the appropriate model. +2. Train the model on the training data. +3. Tune hyperparameters if necessary. + +## Model Evaluation + +To evaluate the performance of the model, we will use metrics such as: +- Accuracy +- Precision +- Recall +- F1-Score + +Confusion matrix and ROC-AUC curve will also be plotted for a comprehensive evaluation. + +## Usage + +To use the trained model for making predictions on new data, follow these steps: + +1. Load the pre-trained model from the saved file. +2. Prepare the input data in the same format as the training data. +3. Use the model to make predictions. + +Example code: + +```python +import pickle +import numpy as np + +# Load the pre-trained model +with open('movie_genre_model.pkl', 'rb') as file: + model = pickle.load(file) + +# Sample input data (replace with actual data) +input_data = np.array([[...]]) + +# Make predictions +predictions = model.predict(input_data) +print(predictions) +``` + + +## License + +This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.