# Bab D: Metode/Teknik yang Digunakan

Pada bab ini, dijelaskan secara rinci metode transformasi data yang diterapkan. Fokus utama adalah pada teknik Python Pre-processing yang digunakan untuk membersihkan data mentah *marketplace* menjadi dataset berkualitas tinggi.

## 1. Landasan Teknik & Pemrosesan Data

Data mentah dari hasil scraping memiliki karakteristik yang tidak terstruktur (*unstructured*). Untuk mengatasi hal ini, dikembangkan algoritma filtering berbasis Python dengan tiga komponen utama:

### A. Ekstraksi Spesifikasi Teknis (Regex)

Landasan Pemilihan Teknik (Rationale): Penggunaan Regular Expressions (Regex) dipilih karena spesifikasi teknis seperti Watt dan Ampere memiliki pola karakter yang pasti namun posisinya acak dalam teks judul. Metode ini jauh lebih akurat daripada pencarian kata kunci biasa (*keyword search*) yang sering gagal membedakan variasi penulisan (seperti "30W" vs "30 Watt").

Implementasi Kode:

    def extract_specs(name):
        # Regex untuk menangkap angka Watt (e.g., 30W, 65 Watt)
        # \d+ = menangkap angka, [Ww]att = menangkap satuan
        watts = re.findall(r'(\d+)\s*[Ww]att|(\d+)[Ww]', name, re.IGNORECASE)

        # Regex untuk menangkap angka Ampere (e.g., 2.4A, 3 Amp)
        amps = re.findall(r'(\d+\.?\d*)\s*[Aa]mp|(\d+\.?\d*)[Aa]', name, re.IGNORECASE)

        # Logika pemilihan nilai (mengambil match pertama yang valid)
        watt_str = f"{next((x for x in watts[0] if x), '')}W" if watts else ""
        amp_str = f"{next((x for x in amps[0] if x), '')}A" if amps else ""

        return watt_str, amp_str

### B. Identifikasi & Klasifikasi Brand

Landasan Pemilihan Teknik (Rationale): Sistem menggunakan metode Dictionary-based Lookup (Pencocokan Kamus). Teknik ini dipilih karena entitas brand dalam domain aksesoris mobil bersifat terbatas (*finite set*). Pendekatan ini memberikan kinerja komputasi yang sangat cepat (O(1) complexity) dibandingkan model Machine Learning NER (*Named Entity Recognition*) yang berlebihan untuk kasus ini.

Implementasi Kode:

    def clean_brand_name(name):
        # Knowledge Base: Daftar Brand Valid
        brands = ['Baseus', 'Anker', 'Aukey', 'ACMIC', 'Xiaomi', 'Samsung', 'Vivan']

        # Pencocokan string case-insensitive
        name_lower = name.lower()
        for brand in brands:
            if brand.lower() in name_lower:
                return brand

        return "Generic" # Klasifikasi default

### C. Semantic Title Reconstruction (Optimasi Judul)

Landasan Pemilihan Teknik (Rationale): Judul asli marketplace seringkali mengandung "Keyword Spamming" untuk SEO. Untuk keperluan visualisasi Dashboard Admin, judul harus dibersihkan. Kami menggunakan teknik Template Construction untuk menyusun ulang judul yang semantik dan seragam.

Implementasi Kode:

    def generate_title(row):
        # 1. Ekstraksi Fitur Bersih
        brand = clean_brand_name(row['name'])
        watt, amp = extract_specs(row['name'])

        # 2. Penentuan Core Keyword berdasarkan Kategori
        if row['category'] == 'Car Charger Adapter':
            keywords = "Car Charger Mobil Fast Charging"
        elif row['category'] == 'Kabel Data':
            keywords = "Kabel Data Charger"

        # 3. Konstruksi Judul Baru: [Brand] + [Keyword] + [Specs]
        specs = watt if watt else amp
        new_title = f"{brand} {keywords} {specs}"

        return new_title.strip()

## 2. Kesimpulan Implementasi

Penerapan skrip Python ini berhasil mentransformasi data mentah yang tidak terstruktur menjadi dataset `optimized_titles.csv` yang bersih. Hal ini menjadi fondasi utama bagi akurasi visualisasi data pada sistem Dashboard.