Utilisation d’API de classification de textes pour assigner des catégories BISAC ou Thema à des livres (deuxième partie)

Ce texte est le deuxième d’une série de deux décrivant notre démarche portant sur l’assignation automatique de catégories BISAC ou Thema depuis des textes de livres. Consultez d’abord le premier texte pour des explications.

Nous avons soumis une centaine de textes (les mêmes que nous avions utilisés pour notre expérience sur l’extraction de mots-clés) aux classificateurs personnalisés que nous avons bâtis avec TextRazor et Amazon Comprehend. Les résultats seront plus faciles à interpréter si on comprend bien la méthodologie qui a mené à la création de ces classificateurs.

Méthodologie d’entraînement des classificateurs

Amazon Comprehend

Le processus d’entraînement de Comprehend est relativement simple : il faut lui fournir un tableau dans lequel chaque ligne contient d’abord le code de classification, puis le texte correspondant. Nous avons constitué un tel tableau en procédant comme ceci :

  • pour l’ensemble des titres de notre corpus, nous avons extrait les chapitres plus longs qu’une certaine taille déterminée (pour éliminer les « chapitres » EPUB à faible valeur sémantique)
  • puis nous avons associé ces chapitres à chacun des codes BISAC qui avaient été assignés au titre par l’éditeur.

Donc, pour un livre placé dans 2 catégories BISAC par son éditeur, et dont 8 chapitres se qualifiaient, on a 16 (2 x 8) entrées dans le tableau d’entraînement.

Cela a produit un tableau à 117 121 lignes (provenant de 62 461 chapitres différents).

Nous avons choisi d’inclure toutes les données disponibles pour maximiser la taille de nos données d’entraînement (sachant que nous n’aurions pas le minimum suggéré d’environ 1000 textes par catégorie). Nous n’avons pas équilibré le nombre d’échantillons associé à chaque catégorie.

Une fois le tableau transféré dans Comprehend, puis « digéré » (au bout du processus « d’apprentissage », qui prend quelques heures), ce dernier est en mesure de suggérer trois catégories pour tout nouveau texte qui lui est soumis.

TextRazor

L’entraînement de TextRazor est fondamentalement différent sur les données, mais assez semblable sur la technique. Dans son cas, on doit créer un tableau où chaque ligne contient d’abord la catégorie, puis des mots-clés associés à cette catégorie. Dans notre cas, nous avons utilisé les termes du texte descriptif des catégories comme mots-clés. Ainsi, la ligne du tableau BISAC pour les livres de fiction sur les dragons contenait le code FIC009120 et les mots-clés « fiction fantasy dragons mythical creatures ».

Nous avons produit un tableau d’entraînement pour les codes BISAC (en anglais, puisque BISAC n’est disponible qu’en anglais) et les codes Thema francophones.

Une fois entraîné avec ces tableaux, TextRazor peut suggérer un nombre variable de catégories pour un texte (nos résultats vont d’aucune suggestion, jusqu’à dix).

Aperçu des résultats

L’ensemble des résultats de classifications ont été ajoutés aux données de l’expérience précédente sur les mots-clés.

Codes BISAC suggérés par Amazon Comprehend

Comprehend a suggéré 3 codes BISAC pour chaque texte. On constate rapidement toutefois que la majorité de ses suggestions sont des catégories très générales, par exemple « FIC00000 Fiction », ce qui n’ajoute pas à la richesse des classifications déjà identifiées par l’éditeur.

Il y a bien quelques exceptions intéressantes. Par exemple, pour Mathieu 06 — La Colère du roi, l’éditeur avait choisi « JUV000000 JUVENILE FICTION / General », et le classificateur suggère « JUV001000 JUVENILE FICTION / Action & Adventure / General » et « JUV028000 JUVENILE FICTION / Mysteries & Detective Stories », qui semblent pertinents au regard de la description du livre.

On voit également quelques cas où la catégorie suggérée est pertinente, mais peut-être trop précise. L’éditeur de La Science en 30 secondes avait choisi « SCI000000 SCIENCE / General », la catégorie générale pour la science. Le classificateur suggère en plus des sous-catégories plus précises : « SCI004000 SCIENCE / Astronomy » et « SCI075000 SCIENCE / Philosophy & Social Aspects (0,035) ». Considérant la description du livre, on peut deviner que ces thèmes sont également abordés, mais on peut également se demander si le sujet est suffisamment important pour assigner la catégorie au livre.

Cependant, hors quelques résultats intéressants, il y a de très nombreux exemples de suggestions génériques ou erronées.

Codes BISAC suggérés par TextRazor

Dans ce cas, il y a très peu de suggestions. Pour un grand nombre de textes, TextRazor n’a simplement pas émis de suggestion. Nous n’avons pas clairement identifié pourquoi (soit il ne trouvait rien, soit un problème technique non détecté l’empêchait de faire des suggestions, soit le fait d’entraîner avec des étiquettes en anglais puis d’appliquer le classificateur à des textes en français pose problème). Notons toutefois qu’il se reprend sur les cotes Thema (voir plus bas).

Ceci dit, parmi les résultats obtenus, certains sont encourageants. Pour La Construction du droit des Autochtones par la Cour suprême du Canada, l’éditeur avait choisi « LAW110000 LAW / Indigenous Peoples » et TextRazor suggère cinq autres catégories légales (« LAW011000 LAW / Civil Law », « LAW103000 LAW / Common », « LAW018000 LAW / Constitutional »…) qui semblent pertinentes.

Codes Thema suggérés par TextRazor

C’est ce classificateur qui génère les suggestions les plus nombreuses et en apparence les plus pertinentes.

