Spaces:
Running
Running
File size: 2,391 Bytes
2543f2c |
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 |
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()
|