Une nouvelle technologie de classification pour l’outil de suggestions de code BISAC de TAMIS

Il y a quelques mois, nous avons dû retirer l’outil de suggestion de classifications BISAC de la console TAMIS. Nous avons en effet fait face à un problème : le modèle d’affaires de la technologie de classification que nous utilisions a changé… rendant le coût de traitement de chaque livre trop élevé pour qu’il soit possible de continuer à l’utiliser. Comme nous l’annoncions récemment, le problème est maintenant réglé. Pour nos lecteurs plus curieux qui veulent mieux comprendre comment ça se passe « sous le capot », voici plus d’information sur ce qui s’est passé.

En rappel : comment fonctionnait le classificateur

Nous avons déjà expliqué comment fonctionne notre classificateur BISAC. Il s’agit en fait d’un assemblage de plusieurs dizaines de classificateurs « spécialisés » dans différentes « branches » de l’arborescence BISAC. C’était notre façon d’utiliser des solutions de classification disponibles sur le marché tout en tenant compte de la complexité inhérente au domaine du livre (des textes très longs, des catégories très nombreuses et hiérarchisées, et des textes qui peuvent appartenir à plusieurs catégories).

C’est la technologie générique utilisée, Auto ML de Google Cloud Natural Language qui nous a posé problème : son coût d’utilisation, dans notre contexte, a littéralement explosé.

La solution : créer notre propre classificateur générique

On le savait par les travaux que nous avions réalisés précédemment : il n’y a pas sur le marché d’alternative intéressante à la solution que nous avions retenue. Face à ce constat, nous avons entrepris de développer une solution de remplacement.

C’est évidemment plus facile à dire qu’à faire ! Et c’est ici qu’entre en jeu l’équipe de Baseline, une coopérative de travailleurs formée d’étudiants gradués provenant de sphères variées du milieu académique telles que l’informatique, les mathématiques, la physique, l’actuariat et la finance. Baseline est spécialisée, entre autres, en apprentissage automatique et en traitement automatique du langage naturel.

L’équipe de Baseline a rapidement compris nos enjeux et s’est affairée à développer une solution de remplacement qui réponde à plusieurs objectifs :

  1. s’intégrer harmonieusement dans l’architecture technique de TAMIS ;
  2. pouvoir être exploitée à des coûts raisonnables (autant pour la phase d’entraînement, que pour l’étape de classification) ;
  3. avoir des performances au moins aussi bonnes que la solution précédente.

Nous avons choisi de travailler de façon itérative. Une première itération a permis d’établir une première solution « de base », qui répondait au premier objectif et permettait de confirmer que le second objectif était atteignable. Par la suite, d’autres itérations ont permis de travailler sur le troisième objectif, celui de la précision de l’outil.

À cette étape, l’équipe de Baseline a testé plusieurs solutions, dont les principales différences sont la source des vecteurs de mots utilisés pour entraîner la solution. Nous avons testé des vecteurs de mots issus exclusivement de notre corpus, ainsi que d’autres vecteurs disponibles sur le web, dont des variantes du célèbre BERT (célèbre auprès d’un public un peu geek, on l’avoue). Puis, pour certains vecteurs, nous avons testé différentes combinaisons d’hyperparamètres (des choix de configuration sur la façon de procéder à l’apprentissage). Certaines combinaisons de vecteurs ou d’hyperparamètres ont été écartées parce qu’elles n’offraient pas de bonnes performances, ou parce qu’elles demandaient trop de ressources (mémoire, capacité des processeurs) pour respecter les contraintes de coûts d’exploitation.

Pour évaluer la performance de chaque variante, nous avons utilisé les techniques classiques : séparer le jeu de données pour réserver certaines données à des fins de tests, et observer les indicateurs de précision et de rappel (et leur moyenne pondérée, le « F1-score »).

Au final, il n’a pas été possible de trouver une combinaison qui performait bien sur tous nos classificateurs. Nous avons donc retenu des combinaisons de vecteurs et d’hyperparamètres différents pour chaque classificateur. La performance moyenne (encore une fois mesurée par la précision et le rappel) du système est légèrement supérieure à ce que nous obtenions avec la solution de Google. Il y a toutefois des écarts plus importants (positifs ou négatifs) pour certaines catégories. Quant aux coûts d’utilisation, ils sont revenus à des niveaux raisonnables.

Ça semble compliqué… 🤔

Ce l’est ! Classifier un livre demande de combiner habilement les résultats de plusieurs « sous classificateurs », interrogés en cascade en fonction du résultat du précédent, qui eux-mêmes sont tous issus d’un processus d’optimisation complexe et exploitent chacun une approche différente d’apprentissage ! 🤯

Et c’est sans compter que la préparation des classificateurs, le processus d’apprentissage, demande des heures, voir des jours…

Mais ça fonctionne !

Le résultat n’est évidemment pas parfait, mais nous pensons qu’il simplifiera la vie à ceux et celles qui veulent diversifier les classifications BISAC utilisées. Et en théorie, le résultat s’améliorera au fur et à mesure qu’il y aura plus de titres dans TAMIS. En effet, en science des données en général, et en particulier dans le cas qui nous occupe, la quantité de données d’entraînement est autant, sinon plus, importante que le choix des algorithmes. De plus, la solution constituera une base solide pour d’autres applications associées à la classification des textes par TAMIS…

Une réflexion sur “Une nouvelle technologie de classification pour l’outil de suggestions de code BISAC de TAMIS

  1. Ping : Des nouvelles de TAMIS! – Projet TAMIS

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s