# 📋 Modul Preprocessing ## Overview Modul ini berisi pipeline untuk **menyiapkan data tracer study alumni** dari berbagai tahun (2019-2025) agar siap diproses oleh model Machine Learning. --- ## 🎯 Tujuan 1. **Standarisasi Kolom** - Menyamakan kolom berbeda dari berbagai tahun 2. **Menggabungkan Data** - Gabungkan data dari semua tahun jadi satu 3. **Data Cleaning** - Hapus duplikat dan data kosong 4. **Text Preprocessing** - Bersihkan teks untuk TF-IDF --- ## 📁 Struktur File ``` preprocessing/ ├── __init__.py # Export modul ├── column_mapping.json # Konfigurasi mapping kolom ├── standarisasi_kolom.py # Fungsi standarisasi ├── text_preprocessing.py # Fungsi preprocessing teks └── data_pipeline.py # Pipeline lengkap ``` --- ## 🔧 Komponen ### 1. KolomStandarisasi **Fungsi:** Mengubah kolom Excel yang berbeda-beda menjadi kolom STANDAR. **Kolom Standar:** | Kolom | Deskripsi | |-------|-----------| | `nama` | Nama lengkap alumni | | `perusahaan` | Nama perusahaan/instansi | | `jabatan` | Jabatan/posisi | | `nim` | Nomor Induk Mahasiswa | **Contoh Penggunaan:** ```python from preprocessing import KolomStandarisasi import pandas as pd # Inisialisasi std = KolomStandarisasi() # Baca Excel df = pd.read_excel("data_2024.xlsx") # Standarisasi df_standar = std.standarisasi(df, tahun="2024") print(df_standar.columns.tolist()) # Output: ['nama', 'perusahaan', 'jabatan', 'nim'] ``` --- ### 2. DataPipeline **Fungsi:** Pipeline lengkap dari import sampai siap ML. **Alur Kerja:** ``` ┌────────────────────────────────────────┐ │ STEP 1: Standarisasi Kolom │ │ - Ubah kolom berbeda → kolom standar │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ STEP 2: Gabung Data │ │ - Gabungkan data dari semua tahun │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ STEP 3: Data Cleaning │ │ - Hapus duplikat │ │ - Hapus data kosong │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ STEP 4: Text Preprocessing │ │ - Case folding │ │ - Tokenizing │ │ - Stopword removal │ │ - Stemming │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ OUTPUT: Data siap untuk TF-IDF │ └────────────────────────────────────────┘ ``` **Contoh Penggunaan:** ```python from preprocessing import DataPipeline import pandas as pd # Inisialisasi pipeline = DataPipeline() # Tambah data dari berbagai tahun pipeline.tambah_data(df_2019, "2019") pipeline.tambah_data(df_2024, "2024") # Jalankan pipeline result = pipeline.jalankan() print(result.head()) # Output: DataFrame dengan kolom ['nama', 'perusahaan', 'jabatan', 'nim', 'tahun', 'teks_bersih'] ``` --- ### 3. preprocess_text **Fungsi:** Membersihkan teks agar siap untuk TF-IDF. **Proses:** | Step | Input | Output | |------|-------|--------| | Case Folding | "Software Engineer" | "software engineer" | | Tokenizing | "software engineer" | ["software", "engineer"] | | Remove Special Chars | ["3", "-", "staff"] | ["staff"] | | Remove Stopwords | ["di", "google"] | ["google"] | | Stemming | ["bekerja", "pekerjaan"] | ["kerja", "kerja"] | **Contoh Penggunaan:** ```python from preprocessing import preprocess_text # Input teks mentah teks = "Google Indonesia 3 - Staff" # Preprocess hasil = preprocess_text(teks) print(hasil) # Output: "google indonesia staff" ``` --- ## 📊 Column Mapping File `column_mapping.json` berisi mapping dari setiap tahun: ```json { "2019": { "nama": "Nama Lengkap", "perusahaan": "Perusahaan", "jabatan": "Jabatan", "nim": "NIM" }, "2024": { "nama": "4. Nama Lengkap / nmmhsmsmh...", "perusahaan": "9. Apa nama perusahaan...", "jabatan": "10. Bila Anda berwiraswasta...", "nim": "3. NIM / nimhsmsmh..." } } ``` ### ⚠️ Yang Perlu Diisi Buka setiap file Excel dan catat nama kolom untuk: | Tahun | Status | |-------|--------| | 2019 | ❌ Perlu diisi | | 2020 | ❌ Perlu diisi | | 2021 | ❌ Perlu diisi | | 2022 | ❌ Perlu diisi | | 2023 | ❌ Perlu diisi | | 2024 | ✅ Sudah diisi | | 2025 | ❌ Perlu diisi | --- ## 🚀 Quick Start ### 1. Siapkan Mapping Kolom ```bash # Buka Excel 2019-2025 # Catat nama kolom untuk: nama, perusahaan, jabatan, nim # Update column_mapping.json ``` ### 2. Jalankan Pipeline ```python from preprocessing import DataPipeline # Inisialisasi pipeline = DataPipeline() # Tambah data for tahun in ["2019", "2020", "2021", "2022", "2023", "2024", "2025"]: df = pd.read_excel(f"data_{tahun}.xlsx") pipeline.tambah_data(df, tahun) # Jalankan result = pipeline.jalankan() # Simpan hasil result.to_csv("data_bersih.csv", index=False) ``` --- ## 📝 Testing Jalankan file untuk test: ```bash cd Model python preprocessing/standarisasi_kolom.py python preprocessing/text_preprocessing.py python preprocessing/data_pipeline.py ``` --- ## 🔍 Debugging ### Jika tahun tidak terdeteksi: ```python # Deteksi manual std = KolomStandarisasi() tahun = std.deteksi_tahun(df, nama_file="data_2024.xlsx") print(f"Tahun: {tahun}") ``` ### Jika kolom tidak cocok: ```python # Lihat mapping yang tersedia std = KolomStandarisasi() mapping = std.get_mapping_tahun("2024") print(mapping) # Lihat kolom di DataFrame print(df.columns.tolist()) ``` --- ## 📚 Referensi - **NLTK:** https://www.nltk.org/ - **Sastrawi:** https://github.com/har07/PySastrawi - **Pandas:** https://pandas.pydata.org/