Implémentation bas niveau d'un modèle de représentation vectorielle de mots, entièrement en langage C.
Accédez au dépôt GitHub du projet.
Dans le cadre du premier semestre de ma première année à Télécom Physique Strasbourg, ce projet réalisé en binôme a consisté à implémenter un modèle de Word Embedding - technique fondamentale du traitement automatique du langage naturel (NLP) - en langage C.
L'objectif était de comprendre en profondeur les mécanismes sous-jacents à la représentation vectorielle de mots, en travaillant directement sur la gestion mémoire, les structures de données et les algorithmes bas niveau.
Le projet s'est articulé en deux parties distinctes mais complémentaires :
.txt, structure tabulaire .csv, HTML restructuré.Structure centrale - gestion de la pile de balises :
Architecture - Partie 1 :
Point d'entrée, gestion des I/O et mode de sortie
Parsing HTML, pile de balises, extraction du contenu
Normalisation, entités HTML, espaces → retours à la ligne
Reconstruction HTML structuré depuis le CSV intermédiaire
motVocab (mot, id, fréquence) avec recherche linéaire.Structure centrale - vocabulaire :
Exemple de transformation :
Ce projet m'a confronté à la réalité du développement bas niveau en C : gestion fine de la mémoire, débogage de segfaults, confusion slash/antislash ayant causé des bugs persistants sur plusieurs séances, ou encore un compteur Valgrind dépassant les 10 millions d'erreurs - autant de situations qui forcent à comprendre ce qui se passe vraiment dans le code, loin des frameworks de haut niveau.
La partie word embedding m'a permis d'appréhender les fondements du NLP : de la vectorisation One-Hot aux enjeux de normalisation multilingue (UTF-8, accentuation, filtrage linguistique), en passant par les compromis entre simplicité d'implémentation et performance.