cii-text-analysis/save/Lib/TextNormalizer.php.save
Jéremy Munsch f68d2ac333
premier poc
2026-02-11 08:24:04 +01:00

52 lines
1.3 KiB
Text

<?php
declare(strict_types=1);
namespace Classifier\Lib;
use Phpml\Transformer;
class TextNormalizer implements Transformer
{
public function fit(array $samples, ?array $targets = null): void
{
// Pas d'apprentissage nécessaire pour ce transformateur
}
public function transform(array &$samples, ?array &$targets = null): void
{
foreach ($samples as &$sample) {
$sample = $this->normalize($sample);
}
}
private function normalize(string $value): string
{
$output = $this->fromUt8ToPlainText($value);
$output = $this->safelyRemoveEmptyLines($output);
return $output;
}
private function fromUt8ToPlainText(string $value): string
{
// * Supprimer les balises
$output = strip_tags($value);
// * Convertir les entités html (ex: &amp; devient &)
$output = html_entity_decode($output, ENT_QUOTES | ENT_HTML5, 'UTF-8');
return $output;
}
private function safelyRemoveEmptyLines(string $value): string
{
// * Remplace les lignes ne contenant que des espaces/tabs par une chaîne vide
$result = preg_replace('/^[\s\t]*[\r\n]+/m', '', $value);
// * Remplace les sauts de lignes avec un `\n` unique
$result = preg_replace('/\R/', "\n", $result);
return $result ?? $value;
}
}