cii-text-analysis/Lib/Model/ModelTrainer.php

49 lines
1.2 KiB
PHP
Raw Permalink Normal View History

2026-02-10 16:19:59 +01:00
<?php
declare(strict_types=1);
namespace Classifier\Lib\Model;
/**
* Gère l'apprentissage du modèle à partir des données sources.
*/
class ModelTrainer
{
/** @var MessageQualifier */
private $qualifier;
public function __construct(MessageQualifier $qualifier)
{
$this->qualifier = $qualifier;
}
/**
* Entraîne le modèle à partir d'un tableau associatif [Label => [Messages]]
*
* @param array<string,string[]> $data
* @throws \Exception
*/
public function trainFromData(array $data): void
{
$samples = [];
$labels = [];
foreach ($data as $category => $messages) {
foreach ($messages as $msg) {
$cleanedMsg = trim($msg);
if (!empty($cleanedMsg)) {
// NOTE: Rubix attend un tableau de caractéristiques (une seule colonne pour le texte)
$samples[] = [$cleanedMsg];
$labels[] = $category;
}
}
}
if (empty($samples)) {
throw new \Exception("Erreur : Aucun échantillon valide trouvé pour l'entraînement.");
}
$this->qualifier->train($samples, $labels);
}
}