Spaces:
Runtime error
Runtime error
File size: 2,565 Bytes
6aa5690 175598c d173465 c85e7c2 175598c 6aa5690 c85e7c2 df561c7 c85e7c2 df561c7 d173465 c85e7c2 df561c7 c85e7c2 175598c c85e7c2 175598c c85e7c2 d173465 c85e7c2 175598c 6aa5690 175598c c85e7c2 175598c 6aa5690 c85e7c2 6aa5690 f51748e c85e7c2 7e7a410 c85e7c2 7e7a410 c85e7c2 7e7a410 6aa5690 8796cef |
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 |
import torch
import gradio as gr
from transformers import AutoTokenizer, AutoModel
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
# بارگذاری مدل
tokenizer = AutoTokenizer.from_pretrained("HooshvareLab/bert-fa-base-uncased")
model = AutoModel.from_pretrained("HooshvareLab/bert-fa-base-uncased")
# پرسش و پاسخها (سوالات باید طبیعیتر شوند)
faq_dict = {
"زمان انتخاب واحد چه موقع است؟": "معمولاً پایان شهریور و بهمن است.",
"چه زمانی میتوان حذف و اضافه انجام داد؟": "حدود یک هفته پس از شروع ترم تحصیلی است.",
"چه معدلی برای انتخاب ۲۴ واحد لازم است؟": "حداقل معدل 17 نیاز است.",
"تا چه زمانی امکان حذف اضطراری وجود دارد؟": "تا هفته هشتم ترم مجاز است.",
"چگونه میتوان مهمان شد؟": "با موافقت دانشگاه مبدا و مقصد انجام میشود.",
}
faq_questions = list(faq_dict.keys())
faq_embeddings = []
# تابع استخراج embedding
def get_embedding(text):
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
with torch.no_grad():
outputs = model(**inputs)
return outputs.last_hidden_state.mean(dim=1)[0].cpu().numpy()
# پیشمحاسبه embeddingها
for question in faq_questions:
emb = get_embedding(question)
faq_embeddings.append(emb)
# پاسخدهی
def student_bot(user_question):
try:
user_emb = get_embedding(user_question)
sims = [cosine_similarity([user_emb], [emb])[0][0] for emb in faq_embeddings]
best_idx = int(np.argmax(sims))
best_score = sims[best_idx]
# 👇 برای دیباگ
print("Similarity Score:", best_score)
if best_score > 0.6:
return faq_dict[faq_questions[best_idx]]
else:
return "متأسفم، پاسخ این سؤال در حال حاضر موجود نیست."
except Exception as e:
return f"❗️خطا در سیستم: {str(e)}"
# رابط Gradio
iface = gr.Interface(
fn=student_bot,
inputs=gr.Textbox(label="سوال خود را بنویسید"),
outputs=gr.Textbox(label="پاسخ"),
title="ایجنت راهنمای دانشجویان",
description="پاسخ به سوالات رایج با استفاده از مدل FarsiBERT و تشابه معنایی"
)
iface.launch()
|