Spaces:
Running
Running
import os | |
import re | |
import gradio as gr | |
from transformers import pipeline | |
# گرفتن توکن از متغیر محیطی | |
token = os.environ.get("HF_TOKEN") | |
# استفاده از مدل نسبتاً سبک و قابل اجرا در Hugging Face Spaces | |
pipe = pipeline( | |
"text-generation", | |
model="google/gemma-2b-it", | |
token=token | |
) | |
# تابع تشخیص و ترجمه کلمات انگلیسی رایج در حوزه روانشناسی | |
EN_FA_DICT = { | |
"behavior": "رفتار", | |
"self-esteem": "عزت نفس", | |
"confidence": "اعتماد به نفس", | |
"learning": "یادگیری", | |
"attachment": "دلبستگی", | |
"communication": "ارتباط", | |
"stress": "استرس", | |
"parent": "والد", | |
"trauma": "آسیب روانی" | |
} | |
def replace_english_words(text): | |
for eng, fa in EN_FA_DICT.items(): | |
text = re.sub(rf"\b{eng}\b", fa, text, flags=re.IGNORECASE) | |
return text | |
def generate_topics(field, major, keywords, audience, level): | |
prompt = f""" | |
۳ موضوع پایاننامه در رشته {field} با گرایش {major} پیشنهاد بده که به کلیدواژههای "{keywords}" مربوط باشه و جامعه هدف آن "{audience}" باشد. مقطع: {level}. | |
موضوعات را فارسی بنویس. | |
""" | |
output = pipe(prompt, max_new_tokens=250)[0]['generated_text'] | |
# حذف prompt در صورتی که مدل آن را تکرار کرده باشد | |
if output.startswith(prompt.strip()): | |
output = output[len(prompt.strip()):].strip() | |
# حذف فاصلههای اضافی و جایگزینی کلمات انگلیسی | |
output = replace_english_words(output.strip()) | |
# افزودن پیام پایانی تبلیغاتی | |
output += "\n\nبرای مشاوره و راهنمایی تخصصی با گروه مشاوره کاسپین تماس بگیرید:\n02188252497" | |
return output | |
iface = gr.Interface( | |
fn=generate_topics, | |
inputs=[ | |
gr.Textbox(label="رشته"), | |
gr.Textbox(label="گرایش"), | |
gr.Textbox(label="کلیدواژهها"), | |
gr.Textbox(label="جامعه هدف"), | |
gr.Dropdown(choices=["کارشناسی ارشد", "دکتری"], label="مقطع") | |
], | |
outputs="text", | |
title="پیشنهادگر هوشمند موضوع پایاننامه کاسپین 🎓" | |
) | |
iface.launch() | |