Introduction au NLP

Georges-André Silber, École des mines de Paris, 2023/2024

Première séance (12/12/2023)

Deuxième séance (19/12/2023)

Troisième séance (8/1/2024)

Tokenisation pour l'apprentissage

Grammaires

Quatrième séance (9/1/2024)

Cinquième séance (15/1/2024)

Sixième séance (16/1/2024)

Projets

Les projets sont à rendre avant le 4/2/2024 à 23h59.

1. Consolidation automatique: classification des alinéas modificateurs publiés au JORF

L'objectif de ce projet est de créer une architecture d'apprentissage automatique permettant d'obtenir un modèle pour classifier automatiquement les alinéas modificateurs des textes parus au JORF, selon les types de modifications que ces alinéas effectuent sur les textes cibles.

Les données sources sont tous les JORF depuis 1990, données identiques à ce qui était fourni pour le TP 2:

Les données à produire doivent respecter le format CSV tel que généré par le projet dqclassify qui est un classifieur des alinéas modificateurs entièrement symbolique (expressions régulières, automate ad-hoc). Ce classifieur fourni un résultat assez correct, mais il se trompe parfois: le modèle généré par apprentissage automatique devra permettre d'améliorer la performance de ce classifieur symbolique en identifiant ses "loupés" par comparaison avec le modèle obtenu.

Les différentes catégories sont définies dans le fichier categories.py. Voici l'intégralité des données traitées par cet outil, obtenues avec le classifieur:

Le fichier README.md décrit la structure de ces données et la manière dont elles ont été obtenues. Le fichier tokenizer.py contient l'automate qui effectue la classification.

Parmi les données, vous devrez définir vos jeux d'entraînements et de tests. Commencez par explorer ces données pour comprendre les différentes catégories. Cette phase va être cruciale car c'est la qualité de ces données qui va déterminer la qualité de votre apprentissage.

Votre propre projet de classification pourra être écrit dans le langage de votre choix, et devra être rendu sous la forme d'un dépôt Github privé sur lequel vous m'inviterez (identifiant Github gasilber). Intégrez à votre projet un README.md le documentant et présentant les résultats de classification obtenus, en les comparant au résultats de dqclassify. Vous pouvez également produire un notebook Jupyter pour restituer vos résultats.

2. Reconnaissance automatique des références juridiques dans les textes de loi

Projet non choisi.

3. Anonymisation automatique de la jurisprudence

Les données sources sont composées de 3500 décisions de la cour de cassation non anonymisées. Ces données ne doivent être en aucun cas être rediffusées ou publiées.

Le projet consiste à remplacer le nom de tous les demandeurs/demanderesses et défendeurs/défenderesses des décisions par des lettres. Ainsi M. Michel Denemar, doit être remplacé dans tout le document par une lettre qui lui sera affecté, par exemple M. X, y compris les formes dérivées comme M. Denemar. D'autre part, Mme Sophie Fonsec doit être transformé en Mme Y. Des formes comme M. Jean-Pierre Rognon, époux de Foix doivent être transformées en M. X, époux Y. Les noms de la cour ou des avocats ne doivent pas être transformés. Une lettre affectée à une personne doit être réutilisée pour la même personne dans tout le document.

Votre projet pourra être écrit dans le langage de votre choix, et devra être rendu sous la forme d'un dépôt Github privé sur lequel vous m'inviterez (identifiant Github gasilber). Intégrez à votre projet un README.md le documentant et présentant les résultats. Vous pouvez également produire un notebook Jupyter pour restituer vos résultats.

4. Création d'une IA générative de droit pénal

L'objectif de ce projet est de créer un modèle de langue génératif gendp à partir des données du droit pénal. Ce modèle de langue sera généré à partir d'une architecture de type nanoGTP ou llama2.c.

L'étape minimale est d'obtenir un générateur de droit pénal qui quand on le lance génère une suite de mots "ressemblant" à du droit pénal. On doit également pouvoir lui passer une amorçe qu'il continuera.

Données sources: tous les codes juridiques français en Markdown. Parmi ces codes, le droit pénal peut être vu comme le code pénal, le code de procédure pénale, le code de la sécurité intérieure, le code pénitentiaire, le code de l'entrée et du séjour des étrangers et du droit d'asile et du code de la route.

Il est fortement recommandé de visionner Let's build GPT: from scratch, in code, spelled out d'Andrej Karpathy.

Votre projet pourra être écrit dans le langage de votre choix, et devra être rendu sous la forme d'un dépôt Github privé sur lequel vous m'inviterez (identifiant Github gasilber). Intégrez à votre projet un README.md le documentant et présentant les résultats. Vous pouvez également produire un notebook Jupyter pour restituer vos résultats.

5. Rédaction d'un article critique sur l'article de l'ACM The End of Programming

A partir des ressources ci-dessous sur le point de vue de Matt Welsh concernant The end of programming,l'objectif de ce projet est de rédiger un article critique de type vulgarisation scientifique, comme par exemple ceux que l'on peut trouver dans un journal comme Sciences et Avenir - La Recherche ou Pour la Science.

L'article devra être rédigé en LaTeX et comportera une bibliographie, ainsi que des liens cliquables vers les ressources citées. Le livrable du projet sera soit un lien vers un projet sur Overleaf, soit un fichier zip ou tar.gz contenant le source et les figures de l'article. L'article devra faire entre 1000 et 2000 mots, hors bibliographie et figures.

Vous pouvez vous aider d'outils de type ChatGPT, à condition d'accompagner votre article d'un document annexe (non compté dans le quota de mots) listant tous les "prompts" et les résultats que vous avez obtenus.

6. Rédaction d'un article critique sur les approches hybrides opposées aux approches Deep Learning

A partir des ressources ci-dessous sur la controverse opposant les tenants des approches symboliques et hybrides d'un côté et ceux pronants une approche "full deep learning", illustrée par les tensions entre Gary Marcus et Yann LeCun, l'objectif de ce projet est de rédiger un article critique de type vulgarisation scientifique, comme par exemple ceux que l'on peut trouver dans un journal comme Sciences et Avenir - La Recherche ou Pour la Science.

L'article devra être rédigé en LaTeX et comportera une bibliographie, ainsi que des liens cliquables vers les ressources citées. Le livrable du projet sera soit un lien vers un projet sur Overleaf, soit un fichier zip ou tar.gz contenant le source et les figures de l'article. L'article devra faire entre 1000 et 2000 mots, hors bibliographie et figures.

Vous pouvez vous aider d'outils de type ChatGPT, à condition d'accompagner votre article d'un document annexe (non compté dans le quota de mots) listant tous les "prompts" et les résultats que vous avez obtenus.