resume / predict_category.py
klakenyuo's picture
init
9ad4f75
Raw
History Blame Contribute Delete
1.79 kB
import joblib
import re
import string
import sys
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
# === 1. Nettoyage du texte ===
def clean_text(text):
french_stopwords = {
"et", "le", "la", "les", "un", "une", "de", "des", "du", "en", "au", "aux",
"ce", "ces", "cette", "dans", "pour", "par", "sur", "avec", "sans", "se",
"son", "sa", "ses", "leurs", "est", "sont", "été", "être", "à", "il", "elle",
"ils", "elles", "qui", "que", "quoi", "dont", "où", "mais", "ou", "donc", "or", "ni", "car"
}
from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS
stop_words = ENGLISH_STOP_WORDS.union(french_stopwords)
text = text.lower()
text = re.sub(r'\d+', '', text)
text = text.translate(str.maketrans('', '', string.punctuation))
tokens = text.split()
tokens = [word for word in tokens if word not in stop_words]
return ' '.join(tokens)
# === 2. Chargement du texte brut ===
with open("data/example_resume.txt", "r", encoding="utf-8") as f:
resume_text = f.read()
# === 3. Chargement du dataset nettoyé pour retrouver le TF-IDF vectorizer ===
df_train = pd.read_csv("data/cv_dataset_cleaned.csv")
corpus = df_train["cleaned_resume"].astype(str).tolist()
def predict_category(resume_text):
# === 5. Charger le modèle de classification ===
model = joblib.load("models/category_classifier.pkl")
cleaned_resume = clean_text(resume_text)
vectorizer = TfidfVectorizer(max_features=300)
vectorizer.fit(corpus)
vector = vectorizer.transform([cleaned_resume])
prediction = model.predict(vector)
return prediction[0]
# === 6. Prédiction ===
prediction = predict_category(resume_text)
print(f"✅ Catégorie prédite pour ce CV : {prediction}")