bushra1dajam's picture
Update app.py
58a23b9 verified
import streamlit as st
import random
import openai
import joblib
# Load the pipeline
pipeLine = joblib.load('model_pipeline.joblib')
# Load the model pipeline
model_pipeline = joblib.load('model_pipeline.joblib')
# Category mapping
category_mapping = {
0: 'ثقافة',
1: 'Finance',
2: 'Medical',
3: 'سياسة',
4: 'Religion',
5: 'رياضي',
6: 'Tech'
}
def classification_page():
st.title("صفحة التصنيف")
article = st.text_area("ادخل المقال هنا", height=150)
if st.button("صنّف"):
if article.strip():
# Use the model pipeline to predict the category
numeric_prediction = model_pipeline.predict([article])[0]
category_prediction = category_mapping.get(numeric_prediction, "Unknown")
st.write(f"التصنيف المتوقع : *{category_prediction}* ")
else:
st.error("Please enter an article to classify.")
def summarization_page():
st.title("صفحة التلخيص")
# Set your OpenAI API key
openai.api_key = 'sk-proj-iWuQUklfwcatAyNbwpmhT3BlbkFJhfrEnp9SFu1sdwSPcxsX'
# Streamlit app
# Text input from user
input_text = st.text_area("ادخل المقال هنا", height=200)
# Function to generate summary using OpenAI
def generate_summary(text):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # Default model
messages=[
{"role": "system", "content": "You are a helpful assistant that summarizes text."},
{"role": "user", "content": text}
],
temperature=0.7, # Default temperature
max_tokens=150, # Default max tokens
top_p=1.0,
frequency_penalty=0.0,
presence_penalty=0.0
)
return response.choices[0].message['content'].strip()
# Button to trigger summarization
if st.button("لخّص"):
if input_text:
with st.spinner("إنشاء التلخيص"):
summary = generate_summary(input_text)
st.write("### الملخص ")
st.write(summary)
else:
st.warning("Please enter some text to summarize.")
def generate_questions(user_text):
questions = [
{
"question": "ما هو اسم الكتاب الذي حصل على جائزة عربية على هامش افتتاح معرض بيروت العربي الدولي للكتاب ؟",
"options": ["الحضارة الاسلامية", "المصحف وقراءاته", "مؤمنون بلا حدود", "عبد المجيد الشرقي"],
"answer": "المصحف وقراءاته"
},
{
"question": "من الذي حصل أشرف على تصنيف كتاب المصحف وقراءاته ؟",
"options": ["عبد المجيد الشرقي", "النادي الثقافي العربي", "مؤسسة مؤمنون بلا حدود", "مجموعة من الباحثين"],
"answer": "عبد المجيد الشرقي"
},
{
"question": "كم عدد مجلدات كتاب المصحف وقراءاته ؟",
"options": ["ثلاثة مجلدات", "أربعة مجلدات", "خمسة مجلدات", "ستة مجلدات"],
"answer": "خمسة مجلدات"
}
]
return questions
def quiz_page():
st.title("صفحة الاختبار")
user_text = st.text_area("ادخل المقال هنا", height=150)
if st.button("أنشئ الأسئلة"):
if user_text:
questions = generate_questions(user_text)
st.session_state.questions = questions
st.session_state.current_question = None
st.session_state.score = 0
st.session_state.asked_questions = []
if 'questions' in st.session_state and len(st.session_state.questions) > 0:
if st.button("اسأل"):
if len(st.session_state.asked_questions) < len(st.session_state.questions):
available_questions = [q for q in st.session_state.questions if q not in st.session_state.asked_questions]
st.session_state.current_question = random.choice(available_questions)
st.session_state.asked_questions.append(st.session_state.current_question)
else:
st.write("تم عرض جميع الأسئلة")
if st.session_state.current_question:
question = st.session_state.current_question
st.write(f"السؤال: {question['question']}")
user_answer = st.radio("اختر الإجابة", question['options'], key="answer")
if st.button("سلّم الإجابة"):
if user_answer == question['answer']:
st.session_state.score += 1
st.session_state.current_question = None
if st.button("إنهاء الاختبار"):
st.write(f"نتيجة الاختبار {st.session_state.score} من {len(st.session_state.asked_questions)}")
st.session_state.score = 0
st.session_state.asked_questions = []
st.session_state.questions = []
# Add navigation
page = st.sidebar.selectbox("اختر صفحة", ["التصنيف", "التلخيص", "الاختبار"])
if page == "التصنيف":
classification_page()
elif page == "التلخيص":
summarization_page()
else:
quiz_page()