Spaces:
Sleeping
Sleeping
import pandas as pd | |
from sklearn.feature_extraction.text import CountVectorizer | |
from sklearn.naive_bayes import MultinomialNB | |
import gradio as gr | |
import csv | |
# Load Dataset | |
try: | |
df = pd.read_csv("dataset.csv") | |
except FileNotFoundError: | |
data = {"pertanyaan": [], "jawaban": []} | |
df = pd.DataFrame(data) | |
# Preprocessing Data | |
vectorizer = CountVectorizer() | |
if not df.empty: | |
X = vectorizer.fit_transform(df['pertanyaan']) | |
y = df['jawaban'] | |
model = MultinomialNB() | |
model.fit(X, y) | |
else: | |
model = None | |
# Fungsi Chatbot | |
def chatbot_respon(user_input): | |
if model: | |
try: | |
input_vec = vectorizer.transform([user_input]) | |
response = model.predict(input_vec)[0] | |
except: | |
response = "Maaf, aku belum memahami pertanyaan ini." | |
log_input(user_input) | |
else: | |
response = "Model belum dilatih. Silakan tambahkan dataset." | |
return response | |
# Log Pertanyaan Baru | |
def log_input(user_input): | |
with open("chat_log.csv", "a", newline="") as file: | |
writer = csv.writer(file) | |
writer.writerow([user_input, ""]) | |
# Gradio Interface | |
interface = gr.Interface( | |
fn=chatbot_respon, | |
inputs=gr.Textbox(lines=2, placeholder="Tanyakan sesuatu..."), | |
outputs="text", | |
title="IndoBot AI", | |
description="Chatbot berbasis bahasa Indonesia dengan kemampuan belajar dari log percakapan." | |
) | |
if __name__ == "__main__": | |
interface.launch() | |