News-Fact-Check / README.md
DarrenDeo's picture
Final attempt: Deploy full models with correct LFS tracking
b544dec
metadata
title: News Fact Check
emoji: πŸ“°
colorFrom: blue
colorTo: indigo
sdk: docker
sdk_version: 4.25.0
app_file: app.py
pinned: false

Proyek Pengecek Fakta Berita Berbasis AI

Aplikasi ini dirancang untuk menganalisis keaslian sebuah berita yang disediakan melalui link URL. Sistem ini menggunakan lima metode AI yang berbeda untuk memberikan prediksi, yang kemudian digabungkan untuk menghasilkan keputusan akhir yang lebih andal.

Fitur Utama

  • Analisis Berita via Link: Mengekstrak konten artikel secara otomatis dari link URL yang diberikan pengguna.
  • Multi-Model Analysis: Menggunakan 5 metode AI untuk analisis yang komprehensif:
    1. BERT
    2. RoBERTa
    3. ELECTRA
    4. XLNet
    5. Bagging (Ensemble Voting)
  • Hasil Terperinci: Menampilkan prediksi (Fakta/Hoax) dan skor kepercayaan dari setiap model secara individual.
  • Keputusan Akhir Ensemble: Memberikan kesimpulan akhir berdasarkan voting mayoritas dari semua model untuk meningkatkan akurasi dan keandalan.
  • Dasbor Kinerja: Menyajikan visualisasi perbandingan F1-score dan akurasi dari setiap model dalam bentuk tabel dan diagram.

Arsitektur & Alur Kerja Proyek

Proyek ini dibangun dengan alur kerja yang terstruktur, mulai dari persiapan data mentah hingga penyajian hasil analisis melalui aplikasi web.

Penjelasan Alur Kerja:

  1. Persiapan Data: Berbagai dataset mentah dari berbagai kategori digabungkan, dibersihkan, dan diproses oleh skrip src/preprocess.py menjadi satu set data terpadu yang siap digunakan.
  2. Pelatihan Model: Data terpadu dibagi menjadi set data latih, validasi, dan uji. Data latih dan validasi digunakan untuk melakukan fine-tuning pada empat model Transformer (BERT, RoBERTa, ELECTRA, XLNet). Setiap model yang telah dilatih disimpan ke dalam folder models/.
  3. Evaluasi & Ensemble: Menggunakan data uji, skrip src/evaluate.py memuat keempat model terlatih untuk mengevaluasi kinerjanya. Prediksi dari keempat model digabungkan menggunakan metode majority voting untuk menghasilkan prediksi Bagging (Ensemble). Laporan kinerja, tabel perbandingan, dan visualisasi dihasilkan pada tahap ini.
  4. Aplikasi Web: Sebuah server backend (Flask) memuat semua model terlatih ke dalam memori. Antarmuka pengguna (frontend) menerima input link berita dari pengguna, mengirimkannya ke backend untuk dianalisis, dan kemudian menampilkan hasil prediksi dari setiap model serta hasil akhir dari ensemble.

Visualisasi Data & Hasil

Skrip evaluate.py secara otomatis menghasilkan beberapa visualisasi untuk membantu memahami dataset dan kinerja model. Semua gambar disimpan di dalam folder results/, yang dapat Anda periksa setelah menjalankan evaluasi. Contoh visualisasi yang dihasilkan meliputi:

  • Distribusi Kelas: Menunjukkan perbandingan jumlah berita Fakta dan Hoax.
  • Distribusi Panjang Teks: Histogram yang menunjukkan sebaran jumlah kata dalam berita.
  • Perbandingan Metrik Kinerja: Diagram batang yang membandingkan metrik kunci dari kelima metode AI.
  • Confusion Matrix: Dihasilkan untuk setiap model untuk melihat secara detail performa klasifikasinya.

Struktur Proyek

