Ringkas-In / README.md
anthonysigid's picture
deploy SummAIrizer apps to spaces
2a16478
|
Raw
History Blame Contribute Delete
8.78 kB
metadata
title: SummAIrizer
emoji: πŸš€
colorFrom: red
colorTo: red
sdk: docker
app_port: 8501
tags:
  - streamlit
pinned: false
short_description: 'pemahaman semantik dan otomatisasi tugas dari dokumen '

AI-Powered Document Intelligence System

AI-Powered Document Intelligence Python FastAPI Streamlit

Sistem cerdas berbasis AI untuk pemahaman semantik dan otomatisasi tugas dari dokumen. Sistem ini menggunakan teknologi NLP terkini untuk melakukan ekstraksi informasi, ringkasan, klasifikasi, pencarian semantik, dan deteksi "Action Item" dari berbagai jenis dokumen (PDF, DOCX, dll).

🌟 Fitur Utama

  1. Multi-Format Document Parsing: Ekstraksi teks otomatis dari berbagai format file (PDF, Microsoft Word .docx, dan .txt) secara lokal maupun unggahan.
  2. Summarization: Membuat ringkasan dokumen panjang secara otomatis atau format bullet points dengan model seq2seq mT5 (csebuetnlp/mT5_multilingual_XLSum).
  3. Document Classification: Mengklasifikasikan dokumen secara otomatis ke dalam kategori dinamis (Laporan, Surat Resmi, Invoice, Berita, dll) menggunakan model Zero-Shot mDeBERTa-v3 beserta indikator tingkat keyakinan (Confidence Score).
  4. Keyword Extraction: Mengekstrak kata kunci utama dokumen secara otomatis dengan KeyBERT menggunakan model embedding multibahasa.
  5. Semantic Search & Custom Indexing: Pencarian dokumen berbasis makna menggunakan ChromaDB (Vector Database) dan Sentence-Transformers. Mendukung pembacaan & pengindeksan massal dari folder lokal secara rekursif.
  6. Chat dengan Dokumen (Q&A): Bertanya jawab secara cerdas dengan isi dokumen secara lokal dengan model IndoBERT-QA (Rifky/Indobert-QA) atau secara generatif menggunakan OpenAI GPT-3.5 API.
  7. Action Item Extraction: Mengekstrak poin penugasan, nama penanggung jawab (PIC), dan tenggat waktu (deadline) dari isi teks dokumen secara otomatis.
  8. Dashboard Interaktif: Antarmuka web modern berbasis Streamlit yang dilengkapi dengan visualisasi matriks, loading progress bar interaktif, dan kontrol navigasi.
  9. Pipeline Evaluasi & Pemodelan: Dilengkapi skrip Jupyter Notebook untuk visualisasi performa model (Accuracy, F1-Score, Confusion Matrix) dan sebagai blueprint untuk Fine-Tuning IndoBERT.

πŸ—οΈ Arsitektur Sistem

graph TD;
    A[Upload Document] --> B(Text Extraction)
    B --> C(Preprocessing)
    C --> D{NLP Engine}
    D -->|Summarization| E1[Ringkasan]
    D -->|Classification| E2[Label Dokumen]
    D -->|Keyword Extraction| E3[Top Keywords]
    D -->|Action Extraction| E4[Tugas & Deadline]

    C --> F(Embedding Model)
    F --> G[(Vector Database)]
    G --> H(Semantic Search)

    E1 --> I[Dashboard Streamlit]
    E2 --> I
    E3 --> I
    E4 --> I
    H --> I

πŸ“‚ Struktur Direktori

capstone/
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ raw/               # Dataset mentah
β”‚   β”œβ”€β”€ processed/         # Dataset yang sudah dibersihkan
β”‚   └── synthetic/         # Dataset buatan (LLM generated)
β”œβ”€β”€ models/                # Weights model NLP yang telah di-train
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ api/               # Endpoint FastAPI
β”‚   β”œβ”€β”€ core/              # Logika NLP (Summarization, Classification, dll)
β”‚   └── utils/             # Script pendukung (Preprocessing, Document Parser)
β”œβ”€β”€ notebooks/             # Eksperimen Jupyter Notebook (EDA, Evaluasi)
β”œβ”€β”€ requirements.txt       # Dependencies Python
β”œβ”€β”€ .env                   # Environment variables
β”œβ”€β”€ .gitignore             # File Git ignore
β”œβ”€β”€ app.py                 # Antarmuka web Streamlit (HF Space ready)
└── README.md              # Dokumentasi proyek

βš™οΈ Konfigurasi Environment (.env)

Sistem ini didesain agar mudah diubah model AI-nya tanpa mengubah kode program utama. Anda dapat mengatur model-model yang digunakan melalui file .env:

