Spaces:
Running
Running
File size: 2,930 Bytes
88b8225 a065de3 f8c382e ecb9c1c a065de3 329231e a065de3 98bbc63 a065de3 8fbe768 a065de3 0489530 a065de3 f8c382e a065de3 8fbe768 f8c382e 1ca069a a065de3 493ea2f a065de3 8848c4c a065de3 f8c382e a065de3 8848c4c a065de3 7fb592c 88b8225 f8c382e |
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 68 69 70 71 72 73 74 |
import streamlit as st
from transformers import pipeline, AutoTokenizer, AutoModelForMaskedLM
import torch
# تنظیمات صفحه
st.set_page_config(page_title="دستیار هوش مصنوعی (پر کردن ماسک)", layout="wide")
# تابع بارگذاری مدل و pipeline
@st.cache_resource
def load_model_and_pipeline():
# بارگذاری pipeline
pipe = pipeline("fill-mask", model="HooshvareLab/bert-fa-base-uncased")
# بارگذاری مدل و توکنایزر به صورت مستقیم
tokenizer = AutoTokenizer.from_pretrained("HooshvareLab/bert-fa-base-uncased")
model = AutoModelForMaskedLM.from_pretrained("HooshvareLab/bert-fa-base-uncased")
return pipe, tokenizer, model
pipe, tokenizer, model = load_model_and_pipeline()
# تابع پیشبینی با pipeline
def predict_with_pipeline(text):
results = pipe(text)
return [{"word": res["token_str"], "score": res["score"]} for res in results]
# تابع پیشبینی با مدل مستقیم
def predict_with_model(text):
inputs = tokenizer(text, return_tensors="pt")
mask_token_index = torch.where(inputs["input_ids"] == tokenizer.mask_token_id)[1]
# اجرای مدل
outputs = model(**inputs)
logits = outputs.logits
# پیدا کردن توکنهای برتر
mask_token_logits = logits[0, mask_token_index, :]
top_tokens = torch.topk(mask_token_logits, 5, dim=1).indices[0].tolist()
results = [{"word": tokenizer.decode([token])} for token in top_tokens]
return results
# رابط کاربری
def main():
st.title("دستیار هوش مصنوعی (پر کردن ماسک)")
# ورودی کاربر
st.subheader("ورودی متن:")
text = st.text_input(
"متن خود را وارد کنید (از [MASK] برای نشان دادن کلمه حذف شده استفاده کنید):",
value="ما در هوشواره معتقدیم [MASK] دانش و آگاهی میتواند جامعه را تغییر دهد.",
)
if st.button("پیشبینی با pipeline"):
if "[MASK]" not in text:
st.error("لطفاً یک متن شامل [MASK] وارد کنید.")
else:
st.subheader("نتایج پیشبینی با pipeline:")
predictions = predict_with_pipeline(text)
for pred in predictions:
st.write(f"کلمه: {pred['word']} - احتمال: {pred['score']:.2f}")
if st.button("پیشبینی با مدل مستقیم"):
if "[MASK]" not in text:
st.error("لطفاً یک متن شامل [MASK] وارد کنید.")
else:
st.subheader("نتایج پیشبینی با مدل مستقیم:")
predictions = predict_with_model(text)
for pred in predictions:
st.write(f"کلمه: {pred['word']}")
if __name__ == "__main__":
main()
|