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() |