fit($samples); $vectorizer->transform($samples); // 3. Entraîner le classifier $classifier = new SVC(Kernel::SIGMOID, 10000); $classifier->train($samples, $labels); // 4. Prédire $newSample = [$messageTest]; $vectorizer->transform($newSample); echo $classifier->predict($newSample)[0]; // Affiche "négatif" // 5. Sauvegarder le modèle $filepath = __DIR__ . '/model.phpml'; $modelManager = new ModelManager(); $modelManager->saveToFile($classifier, $filepath); // 6. Charger le modèle $restoredClassifier = $modelManager->restoreFromFile($filepath); echo "\n" . 'Prédiction avec le modèle chargé : ' . $restoredClassifier->predict($newSample)[0] . "\n"; /// --- TEST --- $samples = []; $labels = []; foreach ($files as $file) { $texts = require $file; foreach ($texts as $text) { $samples[] = $text; $labels[] = basename($file, '.php'); } } // --- Étape A : Vectorisation (Comptage) --- $vectorizer = new TokenCountVectorizer(new WhitespaceLowerTokenizer()); $vectorizer->fit($samples); $vectorizer->transform($samples); // --- Étape B : Transformation TF-IDF --- $transformer = new TfIdfTransformer(); $transformer->fit($samples); // Calcule l'importance des mots sur tout le corpus $transformer->transform($samples); // Applique le calcul aux échantillons // --- Étape C : Entraînement --- $classifier = new SVC(Kernel::RBF, 10000); $classifier->train($samples, $labels); // --- Étape D : Prédiction --- $newSample = [$messageTest]; $vectorizer->transform($newSample); $transformer->transform($newSample); echo $classifier->predict($newSample)[0]; // Affiche "positif"