Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
from transformers import pipeline
|
| 3 |
+
|
| 4 |
+
# 1. Load pre-trained model sentiment AI dari Hugging Face
|
| 5 |
+
# Model ini sudah dilatih untuk memahami bahasa Indonesia
|
| 6 |
+
sentiment_model = pipeline("sentiment-analysis", model="w11wo/indonesian-roberta-base-sentiment-classifier")
|
| 7 |
+
|
| 8 |
+
# 2. Fungsi Utama Mesin Data-Driven DSS
|
| 9 |
+
def dss_evaluasi(opini, lokasi):
|
| 10 |
+
# AI menganalisis sentimen dari teks opini
|
| 11 |
+
hasil = sentiment_model(opini)[0]
|
| 12 |
+
label = hasil['label']
|
| 13 |
+
skor = hasil['score']
|
| 14 |
+
|
| 15 |
+
# Logika Pengambilan Keputusan (DSS) berdasarkan Sentimen dan Demografi
|
| 16 |
+
rekomendasi = ""
|
| 17 |
+
if label in ["negative", "NEGATIVE", "Negative"]:
|
| 18 |
+
sentimen_teks = "Negatif 📉 (Keresahan Ekonomi)"
|
| 19 |
+
if lokasi == "Masyarakat Desa":
|
| 20 |
+
rekomendasi = "Prioritas Kebijakan: Segera alokasikan Bantuan Langsung Tunai (BLT) & subsidi pupuk/bibit untuk menjaga daya beli petani."
|
| 21 |
+
elif lokasi == "Masyarakat Kabupaten":
|
| 22 |
+
rekomendasi = "Prioritas Kebijakan: Lakukan pemantauan ketat harga bahan pokok di pasar tradisional & berikan stimulus untuk UMKM lokal."
|
| 23 |
+
else: # Kota
|
| 24 |
+
rekomendasi = "Prioritas Kebijakan: Gelar operasi pasar murah untuk menekan inflasi pangan & kaji ulang tarif transportasi publik."
|
| 25 |
+
|
| 26 |
+
elif label in ["positive", "POSITIVE", "Positive"]:
|
| 27 |
+
sentimen_teks = "Positif 📈 (Optimisme)"
|
| 28 |
+
rekomendasi = "Kondisi Stabil: Lanjutkan program edukasi literasi keuangan dan dorong kampanye cinta produk dalam negeri (UMKM)."
|
| 29 |
+
|
| 30 |
+
else:
|
| 31 |
+
sentimen_teks = "Netral ➖"
|
| 32 |
+
rekomendasi = "Pantau Berkala: Lakukan sosialisasi kebijakan moneter secara transparan agar masyarakat terhindar dari panic buying."
|
| 33 |
+
|
| 34 |
+
# Format output untuk Dashboard
|
| 35 |
+
output_text = f"🗣️ Opini Masyarakat: \"{opini}\"\n📍 Pemetaan Demografi: {lokasi}\n\n"
|
| 36 |
+
output_text += f"📊 Hasil Evaluasi Model AI:\n- Sentimen Dominan: {sentimen_teks}\n- Akurasi/Keyakinan AI: {skor:.2f}\n\n"
|
| 37 |
+
output_text += f"💡 Rekomendasi DSS untuk Pemangku Kepentingan:\n{rekomendasi}"
|
| 38 |
+
|
| 39 |
+
return output_text
|
| 40 |
+
|
| 41 |
+
# 3. Membuat Antarmuka (UI) Dashboard Mockup dengan Gradio
|
| 42 |
+
with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", neutral_hue="slate")) as dashboard:
|
| 43 |
+
gr.Markdown("# 📉 Intelligence Data-Driven DSS")
|
| 44 |
+
gr.Markdown("### Evaluasi Sentimen Pelemahan Rupiah terhadap USD (Regional)")
|
| 45 |
+
gr.Markdown("Sistem ini menggunakan model *Artificial Intelligence* (Indonesian RoBERTa) untuk mengekstrak opini masyarakat dan merumuskan intervensi kebijakan publik yang tepat sasaran.")
|
| 46 |
+
|
| 47 |
+
with gr.Row():
|
| 48 |
+
with gr.Column(scale=1):
|
| 49 |
+
gr.Markdown("### 📥 Input Data Analitik")
|
| 50 |
+
opini_input = gr.Textbox(lines=4, label="Masukkan Opini / Keluhan Warga", placeholder="Contoh: Harga sembako makin mahal sejak dolar tembus 16 ribu, kami di kampung makin susah...")
|
| 51 |
+
lokasi_input = gr.Dropdown(choices=["Masyarakat Desa", "Masyarakat Kabupaten", "Masyarakat Kota"], label="Pilih Tingkat Demografi Wilayah", value="Masyarakat Desa")
|
| 52 |
+
submit_btn = gr.Button("Eksekusi Analisis DSS", variant="primary")
|
| 53 |
+
|
| 54 |
+
with gr.Column(scale=1):
|
| 55 |
+
gr.Markdown("### 📤 Output Rekomendasi Keputusan")
|
| 56 |
+
output_hasil = gr.Textbox(lines=10, label="Dashboard Hasil Intelijensi")
|
| 57 |
+
|
| 58 |
+
submit_btn.click(fn=dss_evaluasi, inputs=[opini_input, lokasi_input], outputs=output_hasil)
|
| 59 |
+
|
| 60 |
+
# Menjalankan aplikasi
|
| 61 |
+
dashboard.launch()
|