Traitement du langage naturel (NLP)

Fonctions :

  • Traitement du langage naturel (exemple)

    Le traitement du langage naturel (NLP) permet d’analyser, comprendre et générer du texte en langage humain grâce à des modèles d’apprentissage automatique. Cette technique est utilisée pour des tâches comme la classification de texte, l’analyse de sentiment, ou la génération automatique de texte.

    Importation :

    from tensorflow.keras.preprocessing.text import Tokenizer
    from tensorflow.keras.preprocessing.sequence import pad_sequences
    import tensorflow as tf

    Attributs :

    Paramètre Type Description Valeur par défaut
    texts list[str] Liste des textes à analyser.
    max_length int Longueur maximale des séquences de tokens. 100
    model tf.keras.Model Modèle de deep learning entraîné pour la tâche NLP.

    Exemple de code :

    import numpy as np
    import tensorflow as tf
    from tensorflow.keras.preprocessing.text import Tokenizer
    from tensorflow.keras.preprocessing.sequence import pad_sequences
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Embedding, GlobalAveragePooling1D, Dense
    
    # Données d'exemple (phrases + labels binaires)
    texts = [
        "J'adore le machine learning",
        "Je n'aime pas le spam"
    ]
    labels = np.array([1, 0])  # 1 = positif, 0 = négatif
    
    # Tokenization des textes
    tokenizer = Tokenizer(num_words=1000)
    tokenizer.fit_on_texts(texts)
    sequences = tokenizer.texts_to_sequences(texts)
    
    # Padding pour uniformiser la longueur des séquences
    padded = pad_sequences(sequences, maxlen=10, padding='post')
    
    # Création du modèle simple
    model = Sequential([
        Embedding(input_dim=1000, output_dim=16, input_length=10),
        GlobalAveragePooling1D(),
        Dense(16, activation='relu'),
        Dense(1, activation='sigmoid')
    ])
    
    # Compilation du modèle
    model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
    
    # Entraînement
    model.fit(padded, labels, epochs=10, verbose=2)
    
    # Prédiction sur de nouveaux exemples
    test_texts = ["J'aime le deep learning", "Ce message est du spam"]
    test_seq = tokenizer.texts_to_sequences(test_texts)
    test_pad = pad_sequences(test_seq, maxlen=10, padding='post')
    predictions = model.predict(test_pad)
    
    for text, pred in zip(test_texts, predictions):
        print(f"Texte: {text} -> Probabilité positif: {pred[0]:.2f}")

    Explication du code :

    1. Importation des bibliothèques nécessaires
    - Import de NumPy pour la gestion des tableaux numériques. - Import de TensorFlow et des modules Keras pour la tokenization, le padding, la création et l’entraînement du modèle.
    2. Définition des données d'exemple
    - Création d’une petite liste de phrases (`texts`) avec leurs labels binaires associés (`labels`), où 1 signifie une phrase positive et 0 une phrase négative.
    3. Tokenization des textes
    - Initialisation d’un tokenizer limité aux 1000 mots les plus fréquents. - Construction du vocabulaire à partir des textes. - Conversion des phrases en séquences d’entiers, chaque entier représentant un mot.
    4. Padding des séquences
    - Uniformisation de la longueur des séquences à 10 tokens maximum en ajoutant des zéros à la fin des séquences plus courtes (`padding='post'`).
    5. Création du modèle séquentiel
    - Couche `Embedding` pour transformer chaque mot (index) en un vecteur dense de dimension 16, avec une séquence d’entrée de longueur 10. - Couche `GlobalAveragePooling1D` qui calcule la moyenne sur la dimension temporelle, résumant la séquence en un vecteur fixe. - Couche dense de 16 neurones avec activation ReLU pour apprendre des représentations complexes. - Couche de sortie dense avec un neurone et activation sigmoïde pour produire une probabilité entre 0 et 1 (classification binaire).
    6. Compilation du modèle
    - Optimiseur Adam pour la mise à jour efficace des poids. - Fonction de perte `binary_crossentropy` adaptée à la classification binaire. - Évaluation via la métrique `accuracy` (précision).
    7. Entraînement du modèle
    - Entraînement du modèle sur les séquences préparées et leurs labels pendant 10 epochs. - Affichage détaillé de la progression de l’entraînement.
    8. Prédictions sur de nouveaux exemples
    - Préparation des nouvelles phrases en séquences et padding identiques aux données d’entraînement. - Prédiction des probabilités d’appartenance à la classe positive. - Affichage des phrases test avec leur probabilité de positif.