File size: 1,083 Bytes
9a9b2ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# src/utils/vectorizer_utils.py

import os
import joblib
from sklearn.feature_extraction.text import TfidfVectorizer
from typing import Tuple
import pandas as pd


def train_and_save_tfidf(X_train: pd.Series, save_path: str, max_features: int = 5000) -> TfidfVectorizer:
    """
    Entraîne un TfidfVectorizer sur les textes fournis et le sauvegarde.
    """
    X_train = X_train.fillna("").astype(str)
    vectorizer = TfidfVectorizer(max_features = max_features)
    vectorizer.fit(X_train)

    joblib.dump(vectorizer, save_path)
    return vectorizer


def load_tfidf_vectorizer(path: str) -> TfidfVectorizer:
    """
    Charge un TfidfVectorizer sauvegardé depuis un fichier .joblib.
    """
    if not os.path.exists(path):
        raise FileNotFoundError(f"Vectorizer non trouvé à l'emplacement : {path}")
    return joblib.load(path)


def vectorize_data(vectorizer: TfidfVectorizer, data: pd.Series):
    """
    Applique un vectoriseur TF-IDF à des données textuelles, après nettoyage des NaN.
    """
    return vectorizer.transform(data.fillna("").astype(str))