ketut commited on
Commit
fa66453
·
verified ·
1 Parent(s): ee1d366

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -70
app.py DELETED
@@ -1,70 +0,0 @@
1
- import streamlit as st
2
- from transformers import AutoTokenizer, AutoModelForSequenceClassification
3
- import torch
4
- import time
5
- import joblib
6
-
7
- # Setup device
8
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
9
-
10
- # Load model dan tokenizer dari Hugging Face
11
- tokenizer = AutoTokenizer.from_pretrained("ketut/dKBLI")
12
- model = AutoModelForSequenceClassification.from_pretrained("ketut/dKBLI")
13
- model.to(device)
14
-
15
- # Coba memuat label_encoder (jika ada file lokal)
16
- try:
17
- label_encoder = joblib.load("label_encoder.pkl")
18
- st.write(f"Jumlah label dari label_encoder: {len(label_encoder.classes_)}")
19
- except FileNotFoundError:
20
- # Jika label_encoder.pkl tidak ada, definisikan manual (sesuaikan dengan R201B)
21
- st.warning("File label_encoder.pkl tidak ditemukan. Menggunakan contoh sementara.")
22
- kbli_codes = ["47771", "47772", "47773"] # GANTI DENGAN DAFTAR KODE KBLI ASLI
23
- from sklearn.preprocessing import LabelEncoder
24
- label_encoder = LabelEncoder()
25
- label_encoder.fit(kbli_codes)
26
-
27
- # Cek jumlah label dari model untuk verifikasi
28
- st.write(f"Jumlah label dari model: {model.config.num_labels}")
29
-
30
- # Fungsi prediksi
31
- def predict_r201b(text_r201, text_r202, model, tokenizer, label_encoder, device):
32
- combined_text = f"{text_r201} {text_r202}"
33
- inputs = tokenizer(combined_text, padding=True, truncation=True, max_length=128, return_tensors="pt")
34
- inputs = {key: val.to(device) for key, val in inputs.items()}
35
- model.eval()
36
- with torch.no_grad():
37
- outputs = model(**inputs)
38
- logits = outputs.logits
39
- predicted_class = torch.argmax(logits, dim=-1).item()
40
- # Debugging
41
- st.write(f"Indeks prediksi: {predicted_class}")
42
- try:
43
- return label_encoder.inverse_transform([predicted_class])[0]
44
- except ValueError:
45
- return f"Error: Indeks {predicted_class} tidak ada di label_encoder"
46
-
47
- # Antarmuka Streamlit
48
- st.title("Pencari Kode KBLI")
49
- st.write("Masukkan Rincian 201 dan Rincian 202 untuk mendapatkan kode KBLI.")
50
-
51
- # Form input
52
- with st.form(key="kbli_form"):
53
- r201 = st.text_input("Rincian 201 - Tuliskan secara lengkap jenis kegiatan utama (meliputi proses dan output)", value="Menjual Canang sari")
54
- r202 = st.text_input("Rincian 202 - Produk utama (barang atau jasa) yang dihasilkan/dijual", value="Canang sari")
55
- submit_button = st.form_submit_button(label="Cari Kode KBLI")
56
-
57
- # Proses setelah tombol ditekan
58
- if submit_button:
59
- if r201 and r202:
60
- with st.spinner("Memprediksi kode KBLI..."):
61
- start_time = time.time()
62
- prediction = predict_r201b(r201, r202, model, tokenizer, label_encoder, device)
63
- inference_time = time.time() - start_time
64
- st.success("Hasil Prediksi:")
65
- st.write(f"**Rincian 201:** {r201}")
66
- st.write(f"**Rincian 202:** {r202}")
67
- st.write(f"**Kode KBLI:** {prediction}")
68
- st.write(f"**Waktu Inferensi:** {inference_time:.6f} detik")
69
- else:
70
- st.warning("Harap isi kedua rincian sebelum mencari!")