Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| from sklearn.feature_extraction.text import CountVectorizer | |
| from sklearn.neighbors import NearestNeighbors | |
| # Load dataset (replace 'dataset.csv' with your file path) | |
| file_path = 'Job_Roles_and_Skills.csv' | |
| dataset = pd.read_csv(file_path, encoding='latin1') # or 'ISO-8859-1' or 'cp1252' | |
| #print(dataset.head()) | |
| # Preprocessing: Extract required fields | |
| # Assuming 'skills required' contains the required skills | |
| # Replace column names if they differ in your dataset | |
| # Preprocessing: Extract required fields | |
| # Assuming 'skills required' contains the required skills | |
| # Replace column names if they differ in your dataset | |
| def preprocess_skills(dataset): | |
| # Check if the element is a string before applying split | |
| dataset["Skills Required"] = dataset["Skills Required"].apply(lambda x: [skill.strip().lower() for skill in x.split(",") if isinstance(x, str)] if isinstance(x, str) else x) | |
| return dataset | |
| dataset = preprocess_skills(dataset) | |
| # Train a simple NearestNeighbors model to match job roles (optional, for extensibility) | |
| vectorizer = CountVectorizer(tokenizer=lambda x: x, preprocessor=lambda x: x) | |
| skill_matrix = vectorizer.fit_transform(dataset["Skills Required"]) | |
| nn_model = NearestNeighbors(n_neighbors=1, metric="cosine") | |
| nn_model.fit(skill_matrix) | |
| # Define function to find missing skills | |
| def find_missing_skills(job_role, current_skills): | |
| current_skills = [skill.strip().lower() for skill in current_skills.split(",")] | |
| # Match the job role | |
| job_row = dataset[dataset["Job Role"].str.lower() == job_role.lower()] | |
| if job_row.empty: | |
| return f"Job Role '{job_role}' not found in the dataset. Please try another option." | |
| required_skills = job_row.iloc[0]["Skills Required"] | |
| missing_skills = [skill for skill in required_skills if skill not in current_skills] | |
| return missing_skills if missing_skills else "No missing skills! You are fully qualified." | |
| # Define the Gradio interface | |
| def career_gap_analysis(job_role, current_skills): | |
| missing_skills = find_missing_skills(job_role, current_skills) | |
| if isinstance(missing_skills, list): | |
| return f"Missing Skills for '{job_role}': {', '.join(missing_skills)}" | |
| return missing_skills | |
| # Extract unique job roles for dropdown options | |
| job_roles = dataset["Job Role"].unique().tolist() | |
| # Gradio App | |
| # Gradio App | |
| demo = gr.Interface( | |
| fn=career_gap_analysis, | |
| inputs=[ | |
| gr.Dropdown(label="Job Role", choices=job_roles), # Remove placeholder | |
| gr.Textbox(label="Current Skills", placeholder="Enter your current skills separated by commas (e.g., Python, SQL)"), | |
| ], | |
| outputs="text", | |
| title="Career Gap Analysis", | |
| description="Identify missing skills for a specific job role based on your current skill set." | |
| ) | |
| # Launch the app | |
| demo.launch() | |