NEWS-FACK-CHECK/
β”œβ”€β”€ app.py                  # Backend server Flask
β”œβ”€β”€ datasets/               # Folder untuk semua dataset (mentah)
β”œβ”€β”€ frontend/
β”‚   └── index.html          # Antarmuka pengguna (UI) aplikasi
β”œβ”€β”€ models/                 # (Folder ini diabaikan oleh Git, dibuat saat training)
β”œβ”€β”€ results/                # Hasil evaluasi, diagram, dan laporan
β”œβ”€β”€ src/                    # Folder untuk semua skrip Python
β”‚   β”œβ”€β”€ preprocess.py
β”‚   β”œβ”€β”€ train_bert.py
β”‚   β”œβ”€β”€ ... (skrip training lainnya) ...
β”‚   └── evaluate.py
β”œβ”€β”€ .gitignore              # Mengabaikan file/folder yang tidak perlu di-upload
β”œβ”€β”€ requirements.txt        # Daftar pustaka Python yang diperlukan
└── README.md               # File ini

Arsitektur Model AI

Proyek ini memanfaatkan beberapa model Transformer pre-trained yang telah di-fine-tune pada dataset berita berbahasa Indonesia.

Metode Model Pre-trained yang Digunakan Keterangan
BERT indobenchmark/indobert-base-p2 Model BERT yang dioptimalkan untuk Bahasa Indonesia.
RoBERTa cahya/roberta-base-indonesian-522M Varian RoBERTa untuk Bahasa Indonesia.
ELECTRA google/electra-base-discriminator Model multilingual yang efisien dan berkinerja tinggi.
XLNet xlnet-base-cased Model multilingual dengan arsitektur autoregressive.
Bagging Ensemble Voting Menggabungkan prediksi dari 4 model di atas.

Instalasi & Pengaturan

Untuk menjalankan proyek ini di mesin lokal Anda, ikuti langkah-langkah berikut.

Prasyarat

  • Python 3.8 atau versi lebih baru.
  • pip dan venv untuk manajemen pustaka.
  • Git untuk mengkloning repositori.
  • GPU NVIDIA dengan CUDA: Sangat direkomendasikan untuk mempercepat proses pelatihan model.

Langkah-langkah Instalasi

  1. Clone Repositori

    git clone https://github.com/DarrenDeo/News-Fact-Check.git
    cd News-Fact-Check
    
  2. Buat dan Aktifkan Virtual Environment

    # Buat venv
    python -m venv venv
    
    # Aktifkan venv
    # Windows
    .\venv\Scripts\activate
    # macOS/Linux
    source venv/bin/activate
    
  3. Instal Semua Pustaka yang Diperlukan

    pip install -r requirements.txt
    

Cara Penggunaan

Proyek ini memiliki alur kerja dari persiapan data hingga menjalankan aplikasi web.

Langkah 1: Siapkan Dataset Mentah

  • Karena dataset berukuran besar, Anda perlu mengunduhnya secara manual dari sumber yang disebutkan dan menempatkannya di dalam folder datasets/ dengan struktur folder yang sesuai (misalnya, datasets/politics/, datasets/sports/, dll.).

Langkah 2: Pra-pemrosesan Data

  • Skrip ini akan menggabungkan dataset mentah Anda, membersihkan teks, dan membaginya menjadi set data latih, validasi, dan uji.
  • Pastikan konfigurasi di dalam src/preprocess.py sudah sesuai dengan file Anda.
  • Jalankan dari direktori src/:
    python preprocess.py
    

Langkah 3: Latih Model AI

  • Jalankan setiap skrip pelatihan satu per satu dari direktori src/. Proses ini akan memakan waktu dan membutuhkan GPU.
    python train_bert.py
    python train_roberta.py
    python train_electra.py
    python train_xlnet.py
    
  • Model yang berhasil dilatih akan disimpan di dalam folder models/.

Langkah 4: Evaluasi Semua Model

  • Setelah semua model dilatih, jalankan skrip evaluasi.
  • Jalankan dari direktori src/:
    python evaluate.py
    
  • Hasil evaluasi akan disimpan di dalam folder results/.

Langkah 5: Jalankan Aplikasi Web

  • Arahkan terminal Anda ke direktori root proyek.
  • Jalankan server Flask:
    python app.py
    
  • Tunggu hingga server berjalan dan semua model dimuat.
  • Buka browser Anda dan kunjungi alamat: http://127.0.0.1:5000.
  • Anda sekarang dapat memasukkan link berita untuk dianalisis.

Lisensi

Proyek ini dilisensikan di bawah Lisensi MIT.