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("عبارت موردنظر در متن یافت نشد.")