Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1859 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Extraire les noms et les verbes du Lexique dans deux fichiers.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extraire les noms et les verbes du Lexique dans deux fichiers.

n°2170554
Profil sup​primé
Posté le 10-01-2013 à 10:36:15  answer
 

Bonjour, je souhaite extraire les verbes et les noms du Lexique380 dans deux fichiers nommées Verbes.txt et Noms.txt sans doublon dans chacun des fichiers résultants.
Je suis sur Gnu/linux,
 
Quelle serait votre solution s'il vous plaît.
 
Merci.

mood
Publicité
Posté le 10-01-2013 à 10:36:15  profilanswer
 

n°2170585
Profil sup​primé
Posté le 10-01-2013 à 15:02:27  answer
 

j'ai fait ceci, mais ça marche pas parce que le ficher source est mal formaté apparement :
 

Code :
  1. awk '{ print($3, $4=VER) }' Lexique380-utf8.txt > Verbes-utf8.txt
  2. awk '{ print($3, $4=NOM) }' Lexique380-utf8.txt > Noms-utf8.txt


Message édité par Profil supprimé le 10-01-2013 à 15:03:42
n°2170591
gilou
Modérateur
Modzilla
Posté le 10-01-2013 à 15:24:39  profilanswer
 

:hello: Et il vient d'ou ton fichier Lexique380-utf8.txt?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2170618
Profil sup​primé
Posté le 10-01-2013 à 17:47:31  answer
 

gilou a écrit :

:hello: Et il vient d'ou ton fichier Lexique380-utf8.txt?
A+,


 
De Lexique380.txt que 'jai converti de iso-8859.
 
Quant à lexique380.txt tu peux le trouver sur le site de Lexique.org Dans Bases et Scripts
 
 
Bonjour Gilou bise et meilleurs voeux.


Message édité par Profil supprimé le 10-01-2013 à 17:51:33
n°2170626
Profil sup​primé
Posté le 10-01-2013 à 18:39:02  answer
 

J'en suis là, mais j'obtiens encore un résultat erroné.

awk '{ if ($4="NOM" ) print($3) }' Lexique380-utf8.txt > Noms-utf8.txt

n°2170674
gilou
Modérateur
Modzilla
Posté le 11-01-2013 à 01:02:22  profilanswer
 

Ce script perl devrait coller pour NOM (rediriger sa sortie vers Noms.txt)

Code :
  1. #!/usr/bin/perl
  2. use v5.10.1; # pour interpréter ~~ comme l'opérateur de smart match
  3. # code propre
  4. use strict;
  5. use warnings;
  6. use autodie;
  7.  
  8. open my $fh, "Lexique380.txt";
  9. foreach (<$fh> ) {
  10.  print if (split(/\t/, $_))[3] ~~ /NOM/;
  11. }
  12. close $fh;


 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2170695
rufo
Pas me confondre avec Lycos!
Posté le 11-01-2013 à 11:11:39  profilanswer
 

Salut Jovalise,
 
Je travaille avec cette "base". Perso, j'ai traité le fichier txt pour le transformer en BD Mysql (un champ en BD = une colonne dans le fichier). Pour les traitements, après, c'est beaucoup plus simple ;)
 
Si tu veux, je peux t'envoyer par MP mon code php qui convertit le fichier txt en BD...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2170702
Profil sup​primé
Posté le 11-01-2013 à 11:59:11  answer
 

Merci Gilou, Avec Awk après j'ai extrait la la colonne qui m'intéresse, et un bout de code Ada pur supprimer les doublon, et c'est fait.
 
Merci rufo, Je connais rien à php encore, alors, pour le moment j'en ferait rien, mais merci.  :jap:

n°2170741
gilou
Modérateur
Modzilla
Posté le 11-01-2013 à 15:09:24  profilanswer
 

:hello: Pour avoir la colonne qui t'intéressait, il suffisait de remplacer  
print if (split(/\t/, $_))[3] ~~ /NOM/;
par  
my @fields = split /\t/;
print $fields[j] if $fields[3] ~~ /NOM/;
ou j est le numéro de la colonne (numérotation débutant à 0)
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2170751
Profil sup​primé
Posté le 11-01-2013 à 15:55:08  answer
 

gilou a écrit :

:hello: Pour avoir la colonne qui t'intéressait, il suffisait de remplacer  
print if (split(/\t/, $_))[3] ~~ /NOM/;
par  
my @fields = split /\t/;
print $fields[j] if $fields[3] ~~ /NOM/;
ou j est le numéro de la colonne (numérotation débutant à 0)
A+,


 
 
Avec ce code, j'ai tous les mots sur une seule ligne.  :heink:  
Merci Gilou. A+

mood
Publicité
Posté le 11-01-2013 à 15:55:08  profilanswer
 

