Duc0104/toxic_comments_classification
0
1{2 "nbformat": 4,3 "nbformat_minor": 0,4 "metadata": {5 "colab": {6 "provenance": []7 },8 "kernelspec": {9 "name": "python3",10 "display_name": "Python 3"11 },12 "language_info": {13 "name": "python"14 }15 },16 "cells": [17 {18 "cell_type": "code",19 "source": [20 "import pandas as pd\n",21 "import matplotlib.pyplot as plt\n",22 "import seaborn as sns"23 ],24 "metadata": {25 "id": "ubAufZKWrAPs"26 },27 "execution_count": 1,28 "outputs": []29 },30 {31 "cell_type": "code",32 "source": [33 "df = pd.read_csv('train.csv')\n",34 "df.head()"35 ],36 "metadata": {37 "colab": {38 "base_uri": "https://localhost:8080/",39 "height": 20640 },41 "id": "CuUhKNqlrR4d",42 "outputId": "8f11a4a9-461c-4ad6-dc84-e28ee20a57cb"43 },44 "execution_count": 2,45 "outputs": [46 {47 "output_type": "execute_result",48 "data": {49 "text/plain": [50 " id comment_text toxic \\\n",51 "0 0000997932d777bf Explanation\\nWhy the edits made under my usern... 0 \n",52 "1 000103f0d9cfb60f D'aww! He matches this background colour I'm s... 0 \n",53 "2 000113f07ec002fd Hey man, I'm really not trying to edit war. It... 0 \n",54 "3 0001b41b1c6bb37e \"\\nMore\\nI can't make any real suggestions on ... 0 \n",55 "4 0001d958c54c6e35 You, sir, are my hero. Any chance you remember... 0 \n",56 "\n",57 " severe_toxic obscene threat insult identity_hate \n",58 "0 0 0 0 0 0 \n",59 "1 0 0 0 0 0 \n",60 "2 0 0 0 0 0 \n",61 "3 0 0 0 0 0 \n",62 "4 0 0 0 0 0 "63 ],64 "text/html": [65 "\n",66 " <div id=\"df-df2ceea6-f5ae-46d5-a458-3f4523416299\" class=\"colab-df-container\">\n",67 " <div>\n",68 "<style scoped>\n",69 " .dataframe tbody tr th:only-of-type {\n",70 " vertical-align: middle;\n",71 " }\n",72 "\n",73 " .dataframe tbody tr th {\n",74 " vertical-align: top;\n",75 " }\n",76 "\n",77 " .dataframe thead th {\n",78 " text-align: right;\n",79 " }\n",80 "</style>\n",81 "<table border=\"1\" class=\"dataframe\">\n",82 " <thead>\n",83 " <tr style=\"text-align: right;\">\n",84 " <th></th>\n",85 " <th>id</th>\n",86 " <th>comment_text</th>\n",87 " <th>toxic</th>\n",88 " <th>severe_toxic</th>\n",89 " <th>obscene</th>\n",90 " <th>threat</th>\n",91 " <th>insult</th>\n",92 " <th>identity_hate</th>\n",93 " </tr>\n",94 " </thead>\n",95 " <tbody>\n",96 " <tr>\n",97 " <th>0</th>\n",98 " <td>0000997932d777bf</td>\n",99 " <td>Explanation\\nWhy the edits made under my usern...</td>\n",100 " <td>0</td>\n",101 " <td>0</td>\n",102 " <td>0</td>\n",103 " <td>0</td>\n",104 " <td>0</td>\n",105 " <td>0</td>\n",106 " </tr>\n",107 " <tr>\n",108 " <th>1</th>\n",109 " <td>000103f0d9cfb60f</td>\n",110 " <td>D'aww! He matches this background colour I'm s...</td>\n",111 " <td>0</td>\n",112 " <td>0</td>\n",113 " <td>0</td>\n",114 " <td>0</td>\n",115 " <td>0</td>\n",116 " <td>0</td>\n",117 " </tr>\n",118 " <tr>\n",119 " <th>2</th>\n",120 " <td>000113f07ec002fd</td>\n",121 " <td>Hey man, I'm really not trying to edit war. It...</td>\n",122 " <td>0</td>\n",123 " <td>0</td>\n",124 " <td>0</td>\n",125 " <td>0</td>\n",126 " <td>0</td>\n",127 " <td>0</td>\n",128 " </tr>\n",129 " <tr>\n",130 " <th>3</th>\n",131 " <td>0001b41b1c6bb37e</td>\n",132 " <td>\"\\nMore\\nI can't make any real suggestions on ...</td>\n",133 " <td>0</td>\n",134 " <td>0</td>\n",135 " <td>0</td>\n",136 " <td>0</td>\n",137 " <td>0</td>\n",138 " <td>0</td>\n",139 " </tr>\n",140 " <tr>\n",141 " <th>4</th>\n",142 " <td>0001d958c54c6e35</td>\n",143 " <td>You, sir, are my hero. Any chance you remember...</td>\n",144 " <td>0</td>\n",145 " <td>0</td>\n",146 " <td>0</td>\n",147 " <td>0</td>\n",148 " <td>0</td>\n",149 " <td>0</td>\n",150 " </tr>\n",151 " </tbody>\n",152 "</table>\n",153 "</div>\n",154 " <div class=\"colab-df-buttons\">\n",155 "\n",156 " <div class=\"colab-df-container\">\n",157 " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-df2ceea6-f5ae-46d5-a458-3f4523416299')\"\n",158 " title=\"Convert this dataframe to an interactive table.\"\n",159 " style=\"display:none;\">\n",160 "\n",161 " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",162 " <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",163 " </svg>\n",164 " </button>\n",165 "\n",166 " <style>\n",167 " .colab-df-container {\n",168 " display:flex;\n",169 " gap: 12px;\n",170 " }\n",171 "\n",172 " .colab-df-convert {\n",173 " background-color: #E8F0FE;\n",174 " border: none;\n",175 " border-radius: 50%;\n",176 " cursor: pointer;\n",177 " display: none;\n",178 " fill: #1967D2;\n",179 " height: 32px;\n",180 " padding: 0 0 0 0;\n",181 " width: 32px;\n",182 " }\n",183 "\n",184 " .colab-df-convert:hover {\n",185 " background-color: #E2EBFA;\n",186 " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",187 " fill: #174EA6;\n",188 " }\n",189 "\n",190 " .colab-df-buttons div {\n",191 " margin-bottom: 4px;\n",192 " }\n",193 "\n",194 " [theme=dark] .colab-df-convert {\n",195 " background-color: #3B4455;\n",196 " fill: #D2E3FC;\n",197 " }\n",198 "\n",199 " [theme=dark] .colab-df-convert:hover {\n",200 " background-color: #434B5C;\n",201 " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",202 " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",203 " fill: #FFFFFF;\n",204 " }\n",205 " </style>\n",206 "\n",207 " <script>\n",208 " const buttonEl =\n",209 " document.querySelector('#df-df2ceea6-f5ae-46d5-a458-3f4523416299 button.colab-df-convert');\n",210 " buttonEl.style.display =\n",211 " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",212 "\n",213 " async function convertToInteractive(key) {\n",214 " const element = document.querySelector('#df-df2ceea6-f5ae-46d5-a458-3f4523416299');\n",215 " const dataTable =\n",216 " await google.colab.kernel.invokeFunction('convertToInteractive',\n",217 " [key], {});\n",218 " if (!dataTable) return;\n",219 "\n",220 " const docLinkHtml = 'Like what you see? Visit the ' +\n",221 " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",222 " + ' to learn more about interactive tables.';\n",223 " element.innerHTML = '';\n",224 " dataTable['output_type'] = 'display_data';\n",225 " await google.colab.output.renderOutput(dataTable, element);\n",226 " const docLink = document.createElement('div');\n",227 " docLink.innerHTML = docLinkHtml;\n",228 " element.appendChild(docLink);\n",229 " }\n",230 " </script>\n",231 " </div>\n",232 "\n",233 "\n",234 " <div id=\"df-e8da1efc-ebe7-4508-b3ca-4ddc49e572e9\">\n",235 " <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-e8da1efc-ebe7-4508-b3ca-4ddc49e572e9')\"\n",236 " title=\"Suggest charts\"\n",237 " style=\"display:none;\">\n",238 "\n",239 "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",240 " width=\"24px\">\n",241 " <g>\n",242 " <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",243 " </g>\n",244 "</svg>\n",245 " </button>\n",246 "\n",247 "<style>\n",248 " .colab-df-quickchart {\n",249 " --bg-color: #E8F0FE;\n",250 " --fill-color: #1967D2;\n",251 " --hover-bg-color: #E2EBFA;\n",252 " --hover-fill-color: #174EA6;\n",253 " --disabled-fill-color: #AAA;\n",254 " --disabled-bg-color: #DDD;\n",255 " }\n",256 "\n",257 " [theme=dark] .colab-df-quickchart {\n",258 " --bg-color: #3B4455;\n",259 " --fill-color: #D2E3FC;\n",260 " --hover-bg-color: #434B5C;\n",261 " --hover-fill-color: #FFFFFF;\n",262 " --disabled-bg-color: #3B4455;\n",263 " --disabled-fill-color: #666;\n",264 " }\n",265 "\n",266 " .colab-df-quickchart {\n",267 " background-color: var(--bg-color);\n",268 " border: none;\n",269 " border-radius: 50%;\n",270 " cursor: pointer;\n",271 " display: none;\n",272 " fill: var(--fill-color);\n",273 " height: 32px;\n",274 " padding: 0;\n",275 " width: 32px;\n",276 " }\n",277 "\n",278 " .colab-df-quickchart:hover {\n",279 " background-color: var(--hover-bg-color);\n",280 " box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",281 " fill: var(--button-hover-fill-color);\n",282 " }\n",283 "\n",284 " .colab-df-quickchart-complete:disabled,\n",285 " .colab-df-quickchart-complete:disabled:hover {\n",286 " background-color: var(--disabled-bg-color);\n",287 " fill: var(--disabled-fill-color);\n",288 " box-shadow: none;\n",289 " }\n",290 "\n",291 " .colab-df-spinner {\n",292 " border: 2px solid var(--fill-color);\n",293 " border-color: transparent;\n",294 " border-bottom-color: var(--fill-color);\n",295 " animation:\n",296 " spin 1s steps(1) infinite;\n",297 " }\n",298 "\n",299 " @keyframes spin {\n",300 " 0% {\n",301 " border-color: transparent;\n",302 " border-bottom-color: var(--fill-color);\n",303 " border-left-color: var(--fill-color);\n",304 " }\n",305 " 20% {\n",306 " border-color: transparent;\n",307 " border-left-color: var(--fill-color);\n",308 " border-top-color: var(--fill-color);\n",309 " }\n",310 " 30% {\n",311 " border-color: transparent;\n",312 " border-left-color: var(--fill-color);\n",313 " border-top-color: var(--fill-color);\n",314 " border-right-color: var(--fill-color);\n",315 " }\n",316 " 40% {\n",317 " border-color: transparent;\n",318 " border-right-color: var(--fill-color);\n",319 " border-top-color: var(--fill-color);\n",320 " }\n",321 " 60% {\n",322 " border-color: transparent;\n",323 " border-right-color: var(--fill-color);\n",324 " }\n",325 " 80% {\n",326 " border-color: transparent;\n",327 " border-right-color: var(--fill-color);\n",328 " border-bottom-color: var(--fill-color);\n",329 " }\n",330 " 90% {\n",331 " border-color: transparent;\n",332 " border-bottom-color: var(--fill-color);\n",333 " }\n",334 " }\n",335 "</style>\n",336 "\n",337 " <script>\n",338 " async function quickchart(key) {\n",339 " const quickchartButtonEl =\n",340 " document.querySelector('#' + key + ' button');\n",341 " quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",342 " quickchartButtonEl.classList.add('colab-df-spinner');\n",343 " try {\n",344 " const charts = await google.colab.kernel.invokeFunction(\n",345 " 'suggestCharts', [key], {});\n",346 " } catch (error) {\n",347 " console.error('Error during call to suggestCharts:', error);\n",348 " }\n",349 " quickchartButtonEl.classList.remove('colab-df-spinner');\n",350 " quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",351 " }\n",352 " (() => {\n",353 " let quickchartButtonEl =\n",354 " document.querySelector('#df-e8da1efc-ebe7-4508-b3ca-4ddc49e572e9 button');\n",355 " quickchartButtonEl.style.display =\n",356 " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",357 " })();\n",358 " </script>\n",359 " </div>\n",360 "\n",361 " </div>\n",362 " </div>\n"363 ],364 "application/vnd.google.colaboratory.intrinsic+json": {365 "type": "dataframe",366 "variable_name": "df"367 }368 },369 "metadata": {},370 "execution_count": 2371 }372 ]373 },374 {375 "cell_type": "code",376 "source": [377 "df.columns"378 ],379 "metadata": {380 "colab": {381 "base_uri": "https://localhost:8080/"382 },383 "id": "owicRsi5rm7e",384 "outputId": "fe9fa428-5793-481e-a103-fb72bfdd5cce"385 },386 "execution_count": 3,387 "outputs": [388 {389 "output_type": "execute_result",390 "data": {391 "text/plain": [392 "Index(['id', 'comment_text', 'toxic', 'severe_toxic', 'obscene', 'threat',\n",393 " 'insult', 'identity_hate'],\n",394 " dtype='object')"395 ]396 },397 "metadata": {},398 "execution_count": 3399 }400 ]401 },402 {403 "cell_type": "code",404 "source": [405 "df.info()"406 ],407 "metadata": {408 "colab": {409 "base_uri": "https://localhost:8080/"410 },411 "id": "kJZn2lsqrpUQ",412 "outputId": "911ab3df-0a05-4b7c-9c2f-52506af79e24"413 },414 "execution_count": 4,415 "outputs": [416 {417 "output_type": "stream",418 "name": "stdout",419 "text": [420 "<class 'pandas.core.frame.DataFrame'>\n",421 "RangeIndex: 159571 entries, 0 to 159570\n",422 "Data columns (total 8 columns):\n",423 " # Column Non-Null Count Dtype \n",424 "--- ------ -------------- ----- \n",425 " 0 id 159571 non-null object\n",426 " 1 comment_text 159571 non-null object\n",427 " 2 toxic 159571 non-null int64 \n",428 " 3 severe_toxic 159571 non-null int64 \n",429 " 4 obscene 159571 non-null int64 \n",430 " 5 threat 159571 non-null int64 \n",431 " 6 insult 159571 non-null int64 \n",432 " 7 identity_hate 159571 non-null int64 \n",433 "dtypes: int64(6), object(2)\n",434 "memory usage: 9.7+ MB\n"435 ]436 }437 ]438 },439 {440 "cell_type": "code",441 "source": [442 "df.describe()\n"443 ],444 "metadata": {445 "colab": {446 "base_uri": "https://localhost:8080/",447 "height": 300448 },449 "id": "K3L-a_pjrrRb",450 "outputId": "39c20a4b-60d5-4f54-b0cb-ea3b97c74cf3"451 },452 "execution_count": 5,453 "outputs": [454 {455 "output_type": "execute_result",456 "data": {457 "text/plain": [458 " toxic severe_toxic obscene threat \\\n",459 "count 159571.000000 159571.000000 159571.000000 159571.000000 \n",460 "mean 0.095844 0.009996 0.052948 0.002996 \n",461 "std 0.294379 0.099477 0.223931 0.054650 \n",462 "min 0.000000 0.000000 0.000000 0.000000 \n",463 "25% 0.000000 0.000000 0.000000 0.000000 \n",464 "50% 0.000000 0.000000 0.000000 0.000000 \n",465 "75% 0.000000 0.000000 0.000000 0.000000 \n",466 "max 1.000000 1.000000 1.000000 1.000000 \n",467 "\n",468 " insult identity_hate \n",469 "count 159571.000000 159571.000000 \n",470 "mean 0.049364 0.008805 \n",471 "std 0.216627 0.093420 \n",472 "min 0.000000 0.000000 \n",473 "25% 0.000000 0.000000 \n",474 "50% 0.000000 0.000000 \n",475 "75% 0.000000 0.000000 \n",476 "max 1.000000 1.000000 "477 ],478 "text/html": [479 "\n",480 " <div id=\"df-22e35136-2ae8-4f81-8059-382d66131b69\" class=\"colab-df-container\">\n",481 " <div>\n",482 "<style scoped>\n",483 " .dataframe tbody tr th:only-of-type {\n",484 " vertical-align: middle;\n",485 " }\n",486 "\n",487 " .dataframe tbody tr th {\n",488 " vertical-align: top;\n",489 " }\n",490 "\n",491 " .dataframe thead th {\n",492 " text-align: right;\n",493 " }\n",494 "</style>\n",495 "<table border=\"1\" class=\"dataframe\">\n",496 " <thead>\n",497 " <tr style=\"text-align: right;\">\n",498 " <th></th>\n",499 " <th>toxic</th>\n",500 " <th>severe_toxic</th>\n",501 " <th>obscene</th>\n",502 " <th>threat</th>\n",503 " <th>insult</th>\n",504 " <th>identity_hate</th>\n",505 " </tr>\n",506 " </thead>\n",507 " <tbody>\n",508 " <tr>\n",509 " <th>count</th>\n",510 " <td>159571.000000</td>\n",511 " <td>159571.000000</td>\n",512 " <td>159571.000000</td>\n",513 " <td>159571.000000</td>\n",514 " <td>159571.000000</td>\n",515 " <td>159571.000000</td>\n",516 " </tr>\n",517 " <tr>\n",518 " <th>mean</th>\n",519 " <td>0.095844</td>\n",520 " <td>0.009996</td>\n",521 " <td>0.052948</td>\n",522 " <td>0.002996</td>\n",523 " <td>0.049364</td>\n",524 " <td>0.008805</td>\n",525 " </tr>\n",526 " <tr>\n",527 " <th>std</th>\n",528 " <td>0.294379</td>\n",529 " <td>0.099477</td>\n",530 " <td>0.223931</td>\n",531 " <td>0.054650</td>\n",532 " <td>0.216627</td>\n",533 " <td>0.093420</td>\n",534 " </tr>\n",535 " <tr>\n",536 " <th>min</th>\n",537 " <td>0.000000</td>\n",538 " <td>0.000000</td>\n",539 " <td>0.000000</td>\n",540 " <td>0.000000</td>\n",541 " <td>0.000000</td>\n",542 " <td>0.000000</td>\n",543 " </tr>\n",544 " <tr>\n",545 " <th>25%</th>\n",546 " <td>0.000000</td>\n",547 " <td>0.000000</td>\n",548 " <td>0.000000</td>\n",549 " <td>0.000000</td>\n",550 " <td>0.000000</td>\n",551 " <td>0.000000</td>\n",552 " </tr>\n",553 " <tr>\n",554 " <th>50%</th>\n",555 " <td>0.000000</td>\n",556 " <td>0.000000</td>\n",557 " <td>0.000000</td>\n",558 " <td>0.000000</td>\n",559 " <td>0.000000</td>\n",560 " <td>0.000000</td>\n",561 " </tr>\n",562 " <tr>\n",563 " <th>75%</th>\n",564 " <td>0.000000</td>\n",565 " <td>0.000000</td>\n",566 " <td>0.000000</td>\n",567 " <td>0.000000</td>\n",568 " <td>0.000000</td>\n",569 " <td>0.000000</td>\n",570 " </tr>\n",571 " <tr>\n",572 " <th>max</th>\n",573 " <td>1.000000</td>\n",574 " <td>1.000000</td>\n",575 " <td>1.000000</td>\n",576 " <td>1.000000</td>\n",577 " <td>1.000000</td>\n",578 " <td>1.000000</td>\n",579 " </tr>\n",580 " </tbody>\n",581 "</table>\n",582 "</div>\n",583 " <div class=\"colab-df-buttons\">\n",584 "\n",585 " <div class=\"colab-df-container\">\n",586 " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-22e35136-2ae8-4f81-8059-382d66131b69')\"\n",587 " title=\"Convert this dataframe to an interactive table.\"\n",588 " style=\"display:none;\">\n",589 "\n",590 " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",591 " <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",592 " </svg>\n",593 " </button>\n",594 "\n",595 " <style>\n",596 " .colab-df-container {\n",597 " display:flex;\n",598 " gap: 12px;\n",599 " }\n",600 "\n",601 " .colab-df-convert {\n",602 " background-color: #E8F0FE;\n",603 " border: none;\n",604 " border-radius: 50%;\n",605 " cursor: pointer;\n",606 " display: none;\n",607 " fill: #1967D2;\n",608 " height: 32px;\n",609 " padding: 0 0 0 0;\n",610 " width: 32px;\n",611 " }\n",612 "\n",613 " .colab-df-convert:hover {\n",614 " background-color: #E2EBFA;\n",615 " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",616 " fill: #174EA6;\n",617 " }\n",618 "\n",619 " .colab-df-buttons div {\n",620 " margin-bottom: 4px;\n",621 " }\n",622 "\n",623 " [theme=dark] .colab-df-convert {\n",624 " background-color: #3B4455;\n",625 " fill: #D2E3FC;\n",626 " }\n",627 "\n",628 " [theme=dark] .colab-df-convert:hover {\n",629 " background-color: #434B5C;\n",630 " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",631 " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",632 " fill: #FFFFFF;\n",633 " }\n",634 " </style>\n",635 "\n",636 " <script>\n",637 " const buttonEl =\n",638 " document.querySelector('#df-22e35136-2ae8-4f81-8059-382d66131b69 button.colab-df-convert');\n",639 " buttonEl.style.display =\n",640 " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",641 "\n",642 " async function convertToInteractive(key) {\n",643 " const element = document.querySelector('#df-22e35136-2ae8-4f81-8059-382d66131b69');\n",644 " const dataTable =\n",645 " await google.colab.kernel.invokeFunction('convertToInteractive',\n",646 " [key], {});\n",647 " if (!dataTable) return;\n",648 "\n",649 " const docLinkHtml = 'Like what you see? Visit the ' +\n",650 " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",651 " + ' to learn more about interactive tables.';\n",652 " element.innerHTML = '';\n",653 " dataTable['output_type'] = 'display_data';\n",654 " await google.colab.output.renderOutput(dataTable, element);\n",655 " const docLink = document.createElement('div');\n",656 " docLink.innerHTML = docLinkHtml;\n",657 " element.appendChild(docLink);\n",658 " }\n",659 " </script>\n",660 " </div>\n",661 "\n",662 "\n",663 " <div id=\"df-c23adf78-0b47-4c31-bd23-a58637855bf8\">\n",664 " <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c23adf78-0b47-4c31-bd23-a58637855bf8')\"\n",665 " title=\"Suggest charts\"\n",666 " style=\"display:none;\">\n",667 "\n",668 "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",669 " width=\"24px\">\n",670 " <g>\n",671 " <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",672 " </g>\n",673 "</svg>\n",674 " </button>\n",675 "\n",676 "<style>\n",677 " .colab-df-quickchart {\n",678 " --bg-color: #E8F0FE;\n",679 " --fill-color: #1967D2;\n",680 " --hover-bg-color: #E2EBFA;\n",681 " --hover-fill-color: #174EA6;\n",682 " --disabled-fill-color: #AAA;\n",683 " --disabled-bg-color: #DDD;\n",684 " }\n",685 "\n",686 " [theme=dark] .colab-df-quickchart {\n",687 " --bg-color: #3B4455;\n",688 " --fill-color: #D2E3FC;\n",689 " --hover-bg-color: #434B5C;\n",690 " --hover-fill-color: #FFFFFF;\n",691 " --disabled-bg-color: #3B4455;\n",692 " --disabled-fill-color: #666;\n",693 " }\n",694 "\n",695 " .colab-df-quickchart {\n",696 " background-color: var(--bg-color);\n",697 " border: none;\n",698 " border-radius: 50%;\n",699 " cursor: pointer;\n",700 " display: none;\n",701 " fill: var(--fill-color);\n",702 " height: 32px;\n",703 " padding: 0;\n",704 " width: 32px;\n",705 " }\n",706 "\n",707 " .colab-df-quickchart:hover {\n",708 " background-color: var(--hover-bg-color);\n",709 " box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",710 " fill: var(--button-hover-fill-color);\n",711 " }\n",712 "\n",713 " .colab-df-quickchart-complete:disabled,\n",714 " .colab-df-quickchart-complete:disabled:hover {\n",715 " background-color: var(--disabled-bg-color);\n",716 " fill: var(--disabled-fill-color);\n",717 " box-shadow: none;\n",718 " }\n",719 "\n",720 " .colab-df-spinner {\n",721 " border: 2px solid var(--fill-color);\n",722 " border-color: transparent;\n",723 " border-bottom-color: var(--fill-color);\n",724 " animation:\n",725 " spin 1s steps(1) infinite;\n",726 " }\n",727 "\n",728 " @keyframes spin {\n",729 " 0% {\n",730 " border-color: transparent;\n",731 " border-bottom-color: var(--fill-color);\n",732 " border-left-color: var(--fill-color);\n",733 " }\n",734 " 20% {\n",735 " border-color: transparent;\n",736 " border-left-color: var(--fill-color);\n",737 " border-top-color: var(--fill-color);\n",738 " }\n",739 " 30% {\n",740 " border-color: transparent;\n",741 " border-left-color: var(--fill-color);\n",742 " border-top-color: var(--fill-color);\n",743 " border-right-color: var(--fill-color);\n",744 " }\n",745 " 40% {\n",746 " border-color: transparent;\n",747 " border-right-color: var(--fill-color);\n",748 " border-top-color: var(--fill-color);\n",749 " }\n",750 " 60% {\n",751 " border-color: transparent;\n",752 " border-right-color: var(--fill-color);\n",753 " }\n",754 " 80% {\n",755 " border-color: transparent;\n",756 " border-right-color: var(--fill-color);\n",757 " border-bottom-color: var(--fill-color);\n",758 " }\n",759 " 90% {\n",760 " border-color: transparent;\n",761 " border-bottom-color: var(--fill-color);\n",762 " }\n",763 " }\n",764 "</style>\n",765 "\n",766 " <script>\n",767 " async function quickchart(key) {\n",768 " const quickchartButtonEl =\n",769 " document.querySelector('#' + key + ' button');\n",770 " quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",771 " quickchartButtonEl.classList.add('colab-df-spinner');\n",772 " try {\n",773 " const charts = await google.colab.kernel.invokeFunction(\n",774 " 'suggestCharts', [key], {});\n",775 " } catch (error) {\n",776 " console.error('Error during call to suggestCharts:', error);\n",777 " }\n",778 " quickchartButtonEl.classList.remove('colab-df-spinner');\n",779 " quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",780 " }\n",781 " (() => {\n",782 " let quickchartButtonEl =\n",783 " document.querySelector('#df-c23adf78-0b47-4c31-bd23-a58637855bf8 button');\n",784 " quickchartButtonEl.style.display =\n",785 " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",786 " })();\n",787 " </script>\n",788 " </div>\n",789 "\n",790 " </div>\n",791 " </div>\n"792 ],793 "application/vnd.google.colaboratory.intrinsic+json": {794 "type": "dataframe",795 "summary": "{\n \"name\": \"df\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"toxic\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 56416.79787451925,\n \"min\": 0.0,\n \"max\": 159571.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.09584448302009764,\n 1.0,\n 0.29437877159980147\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"severe_toxic\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 56416.81205458228,\n \"min\": 0.0,\n \"max\": 159571.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.009995550569965721,\n 1.0,\n 0.09947714085736063\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"obscene\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 56416.80359926643,\n \"min\": 0.0,\n \"max\": 159571.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.052948217407925,\n 1.0,\n 0.22393083291522248\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"threat\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 56416.814672281485,\n \"min\": 0.0,\n \"max\": 159571.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.002995531769557125,\n 1.0,\n 0.05464958623143207\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"insult\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 56416.804149230666,\n \"min\": 0.0,\n \"max\": 159571.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.04936360616904074,\n 1.0,\n 0.21662671727713204\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"identity_hate\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 56416.81242063,\n \"min\": 0.0,\n \"max\": 159571.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.00880485802558109,\n 1.0,\n 0.09342048594140996\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"796 }797 },798 "metadata": {},799 "execution_count": 5800 }801 ]802 },803 {804 "cell_type": "code",805 "source": [806 "df.isnull().sum()"807 ],808 "metadata": {809 "colab": {810 "base_uri": "https://localhost:8080/",811 "height": 335812 },813 "id": "QgdZds-lruIS",814 "outputId": "6ae96071-1323-42b8-c93f-91d31feecf64"815 },816 "execution_count": 6,817 "outputs": [818 {819 "output_type": "execute_result",820 "data": {821 "text/plain": [822 "id 0\n",823 "comment_text 0\n",824 "toxic 0\n",825 "severe_toxic 0\n",826 "obscene 0\n",827 "threat 0\n",828 "insult 0\n",829 "identity_hate 0\n",830 "dtype: int64"831 ],832 "text/html": [833 "<div>\n",834 "<style scoped>\n",835 " .dataframe tbody tr th:only-of-type {\n",836 " vertical-align: middle;\n",837 " }\n",838 "\n",839 " .dataframe tbody tr th {\n",840 " vertical-align: top;\n",841 " }\n",842 "\n",843 " .dataframe thead th {\n",844 " text-align: right;\n",845 " }\n",846 "</style>\n",847 "<table border=\"1\" class=\"dataframe\">\n",848 " <thead>\n",849 " <tr style=\"text-align: right;\">\n",850 " <th></th>\n",851 " <th>0</th>\n",852 " </tr>\n",853 " </thead>\n",854 " <tbody>\n",855 " <tr>\n",856 " <th>id</th>\n",857 " <td>0</td>\n",858 " </tr>\n",859 " <tr>\n",860 " <th>comment_text</th>\n",861 " <td>0</td>\n",862 " </tr>\n",863 " <tr>\n",864 " <th>toxic</th>\n",865 " <td>0</td>\n",866 " </tr>\n",867 " <tr>\n",868 " <th>severe_toxic</th>\n",869 " <td>0</td>\n",870 " </tr>\n",871 " <tr>\n",872 " <th>obscene</th>\n",873 " <td>0</td>\n",874 " </tr>\n",875 " <tr>\n",876 " <th>threat</th>\n",877 " <td>0</td>\n",878 " </tr>\n",879 " <tr>\n",880 " <th>insult</th>\n",881 " <td>0</td>\n",882 " </tr>\n",883 " <tr>\n",884 " <th>identity_hate</th>\n",885 " <td>0</td>\n",886 " </tr>\n",887 " </tbody>\n",888 "</table>\n",889 "</div><br><label><b>dtype:</b> int64</label>"890 ]891 },892 "metadata": {},893 "execution_count": 6894 }895 ]896 },897 {898 "cell_type": "code",899 "source": [900 "labels = ['toxic', 'severe_toxic', 'obscene', 'threat', 'insult', 'identity_hate']\n",901 "df[labels].sum().sort_values().plot(kind='barh', figsize=(10,6), color='salmon')\n",902 "plt.title(\"Number of Comments per Label\")\n",903 "plt.xlabel(\"Count\")\n",904 "plt.show()"905 ],906 "metadata": {907 "colab": {908 "base_uri": "https://localhost:8080/",909 "height": 564910 },911 "id": "GxOkdiharvtg",912 "outputId": "6db186a2-7012-4050-9727-b9c27e82cf70"913 },914 "execution_count": 7,915 "outputs": [916 {917 "output_type": "display_data",918 "data": {919 "text/plain": [920 "<Figure size 1000x600 with 1 Axes>"921 ],922 "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5MAAAIjCAYAAACeUk9IAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATUVJREFUeJzt3XmcT/X////7a/YZM68ZyzCWYca+DbKGUFGD3mgliRBSllSEZEsZKUXayOdtS0mSNpImS5bsY51smXgzmsTMWGqMmfP7w2/Ot5cZ8mRmXia36+Xyuly8znmecx7n+Zzt7nnOeTksy7IEAAAAAIABD3cXAAAAAAAoeAiTAAAAAABjhEkAAAAAgDHCJAAAAADAGGESAAAAAGCMMAkAAAAAMEaYBAAAAAAYI0wCAAAAAIwRJgEAAAAAxgiTAIBctXLlSjkcDi1cuNDdpVyV3377TQ8++KCKFi0qh8OhyZMnu7sk3ATGjBkjh8OhEydO5No+u3fvroiIiFzbHwD8E8IkABRAs2bNksPhkJ+fn44ePZpt/e23366aNWu6obKC55lnntGyZcs0fPhwzZ07V61bt75i+7/++ktvvvmmGjVqpODgYPn5+aly5crq37+/9u3bl09V39iOHTumMWPGKC4uzt2l5Cq+rwDAlZe7CwAAXLu0tDRNmDBBU6dOdXcpBdYPP/ygDh06aPDgwf/Y9sSJE2rdurW2bNmi//znP3rkkUcUGBiovXv3av78+Zo+fbrOnz+fD1Xf2I4dO6axY8cqIiJCderUcXc5AIA8QpgEgAKsTp06+uCDDzR8+HCVKlXK3eXkq7Nnz6pQoULXvZ+kpCSFhIRcVdvu3btr27ZtWrhwoR544AGXdePGjdOIESOuux64T2Zmps6fPy8/Pz93lwIABQKXuQJAAfbCCy8oIyNDEyZMuGK7hIQEORwOzZo1K9s6h8OhMWPG2O+z7uXat2+fHn30UQUHBys0NFQjR46UZVk6cuSIOnToIKfTqbCwME2aNCnHY2ZkZOiFF15QWFiYChUqpPbt2+vIkSPZ2m3YsEGtW7dWcHCwAgIC1KJFC61du9alTVZNe/bs0SOPPKLChQvrtttuu+I5//LLL3rooYdUpEgRBQQE6NZbb9U333xjr8+6VNiyLL3zzjtyOBxyOByX3d+GDRv0zTff6PHHH88WJCXJ19dXr7/+usuyH374Qc2aNVOhQoUUEhKiDh06KD4+Psdzu9b+zrpHdcGCBRo7dqxKly6toKAgPfjgg0pJSVFaWpoGDRqk4sWLKzAwUD169FBaWlq2+j/88EPVq1dP/v7+KlKkiB5++OFs45V1meeePXt0xx13KCAgQKVLl9bEiRNd6mnQoIEkqUePHna/Zn3t7d+/Xw888IDCwsLk5+enMmXK6OGHH1ZKSspl+/7vx96yZYuaNGkif39/RUZG6v3338/WNi0tTaNHj1bFihXl6+ur8PBwPf/889nO2+FwqH///po3b55q1KghX19fffvtt1es45/s2LFD3bt3V/ny5eXn56ewsDD17NlTf/zxR47tT5w4oY4dO8rpdKpo0aJ6+umn9ddff2VrdzXjAwD5jZlJACjAIiMj1a1bN33wwQcaNmxYrs5OdurUSdWqVdOECRP0zTff6OWXX1aRIkU0bdo03XnnnXr11Vc1b948DR48WA0aNFDz5s1dtn/llVfkcDg0dOhQJSUlafLkyWrVqpXi4uLk7+8v6WLYatOmjerVq6fRo0fLw8NDM2fO1J133qkff/xRDRs2dNnnQw89pEqVKmn8+PGyLOuytf/2229q0qSJzp07p4EDB6po0aKaPXu22rdvr4ULF+q+++5T8+bNNXfuXHXt2lV33XWXunXrdsX++PLLLyVJXbt2var++/7779WmTRuVL19eY8aM0Z9//qmpU6eqadOm2rp1a7YHpVxvf8fExMjf31/Dhg3TgQMHNHXqVHl7e8vDw0OnTp3SmDFj9NNPP2nWrFmKjIzUqFGj7G1feeUVjRw5Uh07dlSvXr30+++/a+rUqWrevLm2bdvmMnN76tQptW7dWvfff786duyohQsXaujQoYqKilKbNm1UrVo1vfTSSxo1apT69OmjZs2aSZKaNGmi8+fPKzo6WmlpaRowYIDCwsJ09OhRff3110pOTlZwcPAV+/TUqVNq27atOnbsqM6dO2vBggV68skn5ePjo549e0q6OLvYvn17rVmzRn369FG1atW0c+dOvfnmm9q3b58WL17sss8ffvhBCxYsUP/+/VWsWLHrfoDN8uXL9csvv6hHjx4KCwvT7t27NX36dO3evVs//fRTtv+w6NixoyIiIhQTE6OffvpJb731lk6dOqU5c+bYbUzGBwDylQUAKHBmzpxpSbI2bdpkHTx4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uKzr1auXJkyYoF69eql+/fpavXq1PauTF4oUKaLbbrtNPXr00G+//abJkyerYsWK6t27tyTJw8NDM2bMUJs2bVSjRg316NFDpUuX1tGjR7VixQo5nU599dVX13TsYcOG6eOPP1abNm00cOBAFSlSRLNnz9ahQ4f02WefycPj2v4vdc6cObr77rt1//33q127dmrZsqUKFSqk/fv3a/78+UpMTLQ/a/K1115TmzZt1LhxYz3++OP2R4MEBwe7fK6nu1WoUEEvv/yyhg8froSEBN17770KCgrSoUOH9Pnnn6tPnz52SDbZZ0hIiN5//30FBQWpUKFCatSokbZv367+/fvroYceUuXKlXXhwgXNnTtXnp6eOX5256VKlSqlV199VQkJCapcubI++eQTxcXFafr06fbDh7p27aoFCxaob9++WrFihZo2baqMjAz9/PPPWrBggZYtW6b69etfU19JF/+TI6cZ1MjISHXp0kXNmzfXxIkTlZ6ertKlS+u7777ToUOHLru/Q4cOqX379mrdurXWr1+vDz/8UI888ohq164tKW/GBwByC2ESAP5FKlasqEcffVSzZ8/Otm7UqFH6/ffftXDhQi1YsEBt2rTR0qVLVbx48Typ5YUXXtCOHTsUExOj06dPq2XLlnr33XcVEBBgt7n99tu1fv16jRs3Tm+//bbOnDmjsLAwNWrUyOWpnaZKlCihdevWaejQoZo6dar++usv1apVS1999ZXuueeea95vaGio1q1bp3fffVeffPKJRowYofPnz6tcuXJq3769nn76abttq1at9O2332r06NEaNWqUvL291aJFC7366qu5/tCX6zVs2DBVrlxZb775psaOHSvp4r2Fd999t9q3b2+8P29vb82ePVvDhw9X3759deHCBc2cOVMtWrRQdHS0vvrqKx09elQBAQGqXbu2li5daj/x9EoKFy6s2bNna8CAAfrggw9UokQJvf322/Z/UEgX/5Ni8eLFevPNNzVnzhx9/vnnCggIUPny5fX0009f96WiSUlJGjlyZLblLVu2VJcuXfTRRx9pwIABeuedd2RZlu6++24tXbr0sp8B+8knn2jUqFEaNmyYvLy81L9/f7322msubXJ7fAAgtzisa3lqAgAAQD66/fbbdeLECe3atcvdpQAA/n/cMwkAAAAAMEaYBAAAAAAYI0wCAAAAAIxx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/X3yyScqVaqUmjVrJknq37+/1q9fr/nz52vHjh166KGH1Lp1azvESdK5c+f06quvasaMGdq9e7eKFy9+VdvlpEmTJpo8ebKcTqcSExOVmJiowYMHS5K6d++uzZs368svv9T69etlWZbatm2r9PR0hYaG6r///a/GjBmjzZs36/Tp0+ratav69++vli1b5nis9957T/369VOfPn20c+dOffnll6pYseJla0tLS1NqaqrLCwAAAADcxWH9Pc0Z2rp1q+rVq6eEhASVK1fOZV3FihU1btw4de7c2V728ssva8mSJVq3bp1+//13lSpVSj/88IMdHps0aaLmzZtrwoQJOnz4sMqXL6/Dhw+rVKlS9j5atWqlhg0bavz48Zo1a5Z69OihuLg41a5dW5KuarsrmTVrlgYNGqTk5GR72f79+1W5cmWtXbtWTZo0kST98ccfCg8P1+zZs/XQQw9Jkvr166fvv/9e9evX186dO7Vp0yb5+vpKujgzuXjxYsXFxUmSSpcurR49eujll1++qr4eM2aMxo4dm235iWH95PTzvap9QPIePcndJQAAAAC5KjU1VcHBwUpJSZHT6cy3417XPZO1a9dWy5YtFRUVpejoaN1999168MEH5ePjo4MHD+rxxx9X79697fYXLlxQcHCwJCk0NFR333235s2bp2bNmunQoUNav369pk2bJknauXOnMjIyVLlyZZdjpqWlqWjRovZ7Hx8f1apVy35/tduZiI+Pl5eXlxo1amQvK1q0qKpUqaL4+Hh72euvv66aNWvq008/1ZYtW+wgeamkpCQdO3bssrOWORk+fLieffZZ+31qaqrCw8Ov4WwAAAAA4PpdV5j09PTU8uXLtW7dOn333XeaOnWqRowYoa+++kqS9MEHH7gEsKxtsnTp0kUDBw7U1KlT9dFHHykqKkpRUVGSpDNnzsjT01Nbtmxx2UaSy4Ns/P395XA47PdXu11eOHjwoI4dO6bMzEwlJCTY53Ipf39/4337+vpeNpwCAAAAQH677qe5OhwONW3aVE2bNtWoUaNUrlw5rV27VqVKldIvv/yiLl26XHbbDh06qE+fPvr222/10UcfqVu3bva6W265RRkZGUpKSrIvg70a17pdFh8fH2VkZLgsq1atmi5cuKANGza4XOa6d+9eVa9eXZJ0/vx5Pfroo+rUqZOqVKmiXr16aefO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0sRef+HCBatmzZpWq1atrG3btllLliyxihUrZg0fPtxu88svv1gBAQHWs88+a+3Zs8eaOnWq5enpaX377bf5er43so0bN1oRERFWrVq1rKefftpeTv/nrZMnT1rlypWzunfvbm3YsMH65ZdfrGXLllkHDhyw20yYMMEKDg62Fi9ebG3fvt1q3769FRkZaf355592m9atW1u1a9e2fvrpJ+vHH3+0KlasaHXu3Nlen5KSYpUoUcLq0qWLtWvXLuvjjz+2/P39rWnTpuXr+d6IXnnlFato0aLW119/bR06dMj69NNPrcDAQGvKlCl2G8Yg9yxZssQaMWKEtWjRIkuS9fnnn7usz6++Xrt2reXp6WlNnDjR2rNnj/Xiiy9a3t7e1s6dO/O8D9ztSmOQnJxstWrVyvrkk0+sn3/+2Vq/fr3VsGFDq169ei77YAyu3T99D2RZtGiRVbt2batUqVLWm2++6bKO/r8+/zQGBw4csIoUKWINGTLE2rp1q3XgwAHriy++cPk7/0b6+4gwWQA1bNjQ6tevn/0+IyPDKlWqlBUTE+PGqgq+pKQkS5K1atUqy7Iu/lLz9va2Pv30U7tNfHy8Jclav369ZVkXfyB4eHhYx48ft9u89957ltPptNLS0izLsqznn3/eqlGjhsuxOnXqZEVHR+f1KRUIp0+ftipVqmQtX77catGihR0m6f+8N3ToUOu222677PrMzEwrLCzMeu211+xlycnJlq+vr/Xxxx9blmVZe/bssSRZmzZtstssXbrUcjgc1tGjRy3Lsqx3333XKly4sD0mWceuUqVKbp9SgXPPPfdYPXv2dFl2//33W126dLEsizHIS5f+EZeffd2xY0frnnvucamnUaNG1hNPPJGr53iju1KYybJx40ZLkvXrr79alsUY5KbL9f///vc/q3Tp0tauXbuscuXKuYRJ+j935TQGnTp1sh599NHLbnOj/X3EZa4FzPnz57Vlyxa1atXKXubh4aFWrVpp/fr1bqys4EtJSZEkFSlSRJK0ZcsWpaenu/R11apVVbZsWbuv169fr6ioKJUoUcJuEx0drdTUVO3evdtu8/d9ZLVhvC7q16+f7rnnnmx9RP/nvS+//FL169fXQw89pOLFi+uWW27RBx98YK8/dOiQjh8/7tJ/wcHBatSokcsYhISEqH79+nabVq1aycPDQxs2bLDbNG/eXD4+Pnab6Oho7d27V6dOncrr07yhNWnSRLGxsdq3b58kafv27VqzZo3atGkjiTHIT/nZ1/xcunopKSlyOBwKCQmRxBjktczMTHXt2lVDhgxRjRo1sq2n//NWZmamvvnmG1WuXFnR0dEqXry4GjVq5HIp7I329xFhsoA5ceKEMjIyXL44JKlEiRI6fvy4m6oq+DIzMzVo0CA1bdpUNWvWlCQdP35cPj4+9i+wLH/v6+PHj+c4FlnrrtQmNTVVf/75Z16cToExf/58bd26VTExMdnW0f9575dfftF7772nSpUqadmyZXryySc1cOBAzZ49W9L/68Mr/bw5fvy4ihcv7rLey8tLRYoUMRqnm9WwYcP08MMPq2rVqvL29tYtt9yiQYMGqUuXLpIYg/yUn319uTaMhau//vpLQ4cOVefOneV0OiUxBnnt1VdflZeXlwYOHJjjevo/byUlJenMmTOaMGGCWrdure+++0733Xef7r//fq1atUrSjff3kZfRGQL/Uv369dOuXbu0Zs0ad5dy0zhy5IiefvppLV++XH5+fu4u56aUmZmp+vXra/z48ZKkW265Rbt27dL777+vxx57zM3V3RwWLFigefPm6aOPPlKNGjUUFxenQYMGqVSpUowBbmrp6enq2LGjLMvSe++95+5ybgpbtmzRlClTtHXrVjkcDneXc1PKzMyUJHXo0EHPPPOMJKlOnTpat26d3n//fbVo0cKd5eWImckCplixYvL09Mz2xKbffvtNYWFhbqqqYOvfv7++/vprrVixQmXKlLGXh4WF6fz580pOTnZp//e+DgsLy3EsstZdqY3T6ZS/v39un06BsWXLFiUlJalu3bry8vKSl5eXVq1apbfeekteXl4qUaIE/Z/HSpYsqerVq7ssq1atmv3EuKw+vNLPm7CwMCUlJbmsv3Dhgk6ePGk0TjerIUOG2LOTUVFR6tq1q5555hl7tp4xyD/52deXa8NYXJQVJH/99VctX77cnpWUGIO89OOPPyopKUlly5a1fy//+uuveu655xQRESGJ/s9rxYoVk5eX1z/+br6R/j4iTBYwPj4+qlevnmJjY+1lmZmZio2NVePGjd1YWcFjWZb69++vzz//XD/88IMiIyNd1terV0/e3t4ufb13714dPnzY7uvGjRtr586dLj9Ys37xZf0gaNy4scs+strc7OPV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\n"923 },924 "metadata": {}925 }926 ]927 },928 {929 "cell_type": "code",930 "source": [931 "df['clean'] = (df[labels].sum(axis=1) == 0)\n",932 "df['clean'].value_counts().plot(kind='bar', color=['green','red'])\n",933 "plt.title(\"Clean vs Toxic Comments\")\n",934 "plt.xticks([0, 1], ['Toxic', 'Clean'], rotation=0)\n",935 "plt.show()"936 ],937 "metadata": {938 "colab": {939 "base_uri": "https://localhost:8080/",940 "height": 472941 },942 "id": "5SxT55zCry3m",943 "outputId": "e03ef068-198a-4074-fc0c-d2df63e419cd"944 },945 "execution_count": 8,946 "outputs": [947 {948 "output_type": "display_data",949 "data": {950 "text/plain": [951 "<Figure size 640x480 with 1 Axes>"952 ],953 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAP9lJREFUeJzt3XlclXX+///nQWQRPOAKnsQld5I0NRFNyyRxXCbKSs1RclCnCVxCTW1xmSwLs9LcxmrUz0xOaqWZC8YXM0sJFSOX1MzcGjtYg3CERkW5fn/047p5hFQMQrge99vtut087/frel/vN+fEeXadc13YDMMwBAAAYEEe5T0BAACA8kIQAgAAlkUQAgAAlkUQAgAAlkUQAgAAlkUQAgAAlkUQAgAAlkUQAgAAlkUQAgAAlkUQAm4SjRo10mOPPVbe07CEpUuXymaz6dixY+U9FQDljCAElLEjR47oL3/5i2699Vb5+PjIbrerS5cumjNnjv73v/+V9/RuCo0aNZLNZrvmtnTp0vKe6q/ieb62DRs2aNq0aeU9DcCNjb81BpSd9evX6+GHH5a3t7eGDh2q1q1b68KFC/r888/1/vvv67HHHtPixYsl/RIG7rnnnpv6zb6srFmzRrm5uebjDRs26N///rdee+011a5d22zv3Lmzbr311t98vEuXLik/P1/e3t6y2Wy/ebySPM9WFh8fr/nz54u3HdxMPMt7AkBldfToUQ0cOFANGzbU5s2bVa9ePbMvLi5O3377rdavX1+OM7x5REdHuz12Op3697//rejoaDVq1KjUj1elShVVqVKlVMbieQYqNj4aA8pIYmKicnNz9fbbb7u9ORZq2rSpxowZc9UxsrOzNXbsWIWEhMjb21tNmzbVyy+/rIKCAre6V155RZ07d1atWrXk6+ur9u3b67333isyns1mU3x8vNasWaPWrVvL29tbt912m5KSkq46j8zMTHl6emr69OlF+g4dOiSbzaZ58+ZJkvLz8zV9+nQ1a9ZMPj4+qlWrlu666y4lJydf9RjXcvHiRT3//PNq0qSJvL291ahRIz399NM6f/68JMkwDHXv3l116tTR6dOnzf0uXLigsLAwNWnSRHl5eZJ+/TtCGzdu1N13363q1avLbrfrzjvv1PLly686r5I+z9daR6FGjRqpb9++2rJlizp06CBfX1+FhYVpy5YtkqQPPvhAYWFh8vHxUfv27fXll1+67f/YY4/J399fJ06cUN++feXv769bbrlF8+fPlyTt3btX9957r/z8/NSwYcNi13k9r79jx47JZrPplVde0eLFi8113Xnnndq5c6fbfAqPffnHnYXeffddtW/f3vzZh4WFac6cOVf92QOlwgBQJm655Rbj1ltvve76hg0bGjExMebjvLw84/bbbzdq1aplPP3008aiRYuMoUOHGjabzRgzZozbvvXr1zeeeOIJY968ecarr75qdOzY0ZBkrFu3zq1OktGmTRujXr16xvPPP2+8/vrrxq233mpUq1bN+Omnn646v3vvvdcIDQ0t0j59+nSjSpUqhtPpNAzDMJ5++mnDZrMZI0aMMN58801j9uzZxqBBg4yXXnrpun8Ws2bNMiQZR48eNdtiYmIMScZDDz1kzJ8/3xg6dKghyYiOjjZrvvvuO8Pf39944IEHzLZJkyYZNpvN+PTTT822JUuWFBl/yZIlhs1mM1q3bm288MILxvz5843hw4cbQ4YMuepcS/o8X886DOOX10OLFi2MevXqGdOmTTNee+0145ZbbjH8/f2Nf/3rX0aDBg2Ml156yXjppZeMgIAAo2nTpsalS5fcjuPj42OEhoYajz/+uDF//nyjc+fOhiRjyZIlhsPhMCZMmGC88cYbxm233WZUqVLF+O6778z9r/f1d/ToUUOScccddxhNmzY1Xn75ZSMxMdGoXbu2Ub9+fePChQuGYRjG9u3bjfvuu8+QZPzzn/80N8MwjI8//tiQZPTo0cOYP3++MX/+fCM+Pt54+OGHr/vnCtwoghBQBnJycgxJxv3333/d+1wZhJ5//nnDz8/P+Oabb9zqJk2aZFSpUsU4ceKE2fbzzz+71Vy4cMFo3bq1ce+997q1SzK8vLyMb7/91mz76quvDEnGG2+8cdX5/f3vfzckGXv37nVrDw0NdTtOmzZtjD59+lx9sddwZRDKyMgwJBnDhw93qxs/frwhydi8eXORef7rX/8yvvjiC6NKlSrG2LFj3fa7MghlZ2cb1atXN8LDw43//e9/brUFBQW/Os+SPs8lWUfDhg0NScb27dvNtk2bNhmSDF9fX+P48eNF1vzJJ5+YbYWB68UXXzTbzpw5Y/j6+ho2m8149913zfaDBw8akoypU6eabdf7+isMQrVq1TKysrLMug8//NCQ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UUpNTZUkHT16VE6n060mICBA4eHhZs2Vzp8/L5fL5bYBAIDKq9SD0MsvvyxPT0+NHj262H6n06m6deu6tXl6eqpmzZpyOp1mTVBQkFtN4eNr1Vzef/l+xdVcaebMmQoICDC3kJCQa64XAABUXKUahNLT0zVnzhwtXbpUNlvF+2hl8uTJysnJMbeTJ0+W95QAAEAZKtUg9Nlnn+n06dNq0KCBPD095enpqePHj2vcuHFq1KiRJCk4OFinT5922+/ixYvKyspScHCwWZOZmelWU/j4WjWX91++X3E1V/L29pbdbnfbAABA5VWqQWjIkCHas2ePMjIyzM3hcGjChAnatGmTJCkiIkLZ2dlKT08399u8ebMKCgoUHh5u1mzdulX5+flmTXJyslq0aKEaNWqYNSkpKW7HT05OVkREhCSpcePGCg4OdqtxuVxKS0szawAAgLWV+G+N5ebm6ttvvzUfHz16VBkZGapZs6YaNGigWrVqudVXrVpVwcHBatGihSSpVatW6tWrl0aMGKFFixYpPz9f8fHxGjhwoHmp/aOPPqrp06crNjZWEydO1L59+zRnzhy99tpr5rhjxozR3XffrdmzZ6tPnz569913tWvXLvMSe5vNprFjx2rGjBlq1qyZGjdurOeee04Oh6PIVW4AAMCaShyEdu3ape7du5uPExISJEkxMTFaunTpdY3xzjvvKD4+Xj169JCHh4f69++vuXPnmv0BAQH6+OOPFRcXp/bt26t27dqaMmWK272GOnfurOXLl+vZZ5/V008/rWbNmmnNmjVq3bq1WfPUU08pLy9PI0eOVHZ2tu666y4lJSXJx8enpMsGAACV0G+6j1Blx32EYBXcRwhAZVKu9xECAACoKAhCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAskochLZu3ap+/frJ4XDIZrNpzZo1Zl9+fr4mTpyosLAw+fn5yeFwaOjQoTp16pTbGFlZWRo8eLDsdrsCAwMVGxur3Nxct5o9e/aoa9eu8vHxUUhIiBITE4vMZdWqVWrZsqV8fHwUFhamDRs2uPUbhqEpU6aoXr168vX1VWRkpA4fPlzSJQMAgEqqxEEoLy9Pbdq00fz584v0/fzzz9q9e7eee+457d69Wx988IEOHTqkP/7xj251gwcP1v79+5WcnKx169Zp69atGjlypNnvcrnUs2dPNWzYUOnp6Zo1a5amTZumxYsXmzXbt2/XoEGDFBsbqy+//FLR0dGKjo7Wvn37zJrExETNnTtXixYtUlpamvz8/BQVFaVz586VdNkAAKASshmGYdzwzjabVq9erejo6F+t2blzpzp27Kjjx4+rQYMGOnDggEJDQ7Vz50516NBBkpSUlKTevXvr+++/l8Ph0MKFC/XMM8/I6XTKy8tLkjRp0iStWbNGBw8elCQNGDBAeXl5WrdunXmsTp06qW3btlq0aJEMw5DD4dC4ceM0fvx4SVJOTo6CgoK0dOlSDRw48Jrrc7lcCggIUE5Ojux2+43+mCok23RbeU8BvyNj6g3/GgCAm05J3r/L/DtCOTk5stlsCgwMlCSlpqYqMDDQDEGSFBkZKQ8PD6WlpZk13bp1M0OQJEVFRenQoUM6c+aMWRMZGel2rKioKKWmpkqSjh49KqfT6VYTEBCg8PBws+ZK58+fl8vlctsAAEDlVaZB6Ny5c5o4caIGDRpkJjKn06m6deu61Xl6eqpmzZpyOp1mTVBQkFtN4eNr1Vzef/l+xdVcaebMmQoICDC3kJCQEq8ZAABUHGUWhPLz8/XII4/IMAwtXLiwrA5TqiZPnqycnBxzO3nyZHlPCQAAlCHPshi0MAQdP35cmzdvdvt8Ljg4WKdPn3arv3jxorKyshQcHGzWZGZmutUUPr5WzeX9hW316tVzq2nbtm2x8/b29pa3t3dJlwsAACqoUj8jVBiCDh8+rP/3//6fatWq5dYfERGh7Oxspaenm22bN29WQUGBwsPDzZqtW7cqPz/frElOTlaLFi1Uo0YNsyYlJcVt7OTkZEVEREiSGjdurODgYLcal8ultLQ0swYAAFhbiYNQbm6uMjIylJGRIemXLyVnZGToxIkTys/P10MPPaRdu3bpnXfe0aVLl+R0OuV0OnXhwgVJUqtWrdSrVy+NGDFCO3bs0LZt2xQfH6+BAwfK4XBIkh599FF5eXkpNjZW+/fv14oVKzRnzhwlJCSY8xgzZoySkpI0e/ZsHTx4UNOmTdOuXbsUHx8v6Zcr2saOHasZM2Zo7dq12rt3r4YOHSqHw3HVq9wAAIB1lPjy+S1btqh79+5F2mNiYjRt2jQ1bty42P0++eQT3XPPPZJ+uaFifHy8PvroI3l4eKh///6aO3eu/P39zfo9e/YoLi5OO3fuVO3atTVq1ChNnDjRbcxVq1bp2Wef1bFjx9SsWTMlJiaqd+/eZr9hGJo6daoWL16s7Oxs3XXXXVqwYIGaN29+XWvl8nlYBZfPA6hMSvL+/ZvuI1TZEYRgFQQhAJXJTXUfIQAAgJsVQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFhWiYPQ1q1b1a9fPzkcDtlsNq1Zs8at3zAMTZkyRfXq1ZOvr68iIyN1+PBht5qsrCwNHjxYdrtdgYGBio2NVW5urlvNnj171LVrV/n4+CgkJESJiYlF5rJq1Sq1bNlSPj4+CgsL04YNG0o8FwAAYF0lDkJ5eXlq06aN5s+fX2x/YmKi5s6dq0WLFiktLU1+fn6KiorSuXPnzJrBgwdr//79Sk5O1rp167R161aNHDnS7He5XOrZs6caNmyo9PR0zZo1S9OmTdPixYvNmu3bt2vQoEGKjY3Vl19+qejoaEVHR2vfvn0lmgsAALAum2EYxg3vbLNp9erVio6OlvTLGRiHw6Fx48Zp/PjxkqScnBwFBQVp6dKlGjhwoA4cOKDQ0FDt3LlTHTp0kCQlJSWpd+/e+v777+VwOLRw4UI988wzcjqd8vLykiRNmjRJa9as0cGDByVJAwYMUF5entatW2fOp1OnTmrbtq0WLVp0XXO5FpfLpYCAAOXk5Mhut9/oj6lCsk23lfcU8Dsypt7wrwEAuOmU5P27VL8jdPToUTmdTkVGRpptAQEBCg8PV2pqqiQpNTVVgYGBZgiSpMjISHl4eCgtLc2s6datmxmCJCkqKkqHDh3SmTNnzJrLj1NYU3ic65nLlc6fPy+Xy+W2AQCAyqtUg5DT6ZQkBQUFubUHBQWZfU6nU3Xr1nXr9/T0VM2aNd1qihvj8mP8Ws3l/deay5VmzpypgIAAcwsJCbmOVQMAgIqKq8YuM3nyZOXk5JjbyZMny3tKAACgDJVqEAoODpYkZWZmurVnZmaafcHBwTp9+rRb/8WLF5WVleVWU9wYlx/j12ou77/WXK7k7e0tu93utgEAgMqrVINQ48aNFRwcrJSUFLPN5XIpLS1NERERkqSIiAhlZ2crPT3drNm8ebMKCgoUHh5u1mzdulX5+flmTXJyslq0aKEaNWqYNZcfp7Cm8DjXMxcAAGBtJQ5Cubm5ysjIUEZGhqRfvpSckZGhEydOyGazaezYsZoxY4bWrl2rvXv3aujQoXI4HOaVZa1atVKvXr00YsQI7dixQ9u2bVN8fLwGDhwoh8MhSXr00Ufl5eWl2NhY7d+/XytWrNCcOXOUkJBgzmPMmDFKSkrS7NmzdfDgQU2bNk27du1SfHy8JF3XXAAAgLV5lnSHXbt2qXv37ubjwnASExOjpUuX6qmnnlJeXp5Gjhyp7Oxs3XXXXUpKSpKPj4+5zzvvvKP4+Hj16NFDHh4e6t+/v+bOnWv2BwQE6OOPP1ZcXJzat2+v2rVra8qUKW73GurcubOWL1+uZ599Vk8//bSaNWumNWvWqHXr1mbN9cwFAABY12+6j1Blx32EYBXcRwhAZVJu9xECAACoSAhCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsko9CF26dEnPPfecGjduLF9fXzVp0kTPP/+8DMMwawzD0JQpU1SvXj35+voqMjJShw8fdhsnKytLgwcPlt1uV2BgoGJjY5Wbm+tWs2fPHnXt2lU+Pj4KCQlRYmJikfmsWrVKLVu2lI+Pj8LCwrRhw4bSXjIAAKigSj0Ivfzyy1q4cKHmzZunAwcO6OWXX1ZiYqLeeOMNsyYxMVFz587VokWLlJaWJj8/P0VFRencuXNmzeDBg7V//34lJydr3bp12rp1q0aOHGn2u1wu9ezZUw0bNlR6erpmzZqladOmafHixWbN9u3bNWjQIMXGxurLL79UdHS0oqOjtW/fvtJeNgAAqIBsxuWnakpB3759FRQUpLffftts69+/v3x9ffWvf/1LhmHI4XBo3LhxGj9+vCQpJydHQUFBWrp0qQYOHKgDBw4oNDRUO3fuVIcOHSRJSUlJ6t27t77//ns5HA4tXLhQzzzzjJxOp7y8vCRJkyZN0po1a3Tw4EFJ0oABA5SXl6d169aZc+nUqZPatm2rRYsWXXMtLpdLAQEBysnJkd1uL7WfUUVgm24r7yngd2RMLdVfAwBQrkry/l3qZ4Q6d+6slJQUffPNN5Kkr776Sp9//rn+8Ic/SJKOHj0qp9OpyMhIc5+AgACFh4crNTVVkpSamqrAwEAzBElSZGSkPDw8lJaWZtZ069bNDEGSFBUVpUOHDunMmTNmzeXHKawpPM6Vzp8/L5fL5bYBAIDKy7O0B5w0aZJcLpdatmypKlWq6NKlS3rhhRc0ePBgSZLT6ZQkBQUFue0XFBRk9jmdTtWtW9d9op6eqlmzpltN48aNi4xR2FejRg05nc6rHudKM2fO1PTp029k2QAAoAIq9TNCK1eu1DvvvKPly5dr9+7dWrZsmV555RUtW7astA9V6iZPnqycnBxzO3nyZHlPCQAAlKFSPyM0YcIETZo0SQMHDpQkhYWF6fjx45o5c6ZiYmIUHBwsScrMzFS9evXM/TIzM9W2bVtJUnBwsE6fPu027sWLF5WVlWXuHxwcrMzMTLeawsfXqinsv5K3t7e8vb1vZNkAAKACKvUzQj///LM8PNyHrVKligoKCiRJjRs3VnBwsFJSUsx+l8ultLQ0RURESJIiIiKUnZ2t9PR0s2bz5s0qKChQeHi4WbN161bl5+ebNcnJyWrRooVq1Khh1lx+nMKawuMAAABrK/Ug1K9fP73wwgtav369jh07ptWrV+vVV1/VAw88IEmy2WwaO3asZsyYobVr12rv3r0aOnSoHA6HoqOjJUmtWrVSr169NGLECO3YsUPbtm1TfHy8Bg4cKIfDIUl69NFH5eXlpdjYWO3fv18rVqzQnDlzlJCQYM5lzJgxSkpK0uzZs3Xw4EFNmzZNu3btUnx8fGkvGwAAVEClfvn82bNn9dxzz2n16tU6ffq0HA6HBg0apClTpphXeBmGoalTp2rx4sXKzs7WXXfdpQULFqh58+bmOFlZWYqPj9dHH30kDw8P9e/fX3PnzpW/v79Zs2fPHsXFxWnnzp2qXbu2Ro0apYkTJ7rNZ9WqVXr22Wd17NgxNWvWTImJierdu/d1rYXL52EVXD4PoDIpyft3qQehyoQgBKsgCAGoTMr1PkIAAAAVBUEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYFkEIAABYVpkEof/85z/605/+pFq1asnX11dhYWHatWuX2W8YhqZMmaJ69erJ19dXkZGROnz4sNsYWVlZGjx4sOx2uwIDAxUbG6vc3Fy3mj179qhr167y8fFRSEiIEhMTi8xl1apVatmypXx8fBQWFqYNGzaUxZIBAEAFVOpB6MyZM+rSpYuqVq2qjRs36uuvv9bs2bNVo0YNsyYxMVFz587VokWLlJaWJj8/P0VFRencuXNmzeDBg7V//34lJydr3bp12rp1q0aOHGn2u1wu9ezZUw0bNlR6erpmzZqladOmafHixWbN9u3bNWjQIMXGxurLL79UdHS0oqOjtW/fvtJeNgAAqIBshmEYpTngpEmTtG3bNn322WfF9huGIYfDoXHjxmn8+PGSpJycHAUFBWnp0qUaOHCgDhw4oNDQUO3cuVMdOnSQJCUlJal37976/vvv5XA4tHDhQj3zzDNyOp3y8vIyj71mzRodPHhQkjRgwADl5eVp3bp15vE7deqktm3batGiRddc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V3clJyfLbrcrNDTUrLl8jMKawjG8vLzUvn17t5qCggKlpKSYNQAAwNpK/TtC1atXV+vWrd3a/Pz8VKtWLbM9NjZWCQkJqlmzpux2u0aNGqWIiAh16tRJktSzZ0+FhoZqyJAhSkxMlNPp1LPPPqu4uDh5e3tLkh5//HHNmzdPTz31lP785z9r8+bNWrlypdavX28eNyEhQTExMerQoYM6duyo119/XXl5eRo2bFhpLxsAAFRAZfJl6Wt57bXX5OHhof79++v8+fOKiorSggULzP4qVapo3bp1+utf/6qIiAj5+fkpJiZGf/vb38yaxo0ba/369XryySc1Z84c1a9fX2+99ZaioqLMmgEDBujHH3/UlClT5HQ61bZtWyUlJRX5AjUAALCmMruPUGXAfYRgFdxHCEBlclPcRwgAAOBmRxACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWRRACAACWVepBaObMmbrzzjtVvXp11a1bV9HR0Tp06JBbzblz5xQXF6datWrJ399f/fv3V2ZmplvNiRMn1KdPH1WrVk1169bVhAkTdPHiRbeaLVu2qF27dvL29lbTpk21dOnSIvOZP3++GjVqJB8fH4WHh2vHjh2lvWQAAFBBlXoQ+vTTTxUXF6cvvvhCycnJys/PV8+ePZWXl2fWPPnkk/roo4+0atUqffrppzp16pQefPBBs//SpUvq06ePLly4oO3bt2vZsmVaunSppkyZYtYcPXpUffr0Uffu3ZWRkaGxY8dq+PDh2rRpk1mzYsUKJSQkaOrUqdq9e7fatGmjqKgonT59urSXDQAAKiCbYRhGWR7gxx9/VN26dfXpp5+qW7duysnJUZ06dbR8+XI99NBDkqSDBw+qVatWSk1NVadOnbRx40b17dtXp06dUlBQkCRp0aJFmjhxon788Ud5eXlp4sSJWr9+vfbt22ce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2aODBw9q4cKF/CIFysD8+fN16dIldezYUe+//74OHz6sAwcOaO7cuYqIiChSP3jwYNWuXVv333+/PvvsMx09elRbtmzR6NGj9f3330v65UzTP//5Tx04cEBpaWkaPHgwZ3otiiAESxg9erQSEhI0btw4hYWFKSkpSWvXrlWzZs30448/KjY2VtOmTVO7du0k/XKlSFBQkB5//PFix2vevLk+/vhjffXVV+rYsaMiIiL04YcfytOTT5uB0nbrrbdq9+7d6t69u8aNG6fWrVvrvvvuU0pKihYuXFikvlq1atq6dasaNGigBx98UK1atVJsbKzOnTsnu90uSXr77bd15swZtWvXTkOGDNHo0aNVt27d33tpuAnYjBv5JhoAAEAlwBkhAABgWQQhAABgWQQhAABgWQQhAABgWQQhAABgWQQhAABgWQQhAABgWQQhAJXKsWPHZLPZlJGRUd5TAVABEIQAAIBlEYQAAIBlEYQAVEgFBQVKTExU06ZN5e3trQYNGuiFF14otnbfvn36wx/+IH9/fwUFBWnIkCFufyA3KSlJd911lwIDA1WrVi317dtXR44cMfsLP2774IMP1L17d1WrVk1t2rRRampqma8TQNkiCAGokCZPnqyXXnpJzz33nL7++mstX75cQUFBReqys7N177336o477tCuXbuUlJSkzMxMPfLII2ZNXl6eEhIStGvXLqWkpMjDw0MPPPCACgoK3MZ65plnNH78eGVkZKh58+YaNGiQLl68WOZrBVB2+KOrACqcs2fPqk6dOpo3b56GDx/u1nfs2DE1btxYX375pdq2basZM2bos88+06ZNm8ya77//XiEhITp06JCaN29eZPyffvpJderU0d69e9W6dWtzzLfeekuxsbGSpK+//lq33XabDhw4oJYtW5btggGUGc4IAahwDhw4oPPnz6tHjx7XrP3qq6/0ySefyN/f39wKg0vhx1+HDx/WoEGDdOutt8put6tRo0aSpBMnTriNdfvtt5v/rlevniTp9OnTpbEkAOXEs7wnAAAl5evre921ubm56tevn15++eUifYVhpl+/fmrYsKHefPNNORwOFRQUqHXr1rpw4YJbfdWqVc1/22w2SSry8RmAioUgBKDCadasmXx9fZWSklLko7ErtWvXTu+//74aNWokT8+iv/L++9//6tChQ3rzzTfVtWtXSdLnn39eJvMGcPPhozEAFY6Pj48mTpyop556Sv/3f/+nI0eO6IsvvtDbb79dpDYuLk5ZWVkaNGiQdu7cqSNHjmjTpk0aNmyYLl26pBo1aqhWrVpavHixvv32W23evFkJCQnlsCoA5YEzQgAqpOeee06enp6aMmWKTp06pXr16unxxx8vUudwOLRt2zZNnDhRPXv21Pnz59WwYUP16tVLHh4estlsevfddzV69Gi1bt1aLVq00Ny5c3XPPff8/osC8LvjqjEAAGBZfDQGAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAsiyAEAAAs6/8DIYZNKn8qhU8AAAAASUVORK5CYII=\n"954 },955 "metadata": {}956 }957 ]958 },959 {960 "cell_type": "code",961 "source": [962 "import re\n",963 "import nltk\n",964 "from nltk.corpus import stopwords\n",965 "from nltk.stem import WordNetLemmatizer\n",966 "\n",967 "# Download necessary NLTK data if not already downloaded\n",968 "try:\n",969 " nltk.data.find('corpora/stopwords')\n",970 "except LookupError:\n",971 " nltk.download('stopwords')\n",972 "\n",973 "try:\n",974 " nltk.data.find('corpora/wordnet')\n",975 "except LookupError:\n",976 " nltk.download('wordnet')\n",977 "\n",978 "# Instantiate lemmatizer once for efficiency\n",979 "lemmatizer = WordNetLemmatizer()\n",980 "\n",981 "def clean_text(text):\n",982 " # lowercase\n",983 " text = text.lower()\n",984 "\n",985 " # expand contractions\n",986 " text = re.sub(r\"what's\", \"what is \", text)\n",987 " text = re.sub(r\"\\'s\", \" \", text)\n",988 " text = re.sub(r\"\\'ve\", \" have \", text)\n",989 " text = re.sub(r\"can't\", \"can not \", text)\n",990 " text = re.sub(r\"n't\", \" not \", text)\n",991 " text = re.sub(r\"i'm\", \"i am \", text)\n",992 " text = re.sub(r\"\\'re\", \" are \", text)\n",993 " text = re.sub(r\"\\'d\", \" would \", text)\n",994 " text = re.sub(r\"\\'ll\", \" will \", text)\n",995 " text = re.sub(r\"\\'scuse\", \" excuse \", text)\n",996 "\n",997 " # remove non-letters\n",998 " text = re.sub('[^a-zA-Z]', ' ', text)\n",999 "\n",1000 " # remove extra spaces (fixed SyntaxWarning with r'\\s+')\n",1001 " text = re.sub(r'\\s+', ' ', text).strip()\n",1002 "\n",1003 " # remove stopwords\n",1004 " stoplist = set(stopwords.words('english'))\n",1005 " words = [word for word in text.split() if word not in stoplist]\n",1006 "\n",1007 " # lemmatization using the globally instantiated lemmatizer\n",1008 " words = [lemmatizer.lemmatize(word) for word in words]\n",1009 "\n",1010 " return \" \".join(words)\n",1011 "\n",1012 "df['comment_text'] = df['comment_text'].fillna('').apply(clean_text)"1013 ],1014 "metadata": {1015 "colab": {1016 "base_uri": "https://localhost:8080/"1017 },1018 "id": "kZbJd56Vr25o",1019 "outputId": "99f02b0b-7415-4e70-eca8-667db1d99ad6"1020 },1021 "execution_count": 9,1022 "outputs": [1023 {1024 "output_type": "stream",1025 "name": "stderr",1026 "text": [1027 "[nltk_data] Downloading package stopwords to /root/nltk_data...\n",1028 "[nltk_data] Unzipping corpora/stopwords.zip.\n",1029 "[nltk_data] Downloading package wordnet to /root/nltk_data...\n"1030 ]1031 }1032 ]1033 },1034 {1035 "cell_type": "code",1036 "source": [1037 "from sklearn.model_selection import train_test_split\n",1038 "\n",1039 "X = df['comment_text']\n",1040 "y = df[labels]"1041 ],1042 "metadata": {1043 "id": "A73ykc_ssGdQ"1044 },1045 "execution_count": 10,1046 "outputs": []1047 },1048 {1049 "cell_type": "code",1050 "source": [1051 "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"1052 ],1053 "metadata": {1054 "id": "N6MSNfkzsj7L"1055 },1056 "execution_count": 11,1057 "outputs": []1058 },1059 {1060 "cell_type": "code",1061 "source": [1062 "from sklearn.feature_extraction.text import TfidfVectorizer\n",1063 "\n",1064 "vectorizer = TfidfVectorizer(max_features=10000)\n",1065 "X_train_vec = vectorizer.fit_transform(X_train)\n",1066 "X_test_vec = vectorizer.transform(X_test)"1067 ],1068 "metadata": {1069 "id": "LDLQyP6rsl2s"1070 },1071 "execution_count": 12,1072 "outputs": []1073 },1074 {1075 "cell_type": "code",1076 "source": [1077 "from sklearn.linear_model import LogisticRegression\n",1078 "from sklearn.multiclass import OneVsRestClassifier\n",1079 "\n",1080 "model = OneVsRestClassifier(LogisticRegression(max_iter=200))\n",1081 "model.fit(X_train_vec, y_train)"1082 ],1083 "metadata": {1084 "colab": {1085 "base_uri": "https://localhost:8080/",1086 "height": 1661087 },1088 "id": "C16Yl4mJsndD",1089 "outputId": "c9ec3070-359f-4ece-a359-18f518ef3284"1090 },1091 "execution_count": 13,1092 "outputs": [1093 {1094 "output_type": "execute_result",1095 "data": {1096 "text/plain": [1097 "OneVsRestClassifier(estimator=LogisticRegression(max_iter=200))"1098 ],1099 "text/html": [1100 "<style>#sk-container-id-1 {\n",1101 " /* Definition of color scheme common for light and dark mode */\n",1102 " --sklearn-color-text: #000;\n",1103 " --sklearn-color-text-muted: #666;\n",1104 " --sklearn-color-line: gray;\n",1105 " /* Definition of color scheme for unfitted estimators */\n",1106 " --sklearn-color-unfitted-level-0: #fff5e6;\n",1107 " --sklearn-color-unfitted-level-1: #f6e4d2;\n",1108 " --sklearn-color-unfitted-level-2: #ffe0b3;\n",1109 " --sklearn-color-unfitted-level-3: chocolate;\n",1110 " /* Definition of color scheme for fitted estimators */\n",1111 " --sklearn-color-fitted-level-0: #f0f8ff;\n",1112 " --sklearn-color-fitted-level-1: #d4ebff;\n",1113 " --sklearn-color-fitted-level-2: #b3dbfd;\n",1114 " --sklearn-color-fitted-level-3: cornflowerblue;\n",1115 "\n",1116 " /* Specific color for light theme */\n",1117 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",1118 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",1119 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",1120 " --sklearn-color-icon: #696969;\n",1121 "\n",1122 " @media (prefers-color-scheme: dark) {\n",1123 " /* Redefinition of color scheme for dark theme */\n",1124 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",1125 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",1126 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",1127 " --sklearn-color-icon: #878787;\n",1128 " }\n",1129 "}\n",1130 "\n",1131 "#sk-container-id-1 {\n",1132 " color: var(--sklearn-color-text);\n",1133 "}\n",1134 "\n",1135 "#sk-container-id-1 pre {\n",1136 " padding: 0;\n",1137 "}\n",1138 "\n",1139 "#sk-container-id-1 input.sk-hidden--visually {\n",1140 " border: 0;\n",1141 " clip: rect(1px 1px 1px 1px);\n",1142 " clip: rect(1px, 1px, 1px, 1px);\n",1143 " height: 1px;\n",1144 " margin: -1px;\n",1145 " overflow: hidden;\n",1146 " padding: 0;\n",1147 " position: absolute;\n",1148 " width: 1px;\n",1149 "}\n",1150 "\n",1151 "#sk-container-id-1 div.sk-dashed-wrapped {\n",1152 " border: 1px dashed var(--sklearn-color-line);\n",1153 " margin: 0 0.4em 0.5em 0.4em;\n",1154 " box-sizing: border-box;\n",1155 " padding-bottom: 0.4em;\n",1156 " background-color: var(--sklearn-color-background);\n",1157 "}\n",1158 "\n",1159 "#sk-container-id-1 div.sk-container {\n",1160 " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",1161 " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",1162 " so we also need the `!important` here to be able to override the\n",1163 " default hidden behavior on the sphinx rendered scikit-learn.org.\n",1164 " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",1165 " display: inline-block !important;\n",1166 " position: relative;\n",1167 "}\n",1168 "\n",1169 "#sk-container-id-1 div.sk-text-repr-fallback {\n",1170 " display: none;\n",1171 "}\n",1172 "\n",1173 "div.sk-parallel-item,\n",1174 "div.sk-serial,\n",1175 "div.sk-item {\n",1176 " /* draw centered vertical line to link estimators */\n",1177 " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",1178 " background-size: 2px 100%;\n",1179 " background-repeat: no-repeat;\n",1180 " background-position: center center;\n",1181 "}\n",1182 "\n",1183 "/* Parallel-specific style estimator block */\n",1184 "\n",1185 "#sk-container-id-1 div.sk-parallel-item::after {\n",1186 " content: \"\";\n",1187 " width: 100%;\n",1188 " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",1189 " flex-grow: 1;\n",1190 "}\n",1191 "\n",1192 "#sk-container-id-1 div.sk-parallel {\n",1193 " display: flex;\n",1194 " align-items: stretch;\n",1195 " justify-content: center;\n",1196 " background-color: var(--sklearn-color-background);\n",1197 " position: relative;\n",1198 "}\n",1199 "\n",1200 "#sk-container-id-1 div.sk-parallel-item {\n",