152 lines
5 KiB
Text
152 lines
5 KiB
Text
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
use Classifier\Lib\MessageQualifier;
|
||
use Classifier\Lib\MessageQualifierShort;
|
||
use Classifier\Lib\TextNormalizer;
|
||
use TextAnalysis\Tokenizers\GeneralTokenizer;
|
||
use TextAnalysis\Filters\StopWordsFilter;
|
||
|
||
require_once __DIR__ . '/vendor/autoload.php';
|
||
// require_once __DIR__ . '/Lib/MessageQualifier.php';
|
||
require_once __DIR__ . '/Lib/MessageQualifierShort.php';
|
||
require_once __DIR__ . '/Lib/TextNormalizer.php';
|
||
|
||
// Le message à tester
|
||
// $message = "Bonjour, incendie signalé dans la commune, veuillez évacuer immédiatement !";
|
||
// $message = "Bonjour, le montant de votre allocation logement a changé. Merci de vous rapprocher de la CAF et de procéder au paiement du montant du dès que possible.";
|
||
// $message = "
|
||
// Objet : Nouveauté - votre avis d’échéance bientôt en ligne
|
||
|
||
// Cher client,
|
||
|
||
// À compter de septembre, fini le papier ! Votre avis d’échéance ne sera plus envoyé par courrier, mais sera désormais disponible chaque mois dans la rubrique Mes documents de votre espace client.
|
||
|
||
// Une solution plus rapide, plus pratique et plus respectueuse de l’environnement !
|
||
|
||
// Pour profiter pleinement de ce nouveau service, pensez à :
|
||
|
||
// Mettre à jour votre adresse e-mail et votre numéro de téléphone dans votre profil
|
||
// Activer les notifications de l’application pour rester informé en temps réel
|
||
|
||
// Ce changement vous permet de gagner en autonomie, de réduire les délais de réception et de contribuer à une démarche durable.
|
||
|
||
// Merci de votre confiance !
|
||
|
||
// L’équipe SIDR
|
||
// ";
|
||
// NOK
|
||
// $message = "Bonjour, une inondation a été signalée dans la commune, veuillez évacuer immédiatement !";
|
||
// $message = "
|
||
// Ici la société BUTAGAZ, située route du bois rochers, à Le Douhet.
|
||
|
||
// ATTENTION, CECI N'EST PAS UN EXERCICE, ATTENTION, CECI N'EST PAS UN EXERCICE, ATTENTION, CECI N'EST PAS UN EXERCICE.
|
||
|
||
// Nous avons déclenché le P O I, suite à un incident survenu sur le site à XX h XX.
|
||
|
||
// Le sinistre est situé au niveau ZONE.
|
||
|
||
// Le produit impliqué est PRODUIT.
|
||
|
||
// Nous avons mis en oeuvre les moyens nécessaires pour limiter les effets.
|
||
|
||
// Nous déplorons NOMBRE victimes, mais cette information pourrait évoluer.
|
||
|
||
// A ce stade, la demande de mise en oeuvre du P P I , n’est pas à exclure.
|
||
|
||
// Pour nous contacter, le numéro de téléphone à utiliser est le : 05.46.97.78.99, le : 05.46.97.78.99.
|
||
|
||
// Il n'est pas nécessaire de nous rappeler afin de confirmer la bonne réception de ce message.
|
||
|
||
// La ligne téléphonique doit rester disponible pour la gestion de l'événement.
|
||
|
||
// Tapez simplement 1, lorsque cela vous sera demandé.
|
||
|
||
// ATTENTION, CECI N'EST PAS UN EXERCICE, ATTENTION, CECI N'EST PAS UN EXERCICE, ATTENTION, CECI N'EST PAS UN EXERCICE.
|
||
// ";
|
||
$message = "Attention attentat, un attentat a été signalé dans la commune, merci de rester chez vous et d'éviter les déplacements !";
|
||
|
||
// 1. Nettoyage (Votre code existant)
|
||
$tokens = (new GeneralTokenizer())->tokenize(mb_strtolower($message));
|
||
|
||
(new TextNormalizer())->transform($tokens);
|
||
|
||
// J'ai ajouté quelques stop words pertinents pour vos alertes
|
||
// $tokens = (new StopWordsFilter([
|
||
// 'le',
|
||
// 'la',
|
||
// 'de',
|
||
// 'du',
|
||
// 'les',
|
||
// 'des',
|
||
// 'un',
|
||
// 'une',
|
||
// 'et',
|
||
// 'ou',
|
||
// 'mais',
|
||
// 'donc',
|
||
// 'or',
|
||
// 'ni',
|
||
// 'car',
|
||
// 'je',
|
||
// 'tu',
|
||
// 'il',
|
||
// 'elle',
|
||
// 'nous',
|
||
// 'vous',
|
||
// 'ils',
|
||
// 'elles',
|
||
// 'ce',
|
||
// 'cet',
|
||
// 'cette',
|
||
// 'pour',
|
||
// 'sur',
|
||
// 'dans'
|
||
// ]))->transform($tokens);
|
||
|
||
// var_dump($tokens);
|
||
// die;
|
||
|
||
// 2. Reconversion en chaîne de caractères (String)
|
||
// Rubix ML a besoin d'une phrase, pas d'un tableau de mots.
|
||
$cleanedMessage = implode(' ', $tokens);
|
||
// Exemple de résultat : "bonjour exercice alerte inondation commune veuillez evacuer"
|
||
|
||
// 3. Prédiction
|
||
// $classifier = new MessageQualifier();
|
||
$classifier = new MessageQualifierShort();
|
||
|
||
try {
|
||
|
||
$message = "Attention attentat dans la zone industrielle !";
|
||
|
||
// 1. Priorité absolue : Mots-clés critiques (Hard-coded)
|
||
// $motsCritiques = ['attentat', 'fusillade', 'évacuer'];
|
||
// foreach ($motsCritiques as $mot) {
|
||
// if (mb_stripos($message, $mot) !== false) {
|
||
// die("ALERTE CRITIQUE DÉTECTÉE (Mot-clé)");
|
||
// }
|
||
// }
|
||
|
||
// 2. Si aucun mot critique, on demande au ML de nuancer
|
||
$result = $classifier->predict($message);
|
||
|
||
if ($result['label'] === 'ALERTE' && $result['confidence'] > 0.7) {
|
||
echo "Alerte probable confirmed par ML.";
|
||
} else {
|
||
echo "Simple information.";
|
||
}
|
||
|
||
// $prediction = $classifier->predict($cleanedMessage);
|
||
|
||
// // 4. Logique métier
|
||
// if ($prediction['label'] === 'ALERTE') {
|
||
// echo "CECI EST UNE ALERTE ! Envoi sur canal prioritaire (SMS/Sirène).";
|
||
// } else {
|
||
// echo "Ceci est une information. Envoi sur canal secondaire (Email/App/Panneau).";
|
||
// }
|
||
} catch (\Exception $e) {
|
||
// Si le fichier model.rbx n'existe pas
|
||
echo "Erreur : Le modèle n'a pas été entraîné. Lancez train.php d'abord.";
|
||
}
|