File size: 69,654 Bytes
d22385f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 |
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Setup Working directory"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"\n",
"if os.path.basename(os.getcwd()) == \"notebooks\":\n",
" os.chdir(\"../\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Install Libraries and Download Dataset"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
"_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5",
"execution": {
"iopub.execute_input": "2025-01-10T12:31:19.124429Z",
"iopub.status.busy": "2025-01-10T12:31:19.123936Z",
"iopub.status.idle": "2025-01-10T12:31:27.021410Z",
"shell.execute_reply": "2025-01-10T12:31:27.019831Z",
"shell.execute_reply.started": "2025-01-10T12:31:19.124383Z"
},
"trusted": true
},
"outputs": [],
"source": [
"!pip install -q underthesea\n",
"!pip install -q kaggle"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:31:27.023522Z",
"iopub.status.busy": "2025-01-10T12:31:27.023199Z",
"iopub.status.idle": "2025-01-10T12:31:35.077460Z",
"shell.execute_reply": "2025-01-10T12:31:35.076234Z",
"shell.execute_reply.started": "2025-01-10T12:31:27.023476Z"
},
"trusted": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset URL: https://www.kaggle.com/datasets/phmanhth/vietnamese-text-classification\n",
"License(s): unknown\n",
"Downloading vietnamese-text-classification.zip to c:\\Users\\MyLaptop\\Desktop\\New folder (4)\\Vietnamese-News-Classification\\notebooks\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
" 0%| | 0.00/45.7M [00:00<?, ?B/s]\n",
" 2%|▏ | 1.00M/45.7M [00:04<02:59, 261kB/s]\n",
" 4%|▍ | 2.00M/45.7M [00:08<03:11, 240kB/s]\n",
" 7%|▋ | 3.00M/45.7M [00:13<03:09, 236kB/s]\n",
" 9%|▉ | 4.00M/45.7M [00:15<02:29, 293kB/s]\n",
" 11%|█ | 5.00M/45.7M [00:17<02:04, 344kB/s]\n",
" 13%|█▎ | 6.00M/45.7M [00:19<01:45, 394kB/s]\n",
" 15%|█▌ | 7.00M/45.7M [00:21<01:36, 419kB/s]\n",
" 18%|█▊ | 8.00M/45.7M [00:23<01:29, 441kB/s]\n",
" 20%|█▉ | 9.00M/45.7M [00:25<01:23, 460kB/s]\n",
" 22%|██▏ | 10.0M/45.7M [00:28<01:22, 456kB/s]\n",
" 24%|██▍ | 11.0M/45.7M [00:30<01:21, 446kB/s]\n",
" 26%|██▋ | 12.0M/45.7M [00:33<01:20, 440kB/s]\n",
" 28%|██▊ | 13.0M/45.7M [00:35<01:15, 456kB/s]\n",
" 31%|███ | 14.0M/45.7M [00:37<01:13, 454kB/s]\n",
" 33%|███▎ | 15.0M/45.7M [00:40<01:19, 407kB/s]\n",
" 35%|███▌ | 16.0M/45.7M [00:43<01:22, 376kB/s]\n",
" 37%|███▋ | 17.0M/45.7M [00:46<01:19, 381kB/s]\n",
" 39%|███▉ | 18.0M/45.7M [00:49<01:13, 394kB/s]\n",
" 42%|████▏ | 19.0M/45.7M [00:52<01:18, 355kB/s]\n",
" 44%|████▍ | 20.0M/45.7M [00:55<01:15, 355kB/s]\n",
" 46%|████▌ | 21.0M/45.7M [00:58<01:09, 372kB/s]\n",
" 48%|████▊ | 22.0M/45.7M [01:00<01:03, 394kB/s]\n",
" 50%|█████ | 23.0M/45.7M [01:03<01:00, 394kB/s]\n",
" 53%|█████▎ | 24.0M/45.7M [01:05<00:57, 395kB/s]\n",
" 55%|█████▍ | 25.0M/45.7M [01:07<00:51, 421kB/s]\n",
" 57%|█████▋ | 26.0M/45.7M [01:10<00:47, 433kB/s]\n",
" 59%|█████▉ | 27.0M/45.7M [01:13<00:48, 408kB/s]\n",
" 61%|██████▏ | 28.0M/45.7M [01:15<00:47, 393kB/s]\n",
" 63%|██████▎ | 29.0M/45.7M [01:18<00:42, 416kB/s]\n",
" 66%|██████▌ | 30.0M/45.7M [01:20<00:40, 405kB/s]\n",
" 68%|██████▊ | 31.0M/45.7M [01:23<00:40, 381kB/s]\n",
" 70%|███████ | 32.0M/45.7M [01:26<00:38, 376kB/s]\n",
" 72%|███████▏ | 33.0M/45.7M [01:29<00:33, 395kB/s]\n",
" 74%|███████▍ | 34.0M/45.7M [01:32<00:32, 381kB/s]\n",
" 77%|███████▋ | 35.0M/45.7M [01:35<00:31, 354kB/s]\n",
" 79%|███████▉ | 36.0M/45.7M [01:38<00:28, 363kB/s]\n",
" 81%|████████ | 37.0M/45.7M [01:40<00:23, 384kB/s]\n",
" 83%|████████▎ | 38.0M/45.7M [01:43<00:21, 372kB/s]\n",
" 85%|████████▌ | 39.0M/45.7M [01:47<00:20, 343kB/s]\n",
" 88%|████████▊ | 40.0M/45.7M [01:50<00:16, 358kB/s]\n",
" 90%|████████▉ | 41.0M/45.7M [01:53<00:14, 331kB/s]\n",
" 92%|█████████▏| 42.0M/45.7M [01:57<00:12, 322kB/s]\n",
" 94%|█████████▍| 43.0M/45.7M [01:59<00:08, 336kB/s]\n",
" 96%|█████████▋| 44.0M/45.7M [02:02<00:05, 341kB/s]\n",
" 98%|█████████▊| 45.0M/45.7M [02:06<00:02, 336kB/s]\n",
"100%|██████████| 45.7M/45.7M [02:07<00:00, 353kB/s]\n",
"100%|██████████| 45.7M/45.7M [02:07<00:00, 375kB/s]\n"
]
}
],
"source": [
"import os\n",
"import zipfile\n",
"\n",
"\n",
"os.makedirs(\"dataset\", exist_ok=True)\n",
"os.makedirs(\"tokenizers\", exist_ok=True)\n",
"\n",
"!kaggle datasets download phmanhth/vietnamese-text-classification\n",
"\n",
"with zipfile.ZipFile(\"vietnamese-text-classification.zip\", 'r') as zip_ref:\n",
" zip_ref.extractall(\"dataset\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Import Libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:35:09.906292Z",
"iopub.status.busy": "2025-01-10T12:35:09.905878Z",
"iopub.status.idle": "2025-01-10T12:35:09.913913Z",
"shell.execute_reply": "2025-01-10T12:35:09.912061Z",
"shell.execute_reply.started": "2025-01-10T12:35:09.906262Z"
},
"trusted": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import time\n",
"import os\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import matplotlib.ticker as ticker\n",
"from matplotlib.pyplot import savefig\n",
"\n",
"from underthesea import word_tokenize\n",
"\n",
"import pickle\n",
"import json\n",
"import tensorflow as tf\n",
"from tensorflow.keras.preprocessing.text import Tokenizer\n",
"from tensorflow.keras.preprocessing.sequence import pad_sequences"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Processing Dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load Dataset"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:31:53.308063Z",
"iopub.status.busy": "2025-01-10T12:31:53.307439Z",
"iopub.status.idle": "2025-01-10T12:31:53.317302Z",
"shell.execute_reply": "2025-01-10T12:31:53.316179Z",
"shell.execute_reply.started": "2025-01-10T12:31:53.308027Z"
},
"trusted": true
},
"outputs": [],
"source": [
"def load_data_from_folder(folder_path, label_column='label'):\n",
" \"\"\"Loads data from a folder of text files into a pandas DataFrame.\"\"\"\n",
" data = []\n",
" for foldername in os.listdir(folder_path):\n",
" for filename in os.listdir(os.path.join(folder_path, foldername)):\n",
" if filename.endswith('.txt'): # Adjust file extension if needed\n",
" filepath = os.path.join(folder_path, foldername, filename)\n",
" # print(filepath)\n",
" try:\n",
" with open(filepath, 'r', encoding='UTF-16') as f: # Handle encoding\n",
" content = f.read()\n",
" except:\n",
" try:\n",
" with open(filepath, 'r', encoding='UTF-8') as f: # Handle encoding\n",
" content = f.read()\n",
" except UnicodeDecodeError:\n",
" print(UnicodeDecodeError)\n",
" # label = filename.split('_')[0] # Extract label from filename\n",
" data.append({'content': content, 'label': foldername})\n",
" return pd.DataFrame(data)\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:32:18.658823Z",
"iopub.status.busy": "2025-01-10T12:32:18.658413Z",
"iopub.status.idle": "2025-01-10T12:32:20.021405Z",
"shell.execute_reply": "2025-01-10T12:32:20.020246Z",
"shell.execute_reply.started": "2025-01-10T12:32:18.658790Z"
},
"trusted": true
},
"outputs": [],
"source": [
"train_df = load_data_from_folder('dataset/data/Train')\n",
"test_df = load_data_from_folder('dataset/data/Test')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualize Distribution of Labels in Training Data"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:32:45.183435Z",
"iopub.status.busy": "2025-01-10T12:32:45.183088Z",
"iopub.status.idle": "2025-01-10T12:32:45.190939Z",
"shell.execute_reply": "2025-01-10T12:32:45.189121Z",
"shell.execute_reply.started": "2025-01-10T12:32:45.183408Z"
},
"trusted": true
},
"outputs": [
{
"data": {
"text/plain": [
"array(['Doi song', 'Khoa hoc', 'Kinh doanh', 'Phap luat', 'Suc khoe',\n",
" 'The gioi', 'The thao', 'Van hoa'], dtype=object)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_df['label'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:38:39.413594Z",
"iopub.status.busy": "2025-01-10T12:38:39.413245Z",
"iopub.status.idle": "2025-01-10T12:38:39.840777Z",
"shell.execute_reply": "2025-01-10T12:38:39.839611Z",
"shell.execute_reply.started": "2025-01-10T12:38:39.413567Z"
},
"trusted": true
},
"outputs": [
{
"data": {
"image/png": "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mLHFz88PKSkp+PHHH1G6dGnptnDhQinm+fPn6NOnDypXrowRI0agT58++PPPP6X1hQoVwsGDB1GyZEm0b98etra22LBhA9avX482bdrk2bET5SaZ+HAUHMq27M5BTEREREREpGwODg5o3rw5pk2bpupUiPKF7H5H5+UwREREREREBUhcXBzu37+PAwcOqDoVogKHRRAiIiIiIqICxNDQEJGRkapOg6hAYhGEiIiIiIjoI3XGblB1CvSBsF/7qjoF+k5wYFQiIiIiIiIiUgssghARERERERGRWmARhIiIiIiIiIjUAosgRERERERERKQWWAQhIiIiIiIiIrXAIggRERERERERqQUWQYiIiIiIiIhILbAIQkRERERERERqgUUQIiIiIiIiIlILLIIQERERERERkVpgEYSIiIiIiIiI1IJKiyDTpk2DTCZTuFWuXPmz22zfvh2VK1eGjo4OqlevjoMHDyqsF0Jg6tSpKF26NHR1deHo6Ii7d+8qxMTExKBXr14wMDCAkZER3N3dkZiYqPTjIyIiIiIiIqL8Q+U9QapWrYrnz59Lt9OnT38y9uzZs+jZsyfc3d1x5coVuLq6wtXVFdevX5diFixYgGXLlsHf3x/nz59H0aJF4ezsjHfv3kkxvXr1wo0bNxAcHIz9+/fj1KlT8PDwyNXjJCIiIiIiIiLVkgkhhKrufNq0adi9ezfCw8OzFd+9e3ckJSVh//79UluDBg1Qs2ZN+Pv7QwgBMzMzjBkzBr/88gsAIC4uDiYmJggICECPHj1w69Yt2NjY4OLFi6hbty4AICgoCG3atEFkZCTMzMyylUt8fDwMDQ0RFxcHAwODnB04ERERERHla3XGblB1CvSBsF/7qjoFyuey+x1d5T1B7t69CzMzM5QrVw69evXC48ePPxkbGhoKR0dHhTZnZ2eEhoYCACIiIhAVFaUQY2hoCDs7OykmNDQURkZGUgEEABwdHaGhoYHz588r89CIiIiIiIiIKB/RUuWd29nZISAgAJUqVcLz588xffp0NGnSBNevX4e+vn6m+KioKJiYmCi0mZiYICoqSlqf0fa5mFKlSims19LSgrGxsRSTleTkZCQnJ0vL8fHxOThSIiIiIiIiIlI1lRZBWrduLf1ta2sLOzs7WFhYYNu2bXB3d1dhZpnNnTsX06dPV3UaRERERERERPSVVH45zIeMjIxQsWJF3Lt3L8v1pqamePHihULbixcvYGpqKq3PaPtcTHR0tML6tLQ0xMTESDFZ8fb2RlxcnHR78uRJzg6OiIiIiIiIiFQqXxVBEhMTcf/+fZQuXTrL9fb29jh27JhCW3BwMOzt7QEAVlZWMDU1VYiJj4/H+fPnpRh7e3vExsYiLCxMijl+/Djkcjns7Ow+mZu2tjYMDAwUbkRERERERERUcKj0cphffvkF7du3h4WFBZ49ewYfHx9oamqiZ8+eWcZ7eXnBwcEBixYtQtu2bREYGIhLly7ht99+AwDIZDKMHDkSs2bNQoUKFWBlZYUpU6bAzMwMrq6uAIAqVarAxcUFgwYNgr+/P1JTU+Hp6YkePXpke2YYIiIiIiIiIip4VFoEiYyMRM+ePfHq1SuULFkSjRs3xrlz51CyZEkAgJubGx4+fIiQkBAAQMOGDbFlyxZMnjwZEydORIUKFbB7925Uq1ZN2ue4ceOQlJQEDw8PxMbGonHjxggKCoKOjo4Us3nzZnh6eqJly5bQ0NBAly5dsGzZsjw9diIiIiIiIiLKWzIhhFB1Ep/i4OCA5s2bY9q0aapOJZPszkFMREREREQFT52xG1SdAn0g7Ne+qk6B8rnsfkdXaU+Qz4mLi8P9+/dx4MABVadCRERERERERN+BfFsEMTQ0RGRkpKrTICIiIiIiIqLvRL6aHYaIiIiIiIiIKLewCEJEREREREREaoFFECIiIiIiIiJSCyyCEBEREREREZFaYBGEiIiIiIiIiNQCiyBEREREREREpBZYBCEiIiIiIiIitcAiCBERERERERGpBRZBiIiIiIiIiEgtsAhCRERERERERGqBRRAiIiIiIiIiUgssghARERERERGRWmARhIiIiIiIiIjUAosgRERERERERKQWWAQhIiIiIiIiIrXAIggRERERERERqQUWQYiIiIiIiIhILbAIQkRERERERERqgUUQIiIiIiIiIlILLIIQERERERERkVpgEYSIiIiIiIiI1AKLIERERERERESkFlgEISIiIiIiIiK1wCIIEREREREREakFFkGIiIiIiIiISC2wCEJEREREREREaoFFECIiIiIiIiJSCyyCEBEREREREZFaYBGEiIiIiIiIiNQCiyBEREREREREpBZYBCEiIiIiIiIitcAiCBERERERERGpBRZBiIiIiIiIiEgtsAhC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3h6xsbEICwuTYo4fPw65XA47O7ts509ERJQfREdHo2/fvqhUqRJatmyJixcv4vDhw2jVqhUAwM3NDc2aNZPiJ0+ejDFjxmDy5MmwsbGBu7s7nJ2dFS6dqVevHnbt2oU///wT1apVw8yZM+Hr64tevXpJMYGBgahXrx569eoFGxsbzJs3D7Nnz8bgwYPz7NiJiIiIcirHPUFSU1OlHhFHjx5Fhw4dAACVK1fG8+fPs70ffX19VKtWTaGtaNGiKF68eKb2DF5eXnBwcMCiRYvQtm1bBAYG4tKlS9IvUzKZDCNHjsSsWbNQoUIFWFlZYcqUKTAzM4OrqyuA99c0u7i4SAO8paamwtPTEz169Mj2zDBERET5xZo1az67PiIiAs2bN5eWtbS04OPjAx8fn89u165dO7Rr1+6T601NTbFu3bqcJUtERESkYjnuCVK1alX4+/vj77//RnBwMFxcXAAAz549Q/HixZWa3Me/XjVs2BBbtmzBb7/9hho1amDHjh3YvXu3QtFk3LhxGD58ODw8PFCvXj0kJiYiKChIYdyRzZs3o3LlymjZsiXatGmDxo0b53hMEyIiovwuLi4O9+/fl6aNJyIiIlJ3MpExClo2hYSEoFOnToiPj0e/fv2wdu1aAMDEiRPx77//YufOnUpLzsHBAc2bN8e0adOUtk9lye4cxEREREREVPDUGbtB1SnQB8J+7avqFCify+539BxfDtOsWTP8999/iI+PR7FixaR2Dw8PFClS5OuyzULGr1cHDhxQ2j6JiIhyAz8o5y/8oExERESfkuPLYYD3U+iFhYVh9erVSEhIAAAULlxYqUUQQ0NDREZGQk9PT2n7JCIiIiIiIiL1leOeII8ePYKLiwseP36M5ORktGrVCvr6+pg/fz6Sk5Ph7++fG3kSEREREREREX2THPcE8fLyQt26dfH69Wvo6upK7Z06dco0fS0RERERERERUX6R454gf//9N86ePYvChQsrtFtaWuLp06dKS4yIiIiIiIiISJly3BNELpcjPT09U3tkZCT09fWVkhQRERERERERkbLluAji5OQEX19faVkmkyExMRE+Pj5o06aNMnMjIiIiIiIiIlKaHF8Os2jRIjg7O8PGxgbv3r3DTz/9hLt376JEiRL4888/cyNHIiIiIiIiIqJvluMiiLm5Oa5evYrAwED8888/SExMhLu7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/vzzzywvjyEiIiIiIiIiyq+yXQSZMGECdHV1Ub58eaxfvx7r16/PMm7nzp1KS46IiIiIiIiISFmyXQTp27fvF6fIJSIiIiIiIiLKr7JdBAkICMjFNIiIiIiIiIiIctdXzQ5DRERERERERFTQsAhCRERERERERGqBRRAiIiIiIiIiUgssghARERERERGRWmARhIiIiIiIiIjUAosgRERERERERKQWWAQhIiIiIiIiIrXAIggRERERERERqQUWQYiIiIiIiIhILbAIQkRERERERERqgUUQIiIiIiIiIlILLIIQERERERERkVpgEYSIiIiIiIiI1AKLIERERERERESkFlgEISIiIiIiIiK1wCIIEREREREREakFFkGIiIiIiIiISC2wCEJEREREREREaoFFECIiIiIiIiJSCyyCEBEREREREZFaYBGEiIiIiIiIiNQCiyBEREREREREpBZYBCEiIiIiIiIitcAiCBERERERERGpBRZBiIiIiIiIiEgtsAhCRERERERERGpBpUWQU6dOoX379jAzM4NMJsPu3bu/uE1ISAhq164NbW1tlC9fHgEBAZliVq5cCUtLS+jo6MDOzg4XLlxQWP/u3TsMGzYMxYsXh56eHrp06YIXL14o6aiIiIiIiIiIKD9SaREkKSkJNWrUwMqVK7MVHxERgbZt26J58+YIDw/HyJEjMXDgQBw+fFiK2bp1K0aPHg0fHx9cvnwZNWrUgLOzM6Kjo6WYUaNGYd++fdi+fTtOnjyJZ8+eoXPnzko/PiIiIiIiIiLKP7RUeeetW7dG69atsx3v7+8PKysrLFq0CABQpUoVnD59GkuWLIGzszMAYPHixRg0aBD69+8vbXPgwAGsXbsWEyZMQFxcHNasWYMtW7agRYsWAIB169ahSpUqOHfuHBo0aKDkoyQiIiIiIiKi/KBAjQkSGhoKR0dHhTZnZ2eEhoYCAFJSUhAWFqYQo6GhAUdHRykmLCwMqampCjGVK1dG2bJlpZisJCcnIz4+XuFGRERERERERAVHgSqCREVFwcTERKHNxMQE8fHxePv2Lf777z+kp6dnGRMVFSXto3DhwjAyMvpkTFbmzp0LQ0ND6VamTBnlHBQRERERERER5YkCVQRRJW9vb8TFxUm3J0+eqDolIiIiIiIiIsoBlY4JklOmpqaZZnF58eIFDAwMoKurC01NTWhqamYZY2pqKu0jJSUFsbGxCr1BPozJira2NrS1tZV3MERERERERESUpwpUTxB7e3scO3ZMoS04OBj29vYAgMKFC6NOnToKMXK5HMeOHZNi6tSpg0KFCinE3L59G48fP5ZiiIiIiIiIiOj7o9KeIImJibh37560HBERgfDwcBgbG6Ns2bKZ4gcPHowVK1Zg3LhxGDBgAI4fP45t27bhwIEDUszo0aPRr18/1K1bF/Xr14evry+SkpKk2WIMDQ3h7u6O0aNHw9jYGAYGBhg+fDjs7e05MwwRERERERHRd0ylRZBLly6hefPm0vLo0aMBAP369UNAQACmTZuGgIAAPHz4EABgZWWFAwcOYNSoUVi6dCnMzc3xxx9/SNPjAkD37t3x8uVLTJ06FVFRUahZsyaCgoIUBktdsmQJNDQ00KVLFyQnJ8PZ2RmrVq3Km4MmIiIiIiIiIpVQaRGkWbNmEEJ8cn1ERASaNWuWaZsrV658dr+enp7w9PT85HodHR2sXLkSK1euzFG+RERERERERFRw5duBUYUQCAkJwenTp1WdChERERERERF9B/JtEUQmk+HRo0eqToOIiIiIiIiIvhMFanYYIiIiIiIiIqKvxSIIEREREREREakFFkGIiIiIiIiISC2wCEJEREREREREaoFFECIiIiIiIiJSCyyCEBEREREREZFaYBGEiIiIiIiIiNQCiyBEREREREREpBZYBCEiIiIiIiIitcAiCBERERERERGpBRZBiIiIiIiIiEgtsAhCRERERERERGqBRRAiIiIiIiIiUgssghARERERERGRWmARhIiIiIiIiIjUAosgRERERERERKQWWAQhIiIiIiIiIrXAIggRERERERERqQUWQYiIiIiIiIhILbAIQkRERERERERqgUUQIiIiIiIiIlILLIIQERERERERkVpgEYSIiIiIiIiI1AKLIERERERERESkFlgEISIiIiIiIiK1wCIIEREREREREakFFkGIiIiIiIiISC2wCEJEREREREREaoFFECIiIiIiIiJSCyyCEBEREREREZFaYBGEiIiIiIiIiNQCiyBEREREREREpBZYBCEiIiIiIiIitcAiCBERERERERGpBRZBiIiIiIiIiEgtsAhCRERERERERGqBRRAiIiIiIiIiUgssghARERERERGRWmARhIiIiIiIiIjUAosgRERERERE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x1EURbZu3fqvj0NERETPHoMgREREZLCGDh0qr7/+ur6LQURERAaCQRAiIiIiIiIiKhcYBCEiIiKjFBUVJa1bt5bq1atL48aNZdSoUZKdnV1qu61bt4qdnZ2YmpqKn5+f3Lp1S2f9N998I66urmJqaio2NjYyY8YMKSwsfF6nQURERE8RgyBERERklExMTGTx4sVy4cIFWbNmjezbt08mTpyos01OTo7Mnj1b4uLi5PDhw5KZmSmBgYHq+kOHDsngwYNl3LhxcvHiRfn8888lNjZWZs+e/bxPh4iIiJ4CBQD0XQgiIiKiJzF06FDJzMz8W4lJv/76a3nrrbfk3r17IlKcGPXNN9+UY8eOibu7u4iIXLp0SRwdHeX48ePi5uYmvr6+4uPjI5MnT1aPs3btWpk4caKkpaWJSHFi1C1btjA3CRERkQGoqO8CEBERET0Le/bskblz58qlS5ckKytLCgsLJTc3V3JycqRatWoiIlKxYkV56aWX1H2aN28u5ubmkpSUJG5ubpKYmCiHDx/W6flRVFRU6jhERERkGBgEISIiIqOTmpoqPXv2lLfffltmz54tlpaW8sMPP8iwYcMkPz//bwcvsrOzZcaMGeLv719qnamp6dMuNhERET1jDIIQERGR0Tl16pRoNBr5+OOPxcSkOAXaxo0bS21XWFgoJ0+eFDc3NxERSU5OlszMTHF0dBQREVdXV0lOThZbW9vnV3giIiJ6ZhgEISIiIoP24MEDOXPmjM4yKysrKSgokCVLlkivXr3k8OHDsmzZslL7VqpUSd555x1ZvHixVKxYUcaMGSMeHh5qUGTq1KnSs2dPadKkifTr109MTEwkMTFRzp8/L5GRkc/j9IiIiOgp4uwwREREZNAOHDggLi4uOv998cUXEhUVJfPmzZNWrVrJunXrZO7cuaX2rVatmkyaNEmCgoLE09NTatSoIV9++aW63s/PT7Zv3y67d++Wl156STw8PGThwoXy4osvPs9TJCIioqeEs8MQERERERERUbnAniBEREREREREVC4wCEJERERERERE5QKDIERERERERERULjAIQkRERERERETlAoMgRERERERERFQuMAhCREREREREROUCgyBEREREREREVC4wCEJERERERERE5QKDIERERERERERULjAIQkRERERERETlAoMgRERERERERFQuMAhCREREREREROXC/wFan30ISOv5qQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1100x450 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<Figure size 640x480 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"os.makedirs(\"visualization\", exist_ok=True)\n",
"plt.figure(figsize=(11, 4.5))\n",
"sns.countplot(x='label', data=train_df)#, order=label_counts.index)\n",
"plt.xticks(rotation=35) # Rotate x-axis labels for better readability\n",
"plt.xlabel(\"Label\")\n",
"plt.ylabel(\"Number of Samples\")\n",
"plt.title(\"Distribution of Labels in Training Data\")\n",
"\n",
"# Format y-axis ticks with commas as thousands separators\n",
"plt.gca().yaxis.set_major_formatter(ticker.StrMethodFormatter('{x:,.0f}'))\n",
"\n",
"# Annotate each bar with its count\n",
"for p in plt.gca().patches:\n",
" plt.gca().annotate(f'{int(p.get_height()):,}', (p.get_x() + p.get_width() / 2., p.get_height()),\n",
" ha='center', va='center', fontsize=10, xytext=(0, 5),\n",
" textcoords='offset points')\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"plt.savefig('visualization/training_data_distribution.png', dpi=300)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:36:44.945738Z",
"iopub.status.busy": "2025-01-10T12:36:44.945304Z",
"iopub.status.idle": "2025-01-10T12:36:44.961340Z",
"shell.execute_reply": "2025-01-10T12:36:44.959968Z",
"shell.execute_reply.started": "2025-01-10T12:36:44.945704Z"
},
"trusted": true
},
"outputs": [],
"source": [
"train_df = train_df.dropna()\n",
"test_df = test_df.dropna()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"execution": {
"iopub.execute_input": "2025-01-10T12:36:46.243827Z",
"iopub.status.busy": "2025-01-10T12:36:46.243428Z",
"iopub.status.idle": "2025-01-10T12:36:46.250429Z",
"shell.execute_reply": "2025-01-10T12:36:46.249271Z",
"shell.execute_reply.started": "2025-01-10T12:36:46.243793Z"
},
"trusted": true
},
"outputs": [
{
"data": {
"text/plain": [
"26059"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(train_df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Word Tokenize in Training Dataset and Test Set"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"execution": {
"iopub.status.busy": "2025-01-10T12:31:53.606363Z",
"iopub.status.idle": "2025-01-10T12:31:53.606880Z",
"shell.execute_reply": "2025-01-10T12:31:53.606634Z"
},
"trusted": true
},
"outputs": [],
"source": [
"train_df['content'] = [word_tokenize(el, format='text') for el in train_df['content']]\n",
"test_df['content'] = [word_tokenize(el, format='text') for el in test_df['content']]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Save Converted Dataframes to CSV files"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"execution": {
"iopub.status.busy": "2025-01-10T12:31:53.607935Z",
"iopub.status.idle": "2025-01-10T12:31:53.608419Z",
"shell.execute_reply": "2025-01-10T12:31:53.608209Z"
},
"trusted": true
},
"outputs": [],
"source": [
"os.makedirs(\"dataset\", exist_ok=True)\n",
"\n",
"train_df.to_csv(\"dataset/converted_train_dataset.csv\", index=False)\n",
"test_df.to_csv(\"dataset/converted_test_dataset.csv\", index=False)"
]
}
],
"metadata": {
"kaggle": {
"accelerator": "none",
"dataSources": [],
"dockerImageVersionId": 30822,
"isGpuEnabled": false,
"isInternetEnabled": true,
"language": "python",
"sourceType": "notebook"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
|