Spaces:
Sleeping
Sleeping
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 | |
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' | |
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!") | |