Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeteksiTeksKasar

Deskripsi

DeteksiTeksKasar adalah layanan REST API klasifikasi teks berbahasa Indonesia untuk mendeteksi bahasa kasar. Layanan ini menggunakan model IndoBERT yang di-fine-tune dengan dataset IndoDiscourse.

Sistem berjalan sepenuhnya secara lokal (offline) tanpa dependensi eksternal saat proses inferensi.

Tujuan

Menyediakan layanan klasifikasi teks untuk memfasilitasi moderasi konten. Sistem juga dilengkapi infrastruktur telemetri guna mengumpulkan data teks anomali atau laporan prediksi yang salah, yang dapat diekspor sebagai CSV untuk kebutuhan pelatihan model lanjutan.

Arsitektur

Arsitektur sistem dibagi menjadi dua lingkungan:

  • Training Environment: Lingkungan pengembangan (umumnya dieksekusi di Jupyter/Colab) untuk pipeline data dan pelatihan model pre-trained hingga menghasilkan checkpoint terbaik.
  • Inference Service: Aplikasi backend murni yang berjalan menggunakan FastAPI untuk memuat bobot model hasil pelatihan dan menyediakan endpoint REST API.

Struktur Proyek

Repositori ini terdiri dari dua direktori utama:

  • API/ — Memuat source code backend (FastAPI), rute API, model database (SQLite via Alembic), dan pengujian.
  • MachineLearning/ — Lingkungan yang memuat skrip Jupyter Notebook untuk pipeline data dan pelatihan model.

Teknologi

  • Backend & API Framework: FastAPI, Pydantic, Uvicorn
  • Database & ORM: SQLAlchemy, Alembic, SQLite
  • Machine Learning: PyTorch, HuggingFace Transformers (IndoBERT)
  • Data Engineering: Pandas, Scikit-learn
  • Testing: Pytest, FastAPI TestClient

Instalasi

  1. Pastikan mesin memiliki instalasi Python 3.10 atau yang lebih baru.

  2. Lakukan clone repositori ini dan masuk ke dalam folder API:

    git clone https://github.com/RozhakDev/DeteksiTeksKasar.git
    cd DeteksiTeksKasar/API
  3. Bangun dan aktifkan lingkungan virtual:

    python -m venv .venv
    source .venv/bin/activate  # Untuk Linux/MacOS
    # atau .venv\Scripts\activate untuk sistem operasi Windows
  4. Instal dependensi:

    pip install -r requirements.txt

Konfigurasi

Layanan diatur melalui variabel environment. Salin templat konfigurasi yang disediakan:

cp .env.example .env

Anda dapat menyesuaikan isi .env seperti MAX_TEXT_LENGTH (batas panjang teks) atau CORS_ORIGINS.

Menjalankan Aplikasi

Jalankan server lokal menggunakan Uvicorn:

uvicorn app.main:create_app --factory --reload

Layanan dapat diakses melalui http://127.0.0.1:8000. Dokumentasi API interaktif (Swagger UI) dapat diakses pada http://127.0.0.1:8000/docs.

API

Layanan menggunakan base path /api/v1. Endpoint utama yang tersedia meliputi:

Metode Endpoint Deskripsi
GET /health Memeriksa status server dan ketersediaan model AI.
POST /predict Endpoint utama untuk klasifikasi teks. Mengembalikan label KASAR atau TIDAK_KASAR beserta nilai probabilitas.
POST /dataset Merekam data teks anomali beserta label koreksinya ke dalam database.
GET /dataset/export Mengunduh seluruh riwayat data telemetri dalam format CSV.

Machine Learning

Model dibangun di atas model dasar IndoBERT. Direktori MachineLearning/ menyimpan alur kerja pelatihan model. Jika Anda melakukan pelatihan tambahan, pindahkan bobot model .bin atau .safetensors ke lokasi yang sesuai agar termuat oleh layanan.

Pengujian

Sistem dilindungi oleh pengujian menggunakan pytest. Pengujian dieksekusi dengan database SQLite in-memory untuk memastikan tes terisolasi. Jalankan perintah berikut untuk mengeksekusi pengujian:

pytest

Lisensi

Didistribusikan di bawah Lisensi MIT. Hak Cipta (c) 2026 Rozhak.

About

Sistem klasifikasi teks berbahasa Indonesia untuk mendeteksi bahasa kasar menggunakan IndoBERT dan menyediakan layanan inferensi melalui REST API berbasis FastAPI.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages