Académique Documents
Professionnel Documents
Culture Documents
tp1 2022
tp1 2022
Travail pratique # 1
Expressions régulières, modèles N-grammes et classification de textes
Automne 2022
Proposé par Luc Lamontagne
OBJECTIF :
• Se familiariser à l’analyse de textes et aux difficultés que cela comporte même pour accomplir
des tâches relativement simples.
• Mener des expérimentations avec les expressions régulières pour extraire des informations dans
des textes.
• Comprendre comment construire un modèle N-gramme simple à partir d’un corpus de textes.
• Utilisez des modèles N-grammes pour choisir les mots les plus appropriés à un contexte.
• Utilisez des techniques de classification de textes pour catégoriser des textes courts.
INSTRUCTIONS :
• Matériel disponible le 12 septembre.
• Ce travail sera noté sur 100 et vaut 20% de la note du cours.
• Rapport et code : À remettre le 30 septembre sur MonPortail, le tout compressé en format zip.
• Format de rapport : PDF.
• Références : Chapitres 2, 3, 4 et 5 de la 3e édition du livre de Jurafsky et Martin.
• Seul langage de programmation autorisé: Python 3.
• Ressources disponibles sur le site du cours (tp1_fichiers) :
o Des fichiers de textes pour mener vos expérimentations (fichiers d’entraînement, de
tests et de solutions).
o Du code pour démarrer votre travail et faciliter notre correction des travaux. Merci de
suivre les instructions pour chacun des problèmes à résoudre.
• Librairies autorisées :
o Expressions régulières : module re de python.
o Modèles de langue N-grammes : librairie NLTK.
o Classification de textes : librairie Scikit-learn.
o Normalisation de textes : librairies Spacy (lemmatisation) et NLTK (Porter Stemmer).
Utilisez des expressions régulières pour repérer les aliments et les quantités de chaque item du fichier
data/ingredients.txt. Compléter la fonction get_ingredients du fichier t1_extraction_ingredients.py afin de
retourner la quantité et l’ingrédient d’un item. Par exemple,
get_ingredients("2 cuillères à café de poudre à pâte")
Présentez dans votre rapport les performances que vous obtenez avec vos expressions régulières. Les
solutions sont disponibles dans le fichier data/ingredients_solutions.txt. Discutez dans votre rapport des
principales erreurs commises par vos expressions régulières.
Pour cette tâche, vous allez construire des modèles de langue qui vous aideront à compléter des
proverbes incomplets en ajoutant un mot au bon endroit. Par exemple, étant donné la phrase incomplète:
aide-toi, le *** t’aidera
et la liste de mots candidats [médecin, ciel, professeur, whisky], votre logiciel doit retourner la séquence la
plus probable qui, souhaitons-le, sera
aide-toi, le ciel t’aidera
Cette tâche vise à classifier des critiques de produits selon leur polarité (positive ou négative). Un corpus
d’entraînement, disponible sur le site du cours, contient des critiques positives et négatives que vous
utiliserez pour entraîner des classificateurs binaires. Un corpus de test est également disponible pour
évaluer la performance de ces classificateurs.
IFT-4022/IFT-7022 Traitement automatique de la langue naturelle
Plus précisément, la tâche consiste à évaluer un analyseur de sentiment construit à partir des mots des
textes. Vous devez comparer 3 configurations :
• Les mots des textes sans normalisation
• Les mots normalisés avec le stemming
• Les mots normalisés avec la lemmatisation
On vous demande de comparer les algorithmes d’apprentissage suivants pour accomplir cette tâche : naïf
bayésien (Naive Bayes) et régression logistique.
Quelques consignes :
• Vous devez utiliser la librairie Scikit-learn pour entraîner les classificateurs.
• On utilise les comptes de mots pour la pondération des sacs de mots (bag of words - BOW).
• Évaluez la performance de chacun des modèles à l’entraînement et également en test (voir
fichiers disponibles sur le site du cours).
• Vous devrez évaluer la performance de ces algorithmes en termes d’exactitude (accuracy) et
analyser vos résultats à l’aide de matrices de confusion (contingence).
• Je laisse à votre discrétion le choix d’hyperparamètres de ces modèles. Vous pouvez prendre
ceux par défaut dans Scikit-learn.
• Débutez votre travail à partir du fichier t3_analyse_sentiment.py. Ne pas modifier la signature de
la fonction train_and_test_classifier que nous utiliserons pour faire nos tests automatisés. Vous
pouvez cependant ajouter tout le code que vous jugez nécessaire.
• Utilisez Spacy pour la lemmatisation de mots et NLTK pour le stemming de Porter.
En utilisant la librairie Scikit-learn, entraînez des classificateurs de type Naive Bayes et Régression
logistique pour identifier la langue d’origine d’un nom. Par exemple, votre logiciel devrait tenter de
déterminer que :
• Lamontagne à French
• Nguyen à Vietnamese
• Yassine à Arabic
• etc.
Vos classificateurs seront construits non pas à partir de N-grammes de mots comme dans la tâche 3, mais
à partir de N-grammes de caractères. Les fichiers à utiliser pour entraîner vos modèles sont disponibles
sur le site du cours (fichiers du répertoire data/names). Quelques précisions :
- Langue d’origine : Spécifiée dans le nom du fichier (total de 18 fichiers)
IFT-4022/IFT-7022 Traitement automatique de la langue naturelle
ÉVALUATION DU TRAVAIL
T1 – Extraction d’ingrédients avec des expressions régulières 25%
T2 – Modèles N-grammes pour compléter des proverbes 25%
T3 – Classification de textes – Analyse de sentiment 20%
T4 – Classification de textes - Identification de langue 20%
Qualité du rapport 10%