|
import torch |
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
|
|
|
model_name = "trangannh/ptit-job-recommendation" |
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
model = AutoModelForSequenceClassification.from_pretrained(model_name) |
|
|
|
|
|
def recommend_jobs(input_hard_skills, input_soft_skills, input_major, top_n=3): |
|
|
|
inputs = { |
|
"hard_skills": input_hard_skills, |
|
"soft_skills": input_soft_skills, |
|
"major": input_major |
|
} |
|
|
|
|
|
encoded_input = tokenizer.encode_plus( |
|
inputs["hard_skills"], |
|
inputs["soft_skills"], |
|
inputs["major"], |
|
add_special_tokens=True, |
|
return_tensors="pt" |
|
) |
|
|
|
|
|
with torch.no_grad(): |
|
outputs = model(**encoded_input) |
|
|
|
|
|
logits = outputs.logits[0].tolist() |
|
sorted_indices = sorted(range(len(logits)), key=lambda k: logits[k], reverse=True) |
|
|
|
|
|
recommended_jobs = [] |
|
for i in range(min(top_n, len(sorted_indices))): |
|
job_index = sorted_indices[i] |
|
recommended_jobs.append(tokenizer.decode(job_index)) |
|
|
|
return recommended_jobs |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
input_hard_skills = input("Nhập kỹ năng cứng của bạn: ") |
|
input_soft_skills = input("Nhập kỹ năng mềm của bạn: ") |
|
input_major = input("Nhập ngành nghề của bạn: ") |
|
|
|
|
|
recommended_jobs = recommend_jobs(input_hard_skills, input_soft_skills, input_major) |
|
|
|
|
|
print(f"Các công việc được gợi ý cho bạn:") |
|
for i, job in enumerate(recommended_jobs, start=1): |
|
print(f"{i}. {job}") |
|
|