TIF_E41253310/Model/preprocessing/README.md

6.7 KiB

📋 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:

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:

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:

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:

{
  "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

# Buka Excel 2019-2025
# Catat nama kolom untuk: nama, perusahaan, jabatan, nim
# Update column_mapping.json

2. Jalankan Pipeline

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:

cd Model
python preprocessing/standarisasi_kolom.py
python preprocessing/text_preprocessing.py
python preprocessing/data_pipeline.py

🔍 Debugging

Jika tahun tidak terdeteksi:

# Deteksi manual
std = KolomStandarisasi()
tahun = std.deteksi_tahun(df, nama_file="data_2024.xlsx")
print(f"Tahun: {tahun}")

Jika kolom tidak cocok:

# Lihat mapping yang tersedia
std = KolomStandarisasi()
mapping = std.get_mapping_tahun("2024")
print(mapping)

# Lihat kolom di DataFrame
print(df.columns.tolist())

📚 Referensi