Spaces:
Runtime error
Runtime error
File size: 4,392 Bytes
ec11884 0c8a0f0 0bb3508 edd8287 e83c95e cd2bc8b 0bb3508 d4efbd1 9906480 0c8a0f0 e83c95e 0c8a0f0 0bb3508 9906480 0c8a0f0 0bb3508 d4efbd1 b9f9e30 0bb3508 4600387 9906480 cd2bc8b 9906480 e1f9a88 9906480 df9b536 ec11884 549f4f9 cd2bc8b b9f9e30 |
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 |
import gradio as gr
from transformers import pipeline
# Load Arabic NLP model for intent classification
intent_classifier = pipeline("text-classification", model="aubmindlab/bert-base-arabertv02")
# Load language detection model
language_detector = pipeline("text-classification", model="papluca/xlm-roberta-base-language-detection")
# Omdurman National Bank-specific guidelines
ONB_GUIDELINES = {
"balance": "يمكنك التحقق من رصيدك عبر الإنترنت أو عبر تطبيق الهاتف الخاص ببنك أم درمان الوطني.",
"lost_card": "في حالة فقدان البطاقة، اتصل بالرقم 249-123-456-789 فورًا.",
"loan": "شروط القرض تشمل الحد الأدنى للدخل (5000 جنيه سوداني) وتاريخ ائتماني جيد.",
"transfer": "لتحويل الأموال، استخدم تطبيق الهاتف أو الخدمة المصرفية عبر الإنترنت.",
"new_account": "لفتح حساب جديد، قم بزيارة أقرب فرع مع جواز سفرك أو هويتك الوطنية.",
"interest_rates": "أسعار الفائدة على الودائع تتراوح بين 5% إلى 10% سنويًا.",
"branches": "فروعنا موجودة في أم درمان، الخرطوم، وبورتسودان. زيارة موقعنا للتفاصيل.",
"working_hours": "ساعات العمل من 8 صباحًا إلى 3 مساءً من الأحد إلى الخميس.",
"contact": "الاتصال بنا على الرقم 249-123-456-789 أو عبر البريد الإلكتروني [email protected]."
}
# Map intents to responses
INTENT_TO_RESPONSE = {
"balance": "balance",
"lost_card": "lost_card",
"loan": "loan",
"transfer": "transfer",
"new_account": "new_account",
"interest_rates": "interest_rates",
"branches": "branches",
"working_hours": "working_hours",
"contact": "contact"
}
def detect_language(text):
# Use Hugging Face language detection model
result = language_detector(text)
language = result[0]['label']
return language
def classify_intent(message: str):
# Use NLP model to classify the user's intent
result = intent_classifier(message)
intent = result[0]['label']
return INTENT_TO_RESPONSE.get(intent, "unknown")
def respond(message: str):
# Detect language
language = detect_language(message)
# If the language is not Arabic, return a default response
if language != "ar":
return "عذرًا، هذا المساعد يدعم اللغة العربية فقط. الرجاء إعادة الصياغة بالعربية."
# Classify the user's intent using NLP
intent = classify_intent(message)
# If intent is recognized, return the corresponding response
if intent != "unknown":
return ONB_GUIDELINES.get(intent, "عذرًا، لم يتم التعرف على الخيار المحدد.")
# Fallback to keyword matching if NLP doesn't recognize the intent
for keyword, key in INTENT_TO_RESPONSE.items():
if keyword in message:
return ONB_GUIDELINES.get(key, "عذرًا، لم يتم التعرف على الخيار المحدد.")
# Default response if no intent or keyword is matched
return "عذرًا، لم أفهم سؤالك. الرجاء إعادة الصياغة أو اختيار أحد الخيارات التالية: " + ", ".join(INTENT_TO_RESPONSE.keys())
# Chat interface
with gr.Blocks(css=".gradio-container {direction: rtl;}") as demo:
gr.Markdown("# <center>بنك أم درمان الوطني - المساعد المصرفي</center>")
with gr.Tab("المحادثة"):
gr.Markdown("## اكتب سؤالك هنا:")
# Text input
text_input = gr.Textbox(label="السؤال")
# Submit button
submit_btn = gr.Button("إرسال")
# Output textbox for responses
output = gr.Textbox(label="الرد", interactive=False)
# Link inputs and button to response function
submit_btn.click(
fn=respond,
inputs=text_input,
outputs=output
)
if __name__ == "__main__":
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=True # Enable public link
) |