File size: 2,391 Bytes
bc23008
293840d
f6afc8f
bc23008
d8fad44
5a87c2f
293840d
d8fad44
19a84e6
 
d8fad44
19a84e6
293840d
bc23008
293840d
bc23008
9dd451f
 
 
5264200
f5b923e
bc23008
293840d
bc23008
 
 
 
 
 
 
5264200
bc23008
 
293840d
bc23008
 
 
 
 
5264200
293840d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5264200
293840d
 
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
import streamlit as st
from hazm import Normalizer, SentenceTokenizer
import os
import docx
from langchain.chat_models import ChatOpenAI

# LLM setup
llm = ChatOpenAI(
    base_url="https://api.together.xyz/v1",
    api_key='0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979',
    model="deepseek-ai/DeepSeek-R1"
)

def rewrite_answer_with_llm(answer, user_input):
    prompt = f"پاسخی که باید بازنویسی شود:\n{answer}\n\nلطفاً این پاسخ را با در نظر گرفتن محتوای سوال زیر و لحن آن بازنویسی کن:\n\nسوال: {user_input}"

    response = llm(prompt)
    
    return response['choices'][0]['text'].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("عبارت موردنظر در متن یافت نشد.")