1.PERL - REGEX
Le script
Explication du script
Notre objectif du script est de pouvoir rechercher des patrons dans un document vertical (un item par ligne) à l'aide des expressions régulières qui fonctionnent horizontalement (ligne à ligne). Alors, on devrait transformer le document vertical en document horizontal. L'idée est que pour chaque ligne, on mémorise le mot et sa POS et ensuite les concatène avec les autres éléments de la phrase. On voudrait obtenir une phrase de type: "mot/POS mot/POS mot/POS ..." avec $phrase=$phrase.$mot."/".$pos." ";
Pour chaque patron dans la liste TERMINO, on le transforme en RegEx et le stocke dans la variable $patron2.
$patron2=~s/([^ ]+)/\[\^ \]\+\/\\b$1/g;.
Prenons par exemple le patron: NC ADJ. Avec RegEx ([^ ]+), on obtient alors NC et ADJ séparamment. Et on le remplace par \[\^ \]\+\/\\b$1 ($1 correspond au sous-motif ([^ ]+) ). On recherche ensuite dans notre phrase concaténée un motif qui correspond bien au motif de $patron2 ([^ ]+/NC).
IMPORTANT: "?=" une assertion de regard en avant
Puis on enlève l'étiquette de POS et ne garde que la forme.
my $terme=$1;
$terme=~s/\/[^ ]+//g;
Exécution
perl extractionpatrons.pl sortie-3210-talismane.txt termino
Résultats
Fichiers TXT