File size: 2,638 Bytes
dc9c0ba e224dd2 d36e659 dc9c0ba e224dd2 ae4c9a7 e224dd2 9131901 e224dd2 dc9c0ba e224dd2 dc9c0ba e224dd2 53c5213 e224dd2 4384755 dc9c0ba e224dd2 dc9c0ba 53c5213 e224dd2 dc9c0ba e224dd2 dc9c0ba 53c5213 e224dd2 53c5213 e224dd2 |
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 hazm import Normalizer, SentenceTokenizer
import os
import docx
from openai import OpenAI
# LLM setup
llm = OpenAI(
base_url="https://api.together.xyz/v1",
api_key='0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979',
model="meta-llama/Llama-3.3-70B-Instruct-Turbo-Free"
)
def rewrite_answer_with_llm(answer, user_input):
prompt = f"پاسخی که باید بازنویسی شود:\n{answer}\n\nلطفاً این پاسخ را با در نظر گرفتن محتوای سوال زیر و لحن آن بازنویسی کن:\n\nسوال: {user_input}"
response = llm.chat.completions.create(
messages=[{"role": "user", "content": prompt}],
model=llm.model
)
return response.choices[0].message.content.strip()
# 📁 بارگذاری فایلهای کتاب
folder_path = '46'
texts = []
for filename in os.listdir(folder_path):
if filename.endswith(".docx"):
full_path = os.path.join(folder_path, filename)
doc = docx.Document(full_path)
file_text = "\n".join([para.text for para in doc.paragraphs])
if file_text.strip():
texts.append(file_text)
# 🌀 تبدیل کل کتاب به جملات
normalizer = Normalizer()
sentence_tokenizer = SentenceTokenizer()
all_sentences = []
for text in texts:
normalized = normalizer.normalize(text)
sentences = sentence_tokenizer.tokenize(normalized)
all_sentences.extend(sentences)
# 📌 دریافت ورودی از کاربر
query = st.text_input("🔎 کلمه یا عبارت موردنظر خود را وارد کنید:")
# ✅ نمایش جمله و ۵ جمله بعدی + بازنویسی با LLM
if query:
found = False
for idx, sentence in enumerate(all_sentences):
if query in sentence:
st.success("✅ جمله یافت شد:")
st.write(sentence)
next_sentences = []
st.markdown("📌 پنج جمله بعدی:")
for i in range(1, 6):
if idx + i < len(all_sentences):
st.write(all_sentences[idx + i])
next_sentences.append(all_sentences[idx + i])
# ↪️ آمادهسازی برای بازنویسی
total_text = sentence + " " + " ".join(next_sentences)
rewritten = rewrite_answer_with_llm(total_text, query)
st.markdown("🎨 **بازنویسی شده با LLM:**")
st.write(rewritten)
found = True
break
if not found:
st.warning("عبارت موردنظر در متن یافت نشد.")
|