Spaces:
Sleeping
Sleeping
add normalize distance function
Browse files
app.py
CHANGED
@@ -48,21 +48,29 @@ def get_coordinates(location):
|
|
48 |
|
49 |
sample_data = pd.read_csv('job_data_with_coordinates.csv')
|
50 |
|
|
|
51 |
def vectorize_skills(skills, all_skills):
|
52 |
vectorizer = CountVectorizer()
|
53 |
vectorizer.fit(all_skills)
|
54 |
skills_vector = vectorizer.transform(skills)
|
55 |
return skills_vector
|
56 |
|
|
|
57 |
def calculate_cosine_similarity(user_skills_tfidf, job_skills_tfidf):
|
58 |
return cosine_similarity(user_skills_tfidf, job_skills_tfidf)
|
59 |
|
|
|
60 |
def calculate_distance(job_coords, user_coords):
|
61 |
try:
|
62 |
return geodesic(job_coords, user_coords).km
|
63 |
except ValueError: # Menangani kasus koordinat yang tidak valid
|
64 |
return float('inf')
|
65 |
|
|
|
|
|
|
|
|
|
|
|
66 |
# Fungsi utama untuk persiapan dan rekomendasi pekerjaan
|
67 |
def prepare_and_recommend(df, user_skills, user_location):
|
68 |
# 1. Memastikan dataset memiliki koordinat
|
|
|
48 |
|
49 |
sample_data = pd.read_csv('job_data_with_coordinates.csv')
|
50 |
|
51 |
+
# 1. Vektorisasi skill menggunakan CountVectorizer
|
52 |
def vectorize_skills(skills, all_skills):
|
53 |
vectorizer = CountVectorizer()
|
54 |
vectorizer.fit(all_skills)
|
55 |
skills_vector = vectorizer.transform(skills)
|
56 |
return skills_vector
|
57 |
|
58 |
+
# 2. Menghitung Cosine Similarity
|
59 |
def calculate_cosine_similarity(user_skills_tfidf, job_skills_tfidf):
|
60 |
return cosine_similarity(user_skills_tfidf, job_skills_tfidf)
|
61 |
|
62 |
+
# 3. Menghitung jarak lokasi
|
63 |
def calculate_distance(job_coords, user_coords):
|
64 |
try:
|
65 |
return geodesic(job_coords, user_coords).km
|
66 |
except ValueError: # Menangani kasus koordinat yang tidak valid
|
67 |
return float('inf')
|
68 |
|
69 |
+
# Fungsi normalisasi jarak menggunakan log
|
70 |
+
def normalize_distance(distances):
|
71 |
+
normalized = 1 / (1 + np.log1p(distances)) # log1p untuk menangani log(1 + distance)
|
72 |
+
return normalized
|
73 |
+
|
74 |
# Fungsi utama untuk persiapan dan rekomendasi pekerjaan
|
75 |
def prepare_and_recommend(df, user_skills, user_location):
|
76 |
# 1. Memastikan dataset memiliki koordinat
|