File size: 1,791 Bytes
0a49ebd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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}")