Spaces:
Sleeping
Sleeping
File size: 3,565 Bytes
87f2acc eb2e00a 87f2acc eb2e00a 6d64f28 eb2e00a 6d64f28 87f2acc 6d64f28 eb2e00a 87f2acc 6d64f28 87f2acc 6d64f28 87f2acc 6d64f28 87f2acc 2130a2a 87f2acc 6d64f28 eb2e00a 87f2acc eb2e00a 87f2acc |
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
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() |