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 :

Prédiction de la langue d’un texte


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Mars 2020
    Messages : 6
    Par défaut Prédiction de la langue d’un texte
    Bonjour,

    Je mène un projet sur un classifieur de type perceptron multicouches permettant de détecter la langue d'un texte à partir de la fréquence des bigrammes de ce dernier.

    Les performances obtenues par le classifieur dépendent du nombre d’exemples vus lors de l’apprentissage. Je veux tracer une courbe d’apprentissage donnant les performances du réseau selon la taille des données d’apprentissage pour chacune des langues.

    Je pars d'un fichier enregistré sur mon ordi puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    l_corpus_train=[
    ['en', './train/en_partut-ud-train.txt'],
    ['fr', './train/fr_sequoia-ud-train.txt'],
    ['it', './train/it_partut-ud-train.txt'],
    ['nl', './train/nl_lassysmall-ud-train.txt'],
    ['sl', './train/sl_sst-ud-train.txt'],
    ['es', './train/es_ancora-ud-train.txt'],
    ['pt', './train/pt_bosque-ud-train.txt'],
    ['de', './train/de_gsd-ud-train.txt'],
    ['ca', './train/ca_ancora-ud-train.txt']
    ]
    Voici le code qui me pose problème.
    Je souhaite afficher sur le même graphique, une courbe par langue.
    Pour l'instant, j'ai crée mon graph vide mais je ne ne sais pas comment créer ces courbes
    je pense utiliser "nums_subplots" sans savoir comment

    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
    from keras.models import Sequential
    from keras.layers import Dense, Activation, Dropout
     
    model = Sequential()
    nbLangues = len(codeLangues.keys())
     
    print('nbLangues =', nbLangues)
     
    model.add(Dense(units=100, activation='tanh', input_dim=28*28))
    model.add(Dense(units=nbLangues, activation='softmax'))
    model.compile(loss='categorical_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])
     
     
    import matplotlib.pyplot as plt
     
    accuracy = {}
    #nums_subplots
     
     
    plt.xlim(500, 1000)
    plt.ylim(0,1)
    plt.xlabel("datasize")
    plt.ylabel("accuracy")
    plt.title('titre')
    plt.legend()
    plt.show()
    voilà le type de graph que je veux obtenir, une langue = une courbe
    Nom : Sans titre.png
Affichages : 149
Taille : 59,1 Ko

    je vous remercie si vous pouvez m'apporter des pistes
    Pauline

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par pauline1835 Voir le message
    Je souhaite afficher sur le même graphique, une courbe par langue.
    Pour l'instant, j'ai crée mon graph vide mais je ne ne sais pas comment créer ces courbes
    je pense utiliser "nums_subplots" sans savoir comment
    Alors subplot() est la fonction qui crée le graphique (la fenêtre). Deux subplot() donneront deux fenêtres.
    Cette fonction retourne un tuple de 2 éléments qui sont la fenêtre et l'axe X/Y.
    Il suffit de rajouter à l'axe les points pour que ça donne une courbe. Cet ajout se fait par la méthode axe.plot(). Un appel = une courbe, deux appels = deux courbes

    Exemple
    Code python : 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
    import matplotlib.pyplot as plt
     
    data=tuple(range(100))
    points={
    	"c1" : tuple(x for x in data),
    	"c2" : tuple(x**2 for x in data),
    	"c3" : tuple(x**0.5 for x in data),
    }
     
    # plot
    (fig, ax) = plt.subplots()
    for v in points.values():
    	ax.plot(data, v, linewidth=2.0)
     
    ax.set(
    	xlim=(0, 8), xticks=range(0, 8),
    	ylim=(0, 8), yticks=range(0, 8),
    )
     
    plt.show()
    Tu peux rajouter c4, c5, ... contenant leurs propres valeurs, elles se rajouteront automatiquement.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Mars 2020
    Messages : 6
    Par défaut
    Bonjour
    merci pour ces infos
    j'ai modifié un peu le code afin que mes data soient prises dans le fichier l_corpus_train donné au départ
    je n'ai pas de points, mais seulement des fichiers textes
    sauf que ça ne fonctionne pas
    quelle syntaxe de code utiliser pour que ce soit mes données qui s'affichent dans le graph ?
    merci!

    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
    import matplotlib.pyplot as plt
     
    data=tuple(range(1000))
    points={
    	"c1" : tuple(x for x in l_corpus_train),
    }
     
    # plot
    (fig, ax) = plt.subplots()
    for v in points.values():
    	ax.plot(l_corpus_train, v, linewidth=2.0)
     
    ax.set(
    	xlim=(500, 1000), 
    	ylim=(0, 1), 
    )
     
    plt.show()

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Dans mon exemple, data est une liste de valeurs (la liste des "x" à traiter). "l_corpus_train" est une liste de tuples chaque tuple contenant deux chaines, la première représentant (pour nous les humains et non pas pour Python) une langue et la seconde un fichier texte. Cela n'a donc rien à voir...
    Tu veux afficher une courbe ben commence déjà par récupérer les valeurs que tu veux afficher
    [edit]Bravo à fred1599 qui a été plus rapide
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 069
    Par défaut
    Bonjour,

    @pauline1835,

    La variable v dans la boucle for v in points.values(): récupère des tuples contenant des éléments de l_corpus_train, ce qui signifie que vous essayez de tracer des chemins de fichiers en tant que données de l'axe y, ce qui est inapproprié !

    Vous utilisez l_corpus_train, qui est une liste de listes contenant des paires de codes de langue et des chemins de fichiers. Ces données ne sont pas numériques et ne peuvent pas être utilisées directement comme valeurs pour un axe de tracé dans matplotlib, qui attend des données numériques ou des catégories directement utilisables.

    Pour corriger ces problèmes et générer un graphique fonctionnel, vous devez définir clairement ce que vous souhaitez tracer !

    Assurez-vous que les données que vous souhaitez tracer correspondent aux types attendus par matplotlib et reflètent l'objectif de votre visualisation.

Discussions similaires

  1. Langue du texte des JOptionPane
    Par reeda dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 19/10/2009, 16h38
  2. Alignement vertical dún objet texte ou une formule
    Par HMplusplus dans le forum Formules
    Réponses: 3
    Dernier message: 21/11/2006, 13h51
  3. Determiner la langue d'un texte automatiquement ?
    Par Bruno13 dans le forum Delphi
    Réponses: 1
    Dernier message: 23/10/2006, 15h51
  4. Zone de texte pour tous les langues..
    Par pointer dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/09/2006, 16h04
  5. Trouver en quelle langue est écrit un texte
    Par Lorponos dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 27/04/2006, 12h33

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