Créer un pipeline pour effectuer une analyse des sentiments à l'aide de la PNL

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données.

Vue d'ensemble

  • Chaque composant de base et fondamental requis pour l'analyse des sentiments.
  • J'ai utilisé une approche simple pour expliquer toutes les bases, afin que même un lecteur débutant puisse acquérir une compréhension complète de tous les concepts.
  • Les sujets: Prétraitement de texte, Corpus de vocabulaire, Extraction de caractéristiques (Représentation creuse et dictionnaire des fréquences), Modèle de régression logistique pour l'analyse des sentiments.

L'analyse des sentiments est une technique d'apprentissage automatique supervisée utilisée pour analyser et prédire la polarité des sentiments dans un texte (soit positif soit négatif).

Il est souvent utilisé par les entreprises et les entreprises pour comprendre l'expérience de leurs utilisateurs, émotions, réponses, etc. afin qu'ils puissent améliorer la qualité et la flexibilité de leurs produits et services.

À présent, approfondissons la compréhension de la façon dont les ingénieurs en apprentissage automatique utilisent cette technique d'analyse des sentiments pour examiner les sentiments de divers textes.

Rassembler des données

" PLUS DE DONNÉES, MIEUX! «

Il y a tellement de sources de données ouvertes qui peuvent être utilisées pour former des modèles de ML, c'est donc un choix personnel de collecter des données vous-même ou d'utiliser des ensembles de données ouvertes pour entraîner notre algorithme.

Les ensembles de données textuels sont généralement distribués comme JSON o CSV formats, donc pour les utiliser, on peut récupérer les données dans une liste python ou dans un dictionnaire / objet de bloc de données.

Les données doivent être divisées dans le train, ensembles de validation et de test d'une manière commune de 60% 20% 20% O 70% 15% 15%.

L'ensemble de données Twitter populaire peut être téléchargé à partir de ici.

Pipeline

Chaque tâche d'apprentissage automatique doit avoir un Pipeline. Les pipelines sont utilisés pour diviser vos workflows d'apprentissage automatique en parties modulaires indépendantes, réutilisables qui peuvent ensuite être regroupés pour améliorer continuellement la précision du modèle et obtenir un algorithme efficace.

Nous suivrons une structure de pipeline de base pour notre problème, afin qu'un lecteur puisse facilement comprendre chaque partie du pipeline utilisé dans notre flux de travail. Notre pipeline comprendra les étapes suivantes:

  1. Pré-traitement du texte et construction du vocabulaire: Élimination des textes indésirables (mots vides), ponctuation, URL, identifiants, etc. qui n'ont aucune valeur sentimentale. Et puis ajouter des mots uniques prétraités à un vocabulaire.
  2. Extraction de caractéristiques: Itérer à travers chaque exemple de données pour extraire des caractéristiques à l'aide d'un dictionnaire de fréquences et enfin créer un tableau de caractéristiques.
  3. Modèle de entraînement: Nous utiliserons ensuite notre matrice de caractéristiques pour entraîner un modèle de régression logistique à utiliser ce modèle pour prédire les sentiments..
  4. Modèle de test: Utilisation de notre modèle entraîné pour obtenir les prédictions à partir de données que vous n'avez jamais vues.

Pré-traitement des données

