Comparaison de 4 API d’extraction de mots-clés appliquées à des textes d’oeuvres littéraires (première partie)

Le défi

L’hypothèse fondamentale derrière le projet TAMIS est qu’on peut enrichir la description du produit livre en s’appuyant sur l’oeuvre elle-même, et pas seulement sur la description qu’en fait l’éditeur. Nos premiers travaux ont porté sur le contenu visuel de la page couverture. Nous abordons maintenant le coeur de l’oeuvre, en tentant d’en extraire des mots-clés pertinents qui serviront à son référencement.

En effet, les sites qui présentent des livres en ligne s’appuient essentiellement sur quelques métadonnées fournies par l’éditeur pour alimenter leurs outils de recherche : titre, auteur, description… et parfois la biographie de l’auteur. Pour bien comprendre les enjeux associés aux mots-clés (et la façon dont Amazon les utilise dans son outil de recherche), nous vous recommandons ce texte, publié sur le blogue de Booknet Canada.

Notre défi est donc de générer, de façon automatisée, des suggestions de mots-clés qu’un éditeur pourrait ajouter à la description de son livre, pour alimenter différents moteurs d’indexation ou de recherche : d’abord celui des librairies en ligne et des bibliothèques, mais éventuellement aussi d’autres, comme Google.

Et l’indexation complète des oeuvres?

Pourquoi ne pas indexer entièrement le contenu textuel de l’oeuvre? Ce serait évidemment une bonne idée : certains rares éditeurs offrent sur leur site web des outils de recherche dans le contenu des textes. Mais c’est l’exception plutôt que la règle. Et à notre connaissance, aucune librairie (ou bibliothèque) en ligne ne le fait. Cela s’explique (probablement) par des considérations techniques, légales et commerciales qui sont en dehors du périmètre de nos travaux.

De plus, pour d’autres contextes, comme celui des moteurs de recherche grand public (lire les Google et autres Bing), l’indexation ne serait possible qu’en rendant public, sur le web, le texte intégral de l’oeuvre. Cela n’est évidemment pas compatible avec la protection du droit d’auteur… ni avec la préoccupation de tous de ne pas divulgâcher les textes!

Le traitement du langage naturel

Le traitement du langage naturel (ou natural language processing en anglais, qu’on voit souvent sous la forme de son abréviation NLP), c’est la branche de l’intelligence artificielle qui porte sur l’analyse de textes. Tout comme pour le traitement des images, c’est un domaine qui a connu de grands progrès au cours des dernières années. Ce champ de recherche a plusieurs applications : traduction, résumés de textes, analyse de sentiments, classification automatique, extraction d’entités.

C’est sur cette dernière application que nous souhaitons nous appuyer pour générer des mots-clés décrivant des oeuvres littéraires. Les « entités », ce sont des mots représentant des objets (des personnes, des lieux, des concepts) qui sont présents dans le texte. Et la « promesse » des algorithmes d’extraction d’entités, c’est qu’ils peuvent nous dire que la phrase « J’ai ouvert le bouquin » fait référence à un livre.

Les API de traitement du langage naturel

Avec les mêmes préoccupations que dans notre démarche sur les images, nous préférons d’abord tenter d’utiliser des outils existants plutôt que de tout développer à partir de zéro. Nos recherches nous ont permis d’identifier plus d’une dizaine de fournisseurs d’API de traitement du langage naturel. Les fonctionnalités offertes, les langues traitées, les modèles d’affaires de toutes ces API sont toutefois très différents. Avant de choisir lesquelles étudier et essayer, il a été nécessaire d’analyser ces caractéristiques pour cibler les solutions adéquates pour notre défi.

Nos notes de recherche sur les 8 outils qui nous semblaient les plus prometteurs sont compilées dans ce document.

Au final, deux caractéristiques semblent déterminantes pour identifier sur quelles API porteront nos essais :

  • La possibilité d’extraire des mots-clés ou des entités depuis des textes en français. En effet, certains fournisseurs indiquent traiter un grand nombre de langues, mais il s’avère que le français n’est géré que pour un sous-ensemble des fonctionnalités (c’est le cas de Microsoft Cloud Services au moment de rédiger ce texte). Ou d’autres indiquent qu’ils peuvent traiter des textes en français, mais donneront des entités en anglais, en suggérant de les soumettre à leur moteur de traduction automatique (c’est le cas d’Amazon Comprehend).
  • La taille maximale des textes pouvant être traités. Plusieurs des outils sur le marché semblent avoir été pensés pour analyser de courts textes (de la taille d’un tweet à celle d’un article de journal). Dans notre cas, on veut idéalement analyser des livres en entier (ou peut-être un chapitre à la fois).

Sur la base de ces critères, nous avons identifié 4 fournisseurs d’API de traitement du langage naturel pouvant être utiles dans le cadre de notre projet : TextRazor, Google Cloud, Rosette et IBM Watson.

Mise à jour au 22 janvier 2019: Amazon a annoncé que son API Comprehend était disponible en français peu après notre inventaire. Elle n’est donc malheureusement pas incluse dans notre comparatif.

Prochaine étape

Dans les prochains textes de cette série, nous présenterons les étapes réalisées pour arriver à obtenir des résultats de ces API. Nous y présentons également deux outils que nous avons développés dans le cadre du projet, et que nous rendons disponibles en code source ouvert. Nous y présenterons également les résultats obtenus suite au traitement d’une centaine de textes tirés de notre corpus.

Mise à jour: le deuxième texte de la série est maintenant disponible.