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()