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