C'est une étape importante dans notre portefeuille de projets. Le prétraitement de texte peut être utilisé pour supprimer des mots et des scores des données textuelles qui n'ont aucune valeur sentimentale, car le prétraitement de texte peut considérablement améliorer notre temps de formation, puisque la taille de nos données sera réduite et se limitera à des mots ayant une certaine valeur sentimentale. Le prétraitement comprend la manipulation de

  1. Pour les mots

    Des mots qui n'ont aucune valeur / poids sémantique ou sentimental dans une phrase. par exemple: Oui, il est, les, toi, etc.

    Comment les traiter? Nous allons créer une liste qui inclut tous les mots vides possibles comme

    ['nous-mêmes', 'la sienne', 'entre', 'toi-même', 'mais', 'de nouveau', 'là', 'À propos', 'une fois que', 'pendant', 'dehors', 'très', 'ayant', 'avec', 'elles ou ils', 'posséder', 'un', 'être', 'certains', 'pour', 'faire', 'son', 'les vôtres', 'tel', 'dans', 'de', 'plus', 'lui-même', 'autre', 'désactivé', 'est', 's', 'un m', 'ou', 'qui', 'comme', 'de', 'lui', 'chaque', 'les', 'eux-mêmes', 'jusqu'à', 'au dessous de', 'sommes', 'nous', 'ces', 'ton', 'le sien', 'par', 'enfiler', 'ni', 'moi', 'étaient', 'sa', 'Suite', 'lui-même', 'cette', 'vers le bas', 'devrait', 'notre', 'leur', 'tandis que', 'dessus', 'les deux', 'en haut', 'à', 'les notres', 'avais', 'elle', 'tous', 'non', 'lorsque', 'à', 'tout', 'avant', 'eux', 'même', 'et', 'été', 'ont', 'dans', 'volonté', 'au', 'Est-ce que', 'vous-mêmes', 'alors', 'cette', 'car', 'Quel', 'plus de', 'Pourquoi', 'donc', 'pouvez', 'fait', 'ne pas', 'maintenant', 'sous', 'il', 'tu', 'se', 'a', 'seulement', 'où', 'trop', 'seul', 'moi même', 'lequel', 'celles', 'je', 'après', 'quelque', 'qui', 't', 'étant', 'si', 'les leurs', 'ma', 'contre', 'une', 'par', 'Faire', 'ce', 'comment', 'plus loin', 'était', 'ici', 'que']

    Nous allons maintenant parcourir chaque exemple de nos données et supprimer chaque mot de nos données présent dans la liste des mots vides..

  2. Notes

    Les signes de ponctuation sont des symboles que nous utilisons pour souligner notre texte. par exemple:! , @, #, $, etc.

    Comment les traiter? Nous les traiterons de la même manière que nous avons traité les mots vides, nous en créerons une liste et traiterons chaque exemple avec cette liste.

  3. URL et identifiants

    Les URL sont les liens qui commencent par la déclaration du protocole Http, par exemple. ‘https: //….’ et les identifiants sont utilisés pour mentionner des personnes sur les réseaux sociaux, par exemple. ‘@Nom d'utilisateur’ les deux partagent une signification sentimentale nulle.

    Comment les traiter? Traitez-les en créant une fonction ‘process_handles_urls ()’ qui prendra les données de notre ensemble d'entraînement et supprimera les mots qui commencent par ‘https: //’ O ‘@’ de chaque exemple.

  4. Dérivé

    La dérivation est un processus de réduction d'un mot à sa racine de base. Par exemple, ‘tourner’ est un mot racine de tour, tourner, tourner, etc. Puisque le mot racine offre la même valeur sentimentale pour tous ses mots suffixés, nous pouvons réduire chaque mot à sa racine de base, ce qui peut réduire la taille de notre vocabulaire et le temps de formation. aussi bien que.

    Comment les traiter? Traitez-les en créant une fonction ‘do_stemming ()’ qui prendra les données et dérivera les mots de chaque exemple.

  5. Boîtier inférieur

    Nous devons utiliser des majuscules et des minuscules similaires pour chaque mot dans les données afin de représenter ‘Mot’, ‘WORD’, ‘mot’ il ne devrait y avoir qu'un seul cas à suivre, c'est-à-dire, minuscule, cela peut également aider à réduire la taille du vocabulaire et à éliminer la répétition de mots.

    Comment les traiter? itérer à travers chaque exemple, utiliser la méthode .lower () pour convertir chaque morceau de texte en minuscules.

Corpus de vocabulaire

Après prétraitement des données, il est temps de créer un vocabulaire qui stocke chaque mot unique et attribue une valeur numérique à chaque mot différent (cela s'appelle aussi la tokenisation).

Nous utiliserons ce dictionnaire de vocabulaire pour l'extraction de caractéristiques.

51508capture d'écran2023-8373332

Extraction de caractéristiques

L'un des problèmes, lorsque vous travaillez avec le traitement du langage, est que les algorithmes d'apprentissage automatique ne peuvent pas fonctionner directement sur du texte brut. Ensuite, nous avons besoin de techniques d'extraction de caractéristiques pour convertir le texte en un tableau (vecteur) caractéristiques numériques.

Prenons quelques exemples de tweets positifs et négatifs:

91396zhnajggwtbwtqi4ifu21za_32f86a38bc224959be21ede407128c82_screen-shot-2020-09-01-at-7-55-08-am-4885381
REMARQUE: L'exemple ci-dessus n'est pas traité, donc nous allons le traiter d'abord avant de passer aux étapes suivantes.

Mauvaise représentation

C'est une approche naïve d'extraire des caractéristiques d'un texte. Selon la représentation clairsemée, nous pouvons créer un éventail de fonctionnalités en itérant à travers des données complètes, et pour chaque mot, dans l'exemple de texte, nous attribuerons 1 à la position de ce mot dans la liste de vocabulaire et pour les mots qui n'apparaissent pas, NOUS ‘ je vais attribuer 0. Ensuite, notre matrice de caractéristiques aura des lignes = nombre total de phrases dans nos données et colonnes = nombre total de mots dans le vocabulaire.

11349vpvzpkhcs6uvwtyhwmurrq_d2e2fd874a354ab38047ef531021b681_screen-shot-2020-09-01-at-7-48-25-am-7637263

Désavantages:

  1. Super moment de formation
  2. Grand temps de prédiction

Dictionnaire des fréquences

Un dictionnaire de fréquences garde une trace des fréquences positives et négatives de chaque mot dans nos données.

77970vhho7a7dtvurzuwo3u779q_5364f83a7bd54782a09279efe06e96f2_screen-shot-2020-09-01-at-7-57-30-am-8710889

Fréquence positive: Les Nombre de fois qu'un mot apparaît dans les phrases avec un sentiment positif.

Fréquence négative: Les Nombre de fois qu'un mot apparaît dans les phrases avec un sentiment négatif.

Extraction de caractéristiques avec dictionnaire de fréquences:

Utilisation du dictionnaire de fréquences pour l'extraction de caractéristiques, on peut réduire les dimensions de chaque ligne qui représente chaque phrase d'une matrice de caractéristiques (c'est-à-dire, égal au nombre de mots du vocabulaire en cas de sous-représentation) en trois dimensions.

Les caractéristiques des données d'un texte sont extraites avec le dictionnaire de caractéristiques à l'aide des formules suivantes:

13929capture d

Le processus ressemble presque à:

39111n_pzqknvsnqz80jdb-ja5a_a44a87942c5e476593cd8e1582cf5b06_screen-shot-2020-09-01-at-8-04-10-am-7677584
54517dqu0vx1nt3yfnl19ts98gq_b885bb87a6d644389726ddc740869153_screen-shot-2020-09-01-at-8-04-21-am-5529193

Nous avons maintenant un vecteur de caractéristiques en trois dimensions pour notre tweet qui ressemble à ceci:

Xm = [1,8,11]

Maintenant, nous allons parcourir chaque exemple pour extraire les caractéristiques de chaque exemple, puis nous utiliserons ces caractéristiques pour créer la matrice de caractéristiques que nous pouvons utiliser pour la formation.. À la fin, nous avons un éventail de caractéristiques comme:

51085c3bc-aldrj-wqvgjqyy_8w_6b189b0ef72e456b9cce8c264796f567_screen-shot-2020-09-01-at-8-24-17-am-1704603

Régression logistique pour l'analyse des sentiments

La régression logistique modélise les probabilités de problèmes de classification avec deux résultats possibles. C'est une extension du modèle de régression linéaire pour les problèmes de classification.

Utilisations de la régression logistique une fonction sigmoïde pour mapper la sortie de notre fonction linéaire (??TX) Entrez 0 Oui 1 avec un certain seuil (généralement 0.5) faire la différence entre deux classes, donc si h> 0.5 c'est une classe positive, et si h <0.5 c'est une classe négative. (Expliquer la régression logistique complète dépasse le cadre de cet article.)

18130ol4ox_jxtbi-dsfycuwyvw_d0582a0dddf7470486f0955c8b025dd6_screen-shot-2020-09-01-at-8-30-00-am-4103114

Modèle d'analyse des sentiments d'entraînement

La formation de notre modèle suivra les étapes suivantes:

29525ygmjeyr0sw2poxmkdbsneq_74cb9a1075fb4d1eb835b14a8d5b2456_screen-shot-2020-09-01-at-8-39-39-am-2156079

Nous initialisons notre paramètre θ, que nous pouvons utiliser dans notre sigmoïde, puis nous calculons le pente que nous utiliserons pour mettre à jour θ et ensuite calculons le coût. Nous continuerons à répéter les étapes jusqu'à ce que le coût soit minimisé / converger.

Tester notre modèle

Pour tester notre modèle, nous utiliserons notre ensemble de validation et suivrons les étapes suivantes:

  1. Diviser les données dans X_validation (texte) et Y_validation (sentiment).
  2. Utiliser l'extraction de caractéristiques pour X_validation pour transformer des textes en caractéristiques numériques.
  3. Trouver le vecteur h (= sigmoïde (??TX)) pour chaque texte du jeu de validation.
  4. Attribuez une fonction pour obtenir les classes réelles tout en comparant à un seuil.
  5. Trouvez la précision de nos prédictions.
94665xq8ryohvrokvewkb73tiug_ac2e78d0c6654f58ab40822d08b68465_screen-shot-2020-09-02-at-10-47-33-am-6063362

résumé

Je suis content que tu sois arrivé jusqu'ici! Si vous êtes débutant en traitement automatique du langage naturel, J'espère pouvoir vous donner une idée de la façon dont les choses fonctionnent sous le capot et vous permettre de couvrir des sujets plus complexes et avancés et, si vous êtes un professionnel, J'espère que j'ai pu rafraîchir vos bases.

Le traitement du langage naturel est un vaste domaine de l'intelligence artificielle, ses applications sont utilisées dans divers paradigmes, comme les chatbots, analyse des sentiments, traduction automatique, correction automatique, etc. Il existe plusieurs plateformes et articles e-learning, travaux, etc. distribution gratuite qui peut être utile pour faire avancer le voyage.

Les références: Spécialisation Traitement automatique du langage naturel

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données