chatbot_ubdated / app.py
fatma812's picture
Upload app.py
b26d7a2 verified
Raw
History Blame Contribute Delete
1.99 kB
import gradio as gr
import json
import difflib
from deep_translator import GoogleTranslator
# =========================
# تحميل البيانات
# =========================
with open("artifacts (3).json", "r", encoding="utf-8") as f:
artifacts = json.load(f)
# =========================
# تحديد اللغة
# =========================
def is_arabic(text):
for ch in text:
if '\u0600' <= ch <= '\u06FF':
return True
return False
def translate_to_en(text):
return GoogleTranslator(source='auto', target='en').translate(text)
def translate_to_ar(text):
return GoogleTranslator(source='auto', target='ar').translate(text)
# =========================
# البحث
# =========================
def search_artifact(user_input):
user_input = user_input.lower()
best_match = None
best_score = 0
for artifact in artifacts:
for keyword in artifact["keywords"]:
score = difflib.SequenceMatcher(None, user_input, keyword.lower()).ratio()
if score > best_score:
best_score = score
best_match = artifact
return best_match
# =========================
# الرد
# =========================
def chatbot(user_input):
is_ar = is_arabic(user_input)
if is_ar:
query = translate_to_en(user_input)
else:
query = user_input
result = search_artifact(query)
if result:
response = result["description"]
if is_ar:
response = translate_to_ar(response)
return response
else:
return "مش لاقي حاجة 😅" if is_ar else "Not found 😅"
# =========================
# واجهة Gradio
# =========================
demo = gr.Interface(
fn=chatbot,
inputs=gr.Textbox(label="Ask about any artifact / اسأل عن أي أثر"),
outputs="text",
title="🏺 Egyptian Museum Chatbot"
)
demo.launch()