n°2170767
gilou
Modérateur
Modzilla
Posté le 11-01-2013 à 16:57:17  profilanswer
 

Ben faut modifier en fonction de ses besoins:
 
print "$fields[j]\n" if $fields[3] ~~ /NOM/;  
 
A+,

Message cité 1 fois
Message édité par gilou le 11-01-2013 à 16:57:29

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2170769
Profil sup​primé
Posté le 11-01-2013 à 17:02:17  answer
 

gilou a écrit :

Ben faut modifier en fonction de ses besoins:
 
print "$fields[j]\n" if $fields[3] ~~ /NOM/;  
 
A+,


 
Ah Ok, merci Gilou, je connais toujours pas du tout Perl, saufe que pour affichier un saut de ligne il faut un \n dans la chaîne, et encore, je suis pas certain.
Mais dès que j'aurait besoin d'un truc, je me débrouillerait tous seul, sauf si vraiment j'y arrive pas.
On peux encore causer quant même ?
Ou on ne s'exprime plus qu'au travers des programme que nous produisons ?


Message édité par Profil supprimé le 11-01-2013 à 17:02:55
n°2170787
gilou
Modérateur
Modzilla
Posté le 11-01-2013 à 20:30:18  profilanswer
 

Citation :

On peux encore causer quant même ?

Sans pb!
Mais j'ai été quasiment absent de mon écran les 3/4 de le journées d'ou ma faible réactivité.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2170792
Profil sup​primé
Posté le 11-01-2013 à 21:33:22  answer
 

Merci encore Gilou ton code est plus efficace que mon awk.

n°2305126
Profil sup​primé
Posté le 31-08-2017 à 16:10:49  answer
 

Bonjour,
 
Je voudrais réutiliser le code perl de Gilou.
 
Ceci dis ça passe pas :  
 

Code :
  1. #!/usr/bin/perl                                                                
  2. use v5.10.1; # pour interpréter ~~ comme l'opérateur de smart match            
  3. # code propre                                                                  
  4.  
  5. use strict;
  6. use warnings;
  7. use autodie;
  8.  
  9. open my $fh, "Lexique381.txt";
  10. foreach (<$fh> ) {
  11.    my @fields = split /\t/;
  12.    print "$fields[j]\n" if $fields[3] ~~ /NOM/;
  13. }
  14. close $fh;


 

Citation :

Smartmatch is experimental at ./name_extract.pl line 12.
Argument "j" isn't numeric in array element at ./name_extract.pl line 12.
Bareword "j" not allowed while "strict subs" in use at ./name_extract.pl line 12.
Execution of ./name_extract.pl aborted due to compilation errors.


 
Comment refaire compiler ou interpréter ce code ?
 
Svp, ... Merci

n°2305128
Profil sup​primé
Posté le 31-08-2017 à 18:10:02  answer
 

j'ai lancé ça si non :  

Code :
  1. cat Lexique381.txt | grep NOM | awk '{ print($1) }' > Noms.txt

n°2305141
gilou
Modérateur
Modzilla
Posté le 31-08-2017 à 21:34:24  profilanswer
 

gilou a écrit :

:hello: Pour avoir la colonne qui t'intéressait, il suffisait de remplacer  
print if (split(/\t/, $_))[3] ~~ /NOM/;
par  
my @fields = split /\t/;
print $fields[j] if $fields[3] ~~ /NOM/;
ou j est le numéro de la colonne (numérotation débutant à 0)
A+,

Je sais pas comment je pouvais être plus clair:
ou j est le numéro de la colonne (numérotation débutant à 0)
Bref si tu veux la 137e colonne de ton tableau, tu remplaces j par 136 dans le code.
Pour que ça soit lisible, vaudra mieux faire print "$fields[j] " ou print "$fields[j]\n" d'ailleurs.
 
 
A+,


Message édité par gilou le 31-08-2017 à 21:44:13

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2305147
Profil sup​primé
Posté le 31-08-2017 à 22:50:50  answer
 

ok gilou, sorry. thank's.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Extraire les noms et les verbes du Lexique dans deux fichiers.

 

Sujets relatifs
Extraire des donnees de deux tableauxcopier des données de plusieurs fichiers pour en faire un seul
Merge de 2 fichiers textRécupérer des fichiers via wget et SFTP
Attribuer des .ico à des dossiersquelle est la procedure qui extraire la version du hadware (firmware)
macro recherche cellules dans 2 fichiersExtraire table mysql pour copier avec modif dans une autre
Cherche à créer un ficher avec 6400 noms (numéro.numéro.jpg)Chercher/créer logiciel pour rechercher l’absence de fichiers
Plus de sujets relatifs à : Extraire les noms et les verbes du Lexique dans deux fichiers.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR