from sklearn.preprocessing import MinMaxScaler from helper import get_scores_optimized def calculate_final_score(df, job_details): # print('Inside final score') columns_to_normalize = ['matched_skills', 'experience', 'education_relevance', 'trait_flag'] df_scored=get_scores_optimized(df,job_details) scaler = MinMaxScaler() # print(f'lets see the columns: {df_scored.columns}') df_scored[columns_to_normalize] = scaler.fit_transform(df_scored[columns_to_normalize]) # print(f'scoring done !!!') # Define weights weights = { 'matched_skills': 0.3, 'experience': 0.3, 'education_relevance': 0.3, 'trait_flag': 0.1 } # Compute final score as a weighted sum df['final_score'] = ( df_scored['matched_skills'] * weights['matched_skills'] + df_scored['experience'] * weights['experience'] + df_scored['education_relevance'] * weights['education_relevance'] + df_scored['trait_flag'] * weights['trait_flag'] ) df_sorted = df.sort_values(by='final_score', ascending=False) df_no_full_duplicates = df_sorted.drop_duplicates(keep="first") return df_no_full_duplicates