|
|
||
|---|---|---|
| .. | ||
| README.md | ||
| __init__.py | ||
| clustering.py | ||
| column_mapping.json | ||
| dashboard.py | ||
| data_pipeline.py | ||
| full_column_mapping.json | ||
| interpretasi.py | ||
| merge_data.py | ||
| standarisasi_kolom.py | ||
| text_preprocessing.py | ||
README.md
📋 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
- Standarisasi Kolom - Menyamakan kolom berbeda dari berbagai tahun
- Menggabungkan Data - Gabungkan data dari semua tahun jadi satu
- Data Cleaning - Hapus duplikat dan data kosong
- 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
- NLTK: https://www.nltk.org/
- Sastrawi: https://github.com/har07/PySastrawi
- Pandas: https://pandas.pydata.org/