Objectif. Construire un mini-outil d’analyse de corpus à partir de fichiers
.txt.
- Modéliser les données avec des classes :
Token,Sentence,Corpus. - Produire des tableaux avec pandas DataFrame et exporter en
.csv. - Organiser votre code de façon simple et lisible.
Contraintes.
- Interdit : fonctions
lambda. - Autorisé : listes, dictionnaires, boucles
for, conditions, fonctions, classes,@property. - Tokenisation / segmentation : simple et robuste. On ne cherche pas une solution « parfaite ».
1) Entrées / sorties
Entrée
Un dossier
data/ contenant un ou plusieurs fichiers .txt.
Chaque fichier correspond à un document.
Sortie (minimum)
Un dossier
results/ contenant au moins :
tokens.csvsentences.csvvocab.csv
2) Modèle objet (obligatoire)
2.1 Classe Token
- Attribut principal :
forme(chaîne) - Méthode :
normalise()(met en minuscules) - Option utile :
sans_punct()ousupprime_punct() - Propriétés recommandées :
est_majuscule,est_punct,longueur - Méthodes spéciales recommandées :
__str__,__repr__,__len__
2.2 Classe Sentence
- Attribut :
tokens(liste deToken) - Méthodes :
texte(),frequences(),normalise() - Méthodes spéciales recommandées :
__len__,__iter__,__getitem__,__contains__
2.3 Classe Corpus
- Attribut :
sentences(liste deSentence) - Méthodes :
nb_phrases(),nb_tokens(),frequences_globales() - Méthodes spéciales recommandées :
__len__,__iter__,__getitem__,__contains__
3) Construction du corpus (obligatoire)
Écrire des fonctions qui :
- lisent chaque fichier
.txt; - découpent en phrases (par exemple sur
.?!) ; - tokenisent chaque phrase (par exemple avec
split(), éventuellement avec un petit nettoyage) ; - construisent les objets
Token,Sentence,Corpus.
Conseil : commencez par faire fonctionner le projet sur un seul fichier, puis généralisez à plusieurs fichiers.
4) DataFrames (obligatoire)
Vous devez produire au moins 3 DataFrames pandas, puis les exporter en CSV.
4.1 DataFrame tokens (df_tokens)
| Nom | Description |
|---|---|
doc | nom du fichier |
sent_id | index de la phrase dans le document (0,1,2,…) |
tok_id | index du token dans la phrase (0,1,2,…) |
forme | forme originale |
forme_norm | forme en minuscules |
is_punct | booléen |
is_capitalized | booléen |
length | longueur |
4.2 DataFrame phrases (df_sentences)
| Nom | Description |
|---|---|
doc | nom du fichier |
sent_id | index de la phrase |
text | phrase reconstruite |
n_tokens | nombre de tokens |
n_types | nombre de mots distincts (en minuscules) |
4.3 DataFrame vocabulaire (df_vocab)
| Nom | Description |
|---|---|
word | mot (minuscules) |
count | fréquence totale |
doc_freq | nombre de documents où le mot apparaît |
5) Bonus (au choix)
Choisir au moins 1 bonus (ou plus) :
- KWIC (concordancier) : DataFrame avec contexte gauche / mot / contexte droit.
- Bigrams : fréquence des paires
(mot_i, mot_{i+1}). - Héritage :
TaggedToken(Token)avec attributpos.
5bis) Bonus NLP avec spaCy ou NLTK (optionnel)
Vous pouvez ajouter un petit bonus en utilisant une bibliothèque de NLP, par exemple spaCy ou NLTK.
- utiliser la tokenisation de spaCy au lieu de
split(); - ajouter une colonne
posdansdf_tokens; - ajouter une colonne simple d'entités nommées si vous testez la NER ;
- comparer votre tokenisation simple avec celle d'une bibliothèque.
Ce bonus est facultatif. Le projet doit fonctionner même sans spaCy ou NLTK.
6) Livrables
À rendre :
tp_projet.pyou bien un dossiersrc/avec un fichier principal clair ;README.md(comment exécuter le projet, description des CSV) ;- le dossier
results/avec les CSV générés, ou une explication claire pour les générer.
7) Barème indicatif (/20)
- 8 pts : classes
Token,Sentence,Corpuscorrectes + méthodes de base ; - 6 pts : DataFrames corrects + export CSV ;
- 4 pts : robustesse (plusieurs fichiers, segmentation simple, organisation du code) ;
- 2 pts : bonus (KWIC / bigrams / TaggedToken / NLP).
Conseils d'organisation du code
- Regrouper les classes dans une partie modèle.
- Mettre la lecture, la segmentation et la tokenisation dans une partie lecture / construction.
- Mettre la création des DataFrames dans une partie export.
- Prévoir quelques appels simples en bas du fichier pour vérifier que votre programme fonctionne.
Exemples de vérifications simples
Vous pouvez tester progressivement :
- lire un fichier et afficher le texte ;
- découper ce texte en phrases ;
- tokeniser une phrase ;
- construire une
Sentencepuis unCorpus; - créer les trois DataFrames ;
- exporter les CSV dans
results/.
# Exemple d'enchaînement possible
# 1) lire les fichiers dans data/
# 2) construire le corpus
# 3) afficher nb_phrases() et nb_tokens()
# 4) créer df_tokens, df_sentences, df_vocab
# 5) enregistrer les CSV dans results/