Traitement du langage naturel (NLP) pour l'apprentissage automatique – Apprendre langue

  • Antares Auto-Tune Artist
    Antares Auto-Tune Artist, Plugin de correction de hauteur de ton - Version téléchargement, Logiciel de correction automatique ou manuelle de l'intonation en temps réel, Technologie de traitement de la voix EVO de deuxième génération, Correction naturelle de la hauteur en temps réel Flex-Tune, Fonction d'humanisation pour réduire les artefacts, Correction des formants et modélisation de la gorge, Transpose permet le changement de hauteur en temps réel, Cible de hauteur de ton contrôlable par l'entrée MIDI, Contrôle en temps réel des réglages les plus importants via MIDI, Mode classique pour le son Auto-Tune 5, Différents niveaux de traitement via le mode de base et le mode avancé, Compatible avec le plugin Antares Auto-Key Plugin (Article n°: #457821#)

Dans cet article, vous en apprendrez beaucoup sur le traitement du langage naturel (NLP) qui peut aider les ordinateurs à analyser le texte facilement, c'est-à-dire détecter les spams, à correction automatique. Nous verrons comment les tâches de la PNL sont effectuées pour comprendre le langage humain.

Traitement du langage naturel

La PNL est un domaine de l'apprentissage automatique doté de la capacité d'un ordinateur à comprendre, analyser, manipuler et potentiellement générer un langage humain.

