Discussion technique : Classification et prédiction de documents à l'aide d'une application intégrée (Partie 1)

La classification des textes est l'une des tâches les plus importantes du traitement du langage naturel. Il s'agit du processus de classification des chaînes de texte ou des documents en différentes catégories, en fonction du contenu des chaînes. La classification de textes ou de documents a diverses applications, telles que la détection des domaines de recherche des articles scientifiques, la classification d'un courrier électronique, la classification des articles de blog en différentes catégories, l'étiquetage automatique des demandes des clients, etc.

Le projet que nous allons illustrer ici est un système d'application qui nous permet de classer de nombreux types de documents en se basant sur des modèles de traitement du langage naturel (NLP) de type Deep Learning/Machine learning. Dans un second temps, l'application prédit la classe des nouveaux documents non étiquetés à venir. Pour optimiser le flux de travail, le traitement et l'utilisation, nous avons conçu le projet actuel comme deux API RESTful Flask séparées, couplées à une interface utilisateur (utilisant CSS/HTML et JavaScript) :

  1. Application de classification et de prédiction de documents : cette application contient l'ensemble du flux de travail du projet, y compris l'entraînement des modèles de classification basés sur un ensemble de documents étiquetés et, dans la deuxième phase, la prédiction - basée sur le modèle précédemment entraîné - de nouveaux documents non étiquetés à venir. L'application peut fonctionner sur une machine locale et sur une machine virtuelle dotée de capacités GPU (nécessaires pour l'entraînement des modèles).

  2. Application de prédiction de documents : la deuxième application contient le flux de travail de prédiction de documents et nous l'avons créée en tant qu'application web multi-label capable de fonctionner partout. Pour que l'application fonctionne, les spécifications du modèle précédemment entraîné (par exemple, les poids et les biais du modèle) doivent être téléchargées.

Remarque : l'ensemble de données que nous présentons au système doit être un répertoire contenant tous les documents avec des sous-répertoires comme noms d'étiquettes. Dans le cas d'une classification de documents à étiquettes multiples (c'est-à-dire lorsqu'un document peut appartenir à plus d'une catégorie), vous devez dupliquer les documents à étiquettes multiples dans tous les sous-répertoires auxquels ils appartiennent.

Caractéristiques du projet

Nous décrirons les cinq caractéristiques principales des projets de classification des documents :

1. Prise en charge d'une grande variété de documents : y compris les formats de documents natifs ainsi que les documents/images numérisés (à l'aide de l'OCR) ;

2. S'adapter à une grande variété d'ensembles de données : sorte de modèles "à taille unique" capables de traiter la classification binaire, multiclasse et multiétiquette ;

3. Les utilisateurs naïfs comme les experts peuvent l'utiliser : facilité d'utilisation (interface conviviale) tout en fournissant des informations techniques pour l'amélioration (par exemple, mesures de performance, matrice de confusion, courbe ROC,...) ;

4. Bonnes performances : recherche de bonnes pratiques/de l'état de l'art (par exemple, le modèle de transformateurs d'apprentissage en profondeur du BERT) ;

5. Capable de fonctionner partout : partiellement déployée dans le nuage (deuxième application avec le flux de travail de prédiction).

Choisir les bons modèles pour la classification des documents

L'un des plus grands défis du projet actuel était de construire des modèles de classification capables de s'adapter à une grande variété de types d'ensembles de données (pour les classifications binaires, multiclasses et multi-labels). Cela permettrait d'obtenir de bonnes performances même dans des circonstances réalistes (ressources limitées). En effet, tous les clients potentiels ne disposeront pas nécessairement d'énormes ensembles de données de documents de haute qualité pour entraîner les modèles et fournir de bonnes prédictions par la suite.

En même temps, nous nous sommes efforcés de soumettre des données de haute qualité aux modèles et d'utiliser les méthodes de nettoyage/pré-traitement de texte les plus appropriées pour la tâche spécifique de classification des documents. Le TAL couvre en effet une grande variété de fonctions (traduction, complétion de texte, modélisation de sujets, résumé, reconnaissance d'entités nommées,...), et toutes les méthodes de nettoyage/prétraitement de texte ne sont pas appropriées pour toutes les tâches de TAL. Par exemple, dans le contexte du projet actuel, l'étiquetage des parties de discours n'était pas pertinent car la classification des documents ne repose pas sur l'ordre des mots ou la structure des phrases. En outre, dans certains cas, nous devons adapter les méthodes de nettoyage/prétraitement de texte au type de tâche et au modèle spécifique utilisé.

