140 likes | 355 Views
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"
E N D
Outils pour le traitement des textesOutils 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 grep extraire des lignes sed passer d'un format à un autre (syntaxe interne aux lignes) uniq quand plusieurs lignes identiques se suivent, n'en garder qu'une sort -u quand plusieurs lignes sont identiques, n'en garder qu'une head garder les premières lignes tail garder 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é) France NAM France : PUN : la DET:ART le nouvelle ADJ nouveau génération NOM gé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ération NOM génération génération .N gé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.NOM gé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.NOM génération génération.NOM ,génération
sed Déplacer, intervertir s/\t\([^:]*\):\([^:]*\)\t/\t\2:\1\t/ la DET:ART le la ART:DET le 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" uniq Utiliser sur une liste déjà classée sort -u Utiliser sur une liste non classée
head, tail head -100000 lexique.lst extraire les 100 000 premières lignes (pour tests) tail -100000 lexique.lst extraire les 100 000 dernières lignes