PNL dans la vraie vie

  • Recherche d'informations (Google trouve des résultats pertinents et similaires).
  • Extraction des informations (Gmail structure les événements à partir des emails).
  • Traduction automatique (Google Translate traduit la langue d’une langue à l’autre).
  • Simplification du texte (Rewordify simplifie le sens des phrases). Les tweets de Shashi Tharoor pourraient être utilisés (jeu de mots).
  • Analyse des sentiments (Hater News nous donne le sentiment de l'utilisateur).
  • Synthèse de texte (le texte automatique de Smmry ou Reddit donne un résumé des phrases).
  • Filtre anti-spam (Gmail filtre les spams séparément).
  • Prédiction automatique (la recherche Google prédit les résultats de la recherche de l'utilisateur).
  • Correction automatique (mots Google Keyboard et Grammarly corrects, sinon orthographiés de manière incorrecte).
  • Reconnaissance vocale (Google WebSpeech ou Vocalware).
  • Répondre à une question (réponses d’IBM Watson à une requête).
  • Natural Language Generation (Génération de texte à partir d'images ou de données vidéo.)

(Boîte à outils en langage naturel) NLTK: NLTK est un paquet open source populaire en Python. Plutôt que de créer tous les outils à partir de rien, NLTK fournit toutes les tâches NLP courantes.

Installation de NLTK

Type ! pip installer nltk dans le cahier Jupyter ou s’il ne fonctionne pas en type cmd conda install -c conda-forge nltk. Cela devrait fonctionner dans la plupart des cas.

Installez NLTK: http://pypi.python.org/pypi/nltk

Importation de la bibliothèque NLTK

Après avoir tapé ce qui précède, nous obtenons une application de téléchargement NLTK qui est utile pour les tâches de PNL.

Stopwords Corpus est déjà installé sur mon système, ce qui aide à éliminer les mots redondants. De même, nous pouvons installer d'autres packages utiles.

Lecture et exploration de données

Lire des données textuelles et pourquoi avons-nous besoin de nettoyer le texte?

Lors de la lecture de données, nous obtenons des données dans un format structuré ou non structuré. Un format structuré a un modèle bien défini alors que les données non structurées n’ont pas de structure appropriée. Entre les deux structures, nous avons un format semi-structuré qui est comparativement mieux structuré que le format non structuré.

Comme nous pouvons le voir ci-dessus, lorsque nous lisons des données semi-structurées, il est difficile à interpréter. Nous utilisons donc des pandas pour comprendre facilement nos données.

Données de prétraitement

Il est nécessaire de nettoyer les données textuelles pour mettre en évidence les attributs que nous souhaitons que notre système d’apprentissage automatique prenne en compte. Le nettoyage (ou le prétraitement) des données comprend généralement plusieurs étapes:

1. Supprimer la ponctuation

La ponctuation peut fournir un contexte grammatical à une phrase qui renforce notre compréhension. Mais pour notre vectoriseur qui compte le nombre de mots et non le contexte, il n’ajoute aucune valeur, nous supprimons donc tous les caractères spéciaux. par exemple: comment allez-vous -> comment allez-vous

Dans body_text_clean, nous pouvons voir que toutes les ponctuations, comme je l'ai été, sont omises.

2.Tokénisation

Tokenizing sépare le texte en unités telles que des phrases ou des mots. Il structure le texte précédemment non structuré. par exemple: Plata o Plomo-> ‘Plata’, 'o ’,' Plomo’.

Dans body_text_tokenized, nous pouvons voir que tous les mots sont générés sous forme de jetons.

3. Supprimer les mots vides

Les mots vides sont des mots courants susceptibles d'apparaître dans n'importe quel texte. Comme ils ne nous parlent pas beaucoup de nos données, nous les supprimons. par exemple: l'argent ou le plomb me conviennent -> l'argent, le plomb, bien.

Dans body_text_nostop, tous les mots inutiles tels que été, pour, sont supprimés.

Données de prétraitement: stemming

La tige permet de réduire un mot à sa forme de tige. Il est souvent judicieux de traiter les mots liés de la même manière. Il supprime les suffrages, comme “ing”, “ly”, “s”, etc. par une simple approche basée sur des règles. Cela réduit le corpus de mots mais souvent les mots réels sont négligés. par exemple: Entitling, Entitled-> Entitl
Remarque: certains moteurs de recherche traitent les mots ayant la même racine comme des synonymes.

Dans body_text_stemmed, des mots tels que entry, wkly sont liés à entri, wkli même si cela ne veut rien dire.

Données de prétraitement: lemmatiser

La lemmatisation dérive de la forme canonique («lemme») d’un mot. c'est-à-dire la forme racine. C’est mieux que l’acier car il utilise une approche basée sur un dictionnaire, c’est-à-dire une analyse morphologique de la racine word.eg: Entitling, Entitled-> Entitle

En bref, la recherche de raccourcis est généralement plus rapide, car elle coupe simplement la fin du mot sans comprendre le contexte du mot. La lemmatisation est plus lente et plus précise car elle nécessite une analyse éclairée tenant compte du contexte du mot.

Dans body_text_stemmed, nous pouvons utiliser des mots tels que les chances sont lemmatisées au hasard alors qu'il est dérivé de chanc.

Vectorisation des données

La vectorisation est le processus de codage de texte sous forme d’entiers, c’est-à-dire sous forme numérique, pour créer des vecteurs de caractéristiques afin que les algorithmes d’apprentissage automatique puissent comprendre nos données.

Vectorisation des données: un sac de mots

Bag of Words (BoW) ou CountVectorizer décrit la présence de mots dans les données de texte. Il donne un résultat de 1 s'il est présent dans la phrase et de 0 s'il n'est pas présent. Il crée donc un paquet de mots avec un nombre de matrices de documents dans chaque document texte.

BOW est appliqué à body_text, le nombre de mots est donc stocké dans la matrice du document. (Vérifiez le repo).

Vectorisation des données: N-Grams

N-grammes sont simplement toutes les combinaisons de mots adjacents ou de lettres de longueur n que nous pouvons trouver dans notre texte source. Les ngrams avec n = 1 sont appelés unigrammes. De même, les bigrammes (n = 2), les trigrammes (n = 3), etc. peuvent également être utilisés.

Les unigrammes ne contiennent généralement pas beaucoup d’informations par rapport aux bigrammes et aux trigrammes. Le principe de base derrière n-grammes est qu’ils capturent la lettre ou le mot qui est susceptible de suivre le mot donné. Plus le n-gramme est long (plus n), plus vous devez travailler avec un contexte.

N-Gram est appliqué à body_text, de sorte que le nombre de mots du groupe dans un mot de phrase est stocké dans la matrice du document. (Vérifiez le repo).

Vectorisation des données: TF-IDF

Il calcule la «fréquence relative» à laquelle un mot apparaît dans un document par rapport à sa fréquence dans tous les documents. Il est plus utile que «fréquence de terme» pour identifier les mots «importants» dans chaque document (fréquence élevée dans ce document, fréquence basse dans d'autres documents).
Remarque: Utilisé pour la notation des moteurs de recherche, la synthèse de texte, la mise en cluster de documents.

Consultez mon précédent article – Dans la section TF-IDF, j'ai expliqué le fonctionnement de la TF-IDF.

TF-IDF est appliqué sur body_text, de sorte que le nombre relatif de chaque mot dans les phrases est stocké dans la matrice du document. (Vérifiez le repo).

Remarque: Les vectoriseurs produisent des matrices creuses. Matrice clairsemée est un matrice dans laquelle la plupart des entrées sont égales à 0. Dans l'intérêt d'un stockage efficace, une matrice creuse sera stockée en ne stockant que les emplacements des éléments non nuls.

Ingénierie des fonctionnalités: Création des fonctionnalités

L'ingénierie de fonctionnalités consiste à utiliser la connaissance de domaine des données pour créer des fonctionnalités permettant aux algorithmes d'apprentissage automatique de fonctionner. C'est comme un art, car il nécessite une connaissance du domaine et il peut être difficile de créer des fonctionnalités, mais il peut s'avérer utile que l'algorithme ML prédise les résultats car ils peuvent être associés à la prédiction.

  • body_len affiche la longueur des mots à l'exclusion des espaces, dans le corps du message.
  • punct% indique le pourcentage de signes de ponctuation dans le corps d'un message.

Vérifier si les fonctionnalités sont bonnes ou non

Nous pouvons clairement voir que les spams ont un nombre de mots élevé par rapport à Hams. C’est donc une bonne caractéristique à distinguer.

Le spam a un pourcentage de ponctuation mais pas très éloigné de Ham. Aussi surprenant que parfois, les spams peuvent contenir beaucoup de signes de ponctuation. Mais encore, il peut être identifié comme une bonne fonctionnalité.

Building ML Classifiers: Sélection du modèle

Nous utilisons une méthode d'ensemble d'apprentissage automatique qui utilise plusieurs modèles et dont la combinaison produit de meilleurs résultats qu'un seul modèle (Support Vector Machine / Naive Bayes). Les méthodes d'ensemble sont le premier choix de nombreuses compétitions Kaggle. Forêt aléatoire C'est-à-dire que plusieurs arbres de décision aléatoires sont construits et que les agrégats de chaque arbre sont utilisés pour la prédiction finale. Il peut être utilisé pour la classification ainsi que pour les problèmes de régression. Il suit une stratégie d'ensachage où au hasard.

Recherche par grille: Il recherche de manière exhaustive les combinaisons de paramètres globaux dans une grille donnée pour déterminer le meilleur modèle.

Validation croisée: Il divise un ensemble de données en k sous-ensembles et répète la méthode k fois, un ensemble différent étant utilisé comme ensemble de test, c.-à-d. À chaque itération.

Le mean_test_score pour n_estimators = 150 et max_depth donne le meilleur résultat. Où n_estimators est le nombre d'arbres dans la forêt (groupe d'arbres de décision) et max_depth est le nombre maximum de niveaux dans chaque arbre de décision.

De même, le mean_test_score pour n_estimators = 150 et max_depth = 90 donne le meilleur résultat.

Découvrez ceci: Voulez-vous gagner des compétitions? Faites attention à vos ensembles.

Améliorations: Nous pouvons utiliser GradientBoosting, XgBoost pour la classification. J'ai essayé GridSearchCV sur GradientBoosting, les résultats prenaient beaucoup de temps, alors abandonnez l'idée d'inclure ici. Cela prend beaucoup de temps car GradientBoosting adopte une approche itérative consistant à combiner des apprenants faibles pour créer un apprenant fort en se concentrant sur les erreurs d'une itération antérieure. En résumé, comparé à Random Forest, il utilise une approche séquentielle plutôt qu'une approche parallèle aléatoire.

Classificateur Spam-Ham

Toutes les sections décrites ci-dessus sont combinées pour créer un classificateur Spam-Ham.

Random Forest donne une précision de 97,7%. Le score F1 de grande valeur est également obtenu à partir du modèle. Confusion Matrix nous dit que nous avions prédit correctement 965 jambons et 123 spams. Les jambons ont été identifiés à tort comme des spams et 26 spams ont été prédits à tort comme des jambons. Détecter les spams en tant que jambons est justifiable par rapport à des jambons en tant que spams.

Trouvez le code ci-dessus dans cette Github Repo.

Conclusion

En résumé, nous avons appris à exécuter des tâches élémentaires de la PNL et à utiliser un classificateur d'apprentissage automatique pour prédire si le SMS est un spam ou un spam.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *