pluriTAL – BLOG Master pluriTAL [ParisX, ParisIII, INALCO]

Projet Multilingue – programmes

Posted in pluriTAL by pluritaluser on 3 juin 2009

Bonjour, j’ai fait un programme qui transforme les tables de mozilla en fichier texte, il est en ligne, et un treetagger (simtree) éditable en français et portugais mais j’ai des corrections à faire avant de le mettre en ligne.

Bonne chance à tous car certains travaillent et n’ont pas le temps même s’ils sont très bons en informatique, et d’autres ont besoin d’encore plus d’expérience pour se perfectionner.

J’aurai voulu que tout le monde partage ses programmes en ligne.

Mes programmes sont inspirées sur la façon dont Mr Serge Fleury se représente le rechercher – remplacer. Je lui dois beaucoup. Mais je suis nulle en boucles alors il y en a très peu dans mes programmes, ils exécutent tout d’un coup.

Mes programmes au départ avaient une version particulière et une générale, parce que ce n’est pas évident d’écrire tout de suite une version qui puisse fonctionner pour d’autres textes, mais il le faut. Moi je réutilise mes anciens programmes  dans d’autres cours! Donc si vous avez le temps pendant les vacances, créez un site internet où la version générale de vos programmes sera téléchargeable en ligne pour partager avec les autres.

Les programmes sont très utiles surtout quand les corpus sont très longs, mais je les utilise toujours conjointement avec quelques petits nettoyages manuels car la machine ne fait pas tout. De plus mes programmes sont faits pour un emploi particulier, je sais ce que je veux avant de les créer.

Finalement il y a des programmes que je sais que je ne sais pas créer et j’espère que vous les créerez.

Bonne chance !!!

mozillatable2TXT.pl -> http://www.mybloop.com/francoisepeace

et bientot simtree.pl aussi

Françoise Del Socorro

#########################################################################################

Si votre texte fait moins de 100mots (aka si vous avez du temps libre pour étiqueter vos 100mots), vous pouvez utiliser mon  » treetagger  » simtree.pl de plus il faut que votre texte ne soit pas ambigüe (ou alors changer les balises du vrai treetagger2xml en rajoutant des balises ou des attributs). Moi les seuls problèmes d’étiquetage que j’ai sont dues soit à cygwin soit à mon ordinateur qui est pourtant neuf, en tout cas c’est corrigible et tout est éditable (Françoise Del Socorro):

#!/usr/bin/perl
use locale; #caracteres accentues
#On lance: perl simtree-fr.pl
#Fichiers utilisés: potentiel-pt-liste.txt et potentiel-fr-liste.txt obtenus après mozillatable2txt.pl, il s’agit d’une liste de mots-composés à nettoyer.

print « Bienvenu(e) à l’étiqueteur syntaxique simtree \n qui permet de simuler treetagger, \n dont les entrées sont éditables, \n dont le choix du vocabulaire est limité\n, et qui n’utilise pas la probabilité — vraiment rustique!\n »;
print « Ce fichier prend en entrée des segments répétés, des phrases courtes ou des phrases longues mais sans balises.\n »;
print « En tout cas choississez un texte qui ne contient que les phrases que vous allez analyser linguistiquement.\n »;
print « Nom du fichier de travail, de preference un .txt au format UNIX: \n »;

my $file01=<STDIN>;
chomp($file01);
my $file02=$file01. »-token.txt »;
#Première étape la tokenisation et le remplacement des retours charriot par le point-virgule
open(FILEIN01, $file01);
open(FILEOUT01, « >$file02″);
my $DUMPFULL01= » »;
while(my $recup01=<FILEIN01>)
{
#1.Transformation
$recup01=~s/^\n//g;#supprime tous les sauts de ligne
$recup01=~s/\n/;\n/g;#remplace toutes les fins de ligne par un point-virgule
$recup01=~s/\s/\n/g;#remplace chaque espace par un saut de ligne
$DUMPFULL01=~s/\n\n/\n/g;#supprime tous les sauts de ligne

#2. Memorisation dans DUMPFULL
$DUMPFULL01.=$recup01;
}
#3.Sortie
print FILEOUT01 $DUMPFULL01;
print « Attendez s’il vous plaît ! »;
#Deuxième étape: la proposition du vocabulaire que vous allez étiqueter correspondant au texte qui ne contient que les phrases qui vous intéressent.
$file04=$file02. »-lexique-simtree.txt »;
open(FILEIN02, $file02);
open(FILEOUT02, « >$file04 »);
system « #!/bin/bash
sort -u $file02 > $file04″;
close(FILEIN02);
close(FILEOUT02);
#Troisième étape: l’étiquetage du fichier
my $file05=$file01. »-3.txt »;
open(FILEIN03, $file02);
open(FILEOUT03, « >$file05″);
my $DUMPFULL03= » »;
while(my $recup03=<FILEIN03>)
{
#1.Vocable    catégorie    lemme /^**Vocable**\n/**Vocable**\tN\t**Lemme**\n/
#La catégorie à défaut est celle du morceau de mot dans laquelle simtree-fr.pl reconnaît un mot d’où un ordre alphabétique s’impose
#Si vous voulez ignorer la casse (accepter les majuscules) utilisez gi plutôt que g.
#Catégories proposées: PUNCT D N A P V ADV SIGLE PRON…inventez
#Langue = Français

$recup03=~s/^;\n/;\tPUNCT\t;\n/g;
$recup03=~s/^action\n/action\tN\taction\n/g;
$recup03=~s/^actions\n/actions\tN\tactions\n/g;
$recup03=~s/^au\n/à\tP\tà\nle\tD\tle\n/g;
#
$recup03=~s/^beaucoup\n/beaucoup\tADV\tbeaucoup\n/g;
#
$recup03=~s/^ca+\n/ca+\tN\tca+\n/g;
$recup03=~s/^canal\n/canal\tN\tcanal/g;
$recup03=~s/^ce\n/ce\tD\tce\n/g;
$recup03=~s/^cellule\n/cellule\tN\tcellule\n/g;
$recup03=~s/^cellules\n/cellules\tN\tcellule\n/g;
$recup03=~s/^cette\n/cette\tD\tcette\n/g;
$recup03=~s/^compartiments\n/compartiments\tN\tcompartiment\n/g;
$recup03=~s/^concentration\n/concentration\tN\tconcentration\n/g;
$recup03=~s/^concentrations\n/concentrations\tN\tconcentration\n/g;
$recup03=~s/^conductance\n/conductance\tN\tconductance\n/g;
$recup03=~s/^conduction\n/conduction\tADV\tconduction\n/g;
#
$recup03=~s/^d\n/d\tP\td\n/g;
$recup03=~s/^dans\n/dans\tP\tdans\n/g;
$recup03=~s/^ddp\n/ddp\tSIGLE\tddp\n/g;
$recup03=~s/^de\n/de\tP\tde\n/g;
$recup03=~s/^des\n/de\tP\tde\nles\tD\tle\n/g;
$recup03=~s/^deux\n/deux\tA\tdeux\n/g;
$recup03=~s/^différence\n/différence\tN\tdifférence\n/g;
$recup03=~s/^du\n/de\tP\tde\nle\tD\tle\n/g;
$recup03=~s/^dépolarisation\n/dépolarisation\tN\tdépolarisation\n/g;
#
$recup03=~s/^en\n/en\tP\ten\n/g;
$recup03=~s/^entre\n/entre\tP\tentre\n/g;
$recup03=~s/^et\n/et\tCONJ\tet\n/g;
$recup03=~s/^excitateur\n/excitateur\tA\texcitateur\n/g;
$recup03=~s/^excitateurs\n/excitateurs\tA\texcitateur\n/g;
$recup03=~s/^excitation\n/excitation\tN\texcitation\n/g;
#
$recup03=~s/^faces\n/faces\tN\tface\n/g;
#
$recup03=~s/^générateur\n/générateur\tA\tgénérateur\n/g;
$recup03=~s/^hyperpolarisation\n/hyperpolarisation\tN\thyperpolarisation\n/g;
$recup03=~s/^il\n/il\tPRON\til\n/g;
$recup03=~s/^influx\n/influx\tN\tinflux\n/g;
$recup03=~s/^inhibiteur\n/inhibiteur\tA\tinhibiteur\n/g;
$recup03=~s/^inhibiteurs\n/inhibiteurs\tA\texcitateur\n/g;
$recup03=~s/^intérieur\n/intérieur\tN\tintérieur\n/g;
$recup03=~s/^inversion\n/inversion\tN\tinversion\n/g;
$recup03=~s/^ion\n/ion\tN\tion\n/g;
$recup03=~s/^ionique\n/ionique\tA\tionique\n/g;
$recup03=~s/^ions\n/ions\tN\tion\n/g;
#
$recup03=~s/^k+\n/k+\tN\tk+\n/g;
#
$recup03=~s/^l\n/l\tD\tl\n/g;
$recup03=~s/^la\n/la\tD\tle\n/g;
$recup03=~s/^le\n/le\tD\tle\n/g;
$recup03=~s/^les\n/les\tD\tle\n/g;
#
$recup03=~s/^mais\n/mais\tADV\tmais\n/g;
$recup03=~s/^membranaire\n/membranaire\tA\tmembranaire\n/g;
$recup03=~s/^membrane\n/membrane\tN\tmembrane\n/g;
$recup03=~s/^mitochondrial\n/mitochondrial\tA\tmitochondrial\n/g;
#
$recup03=~s/^na+\n/na+\tN\tna+\n/g;
$recup03=~s/^ne\n/ne\tADV\tne\n/g;
$recup03=~s/^nernst\n/nernst\tN\tnernst\n/g;
$recup03=~s/^nerveuse\n/nerveuse\tA\tnerveux\n/g;
$recup03=~s/^nerveux\n/nerveux\tA\tnerveux\n/g;
$recup03=~s/^neuronaux\n/neuronaux\tA\tneuronal\n/g;
$recup03=~s/^neurone\n/neurone\tN\tneurone\n/g;
$recup03=~s/^niveau\n/niveau\tN\tniveau\n/g;
$recup03=~s/^nous\n/nous\tPRON\tnous\n/g;
#
$recup03=~s/^on\n/non\tPRON\ton\n/g;
$recup03=~s/^ou\n/ou\tCONJ\tou\n/g;
#
$recup03=~s/^pa\n/pa\tSIGLE\tpa\n/g;
$recup03=~s/^par\n/par\tP\tpar\n/g;
$recup03=~s/^plus\n/plus\tADV\tplus\n/g;
$recup03=~s/^post\n/post\tP\tpost\n/g;
$recup03=~s/^postsynaptique\n/postsynaptique\tA\tpostsynaptique\n/g;
$recup03=~s/^postsynaptiques\n/postsynaptiques\tA\tpostsynaptique\n/g;
$recup03=~s/^potassium\n/potassium\tN\tpotassium\n/g;
$recup03=~s/^potentiel\n/potentiel\tN\tpotentiel\n/g;
$recup03=~s/^potentiels\n/potentiels\tN\tpotentiel\n/g;
$recup03=~s/^pour\n/pour\tP\tpour\n/g;
$recup03=~s/^ppse\n/ppse\tSIGLE\tppse\n/g;
$recup03=~s/^pr\n/pr\tSIGLE\tpr\n/g;
#
$recup03=~s/^quand\n/quand\tCONJ\tquand\n/g;
#
$recup03=~s/^rapide\n/rapide\tA\trapide\n/g;
$recup03=~s/^relative\n/relative\tA\trelative\n/g;
$recup03=~s/^repolarisation\n/repolarisation\tN\trepolarisation\n/g;
$recup03=~s/^repos\n/repos\tN\trepos\n/g;
$recup03=~s/^récepteur\n/récepteur\tN\trécepteur\n/g;
#
$recup03=~s/^saltatoire\n/saltatoire\tA\tsaltatoire\n/g;
$recup03=~s/^sans\n/sans\tP\tsans\n/g;
$recup03=~s/^seuil\n/seuil\tN\tseuil\n/g;
$recup03=~s/^synaptiques\n/synaptiques\tA\tsynaptique\n/g;
#
$recup03=~s/^toute\n/toute\tADV\ttout\n/g;
$recup03=~s/^transmembranaire\n/transmembranaire\tA\ttransmembranaire\n/g;
#
$recup03=~s/^un\n/un\tD\tun\n/g;
$recup03=~s/^une\n/une\tD\tune\n/g;
#
$recup03=~s/^à\n/à\tP\tà\n/g;
#
$recup03=~s/^électrique\n/\tA\télectrique\n/g;
$recup03=~s/^électriques\n/électriques\tA\télectrique\n/g;
$recup03=~s/^électrostatique\n/électrostatique\tA\télectrostatique\n/g;
$recup03=~s/^électrotoniques\n/électrotoniques\tA\télectrotonique\n/g;
$recup03=~s/^élémentaire\n/élémentaire\tA\télémentaire\n/g;
$recup03=~s/^équilibre\n/équilibre\tA\téquilibre\n/g;

#2. Memorisation dans DUMPFULL
$DUMPFULL03.=$recup03;
}
#3.Sortie
print FILEOUT03 $DUMPFULL03;
close(FILEIN03);
close(FILEOUT03);
#Quatrième étape: renommage des fichiers en sortie
print « \nAttendez renommage de toutes vos extensions…\n »;
system « #!/bin/bash
rename .txt-token.txt -token.txt *\.txt-token.txt;
rename .txt-3.txt -3.txt *\.txt-3.txt;
rename .txt-token.txt-lexique-simtree.txt -lexique-simtree.txt *\.txt-token.txt-lexique-simtree.txt;
ls > tous-vos-fichiers\.txt;
grep token.txt tous-vos-fichiers\.txt > nom-de-fichier\.txt;
grep 3.txt tous-vos-fichiers\.txt >> nom-de-fichier\.txt;
grep lexique-simtree.txt tous-vos-fichiers\.txt >> nom-de-fichier\.txt; »;
print « \nVous avez trois nouveaux fichiers créés dans cette liste: \n »;
system « #!/bin/bash
cat nom-de-fichier\.txt; »;

#Quatrième étape treetagger2xml.pl
print « \n Si vous voulez diminuer le nombre d’entrées à étiqueter vérifiez votre fichier\.txt\.\n Si vous voulez étiqueter des entrées allez sur fichier-lexique-simtree\.txt\. \n Si vous voulez corriger un bug allez sur fichier-token\.txt ou sur votre fichier \.xml, je pense que les erreurs sont dues à la mémoire de l’ordinateur. \n Si votre fichier en sortie est vide c’est soit parce que ce n’est pas un point \.txt \n soit parce que vous avez mal tapé son nom\. \n Maintenant lancez perl treetagger2xml.pl <fichier-3\.txt> sur votre fichier étiquetté.\n Rem: treetagger2xml\.pl vient avec treetagger\. « ;

Publicités

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :