import streamlit as st from datasets import load_dataset import pandas as pd from transformers import pipeline # Constants universities_url = "https://www.4icu.org/top-universities-world/" # Load datasets with caching to optimize performance @st.cache_resource def load_datasets(): ds_jobs = load_dataset("lukebarousse/data_jobs") ds_courses = load_dataset("azrai99/coursera-course-dataset") ds_custom_courses = pd.read_csv("final_cleaned_merged_coursera_courses.csv") ds_custom_jobs = pd.read_csv("merged_data_science_jobs.csv") ds_custom_universities = pd.read_csv("merged_university_data_cleaned (1).csv") return ds_jobs, ds_courses, ds_custom_courses, ds_custom_jobs, ds_custom_universities ds_jobs, ds_courses, ds_custom_courses, ds_custom_jobs, ds_custom_universities = load_datasets() # Initialize the pipeline with caching, using an accessible model like 'google/flan-t5-large' @st.cache_resource def load_pipeline(): return pipeline("text2text-generation", model="google/flan-t5-large") qa_pipeline = load_pipeline() # Streamlit App Interface st.title("Career Counseling Application") st.subheader("Build Your Profile and Discover Tailored Career Recommendations") # Sidebar for Profile Setup st.sidebar.header("Profile Setup") educational_background = st.sidebar.text_input("Educational Background (e.g., Degree, Major)") interests = st.sidebar.text_input("Interests (e.g., AI, Data Science, Engineering)") tech_skills = st.sidebar.text_area("Technical Skills (e.g., Python, SQL, Machine Learning)") soft_skills = st.sidebar.text_area("Soft Skills (e.g., Communication, Teamwork)") # Save profile data for session-based recommendations if st.sidebar.button("Save Profile"): st.session_state.profile_data = { "educational_background": educational_background, "interests": interests, "tech_skills": tech_skills, "soft_skills": soft_skills } st.sidebar.success("Profile saved successfully!") # Questions Section (Appears after profile submission) if "profile_data" in st.session_state: st.header("Answer the Following Questions:") questions = [ "What do you see yourself achieving in the next five years?", "Which skills would you like to develop further? (Examples: leadership, technical expertise, communication, etc.)", "Do you prefer a structured routine or a more flexible, varied work environment?", "What’s most important to you in a job? (e.g., work-life balance, job stability, opportunities for growth, impact on society)", "What types of projects or tasks energize you? (e.g., solving complex problems, helping others, creating something new)", "Are you comfortable with roles that may involve public speaking or presenting ideas?", "How do you handle stress or pressure in a work setting? (Select options: I thrive under pressure, I manage well, I prefer lower-stress environments)", "Would you be open to relocation or travel for your job?", "Do you prioritize high salary potential or job satisfaction when considering a career?", "What kind of work culture are you drawn to? (e.g., collaborative, competitive, mission-driven, innovative)" ] answers = {} for question in questions: answers[question] = st.text_input(question) if st.button("Submit Answers"): st.session_state.answers = answers st.success("Your answers have been saved!") # Intelligent Q&A Section st.header("Intelligent Q&A") question = st.text_input("Ask a career-related question:") if question: answer = qa_pipeline(question)[0]["generated_text"] st.write("Answer:", answer) # Career and Job Recommendations Section st.header("Career and Job Recommendations") if "profile_data" in st.session_state: job_recommendations = [] for job in ds_jobs["train"]: job_skills = job.get("job_skills", "") or "" if any(skill.lower() in job_skills.lower() for skill in st.session_state.profile_data["tech_skills"].split(",")): job_recommendations.append(job.get("job_title_short", "Unknown Job Title")) for _, job in ds_custom_jobs.iterrows(): job_skills = job.get("skills", "") or "" if any(skill.lower() in job_skills.lower() for skill in st.session_state.profile_data["tech_skills"].split(",")): job_recommendations.append(job.get("job_title", "Unknown Job Title")) # Remove duplicates by converting the list to a set and back to a list job_recommendations = list(set(job_recommendations)) if job_recommendations: st.subheader("Job Recommendations") st.write("Based on your profile, here are some potential job roles:") for job in job_recommendations[:5]: # Limit to top 5 job recommendations st.write("- ", job) else: st.write("No specific job recommendations found matching your profile.") # Course Suggestions Section st.header("Course Suggestions") if "profile_data" in st.session_state: course_recommendations = [ course.get("Course Name", "Unknown Course Title") for course in ds_courses["train"] if any(interest.lower() in course.get("Course Name", "").lower() for interest in st.session_state.profile_data["interests"].split(",")) ] course_recommendations.extend([ row["Course Name"] for _, row in ds_custom_courses.iterrows() if any(interest.lower() in row["Course Name"].lower() for interest in st.session_state.profile_data["interests"].split(",")) ]) # Remove duplicates from course recommendations course_recommendations = list(set(course_recommendations)) if course_recommendations: st.subheader("Recommended Courses") st.write("Here are some courses related to your interests:") for course in course_recommendations[:5]: # Limit to top 5 course recommendations st.write("- ", course) else: st.write("No specific courses found matching your interests.") # University Recommendations Section st.header("Top Universities") st.write("For further education, you can explore the top universities worldwide:") st.write(f"[View Top Universities Rankings]({universities_url})") st.subheader("Custom University Data") if not ds_custom_universities.empty: st.write("Here are some recommended universities based on custom data:") st.dataframe(ds_custom_universities.head()) # Conclusion st.write("Thank you for using the Career Counseling Application!")