Analyse de Sentiments
Presentation
Objectif principal : Un programme qui analyse des textes (tweets, avis, commentaires) et dit si c'est positif, negatif ou neutre. C'est du NLP basique mais ca m'a permis de toucher au machine learning.
Technologies utilisees : Python avec NLTK pour le preprocessing (tokenization, stemming) et un classifieur Naive Bayes. J'ai aussi teste TextBlob qui fait ca en une ligne mais c'est moins formateur.
Fonctionnalites cles : Nettoyage du texte (enlever les @mentions, URLs, emojis), analyse mot par mot avec un dictionnaire de sentiments, score global de -1 a 1, batch processing pour analyser plein de textes.
Livrables attendus : Un script qui prend un fichier texte et sort les resultats. Fonctionne en francais et anglais. Precision d'environ 75% sur les tests.
Calendrier previsionnel : 10 jours. Le plus long c'etait de trouver un bon dataset pour entrainer le modele et de comprendre NLTK.
Parties prenantes & criteres de succes : Projet perso pour decouvrir le NLP. Le but c'etait d'avoir un truc qui marche raisonnablement bien sur des vraies donnees.
Le Defi
Le sarcasme et l'ironie. "Super, encore un bug" c'est negatif mais les mots sont positifs. Pareil pour les negations : "pas mauvais" c'est positif mais "mauvais" est negatif. Le modele basique se fait avoir facilement.
La Solution
Pour les negations, je detecte les mots comme "pas", "jamais", "aucun" et j'inverse le score des mots qui suivent. Pour le sarcasme... j'ai pas vraiment resolu, c'est un probleme de recherche. Mais ca marche bien sur les cas simples qui sont la majorite.
Architecture Technique
Pipeline : texte brut -> nettoyage -> tokenization -> stemming -> lookup dans dictionnaire de sentiments -> aggregation du score. Le dictionnaire vient de AFINN pour l'anglais et j'en ai trouve un pour le francais. Naive Bayes entraine sur des tweets labellises pour comparer.
Points Cles
- Preprocessing complet du texte
- Support francais et anglais
- Gestion des negations
Apercu
Resultats & Apprentissages
75% de precision c'est pas mal pour un premier projet NLP. J'ai appris les bases du traitement du langage naturel et pourquoi c'est dur. Le preprocessing c'est 80% du travail. NLTK c'est puissant mais y'a une courbe d'apprentissage.
Evolutions Futures
Utiliser des modeles plus avances (BERT, transformers) pour mieux gerer le contexte. Faire une API web pour analyser des tweets en temps reel. Ajouter la detection d'emotions (joie, colere, tristesse, pas juste positif/negatif).