Spaces:
Sleeping
Sleeping
File size: 1,888 Bytes
54b562a 7b1acfd 54b562a 7b1acfd d25636a 7b1acfd d25636a 7b1acfd 54b562a 7b1acfd 2e8f79f 54b562a 7b1acfd 54b562a 7b1acfd 2e8f79f 04a1c8b 2e8f79f 54b562a 7b1acfd 54b562a 7b1acfd 54b562a 7b1acfd 2e8f79f 7b1acfd 2e8f79f 7b1acfd 04a1c8b 7b1acfd 04a1c8b 7b1acfd 2e8f79f 7b1acfd 54b562a 7b1acfd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
import streamlit as st
from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline
import pandas as pd
# Memuat model dan tokenizer IndoBERT
@st.cache_resource
def load_indobert_model():
model_name = "indobenchmark/indobert-base-p1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForQuestionAnswering.from_pretrained(model_name)
return pipeline("question-answering", model=model, tokenizer=tokenizer)
qa_pipeline = load_indobert_model()
# Memuat dataset SOP
@st.cache_data
def load_sop_dataset():
return pd.read_csv("dataset.csv")
dataset = load_sop_dataset()
# Fungsi untuk menemukan konteks terbaik
def find_best_context(question, dataset):
best_score = 0
best_context = None
for _, row in dataset.iterrows():
overlap = len(set(question.lower().split()) & set(row["text"].lower().split()))
if overlap > best_score:
best_score = overlap
best_context = row["text"]
return best_context
# Antarmuka Streamlit
st.title("Sistem Penjawab Pertanyaan SOP dengan IndoBERT")
st.markdown("Ajukan pertanyaan seputar Prosedur Operasional Standar:")
question = st.text_area("Masukkan pertanyaan Anda:", "")
if st.button("Dapatkan Jawaban"):
if question:
with st.spinner("Mencari konteks yang relevan..."):
context = find_best_context(question, dataset)
if context:
with st.spinner("Menjawab pertanyaan Anda..."):
result = qa_pipeline(question=question, context=context)
st.success("Jawaban:")
st.write(result["answer"])
st.write("Skor Keyakinan:", result["score"])
else:
st.warning("Konteks yang relevan tidak ditemukan. Silakan coba pertanyaan lain.")
else:
st.warning("Silakan masukkan pertanyaan.") |