Spaces:
Sleeping
Sleeping
import nltk | |
from nltk.chat.util import Chat, reflections | |
import gradio as gr | |
# Reflection to handle variations in user inputs | |
reflections = { | |
"aku": "kamu", | |
"saya": "Anda", | |
"kamu": "saya", | |
"Anda": "saya", | |
"adalah": "adalah", | |
} | |
# Define chatbot pairs | |
pairs = [ | |
[ | |
r"(hi|halo|hai|hello|hey)", | |
["Halo! Saya Nexus-Gerd-Bot. Bagaimana saya bisa membantu Anda hari ini?",] | |
], | |
[ | |
r"siapa kamu\??", | |
["Saya adalah Nexus-Gerd-Bot, asisten virtual untuk membantu Anda menilai kemungkinan GERD.",] | |
], | |
[ | |
r"bagaimana kabarmu\??", | |
["Saya baik-baik saja. Terima kasih sudah bertanya!",] | |
], | |
[ | |
r"(.*)gerd(.*)", | |
["Saya bisa membantu menilai apakah Anda mungkin menderita GERD berdasarkan gejala yang Anda alami dalam 7 hari terakhir. Siapkah Anda untuk memulai?",] | |
], | |
[ | |
r"(.*) (nyeri ulu hati|heartburn) (.*) ?", | |
["Berapa hari dalam 7 hari terakhir Anda mengalami nyeri ulu hati?",] | |
], | |
[ | |
r"(.*) (regurgitasi) (.*) ?", | |
["Berapa hari dalam 7 hari terakhir Anda mengalami regurgitasi?",] | |
], | |
[ | |
r"(.*) (mual) (.*) ?", | |
["Berapa hari dalam 7 hari terakhir Anda mengalami mual?",] | |
], | |
[ | |
r"(.*) (sulit tidur) (.*) ?", | |
["Berapa hari dalam 7 hari terakhir Anda mengalami kesulitan tidur karena nyeri ulu hati?",] | |
], | |
[ | |
r"(.*) (minum obat) (.*) ?", | |
["Berapa hari dalam 7 hari terakhir Anda minum obat tambahan untuk nyeri ulu hati?",] | |
], | |
[ | |
r"terima kasih(.*)", | |
["Sama-sama! Jika Anda membutuhkan bantuan lebih lanjut, jangan ragu untuk bertanya.",] | |
], | |
[ | |
r"selamat tinggal|dadah|sampai jumpa", | |
["Sampai jumpa! Semoga hari Anda menyenangkan!",] | |
], | |
] | |
# Create a Chat object | |
chatbot = Chat(pairs, reflections) | |
# Function to convert days to score | |
def days_to_score(days): | |
if days == 0: | |
return 0 | |
elif days == 1: | |
return 1 | |
elif 2 <= days <= 3: | |
return 2 | |
elif 4 <= days <= 7: | |
return 3 | |
else: | |
return 0 # This case should not happen as the input sliders are restricted | |
# Function to diagnose GERD based on input days | |
def diagnose_gerd_responses(responses): | |
scores = [days_to_score(d) for d in responses] | |
total_score = sum(scores) | |
if total_score <= 7: | |
diagnosis = "Kemungkinan Anda tidak menderita GERD." | |
elif 8 <= total_score <= 18: | |
diagnosis = "Kemungkinan Anda menderita GERD. Konsultasikan dengan penyedia layanan kesehatan untuk evaluasi lebih lanjut." | |
else: | |
diagnosis = "Skor di luar jangkauan. Pastikan Anda memasukkan nilai dengan benar." | |
return diagnosis | |
# Function to handle chatbot responses and collect inputs | |
def chatbot_interface(user_input, state): | |
responses = state or [] | |
if len(responses) < 6: | |
response = chatbot.respond(user_input) | |
responses.append(int(user_input)) | |
return response, responses | |
else: | |
diagnosis = diagnose_gerd_responses(responses) | |
return diagnosis, responses | |
# Define the Gradio interface | |
interface = gr.Interface( | |
fn=chatbot_interface, | |
inputs=[gr.Textbox(lines=2, placeholder="Masukkan pesan Anda di sini..."), gr.State()], | |
outputs=[gr.Textbox(label="Nexus-Gerd-Bot"), gr.State()], | |
title="Nexus-Gerd-Bot", | |
description="Chat dengan Nexus-Gerd-Bot untuk menilai kemungkinan GERD berdasarkan gejala yang Anda alami dalam 7 hari terakhir." | |
) | |
# Launch the app | |
if __name__ == "__main__": | |
interface.launch() |