====== Parcours de formation en NLP et IA générative pour débutant ======
Ce parcours propose une formation progressive et **gratuite** en traitement automatique du langage naturel (NLP) et en intelligence artificielle générative. Conçu pour un développeur débutant **bilingue (français/anglais)** disposant de 1 à 5 heures par semaine, il combine des ressources variées (cours en ligne, tutoriels, vidéos, articles, exercices pratiques) en français et en anglais. Le programme s'étale sur plusieurs mois, en couvrant d'abord les bases du machine learning, puis en introduisant le NLP classique, avant d'aborder les modèles modernes de type Transformers, le fine-tuning de modèles, la génération de texte et enfin le **prompt engineering** avec les grands modèles de langage (LLM). Des outils gratuits utiles à la pratique sont suggérés tout au long du parcours, de même qu'une liste de sources pour assurer une veille technologique en IA. Enfin, des idées de **mini-projets concrets** sont proposées pour appliquer les connaissances acquises.
===== Phase 1 : Bases du Machine Learning (Semaines 1 à 4) =====
Pour bien démarrer en IA, il est indispensable de maîtriser les **fondamentaux du machine learning** (apprentissage automatique). Durant le premier mois, l'objectif est d'acquérir les concepts de base : types d'apprentissages (supervisé vs non supervisé), notions de régression et classification, surapprentissage, validation croisée, etc.
==== Ressources recommandées (FR) ====
* [[https://www.fun-mooc.fr/|Introduction au Machine Learning]] de l'Université de Montpellier sur FUN MOOC : ce cours couvre les concepts fondamentaux (régression linéaire, algorithmes de classification)
* [[https://openclassrooms.com/fr/courses/4011851-initiez-vous-au-machine-learning|Fondamentaux du Machine Learning]] sur OpenClassrooms (accessible gratuitement) : présente les bases théoriques du ML et leurs applications
* Ces cours vous aideront à appréhender les algorithmes classiques (régression linéaire/logistique, arbres de décision, k-NN) ainsi que l'utilisation de [[https://scikit-learn.org/|scikit-learn]]
==== Ressources recommandées (EN) ====
* [[https://www.coursera.org/learn/machine-learning|Machine Learning]] de Andrew Ng (Coursera) : classique disponible en anglais (sous-titré), entièrement **gratuit en audit libre**
* [[https://developers.google.com/machine-learning/crash-course|Machine Learning Crash Course]] de Google (15 heures, 12 modules, >100 exercices) : tutoriel interactif avec interface française abordant la création de modèles de régression et classification
* [[https://colab.research.google.com/|Google Colab]] : environnement cloud gratuit pour exécuter du code Python en ML
==== Approche d'apprentissage ====
À ce stade, alternez entre théorie et pratique. Après avoir suivi un chapitre de cours, mettez en œuvre un petit exercice correspondant. Par exemple :
* Entraînez un modèle de régression linéaire simple sur un dataset de votre choix
* Appliquez un **classifieur Naïve Bayes** pour détecter des spams
* Utilisez les tutoriels interactifs de scikit-learn pour apprendre à préparer vos données (normalisation, encodage) et évaluer vos modèles
L'objectif est d'être à l'aise avec Python et les notions de base du **machine learning** avant de plonger dans le NLP.
===== Phase 2 : Introduction au Traitement du Langage Naturel (Semaines 5 à 8) =====
Une fois les bases du ML acquises, vous pouvez aborder le **NLP traditionnel**. Cette étape introduit les spécificités du traitement des données textuelles : comment représenter du texte pour une machine, et quels algorithmes simples permettent d'analyser du langage ? Au programme : **tokenisation**, nettoyage (retrait des stopwords, ponctuation), représentations vectorielles de base (sac de mots, TF-IDF), et premiers algorithmes d'apprentissage pour le texte.
==== Ressources recommandées (FR) ====
* [[https://www.youtube.com/@machinelearningfr|Machine Learning France]] sur YouTube : tutoriel sur **scikit-learn appliqué au NLP** (présentation de TF-IDF)
* Supports de cours universitaires ([[https://www.inria.fr/|Inria]], [[https://www.ens.psl.eu/|ENS]])
* Blog [[https://tal.hypotheses.org/|"Le TAL pour les nuls"]]
==== Ressources recommandées (EN) ====
* [[https://www.fast.ai/posts/2019-07-08-fastai-nlp.html|"A Code-First Introduction to NLP"]] de fast.ai (Rachel Thomas et Jeremy Howard) : cours gratuit (vidéos YouTube + notebooks Python) couvrant un large spectre, des méthodes NLP traditionnelles jusqu'aux réseaux de neurones pour le langage
* [[https://www.nltk.org/book/|"Natural Language Processing with Python"]] (livre NLTK) : disponible gratuitement en ligne, introduit le NLP de façon très pratique avec la bibliothèque NLTK
* [[https://spacy.io/usage/spacy-101|spaCy 101]] : tutoriel officiel de spaCy pour débuter avec cette bibliothèque moderne de NLP
==== Pratique ====
* Créez un notebook où vous nettoyez un corpus de tweets, retirez les stopwords, et calculez les TF-IDF
* Construisez un classifieur de spam/ham avec un modèle naïve Bayes entraîné sur du texte vectorisé (utilisez le [[https://archive.ics.uci.edu/dataset/94/spambase|dataset Spambase]])
* Explorez les capacités de [[https://spacy.io/|spaCy]] : tokenisation, POS tagging, reconnaissance d'entités nommées sur un texte français ou anglais
* Téléchargez des [[https://www.nltk.org/data.html|corpus NLTK]] pour vous entraîner
===== Phase 3 : Modèles de Deep Learning pour le NLP (Semaines 9 à 12) =====
Maintenant que vous avez compris le NLP classique, il est temps de découvrir l'approche par **réseaux de neurones**. Les modèles de deep learning pour le texte (RNN, LSTM, GRU) ont permis de grandes avancées. Ici, vous apprendrez à représenter le texte avec des **embeddings** (word2vec, GloVe) et à construire des modèles séquentiels.
==== Ressources recommandées (EN) ====
* [[https://www.coursera.org/specializations/deep-learning|Deep Learning Specialization]] de Andrew Ng (Coursera) : inclut un cours sur les réseaux récurrents et le NLP. Gratuit en audit.
* [[https://www.coursera.org/learn/nlp-sequence-models|Sequence Models]] (cours 5 de la spécialisation Deep Learning) : focus sur RNN, LSTM, attention, et embeddings
* [[https://www.tensorflow.org/tutorials/text|TensorFlow]] / [[https://pytorch.org/tutorials/beginner/nlp_tutorial.html|PyTorch tutorials]] : tutoriels officiels pour construire des modèles RNN/LSTM sur du texte
==== Pratique ====
* Chargez des word embeddings pré-entraînés ([[https://radimrehurek.com/gensim/models/word2vec.html|word2vec]] ou [[https://nlp.stanford.edu/projects/glove/|GloVe]]) et explorez les voisins sémantiques de mots
* Construisez un modèle LSTM simple pour la classification de sentiment ([[https://huggingface.co/datasets/imdb|IMDB reviews]])
* Testez différentes architectures (RNN vanilla vs LSTM vs GRU) et observez les différences de performance
* Utilisez [[https://www.kaggle.com/datasets|Kaggle Datasets]] pour trouver des corpus de texte variés
===== Phase 4 : Transformers et modèles pré-entraînés (Semaines 13 à 16) =====
L'architecture **Transformer** a révolutionné le NLP. Des modèles comme BERT, GPT, T5 sont devenus incontournables. Cette phase vous initie aux Transformers, au mécanisme d'attention, et à l'utilisation de modèles pré-entraînés via Hugging Face.
==== Ressources recommandées (EN) ====
* [[https://huggingface.co/learn/nlp-course/|Hugging Face NLP Course]] : cours complet et gratuit couvrant les Transformers, le fine-tuning, et les applications pratiques
* [[https://jalammar.github.io/illustrated-transformer/|The Illustrated Transformer]] (blog de Jay Alammar) : explication visuelle claire du fonctionnement des Transformers
* [[https://arxiv.org/abs/1706.03762|Attention is All You Need]] (papier original) : pour les plus curieux, lecture du papier fondateur
==== Ressources recommandées (FR) ====
* Certains MOOC français commencent à intégrer l'architecture Transformers
* [[https://huggingface.co/blog/fr|Blog Hugging Face en français]] : traductions et articles francophones
==== Pratique ====
* Utilisez la bibliothèque [[https://huggingface.co/docs/transformers/|transformers]] de Hugging Face pour charger BERT et l'appliquer à une tâche de classification
* Fine-tunez un modèle pré-entraîné (DistilBERT) sur un dataset de votre choix
* Explorez le [[https://huggingface.co/models|Hub Hugging Face]] : testez différents modèles sur des tâches variées (NER, QA, résumé)
===== Phase 5 : IA générative et LLM (Semaines 17 à 20) =====
Les **grands modèles de langage** (GPT-3/4, Claude, Mistral, etc.) ont ouvert l'ère de l'IA générative. Cette phase explore la génération de texte, le prompt engineering, et les applications pratiques des LLM.
==== Ressources recommandées (EN) ====
* [[https://www.deeplearning.ai/short-courses/|DeepLearning.AI courses on Generative AI]] : plusieurs cours courts gratuits sur le prompt engineering, l'utilisation des LLM, et leurs applications
* [[https://cookbook.openai.com/|OpenAI Cookbook]] : collection de notebooks et guides pratiques pour utiliser les APIs GPT
* [[https://python.langchain.com/docs/introduction/|LangChain documentation]] : pour construire des applications complexes avec les LLM
==== Ressources recommandées (FR) ====
* Documentation francophone sur l'utilisation des LLM
* Blogs et tutoriels en français sur le prompt engineering
==== Pratique ====
* Expérimentez avec différentes techniques de prompting (zero-shot, few-shot, chain-of-thought)
* Construisez un chatbot simple avec [[https://python.langchain.com/|LangChain]] et un LLM
* Créez une application RAG (Retrieval-Augmented Generation) connectant un LLM à vos documents
* Explorez [[https://platform.openai.com/playground|OpenAI Playground]] ou [[https://chat.mistral.ai/|Mistral Chat]] pour tester des prompts
===== Phase 6 : Prompt Engineering avancé (Semaines 21 à 24) =====
Le **prompt engineering** est devenu une compétence essentielle. Cette phase approfondit les techniques avancées pour maximiser l'efficacité des LLM.
==== Concepts à maîtriser ====
* Zero-shot et Few-shot prompting
* Chain of Thought (CoT)
* ReAct (Reasoning + Acting)
* Self-consistency
* Tree of Thoughts
* Prompt chaining
==== Ressources recommandées ====
* [[https://www.promptingguide.ai/|Prompt Engineering Guide]] : guide complet et gratuit sur toutes les techniques
* [[https://platform.openai.com/docs/guides/prompt-engineering|OpenAI Prompt Engineering Guide]] : meilleures pratiques officielles
* [[https://learnprompting.org/|Learn Prompting]] : cours et tutoriels sur le prompt engineering avancé
==== Pratique ====
* Testez différentes formulations de prompts pour une même tâche et comparez les résultats
* Implémentez une chaîne de prompts pour résoudre un problème complexe
* Créez un agent utilisant ReAct pour accomplir une tâche multi-étapes
===== Outils gratuits essentiels =====
^ Outil ^ Usage ^ Lien ^
| **Google Colab** | Notebooks Jupyter gratuits avec GPU | [[https://colab.research.google.com/]] |
| **Hugging Face** | Hub de modèles, datasets et applications | [[https://huggingface.co/]] |
| **Kaggle Notebooks** | Environnement de code avec GPU gratuit | [[https://www.kaggle.com/code]] |
| **Weights & Biases** | Suivi d'expériences ML (version gratuite) | [[https://wandb.ai/]] |
| **Streamlit** | Création rapide d'interfaces pour modèles | [[https://streamlit.io/]] |
| **Gradio** | Démos interactives de modèles ML | [[https://gradio.app/]] |
| **GitHub Codespaces** | Environnement de développement cloud | [[https://github.com/features/codespaces]] |
===== Sources de veille technologique =====
==== Newsletters ====
* [[https://www.deeplearning.ai/the-batch/|The Batch]] (DeepLearning.AI) : actualités IA hebdomadaires
* [[https://jack-clark.net/|Import AI]] (Jack Clark) : résumés de recherche en IA
* [[https://newsletter.ruder.io/|NLP News]] (Sebastian Ruder) : focus sur le NLP
==== Blogs et sites ====
* [[https://paperswithcode.com/|Papers with Code]] : dernières publications avec code
* [[https://huggingface.co/blog|Hugging Face Blog]] : tutoriels et annonces
* [[https://distill.pub/|Distill.pub]] : articles de recherche visuels et pédagogiques
* [[https://jalammar.github.io/|Jay Alammar's Blog]] : explications illustrées de concepts IA
==== Podcasts ====
* [[https://lexfridman.com/podcast/|Lex Fridman Podcast]] : interviews de chercheurs en IA
* [[https://twimlai.com/|The TWIML AI Podcast]] : discussions techniques
* [[https://changelog.com/practicalai|Practical AI]] : applications concrètes de l'IA
==== Conférences (en ligne) ====
* [[https://neurips.cc/|NeurIPS]], [[https://icml.cc/|ICML]], [[https://www.aclweb.org/|ACL]] : conférences majeures avec présentations en ligne
* [[https://huggingface.co/events|Hugging Face Community Events]] : webinars réguliers
===== Exemples de mini-projets pour consolider l'apprentissage =====
==== 1. Analyse de sentiment de critiques ====
Entraînez un modèle pour prédire si des avis textuels sont positifs ou négatifs.
**Données** : [[https://huggingface.co/datasets/imdb|critiques de films IMDB]], [[https://www.kaggle.com/datasets/columbine/imdb-dataset-sentiment-analysis-in-csv-format|IMDB CSV]], [[https://www.rottentomatoes.com/|Rotten Tomatoes]]
**Progression** :
* Commencez par un modèle simple (Naive Bayes avec TF-IDF)
* Passez à un Transformer pré-entraîné ([[https://huggingface.co/distilbert-base-uncased|DistilBERT]]) fine-tuné
* Comparez les performances
**Objectif** : comprendre le prétraitement de texte et la classification supervisée
==== 2. Classification d'auteurs de texte ====
Construisez un classifieur qui prédit l'auteur d'un texte.
**Données** : tweets de deux personnalités ou extraits de deux auteurs célèbres
**Défis** :
* Nettoyage (mentions, emojis)
* Gestion de textes courts
* Capture du style d'écriture
**Objectif** : vectorisation de textes courts et détection de styles
==== 3. Topic modeling sur des articles ====
Découvrez les thèmes dominants dans un corpus de documents.
**Méthode** : [[https://radimrehurek.com/gensim/models/ldamodel.html|LDA (Latent Dirichlet Allocation)]] avec [[https://radimrehurek.com/gensim/|Gensim]]
**Données** : articles de blog, [[https://www.kaggle.com/datasets/snapcrack/all-the-news|nouvelles]], corpus [[https://huggingface.co/datasets/cc_news|CC-News]]
**Objectif** : explorer le NLP non supervisé et la visualisation de résultats
**Outils** : [[https://github.com/bmabey/pyLDAvis|pyLDAvis]] pour visualiser les topics
==== 4. Extraction d'entités nommées sur des CV ====
Créez un outil aidant au tri de CV en extrayant les informations clés.
**Informations à extraire** :
* Nom du candidat
* Compétences
* Niveau d'études
* Expériences
**Outils** : [[https://spacy.io/|spaCy]] avec modèles pré-entraînés + règles personnalisées
**Ressources** :
* [[https://spacy.io/usage/training|Entraîner un modèle NER personnalisé]]
* [[https://github.com/explosion/projects|Projets spaCy]] pour exemples
**Objectif** : mettre en œuvre la NER et adapter un modèle à un domaine spécifique
==== 5. Traduction automatique simplifiée ====
Construisez un système de traduction utilisant un modèle pré-entraîné.
**Outils** :
* [[https://huggingface.co/Helsinki-NLP|Modèles de traduction Helsinki-NLP]] du Hub Hugging Face
* Interface [[https://streamlit.io/|Streamlit]] ou [[https://gradio.app/|Gradio]]
**Progression** :
* Commencez avec une paire de langues courante (EN→FR) : [[https://huggingface.co/Helsinki-NLP/opus-mt-en-fr|opus-mt-en-fr]]
* Testez une paire moins courante (IT→EN)
* Observez les limites
**Objectif** : déployer un modèle encodeur-décodeur
**Tutoriel** : [[https://huggingface.co/docs/transformers/tasks/translation|Translation task guide]]
==== 6. Question-Réponse sur mesure ====
Entraînez votre propre système de questions-réponses.
**Données** : articles Wikipedia + datasets QA :
* [[https://rajpurkar.github.io/SQuAD-explorer/|SQuAD]] (anglais)
* [[https://fquad.illuin.tech/|FQuAD]] (français)
* [[https://huggingface.co/datasets/piaf|PIAF]] (français)
**Approches** :
* Utilisez un [[https://huggingface.co/models?pipeline_tag=question-answering|modèle pré-entraîné de QA]]
* Fine-tunez [[https://huggingface.co/bert-base-uncased|BERT]] sur vos données
* Évaluez les performances
**Tutoriel** : [[https://huggingface.co/docs/transformers/tasks/question_answering|Question Answering guide]]
**Objectif** : appliquer le fine-tuning sur une tâche précise
==== 7. Génération de texte créatif ====
Entraînez un modèle de langage pour générer du texte dans un style spécifique.
**Exemple** :
* Compilez les œuvres d'un auteur du 19e siècle ([[https://www.gutenberg.org/|Project Gutenberg]] - domaine public)
* Fine-tunez [[https://huggingface.co/gpt2|GPT-2]] pour imiter le style
* Générez du texte et analysez les résultats
**Outils** :
* [[https://huggingface.co/docs/transformers/training|Hugging Face Training guide]]
* [[https://github.com/minimaxir/gpt-2-simple|gpt-2-simple]] pour entraînement simplifié
**Questions à explorer** :
* Le style est-il respecté ?
* Le contenu a-t-il du sens ?
* Cohérence locale vs globale ?
**Objectif** : expérimenter la génération de texte créative
===== Conseils pratiques =====
**Documentation** : Pour chaque projet, documentez votre démarche (notebook, rapport, post de blog). Cela aide à réfléchir sur l'apprentissage et constitue un portfolio.
**Imperfection acceptable** : Un projet n'a pas besoin d'être parfait pour être formateur. L'important est de prendre du plaisir à explorer et d'en tirer des leçons.
**Publication** : Publiez vos notebooks et résultats sur GitHub ou Hugging Face Spaces pour partager avec la communauté.
===== Ressources complémentaires =====
* [[https://huggingface.co/learn/nlp-course/|Cours NLP Hugging Face]]
* [[https://www.datacamp.com/tutorial/nlp-project-ideas-for-all-levels|Projets NLP DataCamp]]
* [[https://blog.google/technology/ai/notebooklm-google-ai/|NotebookLM par Google]]
* [[https://research.google.com/colaboratory/faq.html|FAQ Google Colab]]
* [[https://www.promptingguide.ai/|Prompt Engineering Guide]]
Ce parcours de formation vous permettra de progresser de débutant à praticien autonome en NLP et IA générative. Prenez votre temps, expérimentez, et surtout : **amusez-vous dans cette exploration du langage et de l'intelligence artificielle** !