Outils pour le traitement des textes Outils Unix Éric Laporte Université Paris-Est Marne-la- Vallée
Sommaire Outils Unix pour le traitement des textes grep sed : reconnaître des séquences ambiguës sed : substitutions successives sed : déplacer, intervertir, copier "uniq" et "sort -u" head tail
Outils Unix pour le traitement des textes grepextraire des lignes sedpasser d'un format à un autre (syntaxe interne aux lignes) uniqquand plusieurs lignes identiques se suivent, n'en garder qu'une sort -uquand plusieurs lignes sont identiques, n'en garder qu'une headgarder les premières lignes tailgarder les dernières lignes
Avantages Disponibles sur tout environnement Unix Simples : traitement en quelques lignes sans déclaration de structures de données Efficaces sur de grosses ressources (textes, lexiques)
Inconvénients Mal normalisés : toutes les versions ne font pas la même chose, donc faire des tests... Certaines versions sont incompatibles avec Unicode Seule structure de données : la ligne, donc incompatible avec XML Les scripts doivent rester simples, sinon mieux vaut utiliser perl, python, java...
grep 1. Extraire des entrées d'un lexique egrep "+hum" lexique.lst extraire les noms marqués comme désignant des personnes 2. Quand un format n'est pas documenté et que la syntaxe est interne aux lignes, rechercher des exemples de configurations egrep -v "^[^,.]*,[^,.]*\.[^,.]*$" lexique.lst extraire les entrées qui n'ont pas exactement les deux délimiteurs attendus dans l'ordre attendu
sed En général, passer d'un format à un autre par des substitutions sed -f treetagger2unitex.sed treetagger.txt > unitex.txt passer du format de sortie de treetagger au format d'entrée d'unitex (texte tagué) FranceNAMFrance :PUN: laDET:ARTle nouvelleADJnouveau générationNOMgénération {France,France.N+PR} : {la,le.DET} {nouvelle,nouveau.A} {génération,génération.N}
sed Scripts sed sed -f treetagger2unitex.sed treetagger.txt > unitex.txt # treetagger2unitex.sed s/\tNOM\t/\t.N\t/ # remplacer \tNOM\t par \t.N\t générationNOMgénération génération.Ngénération
sed Reconnaître des séquences ambiguës SENT : code (sentence) ou mot (sentir) ? Reconnaître une partie du contexte avec s/\tSENT\t/\t{S}\t/ ?SENT? ?{S}? Rechercher des exemples de la séquence egrep "SENT" treetagger.txt > auxiliaire.lst
sed Substitutions successives s/\t/,/ génération.NOMgénération génération.NOM,génération Dans les substitutions qui viennent ensuite, les tabulations ont déjà été remplacées par des virgules Confusion entre niveaux : - virgule du texte ? - virgule-délimiteur ? Créer des niveaux intermédiaires non ambigus s/\t/\t,/ génération.NOMgénération génération.NOM,génération
sed Déplacer, intervertir s/\t\([^:]*\):\([^:]*\)\t/\t\2:\1\t/ laDET:ARTle laART:DETle Copier &(dans la zone sortie, copie de la zone reconnue)
sed Reconnaître les débuts et fins de lignes.*toute la ligne ^début de ligne $fin de ligne
"uniq" et "sort -u" uniqUtiliser sur une liste déjà classée sort -uUtiliser sur une liste non classée
head, tail head lexique.lst extraire les premières lignes (pour tests) tail lexique.lst extraire les dernières lignes