{ "cells": [ { "cell_type": "markdown", "id": "c9af9f23", "metadata": { "papermill": { "duration": 0.010007, "end_time": "2025-08-17T11:14:38.064648", "exception": false, "start_time": "2025-08-17T11:14:38.054641", "status": "completed" }, "tags": [] }, "source": [ "# Analisis Sentimen dan Pemodelan Topik Ulasan Wisatawan tentang Lawang Sewu" ] }, { "cell_type": "markdown", "id": "be918bec", "metadata": { "papermill": { "duration": 0.007414, "end_time": "2025-08-17T11:14:38.081285", "exception": false, "start_time": "2025-08-17T11:14:38.073871", "status": "completed" }, "tags": [] }, "source": [ "### 1. Judul & Tujuan Penelitian\n", "\n", "**Judul:** Analisis Sentimen dan Pemodelan Topik Ulasan Wisatawan tentang Lawang Sewu\n", "\n", "**Tujuan:**\n", "1. **Klasifikasi Sentimen:** Mengklasifikasikan ulasan dari Google Reviews ke dalam sentimen **positif, negatif, atau netral** secara terawasi (*supervised*).\n", "2. **Pemodelan Topik:** Mengungkap topik-topik utama yang dibicarakan dalam ulasan menggunakan *Latent Dirichlet Allocation* (LDA).\n", "3. **Analisis Terpadu:** Mengaitkan hasil sentimen dengan topik yang ditemukan untuk memberikan rekomendasi perbaikan layanan yang actionable bagi pengelola Lawang Sewu." ] }, { "cell_type": "markdown", "id": "b567eac8", "metadata": { "papermill": { "duration": 0.007399, "end_time": "2025-08-17T11:14:38.096364", "exception": false, "start_time": "2025-08-17T11:14:38.088965", "status": "completed" }, "tags": [] }, "source": [ "### 2. Deskripsi Dataset & Sumber Data\n", "\n", "* **Sumber Data:** Google Maps/Reviews. Platform ini dipilih karena memiliki volume ulasan yang signifikan dibandingkan platform lain yang datanya \"terlalu sedikit dan tidak ada value\".\n", "* **Ukuran Dataset:** **3.500 ulasan** yang telah dilabeli secara manual dengan sentimen (positif, negatif, netral).\n", "* **Struktur Data (Kolom Kunci):**\n", " * `text`: Isi ulasan asli dari pengguna.\n", " * `label`: Sentimen yang telah ditentukan (POSITIF, NEGATIF, NETRAL).\n", " * *(Opsional)*: `date`, `rating`, `user_id` (jika tersedia dan dianonimkan).\n", "* **Catatan Etika & Legal:**\n", " * Proses *scraping* data dilakukan secara etis dan menghormati *Terms of Service* (TOS) Google.\n", " * Data pengguna seperti nama atau ID akan dianonimkan untuk menjaga privasi." ] }, { "cell_type": "markdown", "id": "2f8ed21a", "metadata": { "papermill": { "duration": 0.007957, "end_time": "2025-08-17T11:14:38.113743", "exception": false, "start_time": "2025-08-17T11:14:38.105786", "status": "completed" }, "tags": [] }, "source": [ "### 3. Ringkasan Alur Metodologi\n", "\n", "Penelitian ini akan mengikuti alur kerja standar dalam proyek *Natural Language Processing* (NLP):\n", "\n", "1. **Setup & Audit Data**: Mempersiapkan lingkungan kerja, memuat data, dan melakukan analisis data eksplorasi awal untuk memahami karakteristik dataset.\n", "2. **Preprocessing Teks**: Membersihkan dan menormalisasi data teks (termasuk *cleaning*, *case folding*, *tokenisasi*, *stopword removal*, dan *stemming*).\n", "3. **Deduplikasi**: Menghapus ulasan duplikat (baik yang identik maupun yang sangat mirip) untuk memastikan kualitas model.\n", "4. **Pembagian Data**: Membagi dataset secara *stratified* menjadi data latih, validasi, dan uji untuk evaluasi model yang adil.\n", "5. **Analisis Sentimen (Supervised):**\n", " * **Ekstraksi Fitur**: Mengubah teks menjadi representasi numerik menggunakan TF-IDF.\n", " * **Seleksi Model**: Melakukan *screening* cepat dengan LazyPredict, dilanjutkan dengan validasi silang pada model kandidat (LinearSVC, LogisticRegression, ComplementNB).\n", " * **Tuning & Evaluasi**: Melakukan *hyperparameter tuning* pada model terbaik dan mengevaluasi performanya secara terstruktur pada data uji.\n", "6. **Pemodelan Topik (Unsupervised):**\n", " * **Persiapan Korpus**: Membangun kamus dan korpus dari teks bersih.\n", " * **Pencarian Jumlah Topik**: Menggunakan metrik *Coherence Score* (c_v) untuk menemukan jumlah topik (k) yang optimal.\n", " * **Interpretasi & Visualisasi**: Melatih model LDA final dan membuat visualisasi interaktif dengan pyLDAvis.\n", "7. **Integrasi & Laporan**: Menggabungkan hasil sentimen dan topik untuk menarik kesimpulan dan memberikan rekomendasi." ] }, { "cell_type": "markdown", "id": "be9a727d", "metadata": { "papermill": { "duration": 0.007374, "end_time": "2025-08-17T11:14:38.128709", "exception": false, "start_time": "2025-08-17T11:14:38.121335", "status": "completed" }, "tags": [] }, "source": [ "### 4. Setup Lingkungan & Reproducibility\n", "\n", "Langkah pertama adalah mengimpor pustaka yang dibutuhkan, mengatur *seed* untuk reproduktifitas, dan membuat folder untuk menyimpan artefak hasil analisis." ] }, { "cell_type": "code", "execution_count": 1, "id": "3103e169", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:14:38.146678Z", "iopub.status.busy": "2025-08-17T11:14:38.146330Z", "iopub.status.idle": "2025-08-17T11:15:24.997322Z", "shell.execute_reply": "2025-08-17T11:15:24.995697Z" }, "papermill": { "duration": 46.862779, "end_time": "2025-08-17T11:15:24.999396", "exception": false, "start_time": "2025-08-17T11:14:38.136617", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting Sastrawi\r\n", " Downloading Sastrawi-1.0.1-py2.py3-none-any.whl.metadata (909 bytes)\r\n", "Collecting thefuzz\r\n", " Downloading thefuzz-0.22.1-py3-none-any.whl.metadata (3.9 kB)\r\n", "Collecting rapidfuzz<4.0.0,>=3.0.0 (from thefuzz)\r\n", " Downloading rapidfuzz-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\r\n", "Downloading Sastrawi-1.0.1-py2.py3-none-any.whl (209 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m209.7/209.7 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading thefuzz-0.22.1-py3-none-any.whl (8.2 kB)\r\n", "Downloading rapidfuzz-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m40.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hInstalling collected packages: Sastrawi, rapidfuzz, thefuzz\r\n", "Successfully installed Sastrawi-1.0.1 rapidfuzz-3.13.0 thefuzz-0.22.1\r\n", "Python version: 3.11.13 (main, Jun 4 2025, 08:57:29) [GCC 11.4.0]\n", "pandas version: 2.2.3\n", "scikit-learn version: 1.2.2\n", "gensim version: 4.3.3\n", "pyLDAvis version: 3.4.0\n", "Setup selesai. Folder 'artefak/' siap digunakan.\n" ] } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import re\n", "import time\n", "import json\n", "import os\n", "import sys\n", "import joblib\n", "from tqdm.notebook import tqdm\n", "tqdm.pandas()\n", "\n", "# Library untuk NLP dan Machine Learning\n", "import sklearn\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.model_selection import train_test_split, cross_val_score, StratifiedKFold, GridSearchCV\n", "from sklearn.metrics import classification_report, confusion_matrix, f1_score\n", "from sklearn.svm import LinearSVC\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.naive_bayes import ComplementNB\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.neighbors import NearestCentroid\n", "\n", "from lightgbm import LGBMClassifier\n", "\n", "import gensim\n", "from gensim.corpora import Dictionary\n", "from gensim.models import LdaMulticore, CoherenceModel\n", "import pyLDAvis.gensim_models as gensimvis\n", "import pyLDAvis\n", "\n", "!pip install Sastrawi thefuzz\n", "from Sastrawi.Stemmer.StemmerFactory import StemmerFactory\n", "from Sastrawi.StopWordRemover.StopWordRemoverFactory import StopWordRemoverFactory\n", "\n", "from thefuzz import fuzz # untuk near-duplicate detection\n", "\n", "# Pengaturan umum\n", "sns.set_style('whitegrid')\n", "SEED = 42\n", "np.random.seed(SEED)\n", "\n", "# Buat folder artefak jika belum ada\n", "if not os.path.exists('artefak'):\n", " os.makedirs('artefak')\n", " \n", "print(\"Python version:\", sys.version)\n", "print(\"pandas version:\", pd.__version__)\n", "print(\"scikit-learn version:\", sklearn.__version__)\n", "print(\"gensim version:\", gensim.__version__)\n", "print(\"pyLDAvis version:\", pyLDAvis.__version__)\n", "print(\"Setup selesai. Folder 'artefak/' siap digunakan.\")" ] }, { "cell_type": "markdown", "id": "6dfa6d81", "metadata": { "papermill": { "duration": 0.008034, "end_time": "2025-08-17T11:15:25.016066", "exception": false, "start_time": "2025-08-17T11:15:25.008032", "status": "completed" }, "tags": [] }, "source": [ "### 5. Audit Data Awal\n", "\n", "Kita akan memuat dataset dan melakukan pemeriksaan awal untuk memahami struktur, tipe data, dan distribusi label sentimen." ] }, { "cell_type": "code", "execution_count": 2, "id": "09911f74", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:15:25.035440Z", "iopub.status.busy": "2025-08-17T11:15:25.034136Z", "iopub.status.idle": "2025-08-17T11:15:26.371923Z", "shell.execute_reply": "2025-08-17T11:15:26.370560Z" }, "papermill": { "duration": 1.349199, "end_time": "2025-08-17T11:15:26.373598", "exception": false, "start_time": "2025-08-17T11:15:25.024399", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dataset berhasil dimuat: 3506 baris dan 3 kolom.\n", "\n", "Contoh 5 baris data awal:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NoTextLabel
01Tempat wisata yang bersejarahPOSITIF
12belum ke Semarang kalau belum datang ke lawang...POSITIF
23Ternyata ini dulunya gedung percetakan tiket k...NETRAL
34KAI dalam mengelola aset lebih profesional lag...NEGATIF
45Ticket masuk 25.000 per orang.. Air mineral 60...NETRAL
\n", "
" ], "text/plain": [ " No Text Label\n", "0 1 Tempat wisata yang bersejarah POSITIF\n", "1 2 belum ke Semarang kalau belum datang ke lawang... POSITIF\n", "2 3 Ternyata ini dulunya gedung percetakan tiket k... NETRAL\n", "3 4 KAI dalam mengelola aset lebih profesional lag... NEGATIF\n", "4 5 Ticket masuk 25.000 per orang.. Air mineral 60... NETRAL" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Informasi Dataset:\n", "\n", "RangeIndex: 3506 entries, 0 to 3505\n", "Data columns (total 3 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 No 3506 non-null int64 \n", " 1 Text 3506 non-null object\n", " 2 Label 3506 non-null object\n", "dtypes: int64(1), object(2)\n", "memory usage: 82.3+ KB\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.11/dist-packages/seaborn/_oldcore.py:1498: DeprecationWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, pd.CategoricalDtype) instead\n", " if pd.api.types.is_categorical_dtype(vector):\n", "/usr/local/lib/python3.11/dist-packages/seaborn/_oldcore.py:1498: DeprecationWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, pd.CategoricalDtype) instead\n", " if pd.api.types.is_categorical_dtype(vector):\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAHWCAYAAAB5SD/0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABLyElEQVR4nO3deXhN5/7//1eyJSQiMSQ1xFA1REgiIZomkiqtMYaaquXQ9mOsEh2JclpKhR5FianRY1acCKpFT9H2UFOj1FBjFVFViRhCgky/P/yyv7YE2ZFJ1/NxXblkr3Wvtd5rZ8l+7Tv3urdNZmZmpgAAAACDsC3qAgAAAIDCRAAGAACAoRCAAQAAYCgEYAAAABgKARgAAACGQgAGAACAoRCAAQAAYCgEYAAAABgKARgAAACGQgAGYLUZM2bIw8OjUI7Vu3dv9e7d2/x4165d8vDw0MaNGwvl+FliYmLk4eGhs2fPFtoxC+Jci+I88tPd1wOs96hfA0B+IAADBpf1Ypj15e3treDgYPXt21eLFi3StWvX8uU4f/31l2bMmKHDhw/ny/6Kq6w3B4mJiUVdykOLjY1Vv379FBISIm9vbz3zzDMaNGiQ1q1bV6DHPXHihGbMmPG3DWjp6ekKDg6Wh4eHfvjhh6IuBzCkEkVdAIDiISwsTFWrVlVaWpoSEhK0e/duTZgwQQsWLNCsWbNUr149c9vXXntNAwYMsGr/Fy5cUGRkpNzd3eXp6Znr7T7//HOrjlNQOnXqpNDQUNnb2xd1KYViw4YNevPNN+Xp6ak+ffrIxcVFZ8+e1U8//aSVK1eqQ4cOBXbsEydOKDIyUk8++aSqVq1qsa64XA8PY+fOnYqPj5e7u7vWrVunZs2aFXVJgOEQgAFIkp5++ml5e3ubHw8cOFA7duzQoEGDNHjwYK1fv16lSpWSJJUoUUIlShTsr4+UlBQ5ODgUm8BpMplkMpmKuoxCExkZqdq1a2vFihXZfgYXL14soqpUbK6Hh/Hll1+qQYMGev755zV16lQlJyfL0dGxqMsCDIUhEADuKTAwUIMHD9Yff/yhL7/80rw8pzHAP/74o1566SX5+/vLz89PrVu31pQpUyTdHsvarVs3SdLIkSPNwy1iYmIk3R7X2b59ex08eFC9evVSw4YNzdvea8xnRkaGpkyZoqZNm8rX11eDBg3Sn3/+adGmRYsWCg8Pz7ZtTvtcvHixQkND1bBhQzVp0kRdunSx+FN/fo6bvHz5siZNmqQOHTrIz89PjRo1Ur9+/XTkyJEc2+fmXCXpl19+Ud++fdW4cWM1bNhQ//jHP7Rnz5481XjmzBl5e3vnGDgrVKiQrb4FCxYoNDRU3t7eCgoK0vvvv68rV65YtGvRooUGDhyo2NhYdevWTd7e3nr22We1Zs0ac5uYmBgNGzZMktSnTx/ztbJr1y5J9x4Tvn79ekVGRiokJER+fn4KCwtTUlKSbt26pY8++kiBgYHy8/PTyJEjdevWrWzntHbtWnXp0kU+Pj568skn9eabb2Z7jrOu0xMnTqh3795q2LChQkJCFBUVlevn9caNG/r222/Vrl07tW3bVjdu3NDmzZvN6zMzMxUQEKCIiAiL59ff31+enp66evWqeflnn32m+vXr6/r165KkI0eOKDw8XM8++6y8vb3VtGlTjRw5UpcuXcp1fYBR0AMM4L46deqkKVOmaNu2bXrhhRdybHP8+HENHDhQHh4eCgsLk729vU6fPq2ff/5ZklSrVi2FhYVp+vTp6tGjhxo3bixJatSokXkfly9fVv/+/RUaGqqOHTtmC1l3mz17tmxsbNS/f39dvHhRCxcu1CuvvKK1a9eae6pza+XKlRo/frxat26tPn366ObNmzp69Kh++eWXAvlTf1xcnDZt2qQ2bdqoatWqSkhI0IoVK/SPf/xDX3/9tSpWrGjRPjfnumPHDvXv319eXl4aMmSIbGxsFBMTo5dfflnLli2Tj4+PVTVWqVJFO3bs0Pnz51WpUqX7tn3//fe1evVqdenSRb1799bZs2e1dOlS/frrr/riiy9kZ2dnbnv69GkNGzZM3bp1U+fOnbVq1SqFh4erQYMGqlOnjpo0aaLevXtr8eLFGjRokJ544glJt6+h+/nss89UqlQpDRgwQKdPn9aSJUtUokQJ2djY6OrVqxoyZIh++eUXxcTEyN3dXUOGDLF4fj/99FO1bdtW3bp1U2JiopYsWaJevXppzZo1cnZ2Nre9cuWK+vXrp5YtW6pt27b65ptvNHnyZNWtWzdXQxm2bNmi5ORkhYaGys3NTU8++aTWrVtnvs5sbGzUqFEj/fTTT+Ztjh49qqSkJNna2urnn3/WM888I0nas2ePPD09Vbp0aUnS9u3bFRcXpy5dusjNzU3Hjx/XypUrdeLECa1cuVI2NjYPrA8wCgIwgPuqVKmSypQpo7i4uHu2+fHHH5WamqqoqCiVL18+23pXV1c9/fTTmj59unx9fdWpU6dsbeLj4zV27Fi9+OKLuarrypUrWr9+vZycnCRJ9evX1xtvvKGVK1eqT58+uTy7277//nvVqVNH06dPt2q7vPLw8NA333wjW9v/90e4Tp06qW3btoqOjtbrr79u0f5B55qZmakxY8YoICBA8+bNMwedF198UaGhoZo2bZr+/e9/W1Vj//79NWrUKD333HNq1KiRGjdurKZNm6pRo0YWdcfGxuo///mPJk+ebPFmISAgQP369dPGjRstlv/+++9aunSp/P39JUlt27ZVs2bNFBMToxEjRqhatWry9/fX4sWLFRQUpICAgFzVm56ersWLF5vD9qVLl/T1119b9ND26tVLZ86cUUxMjDkA//HHH5oxY4beeOMNDRo0yLy/Vq1aqXPnzlq2bJnF8gsXLmjSpEl6/vnnJUndunVTixYttGrVqlwF4C+//FJ+fn6qXLmyJCk0NFRjx45VYmKi+f+Ov7+/PvnkE127dk1OTk6KjY2Vu7u7KlSooNjYWD3zzDPKyMjQzz//rC5dupj33bNnT/3f//2fxfF8fX311ltvac+ePebnHABDIADkgqOjo/nPrDnJ6iHbvHmzMjIy8nQMe3t7ixfzB3n++efNgVCS2rRpIzc3tzzdVe/s7Kzz589r//79Vm+bF/b29uYQmZ6erkuXLsnR0VE1a9bUr7/+mq39g8718OHDOnXqlDp06KBLly4pMTFRiYmJSk5OVmBgoH766Serfy7dunXTvHnzFBAQoJ9//lmzZs1Sr1691KpVK3PPviRt3LhRZcqUUdOmTc3HTUxMVIMGDeTo6GgeupCldu3aFkGsfPnyqlmz5n3fYOVGp06dLHqafXx8lJmZqa5du1q08/Hx0Z9//qm0tDRJ0rfffquMjAy1bdvWon5XV1fVqFEjW/2Ojo4Wb+Ds7e3l7e2dq/ovXbqkbdu2qX379uZlrVq1ko2NjTZs2GBe5u/vr/T0dO3du1fS7TcZjRs3lr+/v2JjYyVJx44d09WrVy2eyzv/8nHz5k0lJiaqYcOGkqRDhw49sD7ASOgBBvBAycnJ9x2S0K5dO/3nP//R6NGj9cknnygwMFAtW7ZUmzZtLHoL76dixYpW3eBUo0YNi8c2NjaqUaOG/vjjj1zvI0v//v21fft2de/eXTVq1FDTpk3Vvn1781CN/JaRkaFFixZp2bJlOnv2rNLT083rypYtm639g8711KlTkqQRI0bc85hJSUlycXGxqs6QkBCFhIQoJSVFhw4d0vr167V8+XINGjRIGzZsUIUKFXT69GklJSUpMDAwx33cfcNcVs/nnVxcXLKNF7ZWlSpVLB6XKVMmx+OVKVNGGRkZSkpKUrly5XTq1CllZmaqVatWOe737ps9K1WqlG0ogYuLi44ePfrAGtevX6/U1FR5enrq9OnT5uU+Pj5at26devXqJel2D7+Dg4NiY2MVEhKiPXv2aOjQoXJ1ddXixYt18+ZN89juO6/Ry5cvKzIyUuvXr8/2vCclJT2wPsBICMAA7uv8+fNKSkpS9erV79mmVKlSWrp0qXbt2qXvv/9eW7du1fr167VixQr9+9//ztXsCdaO230Y6enpFjXVqlVLGzduNNf+3//+V8uWLdPrr7+usLCwfD/+nDlz9Omnn6pr164aNmyYXFxcZGtrqwkTJigzM9Pq/WVtM3z48HtOMfcwsww4ODjI399f/v7+KleunCIjI/W///1PnTt3VkZGhipUqKDJkyfnuO3dQ2IKaiaNe73RutfyrOcsIyNDNjY2ioqKyrG2u5+3h6k/66bKl156Kcf1cXFxqlatmuzs7OTj46PY2FidPn1a8fHx8vf3V4UKFZSWlqZffvlFsbGxeuKJJyye3zfeeEN79+5V37595enpKUdHR2VkZKhfv355uq6AvzMCMID7Wrt2rSQpODj4vu1sbW0VGBiowMBAjRw5UnPmzNHUqVO1a9cuBQUF5fsNOHf2oEm3A83p06ctZqdwcXGxuGs+y7lz51StWjWLZY6OjmrXrp3atWunW7duaejQoZozZ44GDhyokiVL5mvt33zzjQICAjRhwgSL5VevXlW5cuWytX/QuWadi5OTk4KCgvK11rt5eXlJuj1mW5KqV6+uHTt2qFGjRvn2JqYwb9aqXr26MjMzVbVqVdWsWbPAjhMXF6e9e/fqH//4h5o0aWKxLiMjQ8OHD9e6des0ePBgSbeHQURFRWn79u0qV66cnnjiCdnY2KhOnTqKjY1VbGysmjdvbt7HlStXtGPHDg0dOtTiBr+svw4AsMQYYAD3tGPHDs2aNUtVq1ZVx44d79nu8uXL2ZZl9URmTTnl4OAgSTkG0rxYs2aNxafUbdy4UfHx8Xr66afNy6pVq6ZffvnFYtqr7777Ltv0VndPE2Vvb69atWopMzNTqamp+VLvnUwmU7YeuQ0bNuivv/7Ksf2DztXLy0vVq1fXv//97xzHauflU+l27NiR4/KsccdZYbFt27ZKT0/XrFmzsrVNS0vL088761opjD/bt2rVSiaTSZGRkdl+JpmZmfk2hVhW72+/fv3Upk0bi6927dqZZ4PI4u/vr1u3bmnhwoVq3Lix+U1B48aNtXbtWl24cMFi+MO9eqYXLlyYL/UDfzf0AAOQJP3vf//TyZMnlZ6eroSEBO3atUs//vijqlSpotmzZ9+3F3TmzJmKjY1Vs2bN5O7urosXL2rZsmWqVKmS+UW6evXqcnZ21vLly1W6dGk5OjrKx8cnW09sbrm4uKhnz57q0qWLeWqwGjVqWEzV1r17d33zzTfq16+f2rZtqzNnzmjdunXZhnP07dtXrq6uatSokSpUqKCTJ09qyZIlatasmcXNZ9ZYsGBBth5RW1tbDRo0SM8884xmzpypkSNHys/PT8eOHdO6devu+Vw86FxtbW01fvx49e/fX+3bt1eXLl1UsWJF/fXXX9q1a5ecnJw0Z84cq+ofPHiwqlatqubNm6tatWpKSUnR9u3b9d1338nb29vc+/jkk0+qR48emjt3rg4fPqymTZvKzs5Op06d0saNGzVq1Ci1adPGqmN7enrKZDIpKipKSUlJsre311NPPfXAqfHyonr16nrjjTf0ySef6I8//tBzzz2n0qVL6+zZs9q0aZNeeOEF9e3b96GPs27dOnl6euY4Blq6PUfyuHHjdOjQITVo0EC+vr4qUaKEfv/9d/Xo0cPcrkmTJvriiy8kyeIGOCcnJzVp0kTz5s1TamqqKlasqB9//PFv+3HSwMMiAAOQJPMUYHZ2dipbtqzq1q2r9957T126dHlgCGzRooX++OMPrVq1SpcuXVK5cuX05JNPaujQoeabkezs7DRx4kRNmTJFY8aMUVpamiIiIvIcgAcNGqSjR4/qs88+0/Xr1xUYGKgPPvjA3Hso3b6JKzw8XPPnz9eECRPk5eWlOXPmaNKkSRb76tGjh9atW6f58+crOTlZlSpVUu/evc1/js6LuXPnZltmMpk0aNAgDRo0SCkpKVq3bp3Wr1+v+vXra+7cufrkk0/yfK4BAQFasWKFZs2apSVLlig5OVlubm7y8fGxCFC5NX78eG3evFkbNmzQhQsXlJmZqWrVqmnQoEHq37+/xc1hH374oby8vLR8+XJNnTpVJpNJ7u7u6tixo8Vcz7nl5uamsWPHau7cuRo1apTS09O1aNGiAgnAkjRgwAA9/vjjWrBggWbOnCnp9s1uTZs2VYsWLR56/4cOHdLJkyfvez01b95c48aNM39KnKOjozw9PXXgwAGLnt6s0Fu5cmW5u7tb7OOTTz7RuHHjtGzZMmVmZqpp06aKiopSSEjIQ58D8Hdjk8nIeAAAABgIY4ABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGArzAOdCRkaG0tLSZGtrW6gf0QkAAIDcyczMVEZGhkqUKCFb2/v38RKAcyEtLU0HDhwo6jIAAADwAN7e3rK3t79vGwJwLmS9i/D29r7n560DAACg6KSnp+vAgQMP7P2VCMC5kjXswWQyEYABAACKsdwMV+UmOAAAABgKARgAAACGQgAGAACAoRCAAQAAYCgEYAAAABgKARgAAACGQgAGAACAoRCAAQAAYCgEYAAAABgKARgAAACGQgAGAACAoRCAAQAAYChFGoDnzp2rrl27ys/PT4GBgRo8eLBOnjxp0aZ3797y8PCw+Hr//fct2pw7d04DBgxQw4YNFRgYqEmTJiktLc2iza5du9S5c2d5eXmpZcuWiomJKfDzAwAAQPFToigPvnv3bvXq1Uve3t5KT0/XlClT1LdvX3399ddydHQ0t3vhhRcUFhZmfuzg4GD+Pj09XQMHDpSrq6uWL1+uCxcuaMSIEbKzs9Nbb70lSYqLi9PAgQP14osvavLkydqxY4dGjx4tNzc3hYSEFN4JAwAAoMgVaQD+/PPPLR5PnDhRgYGBOnTokJo0aWJeXqpUKbm5ueW4j23btunEiROaP3++XF1d5enpqWHDhmny5MkaMmSI7O3ttXz5clWtWlXh4eGSpFq1amnPnj1asGABARgAAMBgijQA3y0pKUmS5OLiYrF83bp1+vLLL+Xm5qbmzZtr8ODB5l7gffv2qW7dunJ1dTW3Dw4O1pgxY3TixAnVr19f+/btU2BgoMU+g4ODNWHCBKvqS09Pz8tp3WZjI5MtQ66NIj0jQ8rMLOoyAAAwDGtyWrEJwBkZGZowYYIaNWqkunXrmpe3b99eVapU0WOPPaajR49q8uTJ+v333xUZGSlJSkhIsAi/ksyP4+Pj79vm2rVrunHjhkqVKpWrGg8cOJCnc3NwcFD9+vU1etlW/X7hSp72gUdHzcdcNL5niH799VelpKQUdTkAAOAuxSYAjx07VsePH9eyZcsslvfo0cP8vYeHh9zc3PTKK6/ozJkzql69eqHW6O3tLZPJlOftf79wRUf+SMzHilCceXh4FHUJAAAYRnp6eq47K4tFAP7www/1/fffa8mSJapUqdJ92zZs2FCSdPr0aVWvXl2urq7av3+/RZuEhARJMo8bdnV1NS+7s42Tk1Oue38lyWQyPVQAhrFwrQAAUDwV6aDUzMxMffjhh/r222+1cOFCVatW7YHbHD58WNL/C7e+vr46duyYLl68aG6zfft2OTk5qXbt2uY2O3futNjP9u3b5evrm09nAgAAgEdFkQbgsWPH6ssvv9Qnn3yi0qVLKz4+XvHx8bpx44Yk6cyZM5o5c6YOHjyos2fPavPmzRoxYoSaNGmievXqSbp9M1vt2rU1fPhwHTlyRFu3btW0adPUq1cv2dvbS5JefPFFxcXF6eOPP9Zvv/2mpUuXasOGDXrllVeK6tQBAABQRIp0CMQXX3wh6faHXdwpIiJCXbp0kZ2dnXbs2KFFixYpOTlZlStXVqtWrTR48GBzW5PJpDlz5mjMmDHq0aOHHBwc1LlzZ4t5g6tVq6a5c+cqIiJCixYtUqVKlTR+/HimQAMAADCgIg3AR48eve/6ypUra8mSJQ/cj7u7u6Kiou7bJiAgQGvWrLGmPAAAAPwNMTEtAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMhAAMAAMBQCMAAAAAwFAIwAAAADIUADAAAAEMp0gA8d+5cde3aVX5+fgoMDNTgwYN18uRJizY3b97U2LFjFRAQID8/Pw0dOlQJCQkWbc6dO6cBAwaoYcOGCgwM1KRJk5SWlmbRZteuXercubO8vLzUsmVLxcTEFPj5AQAAoPgp0gC8e/du9erVSytXrtT8+fOVlpamvn37Kjk52dxmwoQJ+u677zRt2jQtXrxYFy5c0JAhQ8zr09PTNXDgQKWmpmr58uWaOHGiVq9erenTp5vbxMXFaeDAgQoICNDatWv18ssva/To0dq6dWuhni8AAACKXomiPPjnn39u8XjixIkKDAzUoUOH1KRJEyUlJWnVqlWaPHmyAgMDJd0OxO3atdO+ffvk6+urbdu26cSJE5o/f75cXV3l6empYcOGafLkyRoyZIjs7e21fPlyVa1aVeHh4ZKkWrVqac+ePVqwYIFCQkIK/bwBAABQdIo0AN8tKSlJkuTi4iJJOnjwoFJTUxUUFGRuU6tWLVWpUsUcgPft26e6devK1dXV3CY4OFhjxozRiRMnVL9+fe3bt88coO9sM2HCBKvqS09Pz+upyWQy5XlbPJoe5noBAADWseZ1t9gE4IyMDE2YMEGNGjVS3bp1JUkJCQmys7OTs7OzRdsKFSooPj7e3ObO8CvJ/PhBba5du6YbN26oVKlSuarxwIED1p+YJAcHB9WvXz9P2+LRdfToUaWkpBR1GQAA4C7FJgCPHTtWx48f17Jly4q6lHvy9vamJxe55uHhUdQlAABgGOnp6bnurCwWAfjDDz/U999/ryVLlqhSpUrm5a6urkpNTdXVq1cteoEvXrwoNzc3c5v9+/db7C9rlog729w9c0RCQoKcnJxy3fsr3R7GQABGbnGtAABQPBXpLBCZmZn68MMP9e2332rhwoWqVq2axXovLy/Z2dlpx44d5mUnT57UuXPn5OvrK0ny9fXVsWPHdPHiRXOb7du3y8nJSbVr1za32blzp8W+t2/fbt4HAAAAjKNIA/DYsWP15Zdf6pNPPlHp0qUVHx+v+Ph43bhxQ5JUpkwZde3aVRMnTtTOnTt18OBBvffee/Lz8zOH1+DgYNWuXVvDhw/XkSNHtHXrVk2bNk29evWSvb29JOnFF19UXFycPv74Y/32229aunSpNmzYoFdeeaWIzhwAAABFpUiHQHzxxReSpN69e1ssj4iIUJcuXSRJ7733nmxtbRUWFqZbt24pODhYH3zwgbmtyWTSnDlzNGbMGPXo0UMODg7q3LmzwsLCzG2qVaumuXPnKiIiQosWLVKlSpU0fvx4pkADAAAwIJvMzMzMoi6iuEtPTzdPu/Yw4zp7TftKR/5IzMfKUBzVcy+vpW+0L+oyAAAwFGvyWpEOgQAAAAAKGwEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhkIABgAAgKEQgAEAAGAoBGAAAAAYCgEYAAAAhlLCmsbJycn67LPPtHPnTl28eFEZGRkW6zdv3pyvxQEAAAD5zaoAPHr0aO3evVudOnWSm5ubbGxsCqouAAAAoEBYFYD/97//ae7cuWrcuHFB1QMAAAAUKKvGADs7O6ts2bIFVAoAAABQ8KwKwMOGDdOnn36qlJSUgqoHAAAAKFBWDYGYP3++zpw5o6CgIFWtWlUlSlhuvnr16nwtDgAAAMhvVgXg5557rqDqAAAAAAqFVQF4yJAhBVUHAAAAUCj4IAwAAAAYilU9wOnp6VqwYIE2bNigP//8U6mpqRbrd+/ena/FAQAAAPnNqh7gyMhIzZ8/X+3atVNSUpJeeeUVtWzZUjY2NgyPAAAAwCPBqh7gdevWafz48XrmmWc0Y8YMtW/fXtWrV5eHh4d++eWXgqoRAAAAyDdW9QAnJCSobt26kqTSpUsrKSlJktS8eXN9//33+V4cAAAAkN+sCsAVK1ZUfHy8JKlatWr68ccfJUkHDhyQvb19/lcHAAAA5DOrhkC0bNlSO3bsUMOGDdW7d2+9++67io6O1rlz5/TKK68UUIkAAABA/rEqAL/zzjvm79u1a6fKlStr3759qlGjhlq0aJHvxQEAAAD57aHmAfbz89Orr76a5/D7008/adCgQQoODpaHh4c2bdpksT48PFweHh4WX3379rVoc/nyZb399ttq1KiR/P399d577+n69esWbY4cOaKePXvK29tbzZo1U1RUVJ7qBQAAwKPPqgC8evVqi5vdPv74Y/n7++vFF1/UH3/8YfXBk5OT5eHhoQ8++OCebUJCQrRt2zbz15QpUyzWv/POOzpx4oTmz5+vOXPmKDY2Vu+//755/bVr19S3b19VqVJFMTExGj58uCIjI7VixQqr6wUAAMCjz6oAPGfOHJUsWVKStHfvXi1dulTvvvuuypYtq4iICKsP3qxZM7355ptq2bLlPdvY29vLzc3N/OXi4mJe99tvv2nr1q0aP368GjZsKH9/f40ePVpff/21/vrrL0nSl19+qdTUVE2YMEF16tRRaGioevfurfnz51tdLwAAAB59Vo0BPn/+vGrUqCFJ2rRpk1q3bq0ePXqoUaNG6t27d4EUuHv3bgUGBsrZ2VlPPfWU3njjDZUrV07S7RDu7Owsb29vc/ugoCDZ2tpq//79atmypfbt2yd/f3+LWSqCg4MVFRWlK1euWATqB0lPT8/zeZhMpjxvi0fTw1wvAADAOta87loVgB0dHXX58mVVqVJFP/74o3nmh5IlS+rmzZtWFZkbISEhatmypapWraq4uDhNmTJF/fv314oVK2QymZSQkKDy5ctbbFOiRAm5uLiYp2tLSEhQ1apVLdq4urqa11kTgA8cOJCn83BwcFD9+vXztC0eXUePHlVKSkpRlwEAAO5iVQAOCgrS6NGj5enpqVOnTqlZs2aSpOPHj8vd3T3fiwsNDTV/n3UT3HPPPWfuFS5s3t7e9OQi1zw8PIq6BAAADCM9PT3XnZVWBeAPPvhA06ZN059//qnp06ebhyIcOnTIIqwWlGrVqqlcuXI6ffq0AgMD5erqqsTERIs2aWlpunLlitzc3CTd7u1NSEiwaJP1OKsnOLdMJhMBGLnGtQIAQPFkVQB2dna2mGEhS1hYWL4VdD/nz5/X5cuXzeHWz89PV69e1cGDB+Xl5SVJ2rlzpzIyMuTj4yNJ8vX11bRp05Samio7OztJ0vbt21WzZk2rhj8AAADg78GqAJwlJSVF586dU2pqqsXyevXqWbWf69ev68yZM+bHZ8+e1eHDh+Xi4iIXFxdFRkaqdevWcnV1VVxcnP71r3+pRo0aCgkJkSTVqlVLISEh+uc//6mxY8cqNTVV48aNU2hoqCpWrChJ6tChg2bOnKlRo0apf//+On78uBYtWqSRI0fm5dQBAADwiLMqACcmJio8PFxbt27Ncf3hw4etOvjBgwfVp08f8+OsqdQ6d+6sMWPG6NixY1qzZo2SkpL02GOPqWnTpho2bJjFjA6TJ0/WuHHj9PLLL8vW1latWrXS6NGjzevLlCmjzz//XB9++KG6dOmicuXKafDgwerRo4dVtQIAAODvwaoA/NFHHykpKUkrV65Unz59FBkZqYSEBM2ePVvh4eFWHzwgIEBHjx695/rPP//8gfsoW7asPvnkk/u2qVevnpYtW2Z1fQAAAPj7sSoA79q1S7NmzZK3t7dsbGxUpUoVNW3aVE5OTpo7d66eeeaZAioTAAAAyB9WfRJccnKyed5dFxcX8wwMdevW1a+//pr/1QEAAAD5zKoAXLNmTf3++++Sbs9xumLFCv31119avny5eWYGAAAAoDizaghEnz59zJ+wNmTIEPXr10/r1q2TnZ2dJk6cWCAFAgAAAPnJqgDcqVMn8/deXl767rvvdPLkSVWuXDnbRxIDAAAAxVGe5gHO4uDgoAYNGuRXLQAAAECBe2AAzpqbNzf4cAkAAAAUdw8MwLmd3cHGxuahiwEAAAAK2gMD8OLFiwujDgAAAKBQWDUNGgAAAPCoy9VNcM8//3yOQxycnJxUs2ZN9enTR7Vr18734gAAAID8lqsA/Nxzz+W4/OrVq/r111/1/PPPa+HChWrcuHG+FgcAAADkt1wF4CFDhtx3/dSpUzV9+nQtXLgwX4oCAAAACkq+jAFu3769jh07lh+7AgAAAApUvgRgW1tbZWRk5MeuAAAAgAKVLwH422+/5SY4AAAAPBJyNQZ40aJFOS5PSkrSoUOH9MMPPygqKipfCwMAAAAKQq4C8IIFC3JcnjUN2pIlS+Tn55efdQEAAAAFIlcBeMuWLQVdBwAAAFAo+CQ4AAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGEquZoG409WrV7V//35dvHhRmZmZFuuef/75/KoLAAAAKBBWBeAtW7bonXfeUXJyspycnGRjY2NeZ2NjQwAGAABAsWdVAJ40aZK6du2qt956Sw4ODgVVEwAAAFBgrBoD/Ndff6lPnz6EXwAAADyyrArAwcHBOnDgQEHVAgAAABS4Bw6B2Lx5s/n7Zs2a6V//+pd+++031a1bVyVKWG7+7LPP5n+FAAAAQD56YAB+/fXXsy2bOXNmtmU2NjY6fPhw/lQFAAAAFJAHBuAjR44URh0AAABAoeCDMAAAAGAoVn8QRnJysn766SedO3dOqampFuv69OmTb4UBAAAABcGqAPzrr79qwIABSklJUUpKilxcXHTp0iU5ODiofPnyBGAAAAAUe1YNgYiIiFDz5s31008/qWTJklq5cqW+++47NWjQQCNGjCioGgEAAIB8Y1UAPnz4sF599VXZ2trKZDLp1q1bqly5st59911NmTKloGoEAAAA8o1VAbhEiRKytb29SYUKFXTu3DlJkpOTk86fP5//1QEAAAD5zKoxwPXr19eBAwf0+OOPq0mTJpo+fbouXbqktWvXqk6dOgVVIwAAAJBvrOoBfvPNN+Xm5mb+3tnZWWPGjNGlS5c0bty4AikQAAAAyE9W9QB7e3ubv69QoYI+//zzfC8IAAAAKEh8EAYAAAAM5YE9wM8//7xsbGxytbPVq1c/dEEAAABAQXpgAH7uuecKow4AAACgUDwwAA8ZMqQw6gAAAAAKhVU3wd3p+vXryszMtFjm5OT00AUBAAAABcmqABwXF6dx48Zp9+7dunnzpnl5ZmambGxsdPjw4XwvEAAAAMhPVgXgd999V5I0YcIEVahQIdc3xwEAAADFhVUB+OjRo1q1apWeeOKJgqoHAAAAKFBWzQPs5eWl8+fPF1QtAAAAQIGzqgf4o48+0gcffKC//vpLderUUYkSlpvXq1cvX4sDAAAA8ptVATgxMVFnzpzRyJEjzctsbGy4CQ4AAACPDKsC8Hvvvaf69etrypQp3AQHAACAR5JVAfjcuXOaPXu2atSoUVD1AAAAAAXKqpvgnnrqKR05cqSgagEAAAAKnFU9wM2bN1dERISOHTumunXrZrsJ7tlnn83X4gAAAID8ZlUA/uCDDyRJM2fOzLaOm+AAAADwKLAqADP8AQAAAI86q8YAAwAAAI86q3qAIyMj77t+yJAhD1UMAAAAUNCsCsCbNm2yeJyWlqazZ8/KZDKpevXqBGAAAAAUe1YF4DVr1mRbdu3aNYWHh+u5557Lr5oAAACAAvPQY4CdnJw0dOhQTZ8+3eptf/rpJw0aNEjBwcHy8PDI1sOcmZmpTz/9VMHBwfLx8dErr7yiU6dOWbS5fPmy3n77bTVq1Ej+/v567733dP36dYs2R44cUc+ePeXt7a1mzZopKirK6loBAADw95AvN8ElJSUpKSnJ6u2Sk5Pl4eFhnl7tblFRUVq8eLHGjBmjlStXysHBQX379tXNmzfNbd555x2dOHFC8+fP15w5cxQbG6v333/fvP7atWvq27evqlSpopiYGA0fPlyRkZFasWKF9ScKAACAR55VQyAWLVpk8TgzM1Px8fFau3atnn76aasP3qxZMzVr1izHdZmZmVq0aJFee+018/CKjz/+WEFBQdq0aZNCQ0P122+/aevWrYqOjpa3t7ckafTo0RowYICGDx+uihUr6ssvv1RqaqomTJgge3t71alTR4cPH9b8+fPVo0cPq2sGAADAo82qALxgwQKLx7a2tipfvrw6d+6sAQMG5GddOnv2rOLj4xUUFGReVqZMGTVs2FB79+5VaGio9u7dK2dnZ3P4laSgoCDZ2tpq//79atmypfbt2yd/f3/Z29ub2wQHBysqKkpXrlyRi4tLrmtKT0/P8/mYTKY8b4tH08NcLwAAwDrWvO5aFYC3bNlidTF5FR8fL0mqUKGCxfIKFSooISFBkpSQkKDy5ctbrC9RooRcXFzM2yckJKhq1aoWbVxdXc3rrAnABw4csO4k/n8ODg6qX79+nrbFo+vo0aNKSUkp6jIAAMBdchWAczO9mclkkpubm4KCgtSiRYuHLqw48vb2picXuebh4VHUJQAAYBjp6em57qzMVQAuU6bMA9tkZGTo1KlT+s9//qP/+7//07Bhw3JVwL24ublJki5evKjHHnvMvPzixYuqV6+epNs9uYmJiRbbpaWl6cqVK+btXV1dzT3GWbIeZ/UE55bJZCIAI9e4VgAAKJ5yFYAjIiJyvcPvvvtOY8eOfegAXLVqVbm5uWnHjh3y9PSUdHtGh19++UUvvfSSJMnPz09Xr17VwYMH5eXlJUnauXOnMjIy5OPjI0ny9fXVtGnTlJqaKjs7O0nS9u3bVbNmTauGPwAAAODvIV+mQbtT48aNzWH0Qa5fv67Dhw/r8OHDkm7f+Hb48GGdO3dONjY26tOnj2bPnq3Nmzfr6NGjGj58uB577DHzrBC1atVSSEiI/vnPf2r//v3as2ePxo0bp9DQUFWsWFGS1KFDB9nZ2WnUqFE6fvy41q9fr0WLFunVV1/N71MHAADAI8Cqm+Byw9nZWZGRkblqe/DgQfXp08f8OKunuXPnzpo4caL69++vlJQUvf/++7p69aoaN26sefPmqWTJkuZtJk+erHHjxunll1+Wra2tWrVqpdGjR5vXlylTRp9//rk+/PBDdenSReXKldPgwYOZAg0AAMCgbDIzMzOLuojiLj09Xfv27ZOvr+9DjevsNe0rHfkj8cEN8Uir515eS99oX9RlAABgKNbktXwfAgEAAAAUZwRgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEIABAABgKARgAAAAGAoBGAAAAIZCAAYAAIChEICBv5nMjPSiLgGFiJ83AFivRFEXACB/2dialBATrtSEk0VdCgqYnesTcu0ysajLAIBHDgEY+BtKTTip1POHi7oMAACKpWI9BGLGjBny8PCw+GrTpo15/c2bNzV27FgFBATIz89PQ4cOVUJCgsU+zp07pwEDBqhhw4YKDAzUpEmTlJaWVtinAgAAgGKi2PcA16lTR/Pnzzc/NplM5u8nTJigH374QdOmTVOZMmU0btw4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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Statistik Distribusi Label:\n", "label\n", "POSITIF 71.420422\n", "NETRAL 15.516258\n", "NEGATIF 11.523103\n", "TIDAK RELEVAN 1.540217\n", "Name: proportion, dtype: float64\n" ] } ], "source": [ "NAMA_FILE_RAW = '/kaggle/input/labeledlawangsewureviewdata/LabeledLawangSewuReviewData.xlsx'\n", "\n", "try:\n", " df_raw = pd.read_excel(NAMA_FILE_RAW)\n", " print(f\"Dataset berhasil dimuat: {df_raw.shape[0]} baris dan {df_raw.shape[1]} kolom.\")\n", "except FileNotFoundError:\n", " print(f\"ERROR: File '{NAMA_FILE_RAW}' tidak ditemukan. Pastikan file berada di direktori yang sama.\")\n", "\n", "# Tampilkan 5 baris pertama\n", "print(\"\\nContoh 5 baris data awal:\")\n", "display(df_raw.head())\n", "\n", "# Informasi dasar dataset\n", "print(\"\\nInformasi Dataset:\")\n", "df_raw.info()\n", "\n", "# Ubah nama kolom agar konsisten (lowercase)\n", "df_raw.columns = [col.lower() for col in df_raw.columns]\n", "# Ganti nama 'text' menjadi 'ulasan_asli' untuk kejelasan\n", "if 'text' in df_raw.columns:\n", " df_raw = df_raw.rename(columns={'text': 'ulasan_asli'})\n", "\n", "# Cek distribusi label\n", "plt.figure(figsize=(8, 5))\n", "sns.countplot(x='label', data=df_raw, order=df_raw['label'].value_counts().index)\n", "plt.title('Distribusi Label Sentimen Awal')\n", "plt.xlabel('Sentimen')\n", "plt.ylabel('Jumlah Ulasan')\n", "plt.show()\n", "\n", "print(\"\\nStatistik Distribusi Label:\")\n", "print(df_raw['label'].value_counts(normalize=True) * 100)" ] }, { "cell_type": "markdown", "id": "46ab111a", "metadata": { "papermill": { "duration": 0.009073, "end_time": "2025-08-17T11:15:26.392318", "exception": false, "start_time": "2025-08-17T11:15:26.383245", "status": "completed" }, "tags": [] }, "source": [ "**Temuan Awal:**\n", "* Dataset terdiri dari 3506 ulasan.\n", "* Terdapat kolom `No`, `Text` (ulasan), dan `Label` (sentimen).\n", "* Distribusi kelas terlihat **tidak seimbang (imbalanced)**, dengan sentimen `POSITIF` mendominasi. Ini penting untuk diperhatikan saat pembagian data dan pemilihan metrik evaluasi (Macro F1-score akan lebih cocok daripada akurasi)." ] }, { "cell_type": "markdown", "id": "67d76029", "metadata": { "papermill": { "duration": 0.009481, "end_time": "2025-08-17T11:15:26.412514", "exception": false, "start_time": "2025-08-17T11:15:26.403033", "status": "completed" }, "tags": [] }, "source": [ "### 6. Cleaning & Preprocessing Teks\n", "\n", "Tahap ini menggunakan fungsi pembersihan teks yang sama persis seperti pada notebook awal. Proses ini meliputi penghapusan data yang tidak relevan, *case folding*, normalisasi (kamus alay), penghapusan *stopwords*, dan *stemming* dengan Sastrawi. Hasilnya akan disimpan di kolom baru `text_bersih` yang akan menjadi dasar untuk analisis selanjutnya." ] }, { "cell_type": "code", "execution_count": 3, "id": "00c0e7e4", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:15:26.434606Z", "iopub.status.busy": "2025-08-17T11:15:26.433445Z", "iopub.status.idle": "2025-08-17T11:21:21.120416Z", "shell.execute_reply": "2025-08-17T11:21:21.119210Z" }, "papermill": { "duration": 354.700031, "end_time": "2025-08-17T11:21:21.122293", "exception": false, "start_time": "2025-08-17T11:15:26.422262", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Menginisialisasi Stemmer dan Stopwords Sastrawi...\n", "Mempersiapkan kamus normalisasi...\n", "Jumlah baris awal: 3506\n", "Jumlah baris setelah menghapus 'TIDAK RELEVAN': 3452\n", "Memulai proses cleaning...\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bf57afc7c8d24bbdb0d9e5eb9b757a5e", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3452 [00:00\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", "
ulasan_aslitext_bersihlabel
0Tempat wisata yang bersejarahtempat wisata sejarahPOSITIF
1belum ke Semarang kalau belum datang ke lawang...semarang kalau datang lawang sewu jawa tengahPOSITIF
2Ternyata ini dulunya gedung percetakan tiket k...nyata gedung cetak tiket kereta apiNETRAL
3KAI dalam mengelola aset lebih profesional lag...kai kelola aset lebih profesional tiket masuk ...NEGATIF
4Ticket masuk 25.000 per orang.. Air mineral 60...ticket masuk per orang air mineral mlNETRAL
\n", "" ], "text/plain": [ " ulasan_asli \\\n", "0 Tempat wisata yang bersejarah \n", "1 belum ke Semarang kalau belum datang ke lawang... \n", "2 Ternyata ini dulunya gedung percetakan tiket k... \n", "3 KAI dalam mengelola aset lebih profesional lag... \n", "4 Ticket masuk 25.000 per orang.. Air mineral 60... \n", "\n", " text_bersih label \n", "0 tempat wisata sejarah POSITIF \n", "1 semarang kalau datang lawang sewu jawa tengah POSITIF \n", "2 nyata gedung cetak tiket kereta api NETRAL \n", "3 kai kelola aset lebih profesional tiket masuk ... NEGATIF \n", "4 ticket masuk per orang air mineral ml NETRAL " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"Menginisialisasi Stemmer dan Stopwords Sastrawi...\")\n", "factory_stemmer = StemmerFactory()\n", "stemmer = factory_stemmer.create_stemmer()\n", "factory_stopword = StopWordRemoverFactory()\n", "stopwords_sastrawi = factory_stopword.get_stop_words()\n", "custom_stopwords = {\n", " 'ah', 'je', 'si', 'kat', 'the', 'dah', 'for', 'and', 'nya', 'tuh', 'eh', 'sih', 'dong', 'rt', 'aja', 'kok',\n", " 'a', 'an', 'in', 'of', 'is', 'are', 'to', 'with', 'it', 'its', 'was', 'were', 'but', 'so'\n", "}\n", "all_stopwords = set(stopwords_sastrawi).union(custom_stopwords)\n", "\n", "print(\"Mempersiapkan kamus normalisasi...\")\n", "kamus_normalisasi = {\n", " # ==============================================================================\n", " # KATEGORI 1: NORMALISASI HARGA, ANGKA & UNIT\n", " # Aturan yang menangani format angka, harga, dan satuan.\n", " # ==============================================================================\n", " r'(\\d+)[.,](\\d{3})': r'\\1\\2', # Menggabungkan angka ribuan: 25.000 -> 25000\n", " r'(\\d+)(rb|k)\\b': r'\\1000', # Konversi harga: 20rb/20k -> 20000\n", "\n", " # ==============================================================================\n", " # KATEGORI 2: PENGHAPUSAN KATA\n", " # Menghapus kata-kata yang tidak membawa makna (seruan, tawa, dll).\n", " # ==============================================================================\n", " r'\\b(wkwk|wkwkwk|haha|hehe|xixi)\\b': '', # Hapus kata-kata tertawa\n", " r'\\b(bjir|anjay|anjir|anjrit|njir|anjer)\\b': '', # Hapus makian/slang tidak relevan\n", "\n", " # ==============================================================================\n", " # KATEGORI 3: KATA GANTI ORANG (PRONOUNS)\n", " # ==============================================================================\n", " r'\\b(ak|aq|gw|gue|gua|gwe)\\b': 'aku',\n", " r'\\b(km|kamu|loe|elu|lo|elo|lu|kmu|you)\\b': 'kamu',\n", " r'\\b(sy|sya)\\b': 'saya',\n", "\n", " # ==============================================================================\n", " # KATEGORI 4: KATA TANYA (QUESTION WORDS)\n", " # ==============================================================================\n", " r'\\b(gmn|gimana|gmana|gmna|gimanaa)\\b': 'bagaimana',\n", " r'\\b(knp|kenap|knpa|kenape)\\b': 'kenapa',\n", "\n", " # ==============================================================================\n", " # KATEGORI 5: KATA KERJA (VERBS)\n", " # ==============================================================================\n", " r'\\b(blg|blng|blang)\\b': 'bilang',\n", " r'\\b(bs|bsa)\\b': 'bisa',\n", " r'\\b(cb|cba)\\b': 'coba',\n", " r'\\b(dtg)\\b': 'datang',\n", " r'\\b(jwb|jwab)\\b': 'jawab',\n", " r'\\b(lgsg|lgsung|langsng)\\b': 'langsung',\n", " r'\\b(liat|lht|lhat)\\b': 'lihat',\n", " r'\\b(lwt|lwat)\\b': 'lewat',\n", " r'\\b(mkn|mkan|maem)\\b': 'makan',\n", " r'\\b(ovt)\\b': 'overthinking',\n", " r'\\b(pake|pk|pke)\\b': 'pakai',\n", " r'\\b(tau|th|taw|tauw|tw)\\b': 'tahu',\n", " r'\\b(tlg|plis|pls|please|tlong|tlongin)\\b': 'tolong',\n", " r'\\b(moga|smoga)\\b': 'semoga',\n", "\n", " # ==============================================================================\n", " # KATEGORI 6: KATA SIFAT & BENDA (ADJECTIVES & NOUNS)\n", " # ==============================================================================\n", " r'\\b(ank)\\b': 'anak',\n", " r'\\b(bgs|bgus|nice|good|top)\\b': 'bagus',\n", " r'\\b(bener|bnr|bner)\\b': 'benar',\n", " r'\\b(byk|bnyk)\\b': 'banyak',\n", " r'\\b(jls|jlas)\\b': 'jelas',\n", " r'\\b(josss|joss|sipp|sip)\\b': 'mantap',\n", " r'\\b(londo)\\b': 'belanda',\n", " r'\\b(org|orng|wong)\\b': 'orang',\n", " r'\\b(skt|skit)\\b': 'sakit',\n", " r'\\b(syg|syang)\\b': 'sayang',\n", " r'\\b(tmpt|tempt|tmpat)\\b': 'tempat', \n", " r'\\b(tmn|temen|tmen|tman)\\b': 'teman',\n", " r'\\b(lbh|lbih|lb)\\b': 'lebih',\n", "\n", " # ==============================================================================\n", " # KATEGORI 7: KATA SAMBUNG, KETERANGAN, UMUM (CONJUNCTIONS, ADVERBS, ETC)\n", " # ==============================================================================\n", " r'\\b(aja|sja|aje|sj|ae|wae)\\b': 'saja',\n", " r'\\b(bbrp|bbrpa|bberapa)\\b': 'beberapa',\n", " r'\\b(bgt|bangettt|bangett|bangt|bget|bbgt)\\b': 'banget', # Dihilangkan ||\n", " r'\\b(blm|blom|blum)\\b': 'belum',\n", " r'\\b(bkn|bukn)\\b': 'bukan',\n", " r'\\b(br|bru)\\b': 'baru',\n", " r'\\b(cmn|cuma|cuman|cm)\\b': 'cuma',\n", " r'\\b(dgn|dngn|dg)\\b': 'dengan',\n", " r'\\b(dl|dlu)\\b': 'dulu',\n", " r'\\b(dlm|dalem|dlem)\\b': 'dalam',\n", " r'\\b(dr|dri)\\b': 'dari',\n", " r'\\b(emg|emng|emang)\\b': 'memang',\n", " r'\\b(ga|gak|tdk|gk|ngga|nggak|engga|enggak)\\b': 'tidak',\n", " r'\\b(gr|gara2|gr2|gra2|gra|gara)\\b': 'gara-gara',\n", " r'\\b(gpp|gppa|gapapa)\\b': 'tidak apa-apa',\n", " r'\\b(gt|gitu|bgitu)\\b': 'begitu',\n", " r'\\b(hbs|hbis)\\b': 'habis',\n", " r'\\b(hrs|hrus)\\b': 'harus',\n", " r'\\b(jd|jdi)\\b': 'jadi',\n", " r'\\b(jg|jga)\\b': 'juga',\n", " r'\\b(jgn|jangan|jngan|jgan)\\b': 'jangan',\n", " r'\\b(kdg|kdang)\\b': 'kadang',\n", " r'\\b(klo|kalo|kl)\\b': 'kalau',\n", " r'\\b(kpd|kpda)\\b': 'kepada',\n", " r'\\b(krn|karna)\\b': 'karena',\n", " r'\\b(kyk|kek|kaya|kya)\\b': 'seperti',\n", " r'\\b(lg|lgi)\\b': 'lagi',\n", " r'\\b(mgkn|mngkin|mngkn)\\b': 'mungkin',\n", " r'\\b(mlm|mlem)\\b': 'malam',\n", " r'\\b(msi|msh|msih)\\b': 'masih',\n", " r'\\b(ntr|nnti|ntar)\\b': 'nanti',\n", " r'\\b(pd|pda)\\b': 'pada',\n", " r'\\b(pny|pnya)\\b': 'punya',\n", " r'\\b(prnh|prnah)\\b': 'pernah',\n", " r'\\b(sblm|sblom|sblum)\\b': 'sebelum',\n", " r'\\b(sbnrnya|sebenernya|sbenernya)\\b': 'sebenarnya',\n", " r'\\b(sdg)\\b': 'sedang',\n", " r'\\b(sdh|udh|udah|uda)\\b': 'sudah',\n", " r'\\b(shg)\\b': 'sehingga',\n", " r'\\b(skrg|skrng|skrang)\\b': 'sekarang',\n", " r'\\b(sllu|slalu|sll)\\b': 'selalu',\n", " r'\\b(sm|ama)\\b': 'sama',\n", " r'\\b(smpai|ampe|smp|smpe)\\b': 'sampai',\n", " r'\\b(smua)\\b': 'semua',\n", " r'\\b(srg|sring)\\b': 'sering',\n", " r'\\b(tkt|tkut)\\b': 'takut',\n", " r'\\b(tmbh|tmbah)\\b': 'tambah',\n", " r'\\b(tntg|ttg|tntang)\\b': 'tentang',\n", " r'\\b(tp|tpi)\\b': 'tapi',\n", " r'\\b(trll|tralu)\\b': 'terlalu',\n", " r'\\b(trmasuk|trmsk|trmsuk)\\b': 'termasuk',\n", " r'\\b(trs|trus|truz)\\b': 'lalu',\n", " r'\\b(ttp|ttep|ttap)\\b': 'tetap',\n", " r'\\b(utk|untk)\\b': 'untuk',\n", " r'\\b(yg|yng)\\b': 'yang',\n", " r'\\b(supya|spy)\\b': 'supaya',\n", " r'\\b(agr)\\b': 'agar',\n", " r'\\b(pdhl|pdhal)\\b': 'padahal',\n", " \n", " # ==============================================================================\n", " # KATEGORI 8: SPESIFIK KONTEKS (GOOGLE MAPS, UMUM)\n", " # ==============================================================================\n", " r'bareng\\s*yu+': 'bareng ayo', # Kasus khusus tanpa word boundary\n", " r'\\b(gopay|qris|cash)\\b': 'pembayaran',\n", " r'\\b(healing)\\b': 'rekreasi',\n", " r'\\b(htm)\\b': 'harga tiket masuk',\n", " r'\\b(overall)\\b': 'secara keseluruhan',\n", " r'\\b(photo?booth)\\b': 'photobooth',\n", " r'\\b(recommended|recomended|recomsnded)\\b': 'rekomendasi',\n", " r'\\b(smgt|smgat|smngat|smangat)\\b': 'semangat',\n", " r'\\b(spot foto)\\b': 'lokasi foto',\n", " r'\\b(thx|tq|makasi|makasih|makasii|makasie|thanks|thank|thengs)\\b': 'terima kasih',\n", " r'\\b(tour guide)\\b': 'pemandu wisata',\n", " r'\\b(view)\\b': 'pemandangan',\n", " r'\\b(vintage)\\b': 'antik',\n", " r'\\b(weekend)\\b': 'akhir pekan',\n", " r'\\b(weekdays)\\b': 'hari kerja',\n", " r'\\b(yuk|yuu|ayok|ayoo|ayuk)\\b': 'ayo',\n", " r'\\b(sblh|sebelh|sblah)\\b': 'sebelah',\n", " r'\\b(kyknya|kayaknya)\\b': 'kemungkinan',\n", "}\n", "\n", "print(f\"Jumlah baris awal: {len(df_raw)}\")\n", "df_raw = df_raw[df_raw['label'] != 'TIDAK RELEVAN'].copy()\n", "print(f\"Jumlah baris setelah menghapus 'TIDAK RELEVAN': {len(df_raw)}\")\n", "\n", "def bersihkan_teks(teks):\n", " if not isinstance(teks, str):\n", " return \"\"\n", " \n", " teks = teks.lower()\n", " teks = re.sub(r'https?://\\S+|www\\.\\S+', '', teks)\n", " teks = re.sub(r'@\\w+|#\\w+', '', teks)\n", " teks = re.sub(r'[^\\w\\s]', ' ', teks)\n", " for pattern, replacement in kamus_normalisasi.items():\n", " teks = re.sub(pattern, replacement, teks)\n", " teks = re.sub(r'\\d+', '', teks)\n", " teks = re.sub(r'(\\w)\\1{2,}', r'\\1', teks)\n", " words = teks.split()\n", " stemmed_words = [stemmer.stem(word) for word in words]\n", " teks = ' '.join(stemmed_words)\n", " words = teks.split()\n", " filtered_words = [word for word in words if word not in all_stopwords and len(word) > 1]\n", " teks = ' '.join(filtered_words)\n", " teks = re.sub(r'\\s+', ' ', teks).strip()\n", " return teks\n", "\n", "print(\"Memulai proses cleaning...\")\n", "df_raw['text_bersih'] = df_raw['ulasan_asli'].progress_apply(bersihkan_teks)\n", "\n", "# Hapus baris yang teksnya menjadi kosong setelah cleaning\n", "df_clean = df_raw[df_raw['text_bersih'].str.len() > 0].copy()\n", "\n", "print(f\"\\nProses cleaning selesai. Jumlah baris setelah cleaning: {len(df_clean)}\")\n", "print(\"Contoh data setelah cleaning:\")\n", "display(df_clean[['ulasan_asli', 'text_bersih', 'label']].head())" ] }, { "cell_type": "markdown", "id": "56479295", "metadata": { "papermill": { "duration": 0.010113, "end_time": "2025-08-17T11:21:21.143263", "exception": false, "start_time": "2025-08-17T11:21:21.133150", "status": "completed" }, "tags": [] }, "source": [ "### 7. Deduplikasi Konten\n", "\n", "Untuk menghindari bias pada model, ulasan yang identik atau sangat mirip perlu dihapus. Kita akan melakukan dua jenis deduplikasi:\n", "1. **Exact Deduplication**: Menghapus baris yang memiliki `text_bersih` yang sama persis.\n", "2. **Near-Duplicate Detection (Opsional)**: Menggunakan rasio kemiripan token untuk menyaring ulasan yang substansinya sama meskipun ada sedikit perbedaan (misal: tambahan tanda baca atau satu kata).\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "c64fe2d9", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:21:21.164090Z", "iopub.status.busy": "2025-08-17T11:21:21.163751Z", "iopub.status.idle": "2025-08-17T11:21:21.177483Z", "shell.execute_reply": "2025-08-17T11:21:21.176107Z" }, "papermill": { "duration": 0.026499, "end_time": "2025-08-17T11:21:21.179294", "exception": false, "start_time": "2025-08-17T11:21:21.152795", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Jumlah baris sebelum deduplikasi: 3412\n", "Jumlah baris setelah deduplikasi eksak: 3074\n", "\n", "Deteksi near-duplicate dilewati.\n" ] } ], "source": [ "print(f\"Jumlah baris sebelum deduplikasi: {len(df_clean)}\")\n", "\n", "# 1. Exact Deduplication\n", "df_dedup = df_clean.drop_duplicates(subset=['text_bersih'], keep='first').copy()\n", "print(f\"Jumlah baris setelah deduplikasi eksak: {len(df_dedup)}\")\n", "\n", "# 2. Near-Duplicate Detection\n", "# Proses ini bisa lambat, jadi kita lakukan pada sampel kecil atau jika diperlukan\n", "duplikat_indeks = []\n", "teks_list = df_dedup['text_bersih'].tolist()\n", "indeks_list = df_dedup.index.tolist()\n", "\n", "# (Langkah ini dinonaktifkan secara default karena komputasinya berat, aktifkan jika perlu)\n", "RUN_NEAR_DEDUPLICATION = False\n", "\n", "if RUN_NEAR_DEDUPLICATION:\n", " print(\"\\nMemulai deteksi near-duplicate (mungkin butuh waktu lama)...\")\n", " for i in tqdm(range(len(teks_list))):\n", " if indeks_list[i] in duplikat_indeks:\n", " continue\n", " for j in range(i + 1, len(teks_list)):\n", " if indeks_list[j] in duplikat_indeks:\n", " continue\n", " \n", " rasio_kemiripan = fuzz.token_set_ratio(teks_list[i], teks_list[j])\n", " if rasio_kemiripan >= 95: # Ambang batas kemiripan\n", " duplikat_indeks.append(indeks_list[j])\n", "\n", " df_final = df_dedup.drop(index=duplikat_indeks)\n", " print(f\"Jumlah baris setelah deteksi near-duplicate: {len(df_final)}\")\n", "else:\n", " df_final = df_dedup.copy()\n", " print(\"\\nDeteksi near-duplicate dilewati.\")\n", "\n", "df_final.reset_index(drop=True, inplace=True)" ] }, { "cell_type": "markdown", "id": "c0b968a6", "metadata": { "papermill": { "duration": 0.010419, "end_time": "2025-08-17T11:21:21.200867", "exception": false, "start_time": "2025-08-17T11:21:21.190448", "status": "completed" }, "tags": [] }, "source": [ "### 8. Pembagian Data (Stratified Train/Val/Test Split)\n", "\n", "Dataset akan dibagi menjadi tiga bagian: **latih (70%)**, **validasi (15%)**, dan **uji (15%)**. Kita menggunakan *stratified split* berdasarkan kolom `label` untuk memastikan proporsi setiap kelas sentimen sama di ketiga set. Ini sangat penting untuk dataset yang tidak seimbang agar evaluasi model menjadi adil dan tidak bias." ] }, { "cell_type": "code", "execution_count": 5, "id": "64aa7911", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:21:21.223224Z", "iopub.status.busy": "2025-08-17T11:21:21.222859Z", "iopub.status.idle": "2025-08-17T11:21:21.249600Z", "shell.execute_reply": "2025-08-17T11:21:21.248465Z" }, "papermill": { "duration": 0.040721, "end_time": "2025-08-17T11:21:21.251892", "exception": false, "start_time": "2025-08-17T11:21:21.211171", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ukuran data Latih (Train): 2151 (70.0%)\n", "Ukuran data Validasi (Val): 461 (15.0%)\n", "Ukuran data Uji (Test): 462 (15.0%)\n", "\n", "Distribusi label di setiap set:\n", "Train:\n", " label\n", "POSITIF 0.716411\n", "NETRAL 0.154812\n", "NEGATIF 0.128777\n", "Name: proportion, dtype: float64\n", "\n", "Validation:\n", " label\n", "POSITIF 0.718004\n", "NETRAL 0.154013\n", "NEGATIF 0.127983\n", "Name: proportion, dtype: float64\n", "\n", "Test:\n", " label\n", "POSITIF 0.716450\n", "NETRAL 0.155844\n", "NEGATIF 0.127706\n", "Name: proportion, dtype: float64\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.11/dist-packages/sklearn/utils/validation.py:605: DeprecationWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", " if is_sparse(pd_dtype):\n", "/usr/local/lib/python3.11/dist-packages/sklearn/utils/validation.py:614: DeprecationWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", " if is_sparse(pd_dtype) or not is_extension_array_dtype(pd_dtype):\n", "/usr/local/lib/python3.11/dist-packages/sklearn/utils/validation.py:605: DeprecationWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", " if is_sparse(pd_dtype):\n", "/usr/local/lib/python3.11/dist-packages/sklearn/utils/validation.py:614: DeprecationWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", " if is_sparse(pd_dtype) or not is_extension_array_dtype(pd_dtype):\n" ] } ], "source": [ "X = df_final['text_bersih']\n", "y = df_final['label']\n", "\n", "# Bagi menjadi train+val (85%) dan test (15%)\n", "X_train_val, X_test, y_train_val, y_test = train_test_split(\n", " X, y, test_size=0.15, random_state=SEED, stratify=y\n", ")\n", "\n", "# Bagi train+val menjadi train (70%) dan val (15%)\n", "# Proporsi test_size dihitung dari sisa data (0.15 / 0.85)\n", "X_train, X_val, y_train, y_val = train_test_split(\n", " X_train_val, y_train_val, test_size=(0.15/0.85), random_state=SEED, stratify=y_train_val\n", ")\n", "\n", "print(f\"Ukuran data Latih (Train): {len(X_train)} ({len(X_train)/len(df_final)*100:.1f}%)\")\n", "print(f\"Ukuran data Validasi (Val): {len(X_val)} ({len(X_val)/len(df_final)*100:.1f}%)\")\n", "print(f\"Ukuran data Uji (Test): {len(X_test)} ({len(X_test)/len(df_final)*100:.1f}%)\")\n", "\n", "print(\"\\nDistribusi label di setiap set:\")\n", "print(\"Train:\\n\", y_train.value_counts(normalize=True))\n", "print(\"\\nValidation:\\n\", y_val.value_counts(normalize=True))\n", "print(\"\\nTest:\\n\", y_test.value_counts(normalize=True))" ] }, { "cell_type": "markdown", "id": "c524ca86", "metadata": { "papermill": { "duration": 0.010854, "end_time": "2025-08-17T11:21:21.273236", "exception": false, "start_time": "2025-08-17T11:21:21.262382", "status": "completed" }, "tags": [] }, "source": [ "---" ] }, { "cell_type": "markdown", "id": "9d13ccc2", "metadata": { "papermill": { "duration": 0.010408, "end_time": "2025-08-17T11:21:21.294382", "exception": false, "start_time": "2025-08-17T11:21:21.283974", "status": "completed" }, "tags": [] }, "source": [ "## Bagian I: Analisis Sentimen (Supervised)" ] }, { "cell_type": "markdown", "id": "f6867b49", "metadata": { "papermill": { "duration": 0.009691, "end_time": "2025-08-17T11:21:21.314133", "exception": false, "start_time": "2025-08-17T11:21:21.304442", "status": "completed" }, "tags": [] }, "source": [ "### 10. Representasi Fitur (TF-IDF)\n", "\n", "Kita akan mengubah teks menjadi vektor numerik menggunakan **TF-IDF (Term Frequency-Inverse Document Frequency)**. Metode ini memberi bobot lebih tinggi pada kata-kata yang sering muncul dalam satu dokumen tetapi jarang muncul di seluruh korpus, sehingga efektif menangkap kata kunci penting.\n", "\n", "**Konfigurasi:**\n", "- `ngram_range=(1, 2)`: Menggunakan unigram (satu kata) dan bigram (dua kata) untuk menangkap konteks.\n", "- `min_df=3`: Mengabaikan kata yang muncul kurang dari 3 kali di seluruh korpus untuk mengurangi noise.\n", "- `max_df=0.9`: Mengabaikan kata yang muncul di lebih dari 90% dokumen (kata terlalu umum).\n", "- `sublinear_tf=True`: Menerapkan penskalaan logaritmik pada frekuensi term." ] }, { "cell_type": "code", "execution_count": 6, "id": "b7a79eea", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:21:21.336997Z", "iopub.status.busy": "2025-08-17T11:21:21.335525Z", "iopub.status.idle": "2025-08-17T11:21:21.499465Z", "shell.execute_reply": "2025-08-17T11:21:21.498212Z" }, "papermill": { "duration": 0.17688, "end_time": "2025-08-17T11:21:21.501123", "exception": false, "start_time": "2025-08-17T11:21:21.324243", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ukuran matriks TF-IDF (data latih): (2151, 2297)\n", "Jumlah fitur (kosakata): 2297\n" ] } ], "source": [ "tfidf = TfidfVectorizer(\n", " ngram_range=(1, 2),\n", " min_df=3,\n", " max_df=0.9,\n", " sublinear_tf=True,\n", " # random_state=SEED\n", ")\n", "\n", "# Fit pada data latih, lalu transform semua set\n", "X_train_tfidf = tfidf.fit_transform(X_train)\n", "X_val_tfidf = tfidf.transform(X_val)\n", "X_test_tfidf = tfidf.transform(X_test)\n", "\n", "print(f\"Ukuran matriks TF-IDF (data latih): {X_train_tfidf.shape}\")\n", "print(f\"Jumlah fitur (kosakata): {len(tfidf.get_feature_names_out())}\")" ] }, { "cell_type": "markdown", "id": "80ebe1bc", "metadata": { "papermill": { "duration": 0.009333, "end_time": "2025-08-17T11:21:21.520252", "exception": false, "start_time": "2025-08-17T11:21:21.510919", "status": "completed" }, "tags": [] }, "source": [ "### 11. Screening Cepat (LazyPredict) – Opsional\n", "\n", "Sebelum melakukan analisis mendalam pada beberapa model, kita akan menggunakan `LazyPredict` untuk menjalankan puluhan model klasifikasi secara otomatis. Tujuannya adalah untuk mendapatkan gambaran umum tentang algoritma mana yang paling menjanjikan untuk dataset ini tanpa perlu melakukan *tuning*.\n", "\n", "**Catatan:** Hasil dari LazyPredict adalah **panduan awal**, bukan hasil final. Kita akan memilih beberapa model teratas dari sini untuk dianalisis lebih lanjut." ] }, { "cell_type": "code", "execution_count": 7, "id": "e905dd4b", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:21:21.542709Z", "iopub.status.busy": "2025-08-17T11:21:21.542283Z", "iopub.status.idle": "2025-08-17T11:26:00.287968Z", "shell.execute_reply": "2025-08-17T11:26:00.286805Z" }, "papermill": { "duration": 278.759203, "end_time": "2025-08-17T11:26:00.289725", "exception": false, "start_time": "2025-08-17T11:21:21.530522", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting lazypredict\r\n", " Downloading lazypredict-0.2.16-py2.py3-none-any.whl.metadata (13 kB)\r\n", "Requirement already satisfied: click in /usr/local/lib/python3.11/dist-packages (from lazypredict) (8.2.1)\r\n", "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.11/dist-packages (from lazypredict) (1.2.2)\r\n", "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from lazypredict) (2.2.3)\r\n", "Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from lazypredict) (4.67.1)\r\n", "Requirement already satisfied: joblib in /usr/local/lib/python3.11/dist-packages (from lazypredict) (1.5.1)\r\n", "Requirement already satisfied: lightgbm in /usr/local/lib/python3.11/dist-packages (from lazypredict) (4.5.0)\r\n", "Requirement already satisfied: xgboost in /usr/local/lib/python3.11/dist-packages (from lazypredict) (2.0.3)\r\n", "Collecting pytest-runner (from lazypredict)\r\n", " Downloading pytest_runner-6.0.1-py3-none-any.whl.metadata (7.3 kB)\r\n", "Collecting mlflow>=2.0.0 (from lazypredict)\r\n", " Downloading mlflow-3.2.0-py3-none-any.whl.metadata (29 kB)\r\n", "Collecting mlflow-skinny==3.2.0 (from mlflow>=2.0.0->lazypredict)\r\n", " Downloading mlflow_skinny-3.2.0-py3-none-any.whl.metadata (30 kB)\r\n", "Collecting mlflow-tracing==3.2.0 (from mlflow>=2.0.0->lazypredict)\r\n", " Downloading mlflow_tracing-3.2.0-py3-none-any.whl.metadata (19 kB)\r\n", "Requirement already satisfied: Flask<4 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (3.1.1)\r\n", "Requirement already satisfied: alembic!=1.10.0,<2 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (1.16.2)\r\n", "Requirement already satisfied: docker<8,>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (7.1.0)\r\n", "Collecting graphene<4 (from mlflow>=2.0.0->lazypredict)\r\n", " Downloading graphene-3.4.3-py2.py3-none-any.whl.metadata (6.9 kB)\r\n", "Collecting gunicorn<24 (from mlflow>=2.0.0->lazypredict)\r\n", " Downloading gunicorn-23.0.0-py3-none-any.whl.metadata (4.4 kB)\r\n", "Requirement already satisfied: matplotlib<4 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (3.7.2)\r\n", "Requirement already satisfied: numpy<3 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (1.26.4)\r\n", "Requirement already satisfied: pyarrow<22,>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (19.0.1)\r\n", "Requirement already satisfied: scipy<2 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (1.15.3)\r\n", "Requirement already satisfied: sqlalchemy<3,>=1.4.0 in /usr/local/lib/python3.11/dist-packages (from mlflow>=2.0.0->lazypredict) (2.0.41)\r\n", "Requirement already satisfied: cachetools<7,>=5.0.0 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (5.5.2)\r\n", "Requirement already satisfied: cloudpickle<4 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (3.1.1)\r\n", "Collecting databricks-sdk<1,>=0.20.0 (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict)\r\n", " Downloading databricks_sdk-0.63.0-py3-none-any.whl.metadata (39 kB)\r\n", "Requirement already satisfied: fastapi<1 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.115.13)\r\n", "Requirement already satisfied: gitpython<4,>=3.1.9 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (3.1.44)\r\n", "Requirement already satisfied: importlib_metadata!=4.7.0,<9,>=3.7.0 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (8.7.0)\r\n", "Collecting opentelemetry-api<3,>=1.9.0 (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict)\r\n", " Downloading opentelemetry_api-1.36.0-py3-none-any.whl.metadata (1.5 kB)\r\n", "Collecting opentelemetry-sdk<3,>=1.9.0 (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict)\r\n", " Downloading opentelemetry_sdk-1.36.0-py3-none-any.whl.metadata (1.5 kB)\r\n", "Requirement already satisfied: packaging<26 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (25.0)\r\n", "Requirement already satisfied: protobuf<7,>=3.12.0 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (3.20.3)\r\n", "Requirement already satisfied: pydantic<3,>=1.10.8 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (2.11.7)\r\n", "Requirement already satisfied: pyyaml<7,>=5.1 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (6.0.2)\r\n", "Requirement already satisfied: requests<3,>=2.17.3 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (2.32.4)\r\n", "Requirement already satisfied: sqlparse<1,>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.5.3)\r\n", "Requirement already satisfied: typing-extensions<5,>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (4.14.0)\r\n", "Requirement already satisfied: uvicorn<1 in /usr/local/lib/python3.11/dist-packages (from mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.34.3)\r\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->lazypredict) (2.9.0.post0)\r\n", "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->lazypredict) (2025.2)\r\n", "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->lazypredict) (2025.2)\r\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn->lazypredict) (3.6.0)\r\n", "Requirement already satisfied: Mako in /usr/local/lib/python3.11/dist-packages (from alembic!=1.10.0,<2->mlflow>=2.0.0->lazypredict) (1.3.10)\r\n", "Requirement already satisfied: urllib3>=1.26.0 in /usr/local/lib/python3.11/dist-packages (from docker<8,>=4.0.0->mlflow>=2.0.0->lazypredict) (2.5.0)\r\n", "Requirement already satisfied: blinker>=1.9.0 in /usr/local/lib/python3.11/dist-packages (from Flask<4->mlflow>=2.0.0->lazypredict) (1.9.0)\r\n", "Requirement already satisfied: itsdangerous>=2.2.0 in /usr/local/lib/python3.11/dist-packages (from Flask<4->mlflow>=2.0.0->lazypredict) (2.2.0)\r\n", "Requirement already satisfied: jinja2>=3.1.2 in /usr/local/lib/python3.11/dist-packages (from Flask<4->mlflow>=2.0.0->lazypredict) (3.1.6)\r\n", "Requirement already satisfied: markupsafe>=2.1.1 in /usr/local/lib/python3.11/dist-packages (from Flask<4->mlflow>=2.0.0->lazypredict) (3.0.2)\r\n", "Requirement already satisfied: werkzeug>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from Flask<4->mlflow>=2.0.0->lazypredict) (3.1.3)\r\n", "Collecting graphql-core<3.3,>=3.1 (from graphene<4->mlflow>=2.0.0->lazypredict)\r\n", " Downloading graphql_core-3.2.6-py3-none-any.whl.metadata (11 kB)\r\n", "Collecting graphql-relay<3.3,>=3.1 (from graphene<4->mlflow>=2.0.0->lazypredict)\r\n", " Downloading graphql_relay-3.2.0-py3-none-any.whl.metadata (12 kB)\r\n", "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib<4->mlflow>=2.0.0->lazypredict) (1.3.2)\r\n", "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib<4->mlflow>=2.0.0->lazypredict) (0.12.1)\r\n", "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib<4->mlflow>=2.0.0->lazypredict) (4.58.4)\r\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib<4->mlflow>=2.0.0->lazypredict) (1.4.8)\r\n", "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib<4->mlflow>=2.0.0->lazypredict) (11.2.1)\r\n", "Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib<4->mlflow>=2.0.0->lazypredict) (3.0.9)\r\n", "Requirement already satisfied: mkl_fft in /usr/local/lib/python3.11/dist-packages (from numpy<3->mlflow>=2.0.0->lazypredict) (1.3.8)\r\n", "Requirement already satisfied: mkl_random in /usr/local/lib/python3.11/dist-packages (from numpy<3->mlflow>=2.0.0->lazypredict) (1.2.4)\r\n", "Requirement already satisfied: mkl_umath in /usr/local/lib/python3.11/dist-packages (from numpy<3->mlflow>=2.0.0->lazypredict) (0.1.1)\r\n", "Requirement already satisfied: mkl in /usr/local/lib/python3.11/dist-packages (from numpy<3->mlflow>=2.0.0->lazypredict) (2025.2.0)\r\n", "Requirement already satisfied: tbb4py in /usr/local/lib/python3.11/dist-packages (from numpy<3->mlflow>=2.0.0->lazypredict) (2022.2.0)\r\n", "Requirement already satisfied: mkl-service in /usr/local/lib/python3.11/dist-packages (from numpy<3->mlflow>=2.0.0->lazypredict) (2.4.1)\r\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas->lazypredict) (1.17.0)\r\n", "Requirement already satisfied: greenlet>=1 in /usr/local/lib/python3.11/dist-packages (from sqlalchemy<3,>=1.4.0->mlflow>=2.0.0->lazypredict) (3.2.3)\r\n", "Requirement already satisfied: google-auth~=2.0 in /usr/local/lib/python3.11/dist-packages (from databricks-sdk<1,>=0.20.0->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (2.40.3)\r\n", "Requirement already satisfied: starlette<0.47.0,>=0.40.0 in /usr/local/lib/python3.11/dist-packages (from fastapi<1->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.46.2)\r\n", "Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.11/dist-packages (from gitpython<4,>=3.1.9->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (4.0.12)\r\n", "Requirement already satisfied: zipp>=3.20 in /usr/local/lib/python3.11/dist-packages (from importlib_metadata!=4.7.0,<9,>=3.7.0->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (3.23.0)\r\n", "Collecting opentelemetry-semantic-conventions==0.57b0 (from opentelemetry-sdk<3,>=1.9.0->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict)\r\n", " Downloading opentelemetry_semantic_conventions-0.57b0-py3-none-any.whl.metadata (2.4 kB)\r\n", "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=1.10.8->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.7.0)\r\n", "Requirement already satisfied: pydantic-core==2.33.2 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=1.10.8->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (2.33.2)\r\n", "Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=1.10.8->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.4.1)\r\n", "Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.17.3->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (3.4.2)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.17.3->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (3.10)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.17.3->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (2025.6.15)\r\n", "Requirement already satisfied: h11>=0.8 in /usr/local/lib/python3.11/dist-packages (from uvicorn<1->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.16.0)\r\n", "Requirement already satisfied: intel-openmp<2026,>=2024 in /usr/local/lib/python3.11/dist-packages (from mkl->numpy<3->mlflow>=2.0.0->lazypredict) (2024.2.0)\r\n", "Requirement already satisfied: tbb==2022.* in /usr/local/lib/python3.11/dist-packages (from mkl->numpy<3->mlflow>=2.0.0->lazypredict) (2022.2.0)\r\n", "Requirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.11/dist-packages (from tbb==2022.*->mkl->numpy<3->mlflow>=2.0.0->lazypredict) (1.4.0)\r\n", "Requirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.11/dist-packages (from mkl_umath->numpy<3->mlflow>=2.0.0->lazypredict) (2024.2.0)\r\n", "Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.11/dist-packages (from gitdb<5,>=4.0.1->gitpython<4,>=3.1.9->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (5.0.2)\r\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.11/dist-packages (from google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.4.2)\r\n", "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.11/dist-packages (from google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (4.9.1)\r\n", "Requirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.11/dist-packages (from intel-openmp<2026,>=2024->mkl->numpy<3->mlflow>=2.0.0->lazypredict) (2024.2.0)\r\n", "Requirement already satisfied: anyio<5,>=3.6.2 in /usr/local/lib/python3.11/dist-packages (from starlette<0.47.0,>=0.40.0->fastapi<1->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (4.9.0)\r\n", "Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio<5,>=3.6.2->starlette<0.47.0,>=0.40.0->fastapi<1->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (1.3.1)\r\n", "Requirement already satisfied: pyasn1<0.7.0,>=0.6.1 in /usr/local/lib/python3.11/dist-packages (from pyasn1-modules>=0.2.1->google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.2.0->mlflow>=2.0.0->lazypredict) (0.6.1)\r\n", "Downloading lazypredict-0.2.16-py2.py3-none-any.whl (14 kB)\r\n", "Downloading mlflow-3.2.0-py3-none-any.whl (25.8 MB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m25.8/25.8 MB\u001b[0m \u001b[31m61.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading mlflow_skinny-3.2.0-py3-none-any.whl (2.0 MB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m50.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading mlflow_tracing-3.2.0-py3-none-any.whl (1.1 MB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m38.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading pytest_runner-6.0.1-py3-none-any.whl (7.2 kB)\r\n", "Downloading graphene-3.4.3-py2.py3-none-any.whl (114 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m114.9/114.9 kB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading gunicorn-23.0.0-py3-none-any.whl (85 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m85.0/85.0 kB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading databricks_sdk-0.63.0-py3-none-any.whl (688 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m688.0/688.0 kB\u001b[0m \u001b[31m27.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading graphql_core-3.2.6-py3-none-any.whl (203 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m203.4/203.4 kB\u001b[0m \u001b[31m8.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading graphql_relay-3.2.0-py3-none-any.whl (16 kB)\r\n", "Downloading opentelemetry_api-1.36.0-py3-none-any.whl (65 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m3.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading opentelemetry_sdk-1.36.0-py3-none-any.whl (119 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m120.0/120.0 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hDownloading opentelemetry_semantic_conventions-0.57b0-py3-none-any.whl (201 kB)\r\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m201.6/201.6 kB\u001b[0m \u001b[31m9.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25hInstalling collected packages: pytest-runner, gunicorn, graphql-core, opentelemetry-api, graphql-relay, opentelemetry-semantic-conventions, graphene, databricks-sdk, opentelemetry-sdk, mlflow-tracing, mlflow-skinny, mlflow, lazypredict\r\n", "Successfully installed databricks-sdk-0.63.0 graphene-3.4.3 graphql-core-3.2.6 graphql-relay-3.2.0 gunicorn-23.0.0 lazypredict-0.2.16 mlflow-3.2.0 mlflow-skinny-3.2.0 mlflow-tracing-3.2.0 opentelemetry-api-1.36.0 opentelemetry-sdk-1.36.0 opentelemetry-semantic-conventions-0.57b0 pytest-runner-6.0.1\r\n", "Menjalankan LazyPredict pada data train dan test...\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "72f955b0813b49c5817f287c5ac0aac5", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/29 [00:00\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", " \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", " \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", " \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", "
AccuracyBalanced AccuracyROC AUCF1 ScoreTime Taken
Model
NearestCentroid0.770.63None0.770.37
LGBMClassifier0.770.57None0.751.35
LogisticRegression0.750.59None0.742.49
RandomForestClassifier0.770.52None0.734.31
ExtraTreesClassifier0.760.52None0.7311.97
PassiveAggressiveClassifier0.720.59None0.721.75
BaggingClassifier0.730.57None0.7212.21
AdaBoostClassifier0.740.50None0.704.63
LinearSVC0.690.57None0.7035.00
BernoulliNB0.730.49None0.700.43
SGDClassifier0.750.45None0.691.54
DecisionTreeClassifier0.690.54None0.692.27
Perceptron0.690.53None0.691.07
ExtraTreeClassifier0.700.48None0.680.41
KNeighborsClassifier0.710.40None0.650.53
RidgeClassifierCV0.630.49None0.642.61
SVC0.730.38None0.6314.50
CalibratedClassifierCV0.730.37None0.63148.45
RidgeClassifier0.600.47None0.620.89
DummyClassifier0.720.33None0.600.33
GaussianNB0.550.48None0.580.45
LinearDiscriminantAnalysis0.520.43None0.555.51
QuadraticDiscriminantAnalysis0.250.38None0.263.12
LabelSpreading0.150.34None0.081.32
LabelPropagation0.150.34None0.081.26
\n", "" ], "text/plain": [ " Accuracy Balanced Accuracy ROC AUC F1 Score \\\n", "Model \n", "NearestCentroid 0.77 0.63 None 0.77 \n", "LGBMClassifier 0.77 0.57 None 0.75 \n", "LogisticRegression 0.75 0.59 None 0.74 \n", "RandomForestClassifier 0.77 0.52 None 0.73 \n", "ExtraTreesClassifier 0.76 0.52 None 0.73 \n", "PassiveAggressiveClassifier 0.72 0.59 None 0.72 \n", "BaggingClassifier 0.73 0.57 None 0.72 \n", "AdaBoostClassifier 0.74 0.50 None 0.70 \n", "LinearSVC 0.69 0.57 None 0.70 \n", "BernoulliNB 0.73 0.49 None 0.70 \n", "SGDClassifier 0.75 0.45 None 0.69 \n", "DecisionTreeClassifier 0.69 0.54 None 0.69 \n", "Perceptron 0.69 0.53 None 0.69 \n", "ExtraTreeClassifier 0.70 0.48 None 0.68 \n", "KNeighborsClassifier 0.71 0.40 None 0.65 \n", "RidgeClassifierCV 0.63 0.49 None 0.64 \n", "SVC 0.73 0.38 None 0.63 \n", "CalibratedClassifierCV 0.73 0.37 None 0.63 \n", "RidgeClassifier 0.60 0.47 None 0.62 \n", "DummyClassifier 0.72 0.33 None 0.60 \n", "GaussianNB 0.55 0.48 None 0.58 \n", "LinearDiscriminantAnalysis 0.52 0.43 None 0.55 \n", "QuadraticDiscriminantAnalysis 0.25 0.38 None 0.26 \n", "LabelSpreading 0.15 0.34 None 0.08 \n", "LabelPropagation 0.15 0.34 None 0.08 \n", "\n", " Time Taken \n", "Model \n", "NearestCentroid 0.37 \n", "LGBMClassifier 1.35 \n", "LogisticRegression 2.49 \n", "RandomForestClassifier 4.31 \n", "ExtraTreesClassifier 11.97 \n", "PassiveAggressiveClassifier 1.75 \n", "BaggingClassifier 12.21 \n", "AdaBoostClassifier 4.63 \n", "LinearSVC 35.00 \n", "BernoulliNB 0.43 \n", "SGDClassifier 1.54 \n", "DecisionTreeClassifier 2.27 \n", "Perceptron 1.07 \n", "ExtraTreeClassifier 0.41 \n", "KNeighborsClassifier 0.53 \n", "RidgeClassifierCV 2.61 \n", "SVC 14.50 \n", "CalibratedClassifierCV 148.45 \n", "RidgeClassifier 0.89 \n", "DummyClassifier 0.33 \n", "GaussianNB 0.45 \n", "LinearDiscriminantAnalysis 5.51 \n", "QuadraticDiscriminantAnalysis 3.12 \n", "LabelSpreading 1.32 \n", "LabelPropagation 1.26 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "!pip install lazypredict # Jalankan baris ini jika Anda belum menginstal lazypredict\n", "\n", "from lazypredict.Supervised import LazyClassifier\n", "\n", "# LazyPredict membutuhkan matriks dense, yang bisa memakan banyak memori.\n", "# Jika terjadi error memori, pertimbangkan untuk menjalankan pada sampel data yang lebih kecil.\n", "print(\"Menjalankan LazyPredict pada data train dan test...\")\n", "try:\n", " # Inisialisasi LazyClassifier\n", " clf = LazyClassifier(verbose=0, ignore_warnings=True, custom_metric=None)\n", " \n", " # Fit model. LazyPredict menggunakan split train/test untuk evaluasi cepatnya.\n", " models, predictions = clf.fit(X_train_tfidf.toarray(), X_test_tfidf.toarray(), y_train, y_test)\n", " \n", " print(\"\\nHasil Screening Model dengan LazyPredict (diurutkan berdasarkan F1 Score):\")\n", " display(models.sort_values(by='F1 Score', ascending=False))\n", "\n", "except MemoryError:\n", " print(\"\\nERROR: Terjadi MemoryError. Matriks TF-IDF terlalu besar untuk diubah menjadi array dense.\")\n", " print(\"Screening dengan LazyPredict dilewati. Lanjut ke validasi manual.\")\n", "except Exception as e:\n", " print(f\"\\nTerjadi error saat menjalankan LazyPredict: {e}\")\n", " print(\"Screening dengan LazyPredict dilewati. Lanjut ke validasi manual.\")" ] }, { "cell_type": "markdown", "id": "c8d4070d", "metadata": { "papermill": { "duration": 0.012834, "end_time": "2025-08-17T11:26:00.315994", "exception": false, "start_time": "2025-08-17T11:26:00.303160", "status": "completed" }, "tags": [] }, "source": [ "### 12. Kandidat Model & Cross-Validation\n", "\n", "Berdasarkan hasil screening dari LazyPredict, model berbasis ensemble tree seperti **LGBMClassifier**, **NearestCentroid** dan **RandomForestClassifier** menunjukkan performa F1-Score tertinggi. Oleh karena itu, kita akan fokus pada kedua model ini dan mengevaluasinya secara lebih teliti menggunakan **Stratified 5-Fold Cross-Validation**.\n", "\n", "Metrik utama yang digunakan adalah **Macro F1-score** karena lebih adil untuk dataset yang tidak seimbang." ] }, { "cell_type": "code", "execution_count": 8, "id": "bd700f90", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:00.343841Z", "iopub.status.busy": "2025-08-17T11:26:00.343406Z", "iopub.status.idle": "2025-08-17T11:26:09.119998Z", "shell.execute_reply": "2025-08-17T11:26:09.118939Z" }, "papermill": { "duration": 8.79228, "end_time": "2025-08-17T11:26:09.121516", "exception": false, "start_time": "2025-08-17T11:26:00.329236", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Menjalankan 5-Fold Cross Validation pada model kandidat...\n", "NearestCentroid: Macro F1 = 0.6013 (+/- 0.0205)\n", "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.004869 seconds.\n", "You can set `force_row_wise=true` to remove the overhead.\n", "And if memory is not enough, you can set `force_col_wise=true`.\n", "[LightGBM] [Info] Total Bins 6420\n", "[LightGBM] [Info] Number of data points in the train set: 2089, number of used features: 287\n", "[LightGBM] [Info] Start training from score -2.053454\n", "[LightGBM] [Info] Start training from score -1.866788\n", "[LightGBM] [Info] Start training from score -0.332555\n", "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.003714 seconds.\n", "You can set `force_row_wise=true` to remove the overhead.\n", "And if memory is not enough, you can set `force_col_wise=true`.\n", "[LightGBM] [Info] Total Bins 6464\n", "[LightGBM] [Info] Number of data points in the train set: 2089, number of used features: 296\n", "[LightGBM] [Info] Start training from score -2.049729\n", "[LightGBM] [Info] Start training from score -1.866788\n", "[LightGBM] [Info] Start training from score -0.333222\n", "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.003591 seconds.\n", "You can set `force_row_wise=true` to remove the overhead.\n", "And if memory is not enough, you can set `force_col_wise=true`.\n", "[LightGBM] [Info] Total Bins 6393\n", "[LightGBM] [Info] Number of data points in the train set: 2090, number of used features: 291\n", "[LightGBM] [Info] Start training from score -2.050208\n", "[LightGBM] [Info] Start training from score -1.864176\n", "[LightGBM] [Info] Start training from score -0.333701\n", "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.003440 seconds.\n", "You can set `force_row_wise=true` to remove the overhead.\n", "And if memory is not enough, you can set `force_col_wise=true`.\n", "[LightGBM] [Info] Total Bins 6236\n", "[LightGBM] [Info] Number of data points in the train set: 2090, number of used features: 285\n", "[LightGBM] [Info] Start training from score -2.050208\n", "[LightGBM] [Info] Start training from score -1.867267\n", "[LightGBM] [Info] Start training from score -0.333033\n", "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.003324 seconds.\n", "You can set `force_row_wise=true` to remove the overhead.\n", "And if memory is not enough, you can set `force_col_wise=true`.\n", "[LightGBM] [Info] Total Bins 6283\n", "[LightGBM] [Info] Number of data points in the train set: 2090, number of used features: 286\n", "[LightGBM] [Info] Start training from score -2.050208\n", "[LightGBM] [Info] Start training from score -1.867267\n", "[LightGBM] [Info] Start training from score -0.333033\n", "LGBMClassifier: Macro F1 = 0.5919 (+/- 0.0243)\n", "RandomForestClassifier: Macro F1 = 0.5439 (+/- 0.0180)\n", "\n", "Hasil Cross-Validation (diurutkan berdasarkan Mean Macro F1):\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mean_f1std_f1
NearestCentroid0.600.02
LGBMClassifier0.590.02
RandomForestClassifier0.540.02
\n", "
" ], "text/plain": [ " mean_f1 std_f1\n", "NearestCentroid 0.60 0.02\n", "LGBMClassifier 0.59 0.02\n", "RandomForestClassifier 0.54 0.02" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Gabungkan kembali data latih dan validasi untuk Cross-Validation\n", "X_combined = pd.concat([X_train, X_val])\n", "y_combined = pd.concat([y_train, y_val])\n", "\n", "models = {\n", " 'NearestCentroid': NearestCentroid(), \n", " 'LGBMClassifier': LGBMClassifier(random_state=SEED),\n", " 'RandomForestClassifier': RandomForestClassifier(random_state=SEED, n_jobs=-1) # n_jobs=-1 untuk mempercepat training\n", "}\n", "\n", "results = {}\n", "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=SEED)\n", "\n", "print(\"Menjalankan 5-Fold Cross Validation pada model kandidat...\")\n", "for name, model in models.items():\n", " # Buat pipeline untuk setiap model agar konsisten\n", " pipeline = Pipeline([\n", " ('tfidf', TfidfVectorizer(ngram_range=(1,2), min_df=3, max_df=0.9, sublinear_tf=True)),\n", " ('clf', model)\n", " ])\n", " \n", " cv_scores = cross_val_score(pipeline, X_combined, y_combined, cv=kfold, scoring='f1_macro')\n", " results[name] = {\n", " 'mean_f1': cv_scores.mean(),\n", " 'std_f1': cv_scores.std()\n", " }\n", " print(f\"{name}: Macro F1 = {cv_scores.mean():.4f} (+/- {cv_scores.std():.4f})\")\n", "\n", "results_df = pd.DataFrame(results).T.sort_values(by='mean_f1', ascending=False)\n", "print(\"\\nHasil Cross-Validation (diurutkan berdasarkan Mean Macro F1):\")\n", "display(results_df)" ] }, { "cell_type": "markdown", "id": "2b4f195d", "metadata": { "papermill": { "duration": 0.013373, "end_time": "2025-08-17T11:26:09.148889", "exception": false, "start_time": "2025-08-17T11:26:09.135516", "status": "completed" }, "tags": [] }, "source": [ "**Temuan:**\n", "**NearestCentroid\t** secara konsisten menunjukkan performa terbaik dengan rata-rata Macro F1-score tertinggi walaupun standar deviasinya sama jika dibandingkan dengan **RandomForestCLassifier** maupun **LGBMClassifier**, menjadikannya kandidat utama untuk *hyperparameter tuning*." ] }, { "cell_type": "markdown", "id": "a1d1ba45", "metadata": { "papermill": { "duration": 0.01322, "end_time": "2025-08-17T11:26:09.175849", "exception": false, "start_time": "2025-08-17T11:26:09.162629", "status": "completed" }, "tags": [] }, "source": [ "### 13. Tuning Hiperparameter (Grid Search)\n", "\n", "Sekarang kita akan melakukan pencarian hiperparameter terbaik untuk `NearestCentroid` menggunakan `GridSearchCV`. Kita akan mencari kombinasi parameter TF-IDF dan parameter `C` (regularisasi) dari NearestCentroid yang memberikan Macro F1-score tertinggi pada data validasi." ] }, { "cell_type": "code", "execution_count": 9, "id": "17ac210e", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:09.204468Z", "iopub.status.busy": "2025-08-17T11:26:09.204140Z", "iopub.status.idle": "2025-08-17T11:26:22.313171Z", "shell.execute_reply": "2025-08-17T11:26:22.312146Z" }, "papermill": { "duration": 13.125571, "end_time": "2025-08-17T11:26:22.315110", "exception": false, "start_time": "2025-08-17T11:26:09.189539", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Memulai Grid Search untuk NearestCentroid...\n", "Fitting 5 folds for each of 72 candidates, totalling 360 fits\n", "\n", "Parameter Terbaik: {'clf__metric': 'euclidean', 'clf__shrink_threshold': None, 'tfidf__min_df': 5, 'tfidf__ngram_range': (1, 2), 'tfidf__sublinear_tf': True}\n", "Skor Macro F1-score terbaik di CV: 0.5958\n" ] } ], "source": [ "# 1. Definisikan pipeline dengan model yang benar\n", "pipeline = Pipeline([\n", " ('tfidf', TfidfVectorizer()),\n", " ('clf', NearestCentroid()) \n", "])\n", "\n", "# 2. Buat parameter grid yang sesuai untuk NearestCentroid dan TfidfVectorizer\n", "param_grid = {\n", " 'tfidf__ngram_range': [(1, 1), (1, 2)],\n", " 'tfidf__min_df': [2, 3, 5],\n", " 'tfidf__sublinear_tf': [True, False],\n", " 'clf__metric': ['euclidean', 'manhattan'], \n", " 'clf__shrink_threshold': [None, 0.1, 0.5] \n", "}\n", "\n", "# 3. Jalankan GridSearchCV seperti sebelumnya\n", "grid_search = GridSearchCV(pipeline, param_grid, cv=kfold, scoring='f1_macro', n_jobs=-1, verbose=1)\n", "\n", "print(\"Memulai Grid Search untuk NearestCentroid...\")\n", "grid_search.fit(X_train_val, y_train_val)\n", "\n", "print(f\"\\nParameter Terbaik: {grid_search.best_params_}\")\n", "print(f\"Skor Macro F1-score terbaik di CV: {grid_search.best_score_:.4f}\")\n", "\n", "best_model = grid_search.best_estimator_" ] }, { "cell_type": "markdown", "id": "034dec89", "metadata": { "papermill": { "duration": 0.013789, "end_time": "2025-08-17T11:26:22.344307", "exception": false, "start_time": "2025-08-17T11:26:22.330518", "status": "completed" }, "tags": [] }, "source": [ "### 14. Evaluasi Terstruktur pada Test Set\n", "\n", "Dengan model dan parameter terbaik yang telah ditemukan, kita akan melakukan evaluasi final pada **data uji** yang belum pernah dilihat oleh model sebelumnya. Ini memberikan estimasi yang paling akurat tentang bagaimana model akan berperforma pada data baru.\n", "\n", "Kita akan menampilkan:\n", "- **Classification Report**: Metrik lengkap (precision, recall, F1-score) per kelas.\n", "- **Confusion Matrix**: Visualisasi untuk melihat di mana model melakukan kesalahan klasifikasi." ] }, { "cell_type": "code", "execution_count": 10, "id": "64beaa25", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:22.373729Z", "iopub.status.busy": "2025-08-17T11:26:22.373356Z", "iopub.status.idle": "2025-08-17T11:26:22.675242Z", "shell.execute_reply": "2025-08-17T11:26:22.674334Z" }, "papermill": { "duration": 0.319084, "end_time": "2025-08-17T11:26:22.677311", "exception": false, "start_time": "2025-08-17T11:26:22.358227", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Laporan Klasifikasi pada Data Uji (Test Set):\n", " precision recall f1-score support\n", "\n", " NEGATIF 0.54 0.66 0.60 59\n", " NETRAL 0.37 0.62 0.46 72\n", " POSITIF 0.90 0.73 0.80 331\n", "\n", " accuracy 0.70 462\n", " macro avg 0.60 0.67 0.62 462\n", "weighted avg 0.77 0.70 0.72 462\n", "\n" ] }, { "data": { "image/png": "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XbtW2bNn16xZs+ySufDw8FTFVLx4cW3dulXXr183/CPg9vuTnv8tAkgfrElEltO9e3flypVLQ4YM0cWLFw3nT548qblz50q6NV0qyXZ82+zZs+3Op4dSpUopJibGbsuXCxcu6KeffrLrd+XKFcNzb28qfbdvyyhcuLAqVqyo5cuX2yWi//77rzZv3pyur+NONWrUUN++ffXRRx/Jw8Pjrv2cnZ0NlbUffvjBsBVNzpw5JSnFhDqtxo4dq7Nnzyo4OFhBQUEqXry4goKCUv2tI+vWrbOLb/fu3fr7779Vt25dSXevLN/5eXJ2dpa/v7/WrVtn94+CI0eOaNOmTYa+kn1FNyYmJtUJ172sWLFCS5cula+vr2rWrCnp/yrK/72e1WrVvHnzDM+/28/G2dlZFovFrip+6tQp/fzzz6mKq27dukpMTDRsCZScnKyFCxfKxcXFFi+AzINKIrKcUqVKaezYserXr5+aNWtm+8aVhIQE7dy5U2vWrLHd+ODt7a02bdpo8eLFio6OVvXq1fXPP/9o2bJlatSokZ599tl0i6tZs2YaO3asevfurc6dO+v69etauHChypYta7vBQZImT56sv/76S/Xq1VPx4sV16dIlffPNN3riiSdsW8KkZMCAAerRo4fat2+vF1980bYFjru7+z2ngR+Wk5OT3n777fv2q1+/viZPnqyBAwfK19dX//77r1asWKGSJUva9StVqpTy5MmjRYsWKXfu3MqVK5d8fHwM/e5ny5Yt+uabb9S7d2899dRTkqTRo0erc+fOmjBhggYMGHDfMUqVKqUOHTqoQ4cOSkhI0Lx585QvXz51795d0q3lDdWrV9fMmTOVmJioIkWKaPPmzSmuyQwMDNRvv/2mTp06qUOHDkpKStKCBQtUoUIFHTx40Navdu3acnFxUa9evfTKK68oLi5OS5cuVcGCBRUZGZnq17927VrlypVLiYmJtm9c2bFjh7y9vTVx4kRbv3LlyqlUqVL67LPPdP78ebm5uWnt2rUpJum338cRI0bI399fzs7OCggIUL169TR79mx1795dzZs3t31mS5UqZffa7qZBgwby9/fX6NGj9c8//8jX11fx8fFav369duzYoXfffdduY3AAmQNJIrKkhg0b6vvvv9esWbP0888/a+HChXJ1dZWXl5eCgoL08ssv2/qOGDFCJUqU0LJly7Ru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rly6fPlyis/97+9Ryf5zDzwqJIlZUK1atXTixAlNmzZNAwYMuGu/ggULKk+ePCme++KLL3T27FmtWbNGRYoUsbUXL15c/v7+slqtdv0jIiK0c+dOhYSEaOvWrfrxxx/VokUL5cuXz9bnxo0bkqR8+fLJw8Pjvq8jd+7cqeqHrOVhP58FChSw/fl2knm3vnny5JGHh4c8PDzUt29fzZs3z1apvG3btm26fv26+vTpo+XLl2vHjh2qVq3aw7xEZEGurq623zcdO3bUunXrtH79epUsWVJr167VlClT1KBBA1v/4cOH68qVKxo8eLBq1aqlXLlyaf369erYsaNeeOEFWz9vb++7XvO/v9/c3d1lsVgMv/PuliSm9vcokJGYbs6CnJyc9N5772nBggU6d+5cmp+fnJysH374QS1atLBLEP/LYrHYHX/77beqV6+e3N3d1bJlS4WFhT1Q7Hj8Pezn80HcvHnT9pm8s3odFhamgIAAubi4qHnz5nx2IelWxTsxMVErVqxQmTJl7BLE215//XVduXJFv//+uySpUKFC+uOPPxQVFfWowwVMQZKYRTVu3FgVK1bUpEmT7tqnXr168vX1tT0CAgIkSVFRUYqOjla5cuXs+rdt29bW97333rO1Jycna9myZWrZsqUkqVmzZtq+fbsiIiIe6jWMHTvWLr558+Y91HjIPB7m85kW7733nnx9fVW5cmWNHj1axYsXt6vyxMbGau3atWrVqpUkqWXLlvrhhx8UFxeX9heFx4LVatXvv/+uTZs2qUaNGjp+/LjKly+fYt/b7ceOHZMkDRw4UFFRUapdu7ZatGihjz/+WBs3bsyQOF955RW7/z727duXIdcB7oXp5izs/fff12uvvaZu3bqleP7rr79W7ty5bcfZst37xx0aGqrExESNHTtW169ft7Vv3rxZ8fHxqlevnqRb04G1a9dWeHi43n333QeOv1u3bmrbtq3tOH/+/A88FjKf9P58pmTgwIGqVauWIiIiNHr0aA0ZMsRuCcTKlStVqlQp25RgxYoVVbx4ca1evVovvfRSmq+HrGvDhg3y9fVVYmKirFarmjdvrsDAQG3YsMGwvOZuKlSooJUrV2rPnj3asWOH/vrrL7311ltq06aNRo4cma7xjh8/3i55LVq0aLqOD6QGSWIWVr16dfn7+2vcuHF2ydZtJUqUuOuarzx5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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y_pred_test = best_model.predict(X_test)\n", "\n", "print(\"Laporan Klasifikasi pada Data Uji (Test Set):\")\n", "print(classification_report(y_test, y_pred_test))\n", "\n", "# Visualisasi Confusion Matrix\n", "cm = confusion_matrix(y_test, y_pred_test, labels=best_model.classes_)\n", "plt.figure(figsize=(8, 6))\n", "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=best_model.classes_, yticklabels=best_model.classes_)\n", "plt.title('Confusion Matrix pada Data Uji')\n", "plt.xlabel('Prediksi')\n", "plt.ylabel('Aktual')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "5125fc1b", "metadata": { "papermill": { "duration": 0.014728, "end_time": "2025-08-17T11:26:22.707197", "exception": false, "start_time": "2025-08-17T11:26:22.692469", "status": "completed" }, "tags": [] }, "source": [ "**Interpretasi Singkat:**\n", "- Model menunjukkan performa yang sangat baik pada kelas **POSITIF** dan **NEGATIF**, terlihat dari F1-score yang tinggi.\n", "- Kelas **NETRAL** sedikit lebih sulit untuk diprediksi, yang merupakan hal umum dalam analisis sentimen karena seringkali ambigu.\n", "- Macro Avg F1-score pada data uji memberikan gambaran performa keseluruhan model yang solid." ] }, { "cell_type": "markdown", "id": "7374320d", "metadata": { "papermill": { "duration": 0.0142, "end_time": "2025-08-17T11:26:22.737619", "exception": false, "start_time": "2025-08-17T11:26:22.723419", "status": "completed" }, "tags": [] }, "source": [ "### 15. Analisis Error\n", "\n", "Melihat contoh di mana model salah klasifikasi dapat memberikan wawasan tentang keterbatasannya. Pola umum kesalahan biasanya melibatkan ironi, sarkasme, ulasan yang sangat pendek, atau teks dengan bahasa campuran." ] }, { "cell_type": "code", "execution_count": 11, "id": "4eabd655", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:22.768123Z", "iopub.status.busy": "2025-08-17T11:26:22.767625Z", "iopub.status.idle": "2025-08-17T11:26:22.782843Z", "shell.execute_reply": "2025-08-17T11:26:22.781912Z" }, "papermill": { "duration": 0.032428, "end_time": "2025-08-17T11:26:22.784470", "exception": false, "start_time": "2025-08-17T11:26:22.752042", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Contoh Kesalahan Klasifikasi (10 sampel acak):\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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", "
text_bersihlabel_aktuallabel_prediksi
2692artistik instagramable tiket masuk super murahPOSITIFNEGATIF
1109wisata sejarah gedung bekas kantor kereta api ...POSITIFNETRAL
2107semarang hebatNEGATIFNETRAL
169sana sejuk sekali benar kata orang banyak seka...POSITIFNETRAL
93place many window door as museum bagus place v...POSITIFNETRAL
1723lawang sewu golong heritage cagar budaya meman...POSITIFNETRAL
2556iconic historical building very beautiful shou...NEGATIFNETRAL
574tiket umum damping pandu perlu bayar pikir san...POSITIFNEGATIF
2874bagus ajar sejarah kereta api indonesiaPOSITIFNETRAL
879sejarahNETRALPOSITIF
\n", "
" ], "text/plain": [ " text_bersih label_aktual \\\n", "2692 artistik instagramable tiket masuk super murah POSITIF \n", "1109 wisata sejarah gedung bekas kantor kereta api ... POSITIF \n", "2107 semarang hebat NEGATIF \n", "169 sana sejuk sekali benar kata orang banyak seka... POSITIF \n", "93 place many window door as museum bagus place v... POSITIF \n", "1723 lawang sewu golong heritage cagar budaya meman... POSITIF \n", "2556 iconic historical building very beautiful shou... NEGATIF \n", "574 tiket umum damping pandu perlu bayar pikir san... POSITIF \n", "2874 bagus ajar sejarah kereta api indonesia POSITIF \n", "879 sejarah NETRAL \n", "\n", " label_prediksi \n", "2692 NEGATIF \n", "1109 NETRAL \n", "2107 NETRAL \n", "169 NETRAL \n", "93 NETRAL \n", "1723 NETRAL \n", "2556 NETRAL \n", "574 NEGATIF \n", "2874 NETRAL \n", "879 POSITIF " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Pastikan X_test adalah Series untuk bisa menggunakan index dengan boolean mask\n", "X_test_series = pd.Series(X_test, index=y_test.index)\n", "\n", "error_mask = y_test != y_pred_test\n", "error_df = pd.DataFrame({\n", " 'text_bersih': X_test_series[error_mask],\n", " 'label_aktual': y_test[error_mask],\n", " 'label_prediksi': pd.Series(y_pred_test, index=y_test.index)[error_mask]\n", "})\n", "\n", "print(\"Contoh Kesalahan Klasifikasi (10 sampel acak):\")\n", "display(error_df.sample(min(10, len(error_df)), random_state=SEED))" ] }, { "cell_type": "markdown", "id": "9bf913a4", "metadata": { "papermill": { "duration": 0.01436, "end_time": "2025-08-17T11:26:22.814503", "exception": false, "start_time": "2025-08-17T11:26:22.800143", "status": "completed" }, "tags": [] }, "source": [ "### 16. Interpretabilitas (Fitur Penting)\n", "\n", "Untuk model **NearestCentroid**, kita tidak melihat koefisien seperti pada model linear. Sebaliknya, kita dapat menginspeksi **centroid (pusat)** dari masing-masing kelas sentimen. Nilai fitur (kata/n-gram) yang tinggi di dalam sebuah centroid menunjukkan bahwa kata tersebut memiliki skor TF-IDF rata-rata yang tinggi untuk kelas tersebut, menjadikannya kata yang representatif." ] }, { "cell_type": "code", "execution_count": 12, "id": "2c9846e3", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:22.846092Z", "iopub.status.busy": "2025-08-17T11:26:22.845735Z", "iopub.status.idle": "2025-08-17T11:26:23.977928Z", "shell.execute_reply": "2025-08-17T11:26:23.976929Z" }, "papermill": { "duration": 1.150865, "end_time": "2025-08-17T11:26:23.980166", "exception": false, "start_time": "2025-08-17T11:26:22.829301", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAB8YAAAJQCAYAAAD8AA6pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3yN9/vH8XcSsUeM0MaqlVgJkUiMqL2pWa1W7E2VUoIWNWrWKFWqZmhp1SylRq0isaX23qtmiZGcnN8ffjlfR3JISHKOk9fz8eijzn3ucd2fz33OuXJf9/25HYxGo1EAAAAAAAAAAAAAANgpR2sHAAAAAAAAAAAAAABAYqIwDgAAAAAAAAAAAACwaxTGAQAAAAAAAAAAAAB2jcI4AAAAAAAAAAAAAMCuURgHAAAAAAAAAAAAANg1CuMAAAAAAAAAAAAAALtGYRwAAAAAAAAAAAAAYNcojAMAAAAAAAAAAAAA7BqFcQAAAAAAAAAAAACAXUth7QAAAADwZvHw8Ij3Mn5+fgoODk6EaOLn0KFD2rlzpw4dOqRDhw7p3LlzMhqNGjNmjBo0aGBxuaCgIC1duvSF6z548KBSpUoV51gmT56sKVOmvHCewoULa/ny5VqyZIn69++vRo0aadSoUXHehrVVqVJFly5dMpvm7OysLFmyqFixYmrWrJkqV65spehgTdHHxoYNG5QrVy6z906ePKnx48dr3759unPnjqKiotS9e3d98sknVoo2cUR/B7zo+/Hbb7/Vd999J2dnZ40ZM0Z16tR5pW3Z+nfI9evXNW/ePG3dulXnz59XRESEXFxclC1bNhUvXlylSpVSgwYN5OTkZO1QLbp48aKqVq2qnDlzauPGjdYOx2q6deumrVu36s8//9Rbb70V5+UCAwMVGhqqefPmyd/fPxEjTLht3r59W7/88ou2bdum06dP6+7du0qZMqXc3NxUsmRJ1a1bV2XLlk2EyN8M0fnisWPH4rWcpX5p3bq1Dh48qLVr18rV1TVBYwUAAEDyQWEcAAAA8dKoUaMY027cuKFt27ZZfD9//vyJHldcfPfdd9qwYcMrL1+qVCnlzZs31vccHV9tMKZs2bKpQoUKsb739ttvv3DZN6UQ82y7/ffffzpy5Ig2btyojRs3qnXr1urfv7+VI0yeXrVo8TLRF5KMHDlSjRs3jtey4eHh6tixoy5duqTixYsrICBATk5OKlKkSILGaOuMRqOGDx+u+fPnK02aNJo8ebLF74k33d69e9WpUyfdu3dPadOmlZeXl7Jly6YHDx7o+PHj+vXXX/Xrr7+qZs2aSpcundXifNHFHHhq+/btWr9+vdq2bRuvovibaNmyZfrqq68UHh6ulClTysvLSzly5NCjR490+vRp03Fbq1YtTZo0ySoxvik5Qlz17t1bTZs21fjx4zVy5EhrhwMAAIA3FIVxAAAAxEtsdxuGhISYCuO2eDditJIlS6pQoUIqWrSoihYtqgEDBig0NDTOy7///vvxLvS9TP78+V/aZtWrV1eJEiWUIUOGBN12Unm+3SIjIzVy5EjNnz9fc+bMUd26deXl5WXFCJHU5syZo4iICOXIkcNselhYmC5duiRvb28tXLjQStFZV2RkpIKCgrRy5UplypRJ06dPl7e3t7XDShRPnjxRz549de/ePdWrV09fffWV0qdPbzbPqVOn9Ntvv9n03eKSlCNHDq1evVrOzs7WDsVqRo4cqVSpUqljx47WDiVORo8erYcPH8rNzS1ey/38888aMmSIHBwc1KFDB3Xu3DnGcXvy5ElNnjxZ586dS8iQ3yirV69O0PV5enqqcuXKWrp0qVq1aqXChQsn6PoBAACQPFAYBwAAQLLxppysf16GDBne2KJ4bFKkSKG+fftq2bJlun//vv766y8K48lMnjx5Yp1+5coVSdI777yThNHYjkePHqlnz57666+/5OrqqlmzZsnd3d3aYSWaPXv26Nq1a0qRIoWGDRumtGnTxpinQIEC6tu3rxWiix9nZ2cVKFDA2mFYzd9//63jx4+rbt26ypw5s7XDiZP4FsSlpxdqjBgxQtLT0TFat24d63wFCxbUpEmTtGvXrtcJ8Y2WGJ+Hpk2b6q+//tLcuXO5axwAAACv5NXGewQAAADi4erVqxo2bJhq1KghT09P+fj46MMPP9TChQtlMBhizL9kyRJ5eHgoKChIt2/f1ldffaVKlSqpePHiqly5sr7++mvdvXvXCntiHc+2R7SgoCBVrVpVknTp0iV5eHiY/ffsfB4eHlqyZEmc1/389Dt37mjEiBGqVq2aihcvrsDAwNfep1SpUpmGV79582as8+zYsUPdu3dXQECAihcvrrJly6pbt27at29frPM/u++//PKLGjdurJIlS8rX11cdOnTQ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flxXr15VnTp1VKNGjUSNJVWqVAoICNDGjRsVEhIS4zMmSWPGjFFgYKBWrVqlXbt2ycfHR48ePdLOnTvl4eEhb2/vGN8nRYsWNf1+NWzYUP7+/sqUKZOOHDmiM2fOqFOnTpo2bVqi7ltsWrRooTRp0mj48OGaPn265syZIy8vL+XIkUOPHz/W6dOnTRdkPHtBh6Ojo7777jt16tRJS5cu1dq1a+Xh4SE3NzdFRETowoULOn78uAwGgxo3bmwa2eJVxSVHiItBgwbp9OnTOnDggKpXry5/f385OTlp165dunXrlnLlyqVx48bFeX2vcixEi4iI0K5du0zHHAAAABBfFMYBAACQqLy8vLRs2TLNmDFDW7Zs0bp165QyZUoVLVpUDRo00Pvvv2/x5G+mTJn0yy+/aOLEidq8ebNu3rypbNmyqX79+urevbvpOcFxdevWLR04cCDG9PPnz+v8+fOxLuPh4aFWrVrpn3/+0enTp7V3714ZjUZly5ZNNWvWVJMmTWItAiSVoUOHysXFRVu3btXatWtNd3E+e9J74sSJmjp1qn7//XeFhoYqY8aMKlu2rD799NNY75BNSg0bNtSsWbN08uRJzZw5U71795Yk9e3bV9WqVdNPP/2kvXv3auvWrXJ2dparq6v8/PxUqVIli8WeAQMGKF++fFq0aJHCwsKUIkUKVahQQV27do3THW2xKVSokFasWKGFCxdq/fr1OnbsmPbv3y8XFxe99dZbatu2rapXr26av0SJEurdu7d2796tU6dO6ciRI3JyctJbb72ljz/+WC1atIhRTEufPr1mzZql1atXa8WKFTp06JCOHj2qdOnSKXv27Kpfv76qVq2qPHnyvNI+PK9nz55ydHTUunXrtH79etOx06VLF2XOnFk1atTQ/PnzNWXKFB09elQXLlxQ7ty51b17d7Vt29biM3ILFy6syZMna+bMmTpw4IB27Ngho9Got956K0kK49WrV1fVqlU1ffp0053NRYsWVYsWLdSoUaNYl3md4y2xvP3225o/f75atmypEydOKDAwUHPnzo33sfgiJUqU0G+//aaJEycqLCxMGzdu1Ntvv60WLVqoS5cuZne7RqtSpYru37+v3bt369y5czpw4IBSp06tt956Sx07dtTHH39sNuz5i1SoUEEzZ87Ujh07tHfvXl28eNF0Z37WrFlVrVo11a1b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HWr1r0IBAACKEm9vb8XExGj9+vWKjIyUJHXs2FElSpRQeHi4Dh8+rF9++UXjx49Xp06dLLdRr1KlihISEnTs2DGlpqYqIyNDXl5eOnXqlNauXavk5GTFxMTo+++/v+P258+frzVr1ujo0aNKTExUbGysPDw89MADD6hZs2YKCAjQgAEDtGXLFp08eVLx8fGKjo6+r5N9Xl5eysjIsGTNlStX6ssvv8zVstWrV9eqVat09OhR7dmzR8OGDcuRL3OjR48eSkxM1JQpU5SYmKhvv/1WK1askKT7vmofAAAA9+/mjOzi4qKAgAB98sknOnr0qOLi4jR9+vT73s5jjz2m/fv3a+XKlUpKStKHH36o3377LU/rePzxx1W1alWFhYXp0KFD2rlzZ77UBgAAUJiKxcR4586ddfnyZXXr1k3vvfeeevXqpR49esjd3V1RUVGKjY1V+/btNXfuXIWFhd3zdoKDg5WRkaHnn38+x/svvPCC2rZtq8GDB6t79+46f/68XnrpJavr8fDw0MKFC5WQkKBhw4bJbDbfc00AAABG4ePjo4ULF2rt2rWKioqSq6ur5s2bp/Pnzys4OFjvvPOOgoKCNHr0aMsy3bt3l7e3t55//nkFBQUpPj5erVq10iuvvKL33ntPnTp10q5du9SvX787brt06dL697//reDgYAUHB+v333/XJ598IkdHRzk4OOiTTz5R48aNNWLECD399NMaMmSIfv/99zs+5/xuateurREjRmju3Lnq0KGDVq9erSFDhuRq2cjISF24cEFdunTR8OHDFRISogcffDBP269atapmzJihDRs26LnnntMXX3yhN998U9K1RwEBAADA9m7OyBMmTJDZbFbXrl01YcIEDRo06L638cQTT6h///6aMmWKgoODlZaWps6dO+dpHSaTSR999JEuXbqk4OBgjRo1ypItS5Ysed81AgAAFAaHbB4Uk28++ugjxcbGavXq1TbZvtls1u7duzVrXYL2HfvDJjUAueVXraIWj3nZ1mXc0fX/pwICAgz5LAxbojfW0Rvr6I11Ru2NUevCvfv444/15Zdf6ocffsjV58mXAO5XUcj9RsQx2D4xrtfQh4L35Zdfavbs2dq8eXOBbmfnzp166aWXtGHDBlWrVi3Xy5Exgbu7nqHMZjO/Kw2EY5jxMCbGY4sxycs2nQqlIjuXlpam33//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Vas0Z84cjR07Vo8++qjWrl2r+fPn6+GHHy7c5gAAUEjyO9MXFDIfbnb69GkNHTpU7777rlq3bq20tDTt2LFD2dnZWrVqlWbMmKExY8aoTp06OnjwoEaPHq1SpUqpS5cut11f6dKlNXHiRFWsWFGHDx/W6NGjVbp0ab3xxhuWzyQnJ2vdunWaNWuWHB2vXTuVnp6u1157TX5+frp06ZJmzJihAQMG6JtvvrF8RrqWQcPCwuTl5aXo6GgNHTpU69evl5NTsT3VDACAYdkqIxs18xbLtLJ48WJFR0drzpw5atKkiU6ePJnrZQcOHKjHH3/c8trNzU21a9e2vB40aJC+//57/b//9//08ssvW95/8skn1bNnT0nSG2+8oQULFmjbtm3y8fHR6tWrJUnvv/++SpYsqRo1auj06dMaNWrU/e4qACCX/Pz88mU9ZrNZ+/btk7+/v0wmU76s017QG+uM2pvrdeHugoODLf9etWpVRUREKDg4WGlpaSpdurSaNGmir7/+WmazWb/99pucnZ31zDPPKC4uzjIx3rhx41yv77rBgwerSZMmkqQ+ffqoT58+unLlikqWLKnPPvtMwcHBev755yVJb731ln766SfLlUcAANib/Mr0BcWoma+wkTFv9eeffyozM1Nt2rRRlSpVJP3vv+eZM2cqPDxcbdu2lXQtGx45ckRLliyxOjHev39/y78//PDDSkxM1Nq1a3NMjGdkZGjy5Mlyd3e3vNeuXbsc65kwYYKCgoJ05MgR1apVy/J+79699Y9//EPStXOlzz77rI4fPy5fX9/76AIAACgIhZ2RbZF585Ivi93E+Lp165SamqrPP//ccpugvPD398/xOi0tTbNmzdKmTZv0559/ymw26/Lly0pJScnxuRv/w3NwcFCFChUst8NMTEyUn5+fSpYsaXU7AICCld8HaZPJVKxPdt0JvbGO3hRd+/fv16xZs3To0CFduHBB2dnZkqRTp06pRo0aCgwMVFpamg4cOKBdu3apcePGatq0qT755BNJ0vbt2xUaGprr9V13Y8b08PCQJJ09e1aenp5KTEzUSy+9lKPO+vXr65dffimYJgAAYGNFJUeR+XCz2rVrKygoSB07dlTz5s3VvHlztWvXTs7OzkpOTlZERIRGjx5t+XxmZqbKli1rdX3ffvutYmJidOLECV26dEmZmZkqU6ZMjs94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33zzjeLj4+Xj4yMfHx8dO3ZMFotFMTExCgoKUseOHRUcHKx33333mvWEh4drxowZev311+Xv76+IiAhJUlxcnEJCQuTn56devXpp+vTpys3NlSR9/fXXmjx5si5cuGCtYdGiRZKkpKQkDR48WJ07d1aPHj00fvx45eTklLv9gwcPKisrS6+88or8/PzUuHFjde3aVePGjZOfn1+Zy1gsFk2ePFl9+/bViRMnJEmrV69Wnz591KFDBwUHByspKclmGR8fH61evVqRkZHy8/PTkiVLbB53c3NT/fr1rT+33357qWmenp7W+e+++26bx2rVqnXNvi7JxcVF9evXV4MGDeTt7a2wsDCtWbNGeXl5mjt3rs28xcdMyR83N7dy152QkKA//OEP6tSpk5577jmdP3/e5vGsrCxFRUWpe/fu6ty5sx577DGbY7AsVzseirfZrVs3/etf/1JwcLA6deqk0aNHKz8/X4mJiQoKCtLvfvc7vfbaa7JYLOVu591339WOHTu0YsUKPfXUU2rbtq2aNm2qkJAQvf/++9YrTIuKihQbG2s93gcMGKCUlBTrer7++mv5+Pjoq6++0uDBg9WpUycNGTJEhw8ftta7ePFi7du3z3oMJyQkSCr/WLmeY6zkbYh2796tRx99VL6+vho8eDC3HwIAOBQZ0xYZk4xZEhkTAICKI1/aIl+SL0siXwIVxyfGAejAgQNKS0tTo0aNrNMKCgrUvn17jRgxQl5eXtq8ebNeeukl3XffferYsaOmTJmio0ePqlWrVho9erSkK1feFRUV6Z577tGbb76pu+66S2lpaZo2bZrq16+vfv36XbWOxMREPfnkk3rvvfes01xcXDRlyhQ1adJE2dnZevXVVzV37lxNnz5dnTt3VkxMjBYuXGh9IS++2vDy5csaM2aMWrZsqZycHM2ePVvR0dFaunRpmduuW7euXF1d9c9//lNPP/30VcNScf+8+OKLOn78uFavXq26devqs88+08yZMzV58mR1795dmzdvVkxMjO655x79z//8j3XZxYsXa/z48ZoyZco1t1MV7r77boWEhOjDDz+UxWK5oRrT09M1ZcoUvfjii+rTp4+2bt1qDfzF8vLy1KtXL40bN04eHh5KSkpSZGSkUlJSbI7Fkq52PBT75ZdftHLlSs2fP1+5ubl6/vnn9fzzz6t27dp6++23lZ2drRdeeEFdunQp95j8+OOP1b17d7Vr167UY+7u7tarHmNjY7V+/Xq9+uqrat68ub799ltNnDhRdevW1QMPPGBdZv78+YqOjlbdunX1yiuvKCYmRmvWrFG/fv303//+1+aK2pK3f/rtsXK9x1ix3NxcjRo1St27d9fcuXN17Ngxvf766+XsNQAA7IuMScYsiYxJxgQA4GaRL8mXJZEvyZfAjWBgHKimNm/erM6dO+vy5csqKCiQq6urpk6dan28YcOG1isepStXQ27btk2ffvqpOnbsqNq1a8vd3V2enp42tz1xc3OzhkxJatq0qXbt2qWUlJRrhsrmzZvrpZdespk2bNgw6+9NmjTR2LFj9corr2j69Ony8PBQ7dq1rVcMlhQaGmpTw5QpUxQaGqrc3Nwyr0hs2LChXn75Zc2dO1eLFy9Whw4d5O/vrwEDBqhp06Y28+bm5mrkyJEqKChQfHy8NQS88847GjRokJ566ilJUosWLay3rSn5gt+/f3899thjV+2L69WrVy+bv7/44gvVqVPnptfbsmVL5ebm6vz587r77rsl/XrMFOvZs6cWLlxY5vLx8fHq2bOnRowYIelKX6SlpWnr1q3Wedq0aaM2bdpY/x47dqw2bdqkL774Qn/605/KXO/VjodihYWFmj59uu677z5JUnBwsNavX68vv/xStWrV0v333y9/f3/95z//KfeYzMzMtAmFZSkoKFBsbKzi4uKs/dK0aVPt3LlTa9eutVl+3Lhx1r9HjhypkSNH6tKlS/L09LS5ova3fnusvPjii9d1jBXbsGGDioqKNHPmTN12221q1aqVfvjhB5v+AgDAnsiYtsiYtsiYZEwAACqKfGmLfGmLfEm+BCqKgXGgmvL399f06dOVn5+vFStWyM3NTcHBwdbHLRaLlixZopSUFP34448qLCxUQUGBzS1wyrNq1Sp9+OGHOnHihC5duqTCwkJreNixY4c1aEjSq6++qgEDBkiS2rdvX2pd27dvV2xsrA4fPqyLFy/KYrHo0qVLys/PV82aNcut4fvvv7fe3uWnn36SYRiSpJMnT+r+++8vc5mnnnpKAwcO1DfffKP09HSlpKQoNjZWb731lnr06GGdb/z48brnnnv07rvv2vTH4cOH9cQTT9iss0uXLoqPj7eZ1qFDh3LrrqhVq1bZhOQ777xTkmzCX0hIiGbMmFGh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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Pastikan numpy dan matplotlib.pyplot sudah diimpor\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "# Mengambil nama fitur dari langkah TF-IDF\n", "tfidf_features = best_model.named_steps['tfidf'].get_feature_names_out()\n", "\n", "# MENGGANTI .coef_ MENJADI .centroids_\n", "# Ini adalah perubahan kunci. Kita mengambil pusat (centroid) dari setiap kelas.\n", "centroids = best_model.named_steps['clf'].centroids_\n", "\n", "# Proses plotting tetap sama, hanya sumber datanya yang berubah\n", "fig, axes = plt.subplots(1, 3, figsize=(20, 6))\n", "fig.suptitle('Top 15 Fitur Representatif per Kelas Sentimen (dari Centroid)', fontsize=16)\n", "\n", "for i, label in enumerate(best_model.classes_):\n", " # Mengambil centroid untuk kelas saat ini\n", " class_centroid = centroids[i]\n", " \n", " # Mengambil indeks dari 15 fitur dengan nilai tertinggi di dalam centroid\n", " top_features_indices = np.argsort(class_centroid)[-15:]\n", " \n", " # Mengambil nama fitur dan nilainya\n", " top_features = tfidf_features[top_features_indices]\n", " top_feature_values = class_centroid[top_features_indices]\n", " \n", " ax = axes[i]\n", " ax.barh(top_features, top_feature_values, color=sns.color_palette(\"viridis\", 15))\n", " ax.set_title(f'Sentimen: {label}')\n", " ax.set_xlabel('Rata-rata Skor TF-IDF dalam Centroid')\n", " ax.invert_yaxis() # Tampilkan fitur teratas di paling atas\n", "\n", "plt.tight_layout(rect=[0, 0, 1, 0.96])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fd67ee5c", "metadata": { "papermill": { "duration": 0.016247, "end_time": "2025-08-17T11:26:24.013758", "exception": false, "start_time": "2025-08-17T11:26:23.997511", "status": "completed" }, "tags": [] }, "source": [ "### 17. Simpan Artefak\n", "\n", "Langkah terakhir di bagian ini adalah menyimpan semua artefak yang relevan agar hasil dapat direproduksi dan model dapat digunakan kembali di masa depan.\n", "\n", "- **Pipeline Model**: Pipeline TF-IDF + LinearSVC yang sudah terlatih.\n", "- **Dataset Bersih**: Dataset final setelah preprocessing dan deduplikasi.\n", "- **Metadata**: Informasi penting tentang proses (versi pustaka, seed, dll)." ] }, { "cell_type": "code", "execution_count": 13, "id": "27641ea8", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:24.048501Z", "iopub.status.busy": "2025-08-17T11:26:24.048145Z", "iopub.status.idle": "2025-08-17T11:26:24.159887Z", "shell.execute_reply": "2025-08-17T11:26:24.158673Z" }, "papermill": { "duration": 0.131831, "end_time": "2025-08-17T11:26:24.161868", "exception": false, "start_time": "2025-08-17T11:26:24.030037", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pipeline model tersimpan di artefak/sentimen_tfidf_linearsvc.pkl\n", "Dataset bersih tersimpan di artefak/dataset_clean.csv\n", "Metadata tersimpan di artefak/run_metadata.json\n" ] } ], "source": [ "# 1. Simpan pipeline model\n", "joblib.dump(best_model, 'artefak/sentimen_tfidf_linearsvc.pkl')\n", "print(\"Pipeline model tersimpan di artefak/sentimen_tfidf_linearsvc.pkl\")\n", "\n", "# 2. Simpan dataset bersih\n", "df_final.to_csv('artefak/dataset_clean.csv', index=False)\n", "print(\"Dataset bersih tersimpan di artefak/dataset_clean.csv\")\n", "\n", "# 3. Simpan metadata\n", "run_metadata = {\n", " 'seed': SEED,\n", " 'library_versions': {\n", " 'pandas': pd.__version__,\n", " 'sklearn': sklearn.__version__,\n", " 'gensim': gensim.__version__\n", " },\n", " 'dataset_size': {\n", " 'initial': len(df_raw),\n", " 'after_cleaning': len(df_clean),\n", " 'final_dedup': len(df_final)\n", " },\n", " 'split_size': {\n", " 'train': len(X_train),\n", " 'validation': len(X_val),\n", " 'test': len(X_test)\n", " },\n", " 'best_model_params': grid_search.best_params_,\n", " 'best_cv_f1_macro': grid_search.best_score_\n", "}\n", "\n", "with open('artefak/run_metadata.json', 'w') as f:\n", " json.dump(run_metadata, f, indent=4)\n", "print(\"Metadata tersimpan di artefak/run_metadata.json\")" ] }, { "cell_type": "markdown", "id": "e94cb646", "metadata": { "papermill": { "duration": 0.016377, "end_time": "2025-08-17T11:26:24.195679", "exception": false, "start_time": "2025-08-17T11:26:24.179302", "status": "completed" }, "tags": [] }, "source": [ "---" ] }, { "cell_type": "markdown", "id": "06f1b8df", "metadata": { "papermill": { "duration": 0.016824, "end_time": "2025-08-17T11:26:24.228792", "exception": false, "start_time": "2025-08-17T11:26:24.211968", "status": "completed" }, "tags": [] }, "source": [ "## Bagian II: Pemodelan Topik (Unsupervised LDA)" ] }, { "cell_type": "markdown", "id": "333b88c8", "metadata": { "papermill": { "duration": 0.016522, "end_time": "2025-08-17T11:26:24.261921", "exception": false, "start_time": "2025-08-17T11:26:24.245399", "status": "completed" }, "tags": [] }, "source": [ "### 18. Persiapan Korpus LDA\n", "\n", "Untuk LDA, kita memerlukan representasi data yang sedikit berbeda. Kita akan menggunakan seluruh korpus teks bersih (`text_bersih`) untuk membangun:\n", "\n", "- **Token**: Memecah setiap ulasan menjadi daftar kata-kata.\n", "- **Kamus (Dictionary)**: Pemetaan unik dari setiap kata ke sebuah ID.\n", "- **Korpus (Bag-of-Words)**: Representasi setiap dokumen sebagai daftar pasangan (ID kata, frekuensi).\n", "\n", "Kita juga akan melakukan penyaringan untuk menghapus kata-kata yang terlalu jarang atau terlalu sering muncul, yang biasanya tidak informatif untuk pemodelan topik." ] }, { "cell_type": "code", "execution_count": 14, "id": "a138a96f", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:24.296994Z", "iopub.status.busy": "2025-08-17T11:26:24.296620Z", "iopub.status.idle": "2025-08-17T11:26:24.391730Z", "shell.execute_reply": "2025-08-17T11:26:24.390600Z" }, "papermill": { "duration": 0.115076, "end_time": "2025-08-17T11:26:24.393421", "exception": false, "start_time": "2025-08-17T11:26:24.278345", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mempersiapkan korpus untuk LDA...\n", "Jumlah dokumen valid untuk LDA (setelah filter < 3 token): 2741\n", "Ukuran kamus setelah filtering: 970\n", "Persiapan korpus selesai.\n" ] } ], "source": [ "print(\"Mempersiapkan korpus untuk LDA...\")\n", "# 1. Tokenisasi teks\n", "texts_for_lda = [doc.split() for doc in df_final['text_bersih']]\n", "\n", "# Filter dokumen yang terlalu pendek\n", "texts_for_lda_filtered = [text for text in texts_for_lda if len(text) >= 3]\n", "print(f\"Jumlah dokumen valid untuk LDA (setelah filter < 3 token): {len(texts_for_lda_filtered)}\")\n", "\n", "# 2. Bangun Kamus\n", "dictionary = Dictionary(texts_for_lda_filtered)\n", "\n", "# 3. Filter kata ekstrem\n", "dictionary.filter_extremes(no_below=5, no_above=0.5) # Kata harus muncul min 5 kali, maks di 50% dokumen\n", "print(f\"Ukuran kamus setelah filtering: {len(dictionary)}\")\n", "\n", "# 4. Bangun Korpus (Bag-of-Words)\n", "corpus = [dictionary.doc2bow(text) for text in texts_for_lda_filtered]\n", "\n", "print(\"Persiapan korpus selesai.\")" ] }, { "cell_type": "markdown", "id": "3c1f2f50", "metadata": { "papermill": { "duration": 0.016668, "end_time": "2025-08-17T11:26:24.426726", "exception": false, "start_time": "2025-08-17T11:26:24.410058", "status": "completed" }, "tags": [] }, "source": [ "### 19. Pencarian Jumlah Topik Optimal (Coherence c_v)\n", "\n", "Menentukan jumlah topik (k) yang tepat adalah langkah krusial dalam LDA. Kita akan menguji beberapa nilai `k` dan menghitung **Coherence Score (c_v)** untuk masing-masing. Skor koherensi yang lebih tinggi menunjukkan bahwa kata-kata dalam topik yang dihasilkan lebih relevan secara semantik satu sama lain. Kita akan memilih `k` yang memberikan skor koherensi tertinggi." ] }, { "cell_type": "code", "execution_count": 15, "id": "3ed7ce34", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:26:24.462233Z", "iopub.status.busy": "2025-08-17T11:26:24.461852Z", "iopub.status.idle": "2025-08-17T11:27:28.063005Z", "shell.execute_reply": "2025-08-17T11:27:28.061908Z" }, "papermill": { "duration": 63.621979, "end_time": "2025-08-17T11:27:28.065539", "exception": false, "start_time": "2025-08-17T11:26:24.443560", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mencari jumlah topik optimal dengan Coherence Score (c_v)...\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fcb5658587734a2a813f8d791d443079", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/6 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Jumlah topik optimal yang ditemukan: k = 12\n" ] } ], "source": [ "coherence_values = []\n", "model_list = []\n", "k_values = range(4, 16, 2) # Uji k dari 4 hingga 14 dengan step 2\n", "\n", "print(\"Mencari jumlah topik optimal dengan Coherence Score (c_v)...\")\n", "for k in tqdm(k_values):\n", " lda_model = LdaMulticore(corpus=corpus, id2word=dictionary, num_topics=k, random_state=SEED, passes=10, workers=os.cpu_count()-1)\n", " model_list.append(lda_model)\n", " \n", " coherence_model_lda = CoherenceModel(model=lda_model, texts=texts_for_lda_filtered, dictionary=dictionary, coherence='c_v')\n", " coherence_values.append(coherence_model_lda.get_coherence())\n", "\n", "# Plot hasil\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(k_values, coherence_values, marker='o')\n", "plt.title('Coherence Scores untuk Berbagai Jumlah Topik (k)')\n", "plt.xlabel('Jumlah Topik (k)')\n", "plt.ylabel('Coherence Score (c_v)')\n", "plt.xticks(k_values)\n", "plt.grid(True)\n", "plt.show()\n", "\n", "# Pilih k terbaik\n", "best_k_index = np.argmax(coherence_values)\n", "optimal_k = k_values[best_k_index]\n", "optimal_model = model_list[best_k_index]\n", "\n", "print(f\"\\nJumlah topik optimal yang ditemukan: k = {optimal_k}\")" ] }, { "cell_type": "markdown", "id": "47b4f14c", "metadata": { "papermill": { "duration": 0.017257, "end_time": "2025-08-17T11:27:28.100745", "exception": false, "start_time": "2025-08-17T11:27:28.083488", "status": "completed" }, "tags": [] }, "source": [ "### 20. Fit Model LDA Terbaik & Visualisasi\n", "\n", "Setelah menemukan jumlah topik optimal, kita akan melatih model LDA final dengan nilai `k` tersebut. Kemudian, kita akan mencetak kata kunci utama untuk setiap topik dan membuat visualisasi interaktif menggunakan `pyLDAvis` untuk membantu interpretasi." ] }, { "cell_type": "code", "execution_count": 16, "id": "8f191330", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:27:28.138288Z", "iopub.status.busy": "2025-08-17T11:27:28.137178Z", "iopub.status.idle": "2025-08-17T11:27:29.310296Z", "shell.execute_reply": "2025-08-17T11:27:29.309401Z" }, "papermill": { "duration": 1.195484, "end_time": "2025-08-17T11:27:29.313717", "exception": false, "start_time": "2025-08-17T11:27:28.118233", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Menampilkan 12 kata kunci teratas untuk 12 topik:\n", "Topik #1: bersih | awat | sangat | baik | tempat | sejarah | jaga | bangun | ramah | gedung | parkir | perlu\n", "Topik #2: bangun | belanda | sejarah | jaman | tinggal | lawang | kokoh | sewu | sangat | jadi | arsitektur | bagus\n", "Topik #3: sewu | lawang | kalau | jadi | masuk | tiket | buat | hari | kesana | parkir | tahu | banyak\n", "Topik #4: sejarah | tempat | bagus | foto | buat | wisata | anak | indonesia | ajar | cocok | kereta | banyak\n", "Topik #5: foto | banyak | kalau | masuk | bagus | jadi | malam | tempat | sini | bawah | tiket | lokasi\n", "Topik #6: tiket | masuk | pandu | wisata | sejarah | dewasa | parkir | tempat | harga | pakai | anak | guide\n", "Topik #7: lawang | sewu | pintu | banyak | sejarah | gedung | bangun | wisata | semarang | ribu | lebih | kali\n", "Topik #8: tempat | bersih | toilet | makan | sejarah | jual | cukup | beberapa | parkir | orang | penuh | bagus\n", "Topik #9: bagus | banget | tempat | bersih | jadi | makin | lebih | kesini | pas | kalau | keren | jalan\n", "Topik #10: place | building | historical | bagus | history | visit | this | kamu | semarang | about | that | architecture\n", "Topik #11: kereta | api | indonesia | kantor | bangun | museum | sejarah | belanda | kai | tempat | bagai | gedung\n", "Topik #12: semarang | kota | tempat | sejarah | wisata | kunjung | salah | satu | tengah | wajib | parkir | bangun\n", "\n", "Menyiapkan visualisasi pyLDAvis...\n", "Visualisasi tersimpan di artefak/lda_topics.html\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
\n", "" ], "text/plain": [ "PreparedData(topic_coordinates= x y topics cluster Freq\n", "topic \n", "4 0.23 0.05 1 1 13.80\n", "5 0.15 0.00 2 1 10.13\n", "2 0.12 -0.08 3 1 9.74\n", "6 -0.03 -0.15 4 1 8.87\n", "11 -0.12 0.12 5 1 8.66\n", "3 -0.27 0.10 6 1 8.61\n", "1 -0.17 -0.06 7 1 8.32\n", "9 0.17 -0.43 8 1 7.19\n", "8 0.17 0.18 9 1 6.72\n", "7 0.04 0.17 10 1 6.66\n", "0 -0.06 0.27 11 1 5.96\n", "10 -0.24 -0.18 12 1 5.35, topic_info= Term Freq Total Category logprob loglift\n", "6 lawang 612.00 612.00 Default 30.00 30.00\n", "7 semarang 485.00 485.00 Default 29.00 29.00\n", "8 sewu 606.00 606.00 Default 28.00 28.00\n", "0 sejarah 953.00 953.00 Default 27.00 27.00\n", "1 tempat 935.00 935.00 Default 26.00 26.00\n", ".. ... ... ... ... ... ...\n", "1 tempat 30.42 935.06 Topic12 -4.11 -0.50\n", "6 lawang 25.49 612.58 Topic12 -4.29 -0.25\n", "7 semarang 22.45 485.66 Topic12 -4.42 -0.15\n", "87 jadi 17.96 378.47 Topic12 -4.64 -0.12\n", "120 banyak 17.23 442.16 Topic12 -4.68 -0.32\n", "\n", "[710 rows x 6 columns], token_table= Topic Freq Term\n", "term \n", "740 1 0.35 abis\n", "740 5 0.35 abis\n", "427 8 0.95 about\n", "889 3 0.17 ac\n", "889 7 0.69 ac\n", "... ... ... ...\n", "79 4 0.02 zaman\n", "79 5 0.09 zaman\n", "79 7 0.67 zaman\n", "79 10 0.02 zaman\n", "79 11 0.11 zaman\n", "\n", "[2281 rows x 3 columns], R=30, lambda_step=0.01, plot_opts={'xlab': 'PC1', 'ylab': 'PC2'}, topic_order=[5, 6, 3, 7, 12, 4, 2, 10, 9, 8, 1, 11])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(f\"Menampilkan 12 kata kunci teratas untuk {optimal_k} topik:\")\n", "topics = optimal_model.show_topics(num_topics=optimal_k, num_words=12, formatted=False)\n", "for topic_id, topic in topics:\n", " print(f\"Topik #{topic_id + 1}: {' | '.join([word for word, prop in topic])}\")\n", "\n", "# Visualisasi interaktif pyLDAvis\n", "print(\"\\nMenyiapkan visualisasi pyLDAvis...\")\n", "pyLDAvis.enable_notebook()\n", "vis = gensimvis.prepare(optimal_model, corpus, dictionary, mds='mmds')\n", "pyLDAvis.save_html(vis, 'artefak/lda_topics.html')\n", "print(\"Visualisasi tersimpan di artefak/lda_topics.html\")\n", "vis" ] }, { "cell_type": "markdown", "id": "27a684c8", "metadata": { "papermill": { "duration": 0.020328, "end_time": "2025-08-17T11:27:29.355195", "exception": false, "start_time": "2025-08-17T11:27:29.334867", "status": "completed" }, "tags": [] }, "source": [ "### 21. Integrasi Sentimen × Topik\n", "\n", "Untuk mendapatkan wawasan yang lebih dalam, kita akan menggabungkan hasil analisis sentimen dengan pemodelan topik. Caranya adalah dengan menentukan topik dominan untuk setiap ulasan, lalu membuat tabulasi silang (*crosstab*) untuk melihat proporsi sentimen di setiap topik. Ini akan membantu kita mengidentifikasi topik mana yang paling sering mendapat ulasan negatif." ] }, { "cell_type": "code", "execution_count": 17, "id": "ecac0fb2", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:27:29.397714Z", "iopub.status.busy": "2025-08-17T11:27:29.397363Z", "iopub.status.idle": "2025-08-17T11:27:30.547241Z", "shell.execute_reply": "2025-08-17T11:27:30.546246Z" }, "papermill": { "duration": 1.173323, "end_time": "2025-08-17T11:27:30.548912", "exception": false, "start_time": "2025-08-17T11:27:29.375589", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Contoh hasil penentuan topik dominan:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
text_bersihlabeltopik_dominan
0tempat wisata sejarahPOSITIF3
1semarang kalau datang lawang sewu jawa tengahPOSITIF11
2nyata gedung cetak tiket kereta apiNETRAL10
3kai kelola aset lebih profesional tiket masuk ...NEGATIF6
4ticket masuk per orang air mineral mlNETRAL5
\n", "
" ], "text/plain": [ " text_bersih label topik_dominan\n", "0 tempat wisata sejarah POSITIF 3\n", "1 semarang kalau datang lawang sewu jawa tengah POSITIF 11\n", "2 nyata gedung cetak tiket kereta api NETRAL 10\n", "3 kai kelola aset lebih profesional tiket masuk ... NEGATIF 6\n", "4 ticket masuk per orang air mineral ml NETRAL 5" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Proporsi Sentimen per Topik Dominan (%):\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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", "
labelNEGATIFNETRALPOSITIF
topik_dominan
014.704.1081.20
13.6016.0080.40
230.2017.2052.70
31.707.6090.70
425.1017.5057.30
519.2018.3062.40
67.2029.6063.20
716.3012.0071.70
818.105.5076.40
914.7015.9069.40
108.9045.6045.60
115.5019.6074.90
\n", "
" ], "text/plain": [ "label NEGATIF NETRAL POSITIF\n", "topik_dominan \n", "0 14.70 4.10 81.20\n", "1 3.60 16.00 80.40\n", "2 30.20 17.20 52.70\n", "3 1.70 7.60 90.70\n", "4 25.10 17.50 57.30\n", "5 19.20 18.30 62.40\n", "6 7.20 29.60 63.20\n", "7 16.30 12.00 71.70\n", "8 18.10 5.50 76.40\n", "9 14.70 15.90 69.40\n", "10 8.90 45.60 45.60\n", "11 5.50 19.60 74.90" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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tK739DFEZHwiQXh2DIHpKZVKpKQUfLvk4uICmUz2Sucb/n1qMURFRJbo1rlb5g6BiIzkJ+GbF3ciotdSpS1/mzuEl3ayQX2TXavhqdMmu1ZRmfU5jI/JZDJ4enqaOwwiIiIiIiJ6ikUkjERERERERJaopK+SWrJncBIREREREZFerDASERERERHpIZawwkhERERERERUCCuMREREREREeohYYSQiIiIiIiIqjAkjERERERER6cQhqURERERERHqIxCW7xlay756IiIiIiIj0YoWRiIiIiIhID5GYi94QERERERERFcIKIxERERERkR5iPlaDiIiIiIiIqDBWGImIiIiIiPTgHEYiIiIiIiIiHVhhJCIiIiIi0qOkP4fxjUwYb5y5ae4QiMhIghpXNXcIRGQk4tMSc4dARETPeCMTRiIiIiIiouLAOYxEREREREREOrDCSEREREREpAefw0hERERERESkAyuMREREREREenAOIxEREREREZEOrDASERERERHpUdKfw1iy756IiIiIiIj0YoWRiIiIiIhID85hJCIiIiIiItKBCSMRERERERHpxCGpREREREREenBIKhEREREREZEOrDASERERERHpwQojERERERERkQ5MGImIiIiIiPQQicUmexWVSqXC/Pnz0aJFCwQFBaFVq1ZYsmQJBEHQ9BEEAQsWLECTJk0QFBSEgQMHIjIy0uD755BUslidW3uicxsvlPKwAgBERmdj3R8xOH0xTe8xdrYSfNi7LN6q7wIHeyniEvKwZG0UTl3QfwwRGV+AtwQt6shR1lMMJ3sxVu7KwZWIfK0+Xi5idGpihQplJBCLgbhkNVb/lYOUDEHPWYFaFaTo0EgOV0cxElLV2HU8D9cjVca+HSJ6mkgM1x594di4OSTOLshPSUbGkf1I3rFJq5trj35wat4OYjs75N66jvjVS6CMiy3SJVw6vQv39wYhZe8OJG5Yboy7IHqtrFixAps2bcLs2bNRoUIFXL16FRMmTICDgwMGDBig6bN+/XrMmjULPj4+WLBgAQYPHow9e/bAysqqyNdiwkgWKyFZgRUb7yP6YS5EIhHaNnPH9PGBGDr+KiKjcwr1l0pEmPt1ZaSmKzHlh9tISFaglLsVMrP5xyORucllQEyiCqeuKzG4o02h/W5OInzyri1OXlNi78k85CoElHYVQ5mv42T/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oq+//hoLFizA1KlTNcNOe/XqhREjRmj6DBkyBDk5OZg0aRLS09NRp04drFy50qBnMAJmThirVauGa9eu6U0YX1R9pDebi5MUE0YEwNVFhqxsFSKisjH+uxs4dyUdAODpbqU1/DQhSYHx393AiPfLYdX3nkhIVmDb3kfYtKNoDwUmIuPx9ZRg1Du2mu1uTa0BAKeuK7Hx31xcvpuP3w7monU9K3R/2wrxKWqs/isXEbFPqoUuDiIIwpOkM/KhGuv25aJDiBU6hoiQkKrGqt05fAYjkYnFr10Kt3f6w3PQCEgcnZCfkoz0g3uRtG2jpk/K7j8gsrKG5+BRENvaI/fWNcTMnqQ1P1HmVRoSBydz3ALRc1lihdHe3h5fffUVvvrqK719RCIRPvnkE3zyyastHCUSzJiRnT17FtnZ2ZrnhTwrOzsbV69eRf369Q06b/Oep4ojPCKyQEGNq5o7BCIykpGne5k7BCIykoq/7jF3CC8tamhXk12r3PIdJrtWUZm1wli3bt3n7re1tTU4WSQiIiIiIiouplwl1RKV7LsnIiIiIiIivZgwEhERERERkU5mHZJKRERERERkySxx0RtTYoWRiIiIiIiIdGKFkYiIiIiISA8uekNERERERESkAyuMRERERERE+og4h5GIiIiIiIioEFYYiYiIiIiI9OAqqUREREREREQ6sMJIRERERESkB1dJJSIiIiIiItKBFUYiIiIiIiI9OIeRiIiIiIiISAdWGImIiIiIiPTgHEYiIiIiIiIiHd7ICuOQ0fXNHQIRGcm5y9nmDoGIjMTtiwnmDoGIqBDOYSQiIiIiIiLS4Y2sMBIRERERERUHVhiJiIiIiIiIdGCFkYiIiIiISB+ukkpERERERERUGBNGIiIiIiIi0olDUomIiIiIiPQQibjoDREREREREVEhrDASERERERHpIeKiN0RERERERESFscJIRERERESkh0jMOYxEREREREREhbDCSEREREREpA/nMBIREREREREVxgojERERERGRHpzDSERERERERKQDK4xkMc4c2oSz/21CamIMAMDTuwKadh6BijWaAgDylXn4e8tsXDv9F/LzlahQrTE69JsMeyd3nedT5StxcPsC3LlyGCkJ0bCysYd/1RC06vEpHFy8THZfRAT4lxbj7WAZfDzEcLIT45e9ubh6T6XZP+9jO53H7Tqh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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Kita perlu mencocokkan kembali data yang digunakan untuk LDA dengan dataframe asli\n", "df_for_integration = df_final[df_final['text_bersih'].apply(lambda x: len(x.split()) >= 3)].copy()\n", "\n", "def get_dominant_topic(doc_bow):\n", " topic_probs = optimal_model.get_document_topics(doc_bow, minimum_probability=0.0)\n", " dominant_topic = sorted(topic_probs, key=lambda x: x[1], reverse=True)[0][0]\n", " return dominant_topic\n", "\n", "df_for_integration['topik_dominan'] = [get_dominant_topic(doc) for doc in corpus]\n", "\n", "print(\"Contoh hasil penentuan topik dominan:\")\n", "display(df_for_integration[['text_bersih', 'label', 'topik_dominan']].head())\n", "\n", "# Buat tabulasi silang\n", "topic_sentiment_crosstab = pd.crosstab(\n", " index=df_for_integration['topik_dominan'],\n", " columns=df_for_integration['label'],\n", " normalize='index' # Normalisasi per baris (topik)\n", ")\n", "\n", "topic_sentiment_crosstab = topic_sentiment_crosstab.multiply(100).round(1)\n", "\n", "print(\"\\nProporsi Sentimen per Topik Dominan (%):\")\n", "display(topic_sentiment_crosstab)\n", "\n", "# Visualisasi heatmap\n", "plt.figure(figsize=(12, 7))\n", "sns.heatmap(topic_sentiment_crosstab, annot=True, cmap='coolwarm', fmt='.1f')\n", "plt.title('Heatmap Proporsi Sentimen per Topik')\n", "plt.xlabel('Sentimen')\n", "plt.ylabel('Topik Dominan')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "9baa53f5", "metadata": { "papermill": { "duration": 0.021698, "end_time": "2025-08-17T11:27:30.594371", "exception": false, "start_time": "2025-08-17T11:27:30.572673", "status": "completed" }, "tags": [] }, "source": [ "**Temuan:**\n", "- Heatmap ini secara visual menyoroti topik mana yang paling banyak mendapat sentimen negatif.\n", "- Misalnya, jika Topik #3 (yang mungkin tentang *fasilitas*) memiliki persentase `NEGATIF` yang tinggi, ini menjadi kandidat kuat untuk rekomendasi perbaikan." ] }, { "cell_type": "markdown", "id": "05f823d5", "metadata": { "papermill": { "duration": 0.021269, "end_time": "2025-08-17T11:27:30.637895", "exception": false, "start_time": "2025-08-17T11:27:30.616626", "status": "completed" }, "tags": [] }, "source": [ "---" ] }, { "cell_type": "markdown", "id": "0b042d36", "metadata": { "papermill": { "duration": 0.020963, "end_time": "2025-08-17T11:27:30.680038", "exception": false, "start_time": "2025-08-17T11:27:30.659075", "status": "completed" }, "tags": [] }, "source": [ "## Bagian III: Laporan & Rekomendasi" ] }, { "cell_type": "markdown", "id": "77ea628b", "metadata": { "papermill": { "duration": 0.021002, "end_time": "2025-08-17T11:27:30.722336", "exception": false, "start_time": "2025-08-17T11:27:30.701334", "status": "completed" }, "tags": [] }, "source": [ "### 24. Visualisasi Ringkasan\n", "\n", "Berikut adalah rangkuman visual dari temuan utama penelitian." ] }, { "cell_type": "code", "execution_count": 18, "id": "392267a6", "metadata": { "execution": { "iopub.execute_input": "2025-08-17T11:27:30.767383Z", "iopub.status.busy": "2025-08-17T11:27:30.766435Z", "iopub.status.idle": "2025-08-17T11:27:31.475135Z", "shell.execute_reply": "2025-08-17T11:27:31.474175Z" }, "papermill": { "duration": 0.733048, "end_time": "2025-08-17T11:27:31.476891", "exception": false, "start_time": "2025-08-17T11:27:30.743843", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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wIEqVapUovffuXNnVaxYUWfOnLnne0u4vrNnz9Znn32mWrVqKTQ0VO3atdOff/7ptO/Bgwc1aNAg1alTR6VKlVK1atU0ePBgXbx4MdFxf/31Vz333HMqVaqU6tatq0WLFiV5/mXLlikiIkJVqlRRyZIl1bBhQy1YsOCe8SZX06ZN9b///c/Reb8zrj59+qhmzZoqWbKkwsPDNWbMGN28edOxz6BBg/TFF19IkqNd7vy9nT17tl588UVVrlxZoaGhatmypdatW/fIMSeFOTUAAEBqunHjhsaNG6fw8HCVLFlSDRo00OzZsxM9zRwSEqK3335bq1atUoMGDVSqVCm1bNlSO3fudNovqXuXpKxYsULFixfXu+++e9/97Ha7PvroI9WoUUOlS5dW+/bt9ddffyW575UrV/TOO+843ku9evX0ySefKD4+3rHPnfe+ixcvdvSLnnvuOe3duzfRMb/55hs1bNhQpUqVUuPGjfXdd98l2ddJ7v1hwnXcsGGDGjdurJIlS6pRo0b68ccf73sd7ufpp592vLcEv//+uzp37qzy5curdOnSateunXbt2uX0uoS+0t9//63XX39dFStWVJs2bSRJ0dHRGjx4sGrUqKGSJUsqLCxML7/8cqJ23bx5s6NPVrZsWXXr1i1R+wwaNEhly5bVmTNn9Morr6hs2bJ6+umn9e6778pmszlir1KliiRp6tSpjvvvKVOmSEp+P+TatWt65513VLt2bZUsWVJVqlRRx44d9ccffzjtl5zrk1qS01dMMG/ePDVq1EilS5dWxYoV1bJlS61evdqx/eTJkxoxYoQaNGig0NBQVa5cWX369EnUTgmfy127dmns2LF6+umnVaZMGfXs2dPxoGJy9OzZU+fOndPChQsfuG98fLw+++wzNWrUSKVKlVLVqlX11ltv6fLly4n2mzJlisLCwhyf8b///jvRHBKu6GPf+dndvn2742/VDz/84Nj3QX+77ufQoUPq06ePKlWq5PgbuXHjRqd9Etpix44dGjFihKpUqaLw8HBNmTLFUUVXp06dRPHcfT1S0qbJvcbSf5+1du3aKTQ0VDVq1NBHH32kZcuW0SeFx6JSAzDI999/r/z586tcuXLJ2n/YsGFasWKFGjRooI4dO2rv3r2aMWOGDh06pGnTpjnte/ToUfXt21fPP/+8WrRooWXLlmnQoEEqUaKEnnrqKdWrV0+ZM2fW2LFjHSXQjz32WIri/+uvv9S9e3eFhISoT58+8vPz09GjR/Xbb7/d93U///yzunbtqnz58qlXr166efOm5s+fr9atW2v58uXKly+f0/6vvvqq8uXLp9dee0379+/X0qVLFRAQoDfeeCNZcdarV0/Dhw/Xt99+67hJWrNmjZ588kkVL1480f7Hjx/Xhg0b9Mwzzyhfvnw6d+6cFi9erHbt2mnt2rXKlSuXChcurD59+mjy5Mlq1aqVypcvL0lObXnp0iV17dpVjRo1UtOmTRUYGJhkfEOHDtUvv/yigQMHavHixbJarVq0aJG2bNmi8ePHK1euXA98jytXrtT169fVpk0b3bp1S/PmzdNLL72k1atXO8pof/75Zx0/flwtW7ZUUFCQ/vrrLy1ZskR///23lixZ4iiHjYqKUufOnRUQEKDevXvr9u3bmjJlSpLxL1y4UE899ZRq166tdOnS6fvvv9fIkSNlt9vVtm3bB8Z9P02bNtXixYu1ZcsWVatWTdJ/Zbs3b95U69atlS1bNu3du1fz58/X6dOnNXnyZElSq1atdPbs2SSHZ5D+G3e6du3aatKkieLi4rR27Vr17dtXM2bMUM2aNR8pZgAAgLRit9v18ssvO74ILFasmH766SeNHz9eZ86c0ZAhQ5z237lzp77++mu1b99efn5+Wrhwobp06aKlS5cqODg42eddvHixhg8fru7du6tfv3733XfSpEn6+OOPFR4ervDwcP3xxx/q1KmT4uLinPaLiYlRu3btdObMGb344ot6/PHHtXv3br3//vuKjo7W0KFDnfZfs2aNrl+/rlatWslisWjWrFnq3bu3NmzY4Hia+4cfflC/fv0UHBys119/XZcvX9bQoUOTvLdOyf3hrl279O2336pNmzZ67LHHNG/ePPXp00fff/+9smfPnuzrmODYsWOSpGzZskn67+Gvrl27qmTJkurVq5csFouWL1+ul156SQsWLFBoaKjT6/v27auCBQuqX79+jmRW79699ffff6tdu3bKmzevLly4oK1bt+rff/919LVWrlypQYMGKSwsTP3791dMTIwWLlyoNm3aaMWKFU59MpvNps6dOys0NFQDBgzQtm3b9Omnnyp//vxq06aNAgICNGLEiERD+iQ8WJTcfsjw4cO1fv16tWvXToULF9alS5e0a9cuHTp0SCVKlHio6+NqyekrStKSJUs0evRoNWjQQBEREbp165aioqL0+++/q0mTJpKkyMhI7d69W40aNVLu3Ll18uRJLVy4UBEREVq7dm2iuS9Gjx6tLFmyqFevXjp58qQ+//xzvf322/rwww+TFXv58uX19NNPa9asWWrduvV9qzXeeustrVixQi1btlT79u114sQJffHFF9q/f78WLlzo+JxNnDhRs2bNUq1atVS9enUdPHhQnTt3TjTEs6v62AkKFy6s8ePHa+zYscqdO7c6duwoSU4jAKTEX3/9pdatWytXrlzq2rWrMmXKpG+++UY9e/bUlClTnIapkqSRI0cqICBAPXv21I0bN1SjRg0dOXJEa9as0eDBgx1/Cx4UT3LaNLnX+MyZM46HYrt166ZMmTJp6dKlVGXAs9kBpLmrV6/ag4OD7S+//HKy9j9w4IA9ODjYPnToUKf148aNswcHB9u3bdvmWFerVi17cHCwfefOnY5158+ft5csWdI+btw4x7rjx4/bg4OD7bNmzXI65sCBA+21atVKFMPkyZPtwcHBjuU5c+bYg4OD7efPn79n3AnnWLZsmWNds2bN7FWqVLFfvHjR6f0VLVrUPmDAgETnGzx4sNMxe/bsaa9UqdI9z3nn+yhTpozdbrfbe/fubX/ppZfsdrvdbrPZ7NWqVbNPmTIlyWtw69Ytu81mS/Q+SpYsaZ86dapj3d69exO9twTt2rWzBwcH2xcuXJjktnbt2jmt++mnn+zBwcH2jz76yH7s2DF7mTJl7K+88soD32NC/KGhofbTp0871v/+++/24OBg+5gxYxzrYmJiEr1+zZo1iX5XXnnlFXupUqXsJ0+edKz7+++/7cWKFXNq/3sds1OnTvY6deo8MPaE9r3X78/ly5ftwcHB9p49e973fDNmzLCHhIQ4xTty5MhEsd7rGLGxsfbGjRvbIyIiHhhzu3bt7I0aNUpy2/nz5+3BwcH2yZMnO9YtW7bMHhwcbD9+/LjTMe5ufwAAgAe5+/7mu+++c9w/3ql37972kJAQ+9GjRx3rgoOD7cHBwfbIyEjHupMnT9pLlSrldK+V1L1LrVq17N26dbPb7Xb7559/bg8JCbFPmzbtgfGeP3/eXqJECXu3bt3s8fHxjvXvv/++PTg42D5w4EDHumnTptnLlClj/+eff5yOMWHCBHuxYsXsp06dstvt/3fvW6lSJfulS5cc+23YsMEeHBxs37Rpk2Nd48aN7TVq1LBfu3bNsW779u324ODgRH2d5N4fBgcH20uUKOF0bRP6afPmzbvv9UiIfcqUKfbz58/bo6Oj7du3b7c3b97cHhwcbF+/fr09Pj7eXr9+fXunTp2crllMTIy9du3a9o4dOzrWJdxLv/baa07nSbiHvruPd6dr167ZK1SoYB82bJjT+ujoaHv58uWd1g8cONAeHBzs1A+y2+325s2b21u0aOFYTupe+M7475ZUP6R8+fL2kSNH3jPulFyfpPzyyy/24OBg+zfffJPk9qT6ELVq1XL6XU1uX/Hll1++Z7/hzrjvtnv3bntwcLB9xYoVjnUJn8sOHTo4ve8xY8bYixUrZr9y5cp9z3Nnv2vHjh324OBg+5w5c5zeY8Jn3G6323fu3GkPDg62r1q1yuk4P/74o9P66Ohoe/HixRP1W6dMmZLoM+6KPnZS31PcHXtyJPW7+tJLL9kbN25sv3XrlmNdfHy8vVWrVvb69es71iW0RevWre23b992Ou6sWbMS/f28M847r0dy2zQl13jUqFH2kJAQ+/79+x3rLl68aK9UqRJ9Ungshp8CDHDt2jVJSnZ1xObNmyXJ8QRCgoRJvhK2JyhSpIgqVKjgWA4ICFChQoV0/Pjxh475bglzcWzcuNGpLPx+zp49qwMHDqhFixaOp5Gk/8a5rFq1aqL3IUkvvvii03KFChV06dIlxzVMjiZNmmjHjh2Kjo7WL7/8oujoaMcTMnfz8/OTj89/fxptNpsuXryoTJkyqVChQtq/f3+yz+nn56eWLVsma9+wsDC1atVK06ZNU+/evZU+ffoUjalbt25dp6fOQkNDVbp0aafreeeTOLdu3dKFCxdUunRpSXKUdNtsNm3ZskV169ZVnjx5HPsXLlxYYWFhic575zGvXr2qCxcuqFKlSjp+/LiuXr2a7PiTkjAu6fXr15M8340bN3ThwgWVLVtWdrs92W1z5zEuX76sq1evqnz58ilqWwAAAKP9+OOPslqtiYYQ6dSpk+x2e6IhkcqWLauSJUs6lvPkyaM6depoy5YtjmGE7mfmzJl655131L9/f73yyisP3P/nn39WXFyc2rVr5zRB7p3D6yZYt26dypcvryxZsujChQuOn6pVq8pmsyUaJqthw4bKmjWrYzmh35PQ1zlz5oz+/PNPNW/e3Km/ValSpSSrUlJyf1i1alWnSYeLFi0qf3//ZPezpkyZoipVqqhatWpq3769jh07pv79+6t+/fo6cOCAjhw5oiZNmujixYuO63Djxg1VqVJFO3fuTNTvuruvlCFDBvn6+mrHjh2JhgpK8PPPP+vKlStq1KiR0/X28fFR6dKltX379kSvad26tdNy+fLlkz3UT3L6IdJ//cvff//9nsPvPsz1cbXk9hWzZMmi06dPJzksWoI7r0tcXJwuXryoAgUKKEuWLEn+7r3wwgtOn6UKFSrIZrPp5MmTyY6/YsWKqly5smbNmuU0hO+d1q1bp8yZM6tatWpOvx8lSpRQpkyZHL8f27Zt0+3btx3DniVo165domO6qo+dGi5duqRffvlFzz77rK5du+Z4vxcvXlRYWJiOHDmS6HfyhRdecMn8Qw9q05Rc459++kllypRxmmA9W7Zs9/zeA/AEDD8FGMDf31+S8xe293Py5En5+Pg43UBLUlBQkLJkyZLoRubxxx9PdIysWbPe88b2YTRs2FBLly7VsGHDNHHiRFWpUkX16tXTM88847hhudupU6ckSYUKFUq0rXDhwtqyZUuiibbu/HJd+r9kyuXLlx3X8UHCw8P12GOP6euvv9bBgwdVqlQpFSxYMMkb8fj4eM2dO1cLFizQiRMnnDp5dyZiHiRXrlwpKvUcOHCgNm3apAMHDmjixIn3HK4qKQULFky07oknntA333zjWL506ZKmTp2qr7/+WufPn3faNyEBceHCBd28eTPJ4xUqVChR0mnXrl2aMmWK9uzZk2iek6tXrypz5szJfg93u3HjhiTnxN+pU6c0efJkbdq0KdHvcnKTXN9//70+/vhjHThwwGk+mjtvJh+Fq44DAABwPydPnlTOnDkT3Q8XLlzYsf1O97pfjImJ0YULFxQUFHTPc+3YsUM//PCDunbtqi5duiQrvoT7/ieeeMJpfUBAgFNCQvpv6NyoqCjHvAx3u3uM+bv7OgnHS5hDL+Hcd/edpP+uw91foqbk/vBe/aw75++7n1atWumZZ56RxWJRlixZ9NRTTzn6DEeOHJH0X7/gXq5evep0/e4eutfPz0/9+/fXu+++q2rVqql06dKqWbOmmjdv7mjjhPMklWCSlOh3Kn369ImG0UlJ3zI5/RBJ6t+/vwYNGqSaNWuqRIkSCg8PV/PmzZU/f36nuFNyfVwtuX3Frl276ueff9b//vc/FSxYUNWqVVPjxo0dQypJ0s2bNzVjxgwtX75cZ86ccZoLJ6kHxO7VL07u716C3r17q127dlq0aJE6dOiQaPvRo0d19erVe34eE9rwXp+zbNmyJWoDV/WxU8OxY8dkt9s1adIkTZo0Kcl9zp8/7/QQ4d2fu4f1oDZNyTU+efKkypQpk+gcSf0dBDwFSQ3AAP7+/sqZM+c9J8q7l+R+YfooTw3c6xx3P8GVIUMGffHFF9q+fbt++OEH/fTTT/r666+1ePFiffrppy55ckHSPRMk9rsmQLwfPz8/1atXTytXrtTx48fVq1eve+47ffp0TZo0Sc8995z69u2rrFmzysfHR2PGjEnROe83RmlSDhw44LhBvHuSb1d49dVXtXv3bnXu3FnFihVTpkyZFB8fry5duqTofSU4duyYOnTooCeffFKDBg3S448/Ll9fX23evFmfffbZIz8llXANEm7CbDabOnbsqMuXL6tLly568sknlSlTJp05c0aDBg1K1vl+/fVXvfzyy6pYsaKGDx+uoKAg+fr6atmyZVqzZs0DX+/n53fPJ5oS1jNmKQAA8DRPPfWUrly5oq+++kqtWrVyfMnsKvHx8apWrdo9EyZ3J0bu1c94mHvalN4fPuq5CxYsqKpVq973GAMGDHB62vpOdz78Jf2XcLhbhw4dVLt2bW3YsEFbtmzRpEmT9Mknn+jzzz9X8eLFHecZP358ksmsu9/jo/brktsPadiwoSpUqKDvvvtOW7du1ezZszVz5kxNmTJF4eHhD3V97pRwre51Px8TE5Pk9bxTcvuKhQsX1rp16xz95G+//VYLFixQz5491adPH0nSqFGjHPOBlClTRpkzZ5bFYnGaH+VOrugXS/9Va1SqVEmzZs1KVOkj/fd5DAwM1IQJE5J8/cPMW+GqPnZqSOhHdurUSdWrV09yn7sTAw/6PUkuV7Up4K1IagAGqVWrlhYvXqzdu3erbNmy9903b968io+P19GjRx1PX0nSuXPndOXKFeXNm9dlcWXJkiXJpz0SnhK4k4+Pj6pUqaIqVapo8ODBmj59uj744ANt3749yZv1hCcR/vnnn0TbDh8+rOzZs9/3RvRRNGnSRMuWLZOPj48aNWp0z/3Wr1+vypUra8yYMU7rr1y54jT5nyufyL9x44YGDx6sIkWKqGzZspo1a5bq1q2b7Inujh49mmjdkSNHHL8Xly9f1rZt29S7d2+nhE7C004JAgIClCFDhiSPd3ebbdq0SbGxsfr444+dnjBJqlz9YaxatUqSHDeWf/75p44cOaJ3331XzZs3d+y3devWRK+9V9usX79e6dOn1+zZs52SD8uWLUtWTHnz5tX27dt18+bNREmrhOvjys8iAADAveTNm1fbtm3TtWvXnJ6sP3z4sGP7ne51v5gxY8YHfkmZPXt2TZ48WW3atFGHDh20YMGCJCfcvlPC/eGRI0eckiAXLlxI9IR/gQIFdOPGjXt+2Z9SCedOmIT7Tndfh0e9P3SlhOvk7+//yNeiQIEC6tSpkzp16qQjR46oefPm+vTTTzVhwgTHeQIDA112ze91/53cfkiCnDlzqm3btmrbtq3Onz+vFi1aaPr06QoPD3/k63O/vmjC+rufnL9bcvuK0n8JloYNG6phw4aKjY1V7969NX36dHXv3l3p06fX+vXr1bx5cw0aNMjxmlu3bj3yML7J0bt3b7Vv316LFi1KtK1AgQLatm2bypUrd98H9e78nN35Gb948WKiz7gRfezkSojd19f3kT4PqRF7Sq5x3rx5k/w7n9TfQcBTMKcGYJAuXbooU6ZMGjZsmM6dO5do+7Fjx/T5559L+m/4JEmO5QRz5sxx2u4KBQoU0NWrV3Xw4EHHurNnz+q7775z2u/SpUuJXpvwxMydZdt3ypkzp4oVK6aVK1c6JU7+/PNPbd261aXv426VK1dW37599eabb963vN5qtSZ6MuKbb75JNI5mxowZJaW83DcpEyZM0L///qtx48Zp0KBByps3rwYNGnTP63i3DRs2OMW3d+9e/f7776pRo4akez9ddffvk9VqVVhYmDZs2OCUxDp06JC2bNmSaF9JicqkXdEBXL16tZYuXaqyZcs6yp4TnmK583x2u11z585N9Pp7tY3VapXFYnGqOjpx4oQ2btyYrLhq1KihuLi4RDf/8fHxWrhwoXx9fe9Zpg0AAOBKNWrUkM1m0xdffOG0/rPPPpPFYnHcBybYvXu30/wF//77rzZu3Khq1aol60n83Llza86cObp165Y6deqkixcv3nf/qlWrytfXV/Pnz3e6f7v7/lOSnn32We3evVs//fRTom1XrlzR7du3HxjfnXLlyqXg4GCtXLnSabjfHTt2JKqIftT7Q1cqWbKkChQooE8//TTJYYrvHoYrKTExMbp165bTugIFCuixxx5z9C2qV68uf39/zZgxQ3FxcQ91nrvd7/47KXf/HthstkRf5gcGBipnzpyOuB/1+iT0RVevXp0ozn379jn1n+4luX3Fuz8ffn5+Kly4sOx2u+OaJ3Vt5s2bl6w5bh5VpUqVHNUad/++PPvss7LZbProo48Sve727duOa1elShWlS5dOCxcudNrn7r9JkjF97OQKDAxUpUqVtHjxYp09ezbR9uR+HhJid2VSKiXXOCwsTHv27NGBAwcc6y5duqTVq1e7LB7A3VCpARikQIECmjBhgvr166eGDRuqWbNmCg4OVmxsrHbv3q1169Y5JpouWrSoWrRoocWLF+vKlSuqWLGiIiMjtWLFCtWtW1dPP/20y+Jq2LChJkyYoF69eql9+/a6efOmFi5cqEKFCjl1hKZNm6Zff/1V4eHhyps3r86fP68FCxYod+7cTmOF3m3AgAHq2rWrWrVqpeeff143b97U/PnzlTlz5vsOC/WofHx8kjWpYc2aNTVt2jQNHjxYZcuW1Z9//qnVq1cnKrNPmMRt0aJFeuyxx5QpUyaFhoamuBx/27ZtWrBggXr16qUSJUpIksaOHav27dvrww8/1IABAx54jAIFCqh169Zq3bq1YmNjNXfuXGXLls1Rwu/v76+KFStq1qxZiouLU65cubR169Yk5xTp3bu3fvrpJ7Vt21atW7eWzWbT/PnzVaRIEUVFRTn2q1atmnx9fdWjRw+9+OKLun79upYuXarAwEBFR0cn+/2vX79emTJlUlxcnM6cOaMtW7bot99+U9GiRZ3GNH3yySdVoEABvfvuuzpz5oz8/f21fv36JG94E67j6NGjFRYWJqvVqkaNGik8PFxz5sxRly5d1LhxY8fvbIECBZze273Url1bYWFhGjt2rCIjI1W2bFnFxMRo06ZN+u233/Tqq68+VDk2AABAStWuXVuVK1fWBx98oJMnTyokJERbt27Vxo0b9dJLLyUaLiU4OFidO3dW+/bt5efn5/iSrHfv3sk+Z8GCBTV79mxFRESoc+fOmjt37j3nuAsICFCnTp00Y8YMde/eXeHh4dq/f79+/PHHRE+0d+7cWZs2bVKPHj3UokULlShRQjExMfrzzz+1fv16bdy4McX3WP369dMrr7yi1q1bq2XL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W7aUhgYAAADAIOvXr1eTJk30xx9/qGjRoipatKj279+vJk2aaP369UaHBwAAAMBDpLhS48aNG45xc7NmzaoLFy6oUKFCCg4O1v79+1N0rAkTJqhr167q06ePrFZrSkMBAACAl6FQw32999576tatm/r27eu0fvLkyXrvvffUoEEDgyK7P0uOnFK8zegwAMCjWIJyGR0CAMCDpTipUahQIf3zzz/Kly+fQkJCtHjxYuXLl0+LFi1SUFBQio7Vt29fLV++XF999ZUaNWqkZs2aKTg4OKUhAQAAADBYdHS0mjdvnmh906ZNNXv27LQPKJnSNX2BB6wAIBXY4+Nl8UnxACEAADxQiv/rEhERoejoaElSr1699OOPP6pmzZqaN2+eXnvttRQdq3v37lq/fr3Gjx+vc+fO6YUXXlDTpk1lt9t1+fLllIYGAAAAD2exWFL9Bw+nUqVK+vXXXxOt37Vrl1vPlWezUaXhKWw2m/bv30+behja1bxIaAAAUkuKKzWaNWvm+HfJkiX1/fff6/Dhw3r88ccdw1KlVKVKlVSpUiW9+eabWrNmjZYtW6b27dsrNDRUDRo0UMeOHR/quAAAAADSRu3atTVhwgT98ccfKl26tCTp999/17p169S7d29t3LjRsW+dOnWMChMeLiYmxugQkApoVwAAcKcUJzXuljFjRpUoUcIVscjf318vvviiXnzxRUVFRenLL7/UJ598QlIDAAAAkphTw52NHDlSkrRgwQItWLAgyW3Sf9U2Bw4cSNPYAAAAAHiOFCc1Bg8efN/tY8eOfehg7hQSEqIuXbpQYgoAAACYwMGDB40OAQAAAIAXSHFS48qVK07Lt2/f1l9//aUrV67o6aefTnEAf/31l7Zv3y5fX189++yzypIliy5cuKDp06dr0aJFyp8/f4qPibS169edmvvZbB3Y/4fORUdr4odTVatOXUlSXFycPpoySVt/2qwTJ0/I399flZ+uqj6vvqagnLkMjhxIO19+8anmfjJFTZ5vo66935AkDenbRfv27HLa75mmz+mV14cZESKQZn7btVPzPvtUBw7899+NCR9MUc3adR3bR7w5WGtWrXR6TZWqYZry8cw0jhTuyIdSDQAAAADwailOakybNi3Ruvj4eI0YMSLFCYiNGzeqb9++un37tiRp1qxZGjVqlF599VWVKFFCU6dOVY0aNVIa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Dx06pJdeeknPPPNMigPgqS4AAADAvPLkySMfHx+jwwAAAADgJVLc+5g6daquXr2q/v37y263688//1T79u3VqFGjFE8UDgAAAKSEjyX1f5AymzZtUvbs2Y0OA5AkZcyY0egQkApoVwAAcKcUJzUyZMigTz75RP/884/69u2rDh06qFmzZho8eHCKT85TXQAAAACMZLVajQ4BLmK1WlW8eHHa1MPQruZlj483OgQAgIdK1vBT165dc1r28fHRBx98oE6dOql+/frq2bOnYx9/f/9kn3zp0qX3farr9u3b2r9/v0JDQ5N9TAAAAHguptSAq91etUTxZ/81OgwA8CiWoFxK17Kt0WEAADxUspIaFSpUSHJSRrvdrkWLFmnx4sWy2+2yWCw6cOBAsk8eFhamLVu2OObUaNKkiT755BM9/vjjkqRLly6pVatWKTomAAAAACSX/dxZ6fRJo8MAAI9iNzoAAIBHS1ZSY+7cuck62J9//pmik9vtzv+ZO3HihG7fvn3ffQAAAOC9fCjVAAAAAACvlqykRqVKle657dq1a1q7dq2WLl2qP/74Q+3atXNZcJKSrBABAAAA4D7i4+O1fPlyfffddzp58qQsFovy5s2rZ555Rs2aNeOeHgAAAIDLJCupkZSdO3fqyy+/1LfffqucOXOqXr16euutt1wZGwAAAODEx+gAkIjdbtfLL7+szZs3q2jRogoODpbdbtehQ4c0aNAgffvtt/roo4+MDhMAAACAh0hRUiM6OlorVqzQl19+qWvXrunZZ59VbGyspk2bpiJFiqT45BaLRdevX1f69Okdc3Jcv37dMen43ROUAwAAAHAvy5cv186dO/XZZ5/p6aefdtq2bds29ezZUytXrlTz5s1dfu4vvvhCs2fPVnR0tIoWLao333xToaGhLj8PAAAAAPeR7KRGjx49tHPnTtWsWVNDhgxR9erVZbVatWjRooc+ud1uV4MGDZyWW7Ro4bRMqToAAAAScGvoftauXasePXokSmhIUpUqVdStWzetXr3a5UmNr7/+WmPHjtXIkSNVunRpff755+rcubPWrVunwMBAl54LAAAAgPtIdlLjxx9/VPv27dW6dWs98cQTLjl5cicgBwAAAOCeoqKi9MYbb9xze40aNTRv3jyXn3fOnDl64YUX9Nxzz0mSRo4cqR9++EHLli1Tt27dXH4+AAAA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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n", "\n", "# 1. Confusion Matrix\n", "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', \n", " xticklabels=best_model.classes_, yticklabels=best_model.classes_, ax=axes[0])\n", "axes[0].set_title('Confusion Matrix pada Data Uji')\n", "axes[0].set_xlabel('Prediksi')\n", "axes[0].set_ylabel('Aktual')\n", "\n", "# 2. Topik Paling Negatif\n", "topic_sentiment_crosstab['NEGATIF'].sort_values(ascending=False).plot(kind='barh', ax=axes[1],\n", " color='salmon')\n", "axes[1].set_title('Topik dengan Persentase Ulasan Negatif Tertinggi')\n", "axes[1].set_xlabel('Persentase Ulasan Negatif (%)')\n", "axes[1].set_ylabel('ID Topik')\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "919d2ebb", "metadata": { "papermill": { "duration": 0.023686, "end_time": "2025-08-17T11:27:31.524203", "exception": false, "start_time": "2025-08-17T11:27:31.500517", "status": "completed" }, "tags": [] }, "source": [ "### 25. Rekomendasi untuk Pengelola\n", "\n", "Berdasarkan analisis sentimen dan topik, berikut adalah 3-5 rekomendasi *actionable* untuk pengelola Lawang Sewu.\n", "\n", "*(Catatan: Rekomendasi ini bersifat ilustratif. Anda perlu menginterpretasikan topik sebenarnya dari kata kunci dan contoh ulasan untuk membuat rekomendasi yang akurat).*\n", "\n", "**Asumsi Interpretasi Topik:**\n", "- **Topik A (Paling Negatif):** Tentang `tiket`, `harga`, `parkir`, `mahal` -> **Aspek Harga & Parkir**\n", "- **Topik B (Cukup Negatif):** Tentang `panas`, `toilet`, `bersih`, `antre` -> **Aspek Fasilitas & Kebersihan**\n", "- **Topik C (Paling Positif):** Tentang `sejarah`, `bangunan`, `pemandu`, `bagus` -> **Aspek Edukasi & Arsitektur**\n", "\n", "--- \n", "\n", "| Rekomendasi | Topik Terkait (Bukti Data) | Prioritas | Dampak yang Diharapkan |\n", "| :--------------------------------------------------------------------------------- | :------------------------------ | :-------- | :------------------------------------------------------- |\n", "| **1. Tinjau Ulang dan Transparansikan Struktur Harga Tiket & Parkir.** | Topik A (Harga & Parkir) | **Tinggi** | Mengurangi keluhan utama, meningkatkan persepsi nilai. |\n", "| *Contoh Ulasan Negatif: \"Parkirnya mahal banget, tiket masuk juga tidak sebanding.\"* | | | |\n", "| **2. Tingkatkan Kebersihan dan Manajemen Fasilitas Umum (terutama Toilet).** | Topik B (Fasilitas & Kebersihan)| **Tinggi** | Meningkatkan kenyamanan pengunjung secara signifikan. |\n", "| *Contoh Ulasan Negatif: \"Tempatnya bagus tapi sayang toiletnya kotor dan bau.\"* | | | |\n", "| **3. Perkuat dan Promosikan Aspek Edukasi Sejarah dan Tur dengan Pemandu.** | Topik C (Edukasi & Arsitektur) | Sedang | Memanfaatkan kekuatan utama untuk menarik segmen baru. |\n", "| *Contoh Ulasan Positif: \"Sangat edukatif, pemandunya menjelaskan sejarah dengan baik.\"* | | | |" ] }, { "cell_type": "markdown", "id": "8b27a1d4", "metadata": { "papermill": { "duration": 0.022137, "end_time": "2025-08-17T11:27:31.569642", "exception": false, "start_time": "2025-08-17T11:27:31.547505", "status": "completed" }, "tags": [] }, "source": [ "### 26. Keterbatasan & Pekerjaan Lanjutan\n", "\n", "**Keterbatasan:**\n", "- **Domain Tunggal:** Model ini spesifik untuk ulasan Lawang Sewu dan mungkin tidak dapat digeneralisasi ke destinasi lain.\n", "- **Bahasa Campuran & Sarkasme:** Model berbasis TF-IDF kesulitan menangani ulasan yang menggunakan campuran bahasa (Indonesia-Inggris) atau mengandung sarkasme/ironi.\n", "- **Ukuran Data:** Meskipun 3.500 ulasan cukup baik, dataset yang lebih besar dapat meningkatkan robustisitas model.\n", "- **Ketergantungan TF-IDF:** Representasi fitur ini tidak menangkap makna semantik atau urutan kata secara mendalam.\n", "\n", "**Pekerjaan Lanjutan:**\n", "- **Aspect-Based Sentiment Analysis (ABSA):** Menganalisis sentimen untuk setiap aspek spesifik dalam satu ulasan (misal: \"parkir (negatif), bangunan (positif)\").\n", "- **Fine-tuning Model Bahasa:** Menggunakan model Transformer seperti IndoBERT atau BERT-large yang di-*fine-tune* pada dataset ini untuk performa yang lebih tinggi.\n", "- **Deteksi Sarkasme:** Mengembangkan model khusus untuk mengidentifikasi sarkasme, yang dapat meningkatkan akurasi klasifikasi sentimen.\n", "- **Active Learning:** Menggunakan model saat ini untuk mengidentifikasi ulasan yang paling ambigu, lalu melabelinya secara manual untuk memperkaya dataset secara efisien." ] }, { "cell_type": "markdown", "id": "99e137da", "metadata": { "papermill": { "duration": 0.023487, "end_time": "2025-08-17T11:27:31.616397", "exception": false, "start_time": "2025-08-17T11:27:31.592910", "status": "completed" }, "tags": [] }, "source": [ "### 27. Lampiran\n", "\n", "**Skema Folder Proyek:**\n", "```\n", "lawang_sewu_analysis/\n", "├── artefak/ # Folder untuk output model, data, dan visualisasi\n", "│ ├── sentimen_tfidf_linearsvc.pkl\n", "│ ├── dataset_clean.csv\n", "│ ├── run_metadata.json\n", "│ └── lda_topics.html\n", "├── data/ # Folder untuk data mentah\n", "│ └── LabeledLawangSewuReviewData.xlsx\n", "└── Analisis_Sentimen_Lawang_Sewu.ipynb # Notebook utama ini\n", "```\n", "\n", "**Spesifikasi & Versi Pustaka:**\n", "- Lihat output dari sel kode di **Bagian 4** untuk detail versi pustaka yang digunakan dalam proses ini." ] } ], "metadata": { "kaggle": { "accelerator": "none", "dataSources": [ { "databundleVersionId": 13391852, "datasetId": 8072163, "sourceId": 12769034, "sourceType": "datasetVersion" } ], "dockerImageVersionId": 31089, "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.13" }, "papermill": { "default_parameters": {}, "duration": 782.429116, "end_time": "2025-08-17T11:27:34.365198", "environment_variables": {}, "exception": null, "input_path": "__notebook__.ipynb", "output_path": "__notebook__.ipynb", "parameters": {}, "start_time": "2025-08-17T11:14:31.936082", "version": "2.6.0" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "00df87ff601e4378a359a1873b713a24": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_986422a9ff14486c8cb75bf253a556f7", "placeholder": "​", "style": "IPY_MODEL_6b28f7fa3e334ef3b15bbb31d2632f78", "tabbable": null, "tooltip": null, "value": " 6/6 [01:03<00:00, 10.27s/it]" } }, "0a5d90a9f9ae42e6a7f69d475a9b9663": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "13c3151b9d994b82941f93bf2c4905d4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_dadb32e0caa54dedbb9a08d1c89a8152", "placeholder": "​", "style": "IPY_MODEL_7a10f88e549f4111a5f1c284e88c324d", "tabbable": null, "tooltip": null, "value": "100%" } }, "206cd68d38974133b9dfbf3cf0e54a4b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "234e69d116474913a18e1783447f81dc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "2989db458e3742eb9d0d792737fb461c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_fa8c39935dfb4a8eb1ae8b456eb453b7", "max": 6.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_0a5d90a9f9ae42e6a7f69d475a9b9663", "tabbable": null, "tooltip": null, "value": 6.0 } }, "2999a48c469140789d9272803e7338ff": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_206cd68d38974133b9dfbf3cf0e54a4b", "max": 3452.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_adb767f765b140f99eb1552040259d22", "tabbable": null, "tooltip": null, "value": 3452.0 } }, "2e6ca1bb0fef42488cbaf3e8a19d7bea": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "5615469dc7b94a5da113c1f2d5225645": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "583442bba222478093f53ec2b1a6b8db": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_f2602147d6504613af14798d864a2321", "placeholder": "​", "style": "IPY_MODEL_234e69d116474913a18e1783447f81dc", "tabbable": null, "tooltip": null, "value": " 29/29 [04:20<00:00,  2.82s/it]" } }, "6b28f7fa3e334ef3b15bbb31d2632f78": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "72f955b0813b49c5817f287c5ac0aac5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_cb012f61c7114c8a9a9157a924a13ee5", "IPY_MODEL_ea2899f368924970a464143992c4d368", "IPY_MODEL_583442bba222478093f53ec2b1a6b8db" ], "layout": "IPY_MODEL_f7c4fa7716e246faacf1d1eb025ee014", "tabbable": null, "tooltip": null } }, "7a10f88e549f4111a5f1c284e88c324d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "8681dcf8876340a7a66d6711c10d2944": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "923a6c4ba367440a88c4cd78884ed18e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "986422a9ff14486c8cb75bf253a556f7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "adb767f765b140f99eb1552040259d22": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "b2999cc8e7644c428b9ed1cb74957149": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_8681dcf8876340a7a66d6711c10d2944", "placeholder": "​", "style": "IPY_MODEL_e8764b1126584267bb5af6bf94b85285", "tabbable": null, "tooltip": null, "value": "100%" } }, "ba3f5f3e081a4be18735fb10040b941e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_5615469dc7b94a5da113c1f2d5225645", "placeholder": "​", "style": "IPY_MODEL_fee354006d4641b09b34e519e6f42f20", "tabbable": null, "tooltip": null, "value": " 3452/3452 [05:54<00:00, 34.34it/s]" } }, "be00a1d1530e471ab3045de85ae58246": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "bf57afc7c8d24bbdb0d9e5eb9b757a5e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_b2999cc8e7644c428b9ed1cb74957149", "IPY_MODEL_2999a48c469140789d9272803e7338ff", "IPY_MODEL_ba3f5f3e081a4be18735fb10040b941e" ], "layout": "IPY_MODEL_d00752a04a0f44c695d7e42a44e2b1da", "tabbable": null, "tooltip": null } }, "c64beb72ef534578bc3e6169dc9adead": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cb012f61c7114c8a9a9157a924a13ee5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_cc2e010e69d844bb9bea719278d30642", "placeholder": "​", "style": "IPY_MODEL_be00a1d1530e471ab3045de85ae58246", "tabbable": null, "tooltip": null, "value": "100%" } }, "cc2e010e69d844bb9bea719278d30642": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d00752a04a0f44c695d7e42a44e2b1da": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dadb32e0caa54dedbb9a08d1c89a8152": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e8764b1126584267bb5af6bf94b85285": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "ea2899f368924970a464143992c4d368": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_923a6c4ba367440a88c4cd78884ed18e", "max": 29.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_2e6ca1bb0fef42488cbaf3e8a19d7bea", "tabbable": null, "tooltip": null, "value": 29.0 } }, "f2602147d6504613af14798d864a2321": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f7c4fa7716e246faacf1d1eb025ee014": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fa8c39935dfb4a8eb1ae8b456eb453b7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fcb5658587734a2a813f8d791d443079": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_13c3151b9d994b82941f93bf2c4905d4", "IPY_MODEL_2989db458e3742eb9d0d792737fb461c", "IPY_MODEL_00df87ff601e4378a359a1873b713a24" ], "layout": "IPY_MODEL_c64beb72ef534578bc3e6169dc9adead", "tabbable": null, "tooltip": null } }, "fee354006d4641b09b34e519e6f42f20": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }