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