Pour le livre Philippe H. dans l’angle mort dont la description parle de mythomanie et d’épisode psychotique, le classificateur suggère « JM Psychologie », « MKL Psychiatrie » et « JMP Psychopathologie » (ainsi que quelques autres catégories liées, mais en apparence moins pertinentes). Ou pour Félicité T3, il suggère « MBNK Vaccination », ce qui correspond bien à ce qu’on comprend de la description.

Par contre, il arrive souvent que les suggestions soient trop précises, comme « AVRL1 Guitare », « WGGB Bateaux », « AV Musique », « A Arts », « DC Poésie », « AVRL3 Violon » et « AVRG1 Piano », qui sont suggérés pour Passion Islande. On ne doute pas que tous ces thèmes soient mentionnés dans le texte, mais aucun n’est représentatif du texte dans son ensemble.

Dans tous les cas

Pour tous les classificateurs, il faut noter que les outils que nous utilisons, dans l’état actuel des choses, ne connaissent pas les règles associées à chaque système de classification, et ne sont pas en mesure de faire la nuance entre des catégories associées au type d’oeuvre (fiction ou pas) et des catégories « disciplinaires » (science, arts, droit, etc.). Ils ne savent pas non plus exploiter la hiérarchie des catégories (par exemple, dans Thema, AVRL3 correspond à Violon qui est un sous-thème de AV Musique, qui est un sous-thème d’A Arts).

Cela fait en sorte que leurs suggestions sont parfois strictement disciplinaires, même pour des oeuvres de fiction. Dans Thema, cela est « permis » si on assigne d’abord une catégorie de la famille F (Fiction); c’est moins clair pour BISAC.

Ceci dit, nous choisissons de ne pas tenir compte de ces nuances dans le contexte de cette expérience. On cherche à savoir si des classificateurs automatiques peuvent arriver à placer des textes dans des catégories, tout en sachant qu’une application industrielle de la solution demanderait un raffinement supplémentaire.

Analyse des résultats

Pour faire une analyse quantifiée des résultats, nous avons dû choisir une métrique qui permettrait d’évaluer la « performance » des suggestions, et sachant que sa mesure de pourrait pas être automatisée. En effet, dans les expériences typiques en apprentissage machine dont les résultats doivent appartenir à une seule catégorie, on réserve en général une partie des données dont on dispose pour mesurer la précision du classificateur. Dans notre cas, comme on souhaite générer des données supplémentaires, on ne peut pas les comparer avec les données d’origine.

Pour rendre la tâche possible, nous avons choisi de compter combien de classifications suggérées pouvaient être rejetées sur la seule base de la description du livre. Mesurer l’inverse, c’est à dire combien de classifications peuvent être retenues, demande une connaissance assez fine de chaque oeuvre (et on manquait de temps pour lire une centaine de bouquins!). Par contre, identifier qu’une catégorie « juvenile fiction » suggérée pour un roman érotique doit être rejetée est relativement simple.

Dans le cas des thèmes BISAC, nous avons également calculé la redondance des suggestions, c’est-à-dire le nombre de suggestions qui correspondaient à des classifications déjà identifiées par l’éditeur. Cette métrique est utile, mais doit être interprétée :

  • si elle est basse, cela signifie que les classificateurs ne suggèrent pas souvent la ou les classifications assignées par l’éditeur (donc qu’ils ne reconnaissent pas bien les textes)
  • si elle est élevée, cela signifie que les classificateurs n’amènent pas beaucoup de valeur, car ils suggèrent des classifications déjà identifiées.

Nous avons compilé les données à l’onglet Analyse de notre tableau de compilation des résultats des classificateurs.

Les valeurs moyennes obtenues pour chacune des métriques reflètent toutefois assez mal l’effet d’ensemble constaté lors de l’observation des suggestions pour chaque titre. C’est en segmentant les résultats par type de livre (fiction, fiction juvenile ou non-fiction) qu’on peut observer les tendances les plus intéressantes. On observe en particulier pour les textes de non-fiction :

  • que TextRazor suggère significativement plus de catégories Thema sans pour autant augmenter le nombre de rejets
  • c’est également le cas pour ses suggestions de catégories BISAC, quoique le nombre de suggestions soit faible
  • qu’au contraire, pour Amazon Comprehend, les rejets sont plus élevés.

Conclusion

Au regard des résultats, il apparaît que les classificateurs que nous avons entraînés, dans l’état actuel des choses, ne seraient pas utilisables. Ils génèrent trop de bruit et pas assez de signal.

Cependant, l’approche demeure prometteuse. Malgré les problèmes relevés, il reste somme toute fascinant de constater qu’avec un entraînement de base, qui ne tient pas compte de la hiérarchie et des subtilités des systèmes de classification, on obtienne des résultats qui sont assez souvent bons ou presque bons.

Nous sommes donc convaincus qu’il serait possible d’arriver à des résultats significativement meilleurs en retravaillant nos données d’entraînement. En effet, en apprentissage machine, les données sont parfois aussi importantes (sinon plus) que les algorithmes. Dans notre cas, les données pourraient être mieux équilibrées (pour éviter les biais qui amènent Comprehend à suggérer les mêmes catégories à plusieurs reprises) et hiérarchisées (pour séparer les textes de fiction des autres avant d’établir les catégories « disciplinaires »).

3 réflexions sur “Utilisation d’API de classification de textes pour assigner des catégories BISAC ou Thema à des livres (deuxième partie)

  1. Ping : Utilisation d’API de classification de textes pour assigner des catégories BISAC ou Thema à des livres (première partie) – Projet TAMIS

  2. Ping : Une nouvelle approche pour suggérer des catégories BISAC automatiquement – Projet TAMIS

  3. Ping : Une nouvelle technologie de classification pour l’outil de suggestions de code BISAC 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