IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comment recuperer et manipuler la sortie de TreeTagger avec python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Par défaut Comment recuperer et manipuler la sortie de TreeTagger avec python
    Bonjour,

    Je voulais écrire un programme python qui récupère la sortie d'une commande TreeTagger et qui compte le nombre des fois ou la sortie est répété, il stock par la suite chaque mot et son occurrence dans un htable (je sais pas si ça existe en python), et enfin il enleve les mots qui sont répétés moins de 10 fois.

    Mon problème c'est que je suis débutante en python de coup je sais pas trop comment faire pour que le programme puisse lire d'un fichier texte qui est à la base la sortie de TreeTagger et par la suite manipuler plutot compter ce qui est à l'interieur, ou peut être je suis sensé créer ce fichier texte dans le programme en ajoutant la commande d'execution de TreeTagger dans le code python. Je suis un peu perdue, j'aimerais bien trouver une solution.

    Merci.

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    Citation Envoyé par Derfh Voir le message
    Mon problème c'est que je suis débutante en python
    C'est très vague. As-tu seulement commencé à lire des tutoriaux ? Comme "notre" très fameux Swinnen ?

    Parce que, sinon, à ce compte là, je suis aussi débutant en Ruby ou C# et, si j'avais à faire ce que tu veux faire, je serais tout aussi perdu !

    Où en es-tu de ton apprentissage Python ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Par défaut
    En fait j'ai pu lire quelques tuto mais j'essaye plus d'apprendre en pratiquant la chose
    Là j'ai pu faire un programme qui compte le nombre d'occurence des mots gràce à Python Dictionnary
    mon code ressemble à ceci (Il peut y avoir des bétises)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    def compter(src, dst):
     
    	dico={}
     
    	entete = src.readline().rstrip('\n\r').split(",")
    	lemidx = entete.index("Lemme")
     
    	for ligne in src:
     
    		donnees = ligne.rstrip('\n\r').split(",")
     
    		r = donnees[lemidx]
    		if not ( r in dico):
     
    		    dico[r]=1
     
    		else:
     
    		    dico[r]+=1
     
    	dst.write("%s" % (dico))
     
    	pass
     
    source = open("test.txt","r")
    destination = open("Htable.txt","w")
     
     
    compter(source, destination)
     
    destination.close()
     
    source.close()
    Mais maintenant le problème qui se pose c'est que j'ai testé ce code sur un fichier text dont les informations sont séparées par un virgule et qu'il y'a des mots d'entete qui identifie chaque bloc d'information ce qui n'est pas le cas d'une sortie TreeTagger parce que dans ce cas les blocs d'informations sont séparées par des tabulations et il n'existe aucune entete pour identifier chaque bloc

    Avez vous une idée comment ça passe dans ce cas ?

  4. #4
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Citation Envoyé par Derfh Voir le message
    le cas d'une sortie TreeTagger parce que dans ce cas les blocs d'informations sont séparées par des tabulations et il n'existe aucune entete pour identifier chaque bloc.

    Avez vous une idée comment ça passe dans ce cas ?
    S'il n'y a pas de ligne d'entête, c'est que chaque "colonne" est clairement spécifiée dans la documentation de TreeTagger : plus besoin de déterminer lemidx qui est, alors, une constante (là, je ne peux pas t'aider). Dès l'ouverture du fichier à traiter, tu attaques/lis directement les lignes de "données".

    Ensuite, ce n'est qu'une question de séparateur de mots : dans ton code, c'était la virgule qui te permettait de découper une ligne de texte ? maintenant, c'est un caractère tabulation ('\t') !

    Si tu as écris/compris le bout de code que tu as posté, ça devrait t'aider.
    Par contre, écrire un dictionnaire via "dst.write('%s' % dico)", c'est du brutal, surtout quand on voit qu'un changement de séparateur pose tant de problèmes.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Par défaut
    Citation Envoyé par plxpy Voir le message
    S'il n'y a pas de ligne d'entête, c'est que chaque "colonne" est clairement spécifiée dans la documentation de TreeTagger : plus besoin de déterminer lemidx qui est, alors, une constante (là, je ne peux pas t'aider). Dès l'ouverture du fichier à traiter, tu attaques/lis directement les lignes de "données".
    Je sais pas comment faire pour lire drectement les lignes de données parce que je vais avoir besoin d'un identifiant de chaque lemme pour réaliser la boucle


    Citation Envoyé par plxpy Voir le message
    Ensuite, ce n'est qu'une question de séparateur de mots : dans ton code, c'était la virgule qui te permettait de découper une ligne de texte ? maintenant, c'est un caractère tabulation ('\t') !
    Oui justement il ne y'avait pas un vrai problème sur cette partie! mais parce que il y'a des codes qui n'acceptent pas le anti slash t comme le cas de R c'est pour ça je me suis poser la question

    J'ai changé le code pour éviter d'utiliser la méthode de dictionnaire vu que en affichage ça me donne que des nombres, je voulais un truc plus organisé de coup j'ai réalisé un code basique mais le problème qui se pose ici c'est que il parcours que la ligne et il compte le nombre d'occurence sur la ligne et pas sur tous le document, je sais peut être que j'ai mal écris la boucle mais je sais pas par quoi la remplacer, j'ai tous essayé mais ça ne marche toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    def compter(src, dst):
     
     
    	entete = src.readline().rstrip('\n\r').split("\t")
    	lemidx = entete.index("text")
     
     
    	for ligne in src:
     
    		donnees = ligne.rstrip('\n\r').split("\t")
    		r = donnees[lemidx]
    		a = 0 
     
    		if not (r in dst):
     
    		    a=1
     
    		else:
     
    		    a+=1 
     
    		dst.write("%s %s\n" % (donnees[lemidx],a))
     
    	pass
     
     
    source = open("toto.out","r")
    destination = open("Table.txt",'a+r')
     
     
    compter(source, destination)
     
     
    destination.close()
     
    source.close()

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 746
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 746
    Par défaut
    Salut,

    Pas facile de comprendre ce que vous voulez faire à partir de votre code.
    Peut être qu'on y verrait plus clair si vous postiez quelques lignes significatives du fichier d'entrée et une description succincte de ce que vous voudriez obtenir en sortie à partir de là.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récuperer et manipuler la sortie de TreeTagger avec Python ?
    Par Derfh dans le forum Statistiques, Data Mining et Data Science
    Réponses: 0
    Dernier message: 30/12/2014, 13h56
  2. [AJAX] Comment recuperer la propriété d'un objet Java avec XmlHttpRequest ?
    Par framus.class dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/02/2008, 09h58
  3. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  4. comment recuperer le nom des champs ?????
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 10h00
  5. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo