29 janvier 2009

Un package PEAR pour "normaliser" une chaîne de caractères en PHP

Synopsis

Text_Normalize est le nom d'un package PEAR qui permet d'appauvrir des chaînes de caractères suivant différentes méthodes :

  • Blankchars : permet de supprimer les caractères inutiles (ponctuation, caractères de contrôle, etc ...).
  • Symbols : permet d'enlever les accents et simplifier certains caractères.
  • Stopwords : permet de supprimer les mots vides.
  • Lowercase : permet de supprimer la case.
  • Stemming : permet de supprimer les pluriels et les "s" de fin.
  • Vowels : permet de supprimer les voyelles.
  • Duplicate : permet de supprimer les caractères répétés consécutivement.

Ces modes sont cumulatifs, on peut en utiliser un seul ou plusieurs.

Text_Normalize prend en entrée une chaîne de caractères et un code langue. Ce code permet à chaque méthode de réaliser éventuellement un traitement spécifique. Pour plus de souplesse dans le réglage, on peut préciser pour chaque méthode une langue différente.

Exemples


$n = new Text_Normalize('HELLO', 'en');
echo $n->get(Text_Normalize::Lowercase);
// Affichera : "hello"

$n->set('a,;:!?..b^*c', 'en');
echo $n->get(Text_Normalize::Blankchars);
// Affichera : "a b c"

$n->set('élève', 'fr');
echo $n->get(Text_Normalize::Symbols);
// Affichera : "eleve"

$n->set('avec chacune de celle qui font ceux-ci doivent maintenant et pour longtemps faire mieux', 'fr');
echo $n->get(Text_Normalize::Stopwords);
// Affichera : "de ceux-ci et faire"

$n->set('ordinateurs', 'fr');
echo $n->get(Text_Normalize::Stemming);
// Affichera : "ordinateur"

$n->set('animaux et oiseaux de Bordeaux', 'fr');
echo $n->get(Text_Normalize::Stemming);
// Affichera : "animal et oiseau de Bordeaux"

Extensible et Paramétrable

Les méthodes proposées dans ce package ne sont pas parfaites. C'est pourquoi il est possible de facilement modifier le comportement de chacune des méthodes en créant des classes de traitement spécifique.

Exemple


require_once 'Text/Normalize/Blankchars.php';
class Pirate extends Text_Normalize_Blankchars 
{
    public function transform($str) {
        return preg_replace('/[aeiouy]+/i', ' ', $str);
    }
}

$n = new Text_Normalize('AS Nancy Lorraine', 'fr');
$n->BlankcharsLang = 'Pirate';
echo $n->get(Text_Normalize::Blankchars);
// Affichera : "S N nc  L rr n"

Téléchargement et code source

Le code source est disponible sur GitHub : http://github.com/touv/text_normalize

Ou, on peut directement l'installer avec PEAR en s'abonnant au Channel Respear :


% pear channel-discover pear.respear.net
% pear install respear/Text_Normalize

Aucun commentaire:

Publier un commentaire