# Model Configurations
SUMMARIZATION_MODEL=csebuetnlp/mT5_multilingual_XLSum        # Model Peringkas (mT5)
CLASSIFIER_MODEL=MoritzLaurer/mDeBERTa-v3-base-mnli-xnli     # Model Klasifikasi Zero-Shot (mDeBERTa)
QA_MODEL=Rifky/Indobert-QA                                   # Model Tanya Jawab Lokal (IndoBERT-QA)
EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 # Model Vektor (Semantic Search)

πŸš€ Panduan Langkah demi Langkah (Step-by-Step)

Untuk menjalankan proyek ini dari awal (terutama pada instalasi baru), ikuti urutan berikut secara teliti:

1. Instalasi Environment & Dependensi

Pastikan Anda berada di direktori proyek (c:\xampp\htdocs\capstone), lalu jalankan instalasi library inti beserta pustaka pengolahan citra yang sering diminta oleh transformers:

pip install -r requirements.txt
pip install torchvision  # Diperlukan oleh HuggingFace Pipeline

2. Pengolahan Dataset (Dataset Generation)

Sebelum UI bisa menampilkan opsi dokumen, Anda harus men-generate dataset sintetik. Buka terminal dan jalankan:

python src/utils/data_generator.py

Apa yang terjadi di tahap ini? Script akan mengotomatiskan pembuatan 50 buah dokumen dummy (Laporan, Surat, Invoice, Berita) yang diacak menggunakan template. Hasilnya akan disimpan dalam bentuk JSON dan TXT di folder data/synthetic/.

3. Menjalankan Dashboard UI Streamlit

Setelah data berhasil dibuat, luncurkan antarmuka web dengan:

streamlit run app.py

4. Menggunakan Fitur di dalam Dashboard

  1. Buka browser yang diarahkan ke http://localhost:8501. Saat pertama kali dibuka, Anda akan melihat layar animasi inisialisasi AI Engine yang sedang memuat ratusan MB model ke memori.
  2. Di Sidebar, pilih Analisis Dokumen lalu gunakan metode input Upload File (PDF/DOCX/TXT) untuk mengunggah dokumen dari PC Anda, atau gunakan Pilih dari Dataset Sintetik.
  3. Klik Analisis Sekarang untuk memproses AI. Progress bar akan menunjukkan setiap tahapan proses NLP (Ringkasan, Ekstraksi Tugas, Klasifikasi) hingga selesai.
  4. Pindah ke menu Pencarian Semantik (Vector DB) di Sidebar.
  5. PENTING (Indexing Data):
    • Anda bisa menekan tombol Index Ulang Dataset Sintetik untuk memuat data dummy.
    • ATAU gunakan fitur Index dari Folder Custom. Klik tombol "πŸ“‚ Browse..." untuk memilih folder mana saja di komputer Anda (atau folder Google Drive Desktop). AI akan menelusuri folder beserta semua subfolder di dalamnya secara otomatis untuk membaca seluruh file PDF/Word/TXT dan mengubahnya menjadi vektor pencarian.
  6. Ketikkan pertanyaan alami (misal: "Kapan jadwal cuti bersama?"), lalu klik tombol Cari Dokumen untuk menguji kekuatan Semantic Search.

πŸ“Š Strategi Evaluasi

Sistem ini dievaluasi secara ketat untuk memastikan performa production-ready:

  • Summarization: Evaluasi menggunakan skor ROUGE.
  • Classification: Evaluasi menggunakan Accuracy, F1-Score, dan Confusion Matrix. Kami juga melakukan Comparative Study antara metode BERT dan BiLSTM.
  • Semantic Search: Evaluasi kualitas pencarian menggunakan Precision@K.

☁️ Deployment ke Hugging Face Spaces

Project ini sudah siap (Hugging Face Spaces Ready) dengan tersedianya file app.py di root directory dan penanganan khusus untuk server headless cloud (seperti pengamanan modul browser Tkinter folder).

Langkah-langkah Deployment:

  1. Buat Space baru di Hugging Face Spaces dengan SDK Streamlit dan hardware CPU basic (Free).
  2. Clone repositori Space baru Anda ke lokal.
  3. Salin seluruh isi direktori ini (kecuali .git dan .env) ke dalam folder repositori hasil clone tersebut. Pastikan file app.py dan requirements.txt berada di root folder.
  4. Buka tab Settings di halaman Space Hugging Face Anda, gulir ke bagian Variables and secrets, lalu daftarkan variabel model di bawah ini sebagai Variables:
    • SUMMARIZATION_MODEL = csebuetnlp/mT5_multilingual_XLSum
    • CLASSIFIER_MODEL = MoritzLaurer/mDeBERTa-v3-base-mnli-xnli
    • QA_MODEL = Rifky/Indobert-QA
    • EMBEDDING_MODEL = sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
  5. Lakukan git push kode Anda ke server Hugging Face:
    git add .
    git commit -m "Deploy to Hugging Face Space"
    git push
    
  6. Hugging Face akan membangun dan menjalankan aplikasi Anda secara otomatis di cloud!

πŸ‘₯ Pengembang

  • Nama/Tim: PJK-GU104
  • Institusi: PIJAK 2026