Options de modèles de classification des documents

Certains modèles de texte récents pré-entraînés (tels que BERT, Roberta ou XLNet) ont leur propre tokenizer/vectorizer, et l'utilisation d'un vectoriseur standard (tel que TF-IDF) n'est pas pertinente. Dans le même ordre d'idées, la stemmatisation des mots n'est pas applicable lors de l'utilisation de BERT (BertForSequenceClassification). Le vocabulaire de BERT est composé de mots réels (et de sous-mots) qui ne correspondront pas à une partie substantielle des mots stemmatisés.

Nous avons parcouru la littérature à la recherche des meilleures pratiques et des méthodes de pointe en matière de classification et de nettoyage de textes pour tous ces objectifs. Dans la phase préliminaire du projet et dans cet esprit, nous avons pré-testé plusieurs bons modèles candidats potentiels à partir de cadres d'apprentissage automatique (i.e., gaussian naive bayes, support vector machine, XGBoost) et de cadres d'apprentissage profond (i.e., BERT, RoBERTa, XLNet). Après cette phase de pré-test, nous avons retenu deux modèles pour les raisons suivantes :

  • Le modèle d'apprentissage profond BERT (BertForSequenceClassification) fournit la meilleure performance parmi tous les modèles testés et n'a pas tendance à s'adapter excessivement même avec un nombre croissant d'époques (contrairement à RoBERTa et XLNet) ;

  • Le modèle d'apprentissage automatique XGBoost (XGBClassifier) offre d'excellentes performances et est beaucoup moins exigeant que BERT en termes de capacités de calcul (il s'exécute donc beaucoup plus rapidement).

Confirmation du choix du modèle

Pour confirmer notre choix, nous avons testé ces deux modèles avec différents (types de) jeux de données. Par exemple, entraîné sur le jeu de données DBPedia (un jeu de données composé de 342 782 articles de Wikipedia avec des catégories hiérarchiques), BERT a fourni un score f1 de 99% au niveau de la première classe (9 catégories) et de 96% au niveau de la deuxième classe (70 catégories).

Gardant à l'esprit la nécessité de traiter un contexte commercial réaliste, nous avons également testé le modèle sur deux ensembles de données pdf de taille réduite (l'un multiclasse et l'autre multilabel) et spécialement construits pour l'objectif du projet et provenant du groupe de réflexion du Parlement européen. Les documents concernent la législation de l'UE et sont classés dans différents domaines (par exemple, la culture, l'environnement, les questions économiques et monétaires, etc.)

Nous avons délibérément choisi de construire des ensembles de données de taille réduite pour mettre à l'épreuve les performances du modèle. L'ensemble de données multiclasse était composé de 261 pdfs, et l'ensemble de données multilabel de 313 pdfs avec 33 documents multi-étiquetés (avec 6 catégories et moins de 60 documents par catégorie). Le modèle BERT fournit un score f1 de 97%, tandis que le modèle XGBoost donne un score f1 de 92% lorsqu'il est entraîné sur l'ensemble de données multi-classes.

A suivre...

Dans la deuxième partie de cet article sur la classification des documents, nous aborderons la conception du flux de travail, la programmation Python, la navigation dans l'interface utilisateur de l'application web conçue, ainsi que les applications potentielles.

Précédent
Précédent

Discussion technique : Classification et prédiction de documents à l'aide d'une application intégrée (Partie 2)

Suivant
Suivant

Discussion technique : Une approche complète de l'automatisation de l'extraction d'informations documentaires