Sonia Dakhli

Traitement de données textuelles

Réalisé à l’automne 2023.

2ème Année de Master.

UE : Techniques d'Apprentissage Automatique

Durée : 2 semaines.

Langage de programmation : Python.

Utilisation des librairies :


Le but de ce projet était de faire de la classification multi-labels à partir de données textuelles.


Nous avons travaillé sur le jeu de données PubMed-multi-label-dataset qui est composé de titres et d'abstracts d'articles scientifiques, ainsi que des 14 catégories possibles pour la classification (Anatomy [A], Organisms [B], Diseases [C], Chemicals and Drugs [D], Analytical, Diagnostic and Therapeutic Techniques, and Equipment [E], Psychiatry and Psychology [F],Phenomena and Processes [G], Disciplines and Occupations [H], Anthropology, Education, Sociology, and Social Phenomena [I], Technology, Industry, and Agriculture [J], Information Science [L], Named Groups [M], Health Care [N], Geographicals [Z]).


Étant donné qu'un article peut appartenir à plusieurs catégories, la classification à effectuer est une classification multi-labels. Voici un aperçu du jeu de données :


Title Astract A B C D E F G H I J L M N Z
"Expression of p53 and coexistence of HPV in premalignant lesions and in cervical cancer." "Fifty-four paraffin embedded tissue sections from ..." 0 1 1 1 1 0 0 1 0 0 0 0 0 0
"A new Panolis H?bner, [1821] species from Vietnam (Lepidoptera, Noctuidae, Orthosiini)." "Panolis is a well-defined and compact Palearctic trifine Noctuidae genus ..." 1 1 0 1 1 0 1 0 0 1 0 0 0 0


Déroulement du projet

Étape 1 : Pré-traitement du texte

Nous avions des échantillons de texte en anglais, qu'il a d'abord fallu pré-traiter en effectuant les étapes suivantes :

  • Suppression les ponctuations comme . , ! $( ) * % @
  • Suppression des URLs
  • Suppression des Stop words
  • Transformation de tout le texte en minuscule.
  • Tokenisation des textes
  • Racinisation (Stemming)
  • Lemmatisation (lemmatization)
Nous avons utilisé ce pré-traitement sur les colonnes "Title" et "Abstract".

Étape 2 : Vectorisation du texte

Nous avons confronté deux techniques différentes afin de représenter vectoriellement les mots : TF-IDF (Term Frequency-Inverse Document Frequency) et Word2Vec.

TF-IDF

TF-IDF permet de pondérer les termes présents dans notre jeu de données en fonction de leur fréquence d’apparition dans les textes du corpus. Le résultat obtenu est inversement proportionnel à leur fréquence. Les mots apparaissant le moins souvent sont donc les plus importants.

Word2Vec

Word2Vec est un algorithme d’embedding de mots. Le but de cet algorithme est de projeter un vocabulaire sur un espace vectoriel de telle sorte que des mots ayant une certaine similarité lexicale aient des vecteurs proches. Un réseau de neurones à 3 couches est utilisé afin d’entraîner le modèle. J’ai utilisé l’algorithme Word2Vec de Gensim avec le modèle de réseau CBOW (Continuous Bag of Words) qui prédit un mot en fonction de son contexte.

Étape 3 : Classification

Nous avons d'abord séparé nos données en un jeu de données d'entraînement et un jeu de données de test.
Nous avons comparé deux classifieurs permettant de faire de la classification multi-labels :

Nous avons combiné ces classifieurs multi-labels à des classifieurs binaires : En analysant la hamming loss et la zero one loss, les meilleurs résultats sont obtenus en combinant un MultiOutputClassifier avec une LogisticRegression.