Aller au contenu principal

IA et opac : mettre en place un moteur de recommandation dans un opac – 1/4 : quelques bases conceptuelles

04/11/2019

J’ai le plaisir d’accueillir Géraldine Geoffroy, collègue niçoise, pour une série de billets sur une utilisation de l’intelligence artificielle et du machine learning pour le développement d’un service en bibliothèque. En escomptant bien que cette série se prolongera par d’autres encore !

Un moteur de recommandation, pour quoi faire ?

A votre avis, pourquoi toutes les multinationales de e-commerce, les plateformes d’hébergement de vidéos, les réseaux sociaux proposent-ils un moteur de recommandations de contenus en plus de leur moteur de recherche ? Pourquoi Netflix a-t-il lancé en 2009 un challenge doté d’une récompense d’1 million de dollars pour qui développerait un algorithme de Machine Learning encore plus efficace pour son système de recommandations (sur la base de sets de données massives sur son catalogue et sur les évaluations de ses utilisateurs) ? Tout simplement, et évidemment, parce que la rentabilité attendue d’un bon moteur de recommandations vaut bien un investissement d’1 million. En effet, suggérer de façon proactive des contenus connexes est une manière implicite de susciter la découverte au sein d’un catalogue de références, non comme une fin soi (ce qui n’arrive jamais au demeurant) mais dans l’espoir de tomber « par hasard » sur un contenu intéressant. Plus le temps passé sur la plate-forme s’accroît et plus la probabilité d’un acte d’achat est optimisée (sans compter les sollicitations, issues des tendances web collaboratives, à devenir un acteur du jeu en laissant son avis ou affectant une note), alimentant de facto un peu plus la masse  de données utilisateurs ingérées par les algorithmes, renforçant ainsi la précision des profils prédictifs et la qualité des recommandations fortement personnalisées, donc le temps de navigation sur l’interface, et la boucle est bouclée ! Au fil du développement des capacités de stockage et de traitement de données relevant du Big data (massives, multi-formats et disponibles en flux continus) ainsi que de la standardisation des profils de Data Scientist, la mise au point de système de recommandations est ainsi devenue l’une des utilisations les plus courantes des algorithmes de Machine Learning 1.

Appliqué à nos catalogues de bibliothèques l’enjeu n’est évidemment pas le même, mais la “problématique” de la découverte se pose tout de même. En effet, en se plaçant côté utilisateur, donc du point de vue de la performance des moteurs de recherche mis en place par les bibliothèques, on peut à gros traits distinguer quelques tendances de long terme :

  • d’un côté des capacités techniques croissantes d’intégration et d’indexation de volumes de métadonnées dont les caractéristiques se rapprochent petit à petit elles aussi de celles du Big Data (gros volumes, variété des sources et des formats, gestion des flux de mises à jour). Conséquence logique : des résultats de recherche en nombre conséquent, notamment par exemple avec les outils de découverte souvent adossés à des index centraux ;
  • au niveau de la représentation elle-même des données au regard de l’utilisateur dans l’interface, les outils de recherche intègrent nativement des processus d’ordonnancement des résultats (de type affectation de scores de pertinence, opérations de fusion et FRBRisation…) qui sont censés aider l’usager dans son appréhension de listes de résultats kilométriques ;
  • enfin, la réponse apportée à la question de l’efficience de la recherche dans un catalogue s’est aussi déportée en amont sur la modélisation des données censée optimiser la réalisation des “User Tasks” identifiées par les modèles FRBR puis LRM. Ainsi en est-il des entités WEMI relatives aux données bibliographiques pour présenter des ressources regroupées autour d’une même œuvre, ou des données d’autorités modélisés en entités d’un graphe de connaissances et qui forment comme autant de points d’accès possibles dans le cadre d’une interface de recherche.

Un des objectifs est donc d’améliorer les catalogues (et leur visibilité, mais c’est une autre question) pour aider l’utilisateur à trouver ce qu’il cherche, mais comment lui permettre de trouver ce qu’il ne cherche pas ? Comment permettre à la fois l’identification précise d’un ressource et l’exploration des collections, le parcours du catalogue au fil des notices (et bientôt des entités) ? Autrement dit, s’il est question de donner sa place à la sérendipité, de ce point de vue un moteur de recommandations ajouté au moteur de recherche peut alors apporter une réponse.

Ceci étant dit…

Comment fonctionne un système de recommandations ?

Le concept de base de tout système de recommandation est celui de la similarité (similarité entre contenus, similarités entre usagers) et toute la problématique consiste alors à traduire opérationnellement cette notion de similarité.

Plusieurs types d’approches et différents types de combinaisons entre elles sont possibles (et largement documentées), mais pour simplifier (beaucoup) on peut en distinguer principalement deux :

  • l’approche dite de filtrage par contenus (“content-based filtering”) : il s’agit ici d’évaluer la similarité entre contenus à partir de leurs caractéristiques intrinsèques et d’ensuite filtrer les données en fonction de l’utilisateur pour lui proposer l’information pertinente. Dans un contexte documentaire par exemple, la base de connaissance pour modéliser ce type de proximité entre documents repose donc sur les métadonnées bibliographiques des collections qui constituent les variables à partir desquelles on peut appliquer des algorithmes issus du domaine du NLP (traitement automatique du langage naturel).
    A première vue, on retrouve l’approche traditionnelle des bibliothèques quand elles proposent des rebonds vers d’autres ressources, mais la méthode ici diffère de nos pratiques métiers d’un point de vue essentiel (et cette différence est au cœur de l’utilisation d’algorithmes de Machine Learning ou Deep Learning) : le rebond sous forme de liens hypertextes dans un catalogue, à partir d’un mot sujet par exemple pour renvoyer vers d’autres ressources ayant été cataloguées avec ce même point d’accès, provient de l’application par des bibliothécaires de règles métiers, relatives à l’utilisation de Rameau par exemple, et ensuite exploitée dans une interface sous forme de liens. Cette pratique est la double conséquence logique de l’exploitation de l’expertise métier sur les liens entre métadonnées et les possibilités techniques offertes par nos outils de signalement. Ici par contre, la similarité entre chaque paire de documents n’est pas déterminée à priori par le catalogueur : certes la donnée métier est utilisée comme input par l’algorithme mais le calcul de proximité est ensuite effectué sur l’ensemble des métadonnées du corpus pour dégager des regroupements de documents similaires, ce qui serait infaisable à l’oeil nu.
  • l’approche de filtrage collaboratif (“collaborative filtering”) : dans cette perspective, c’est la similarité par l’usage qui est privilégiée, pour déterminer des associations entre usagers (“user-based filtering”) et/ou des rapprochements entre contenus (“item-based filtering”). On se base donc sur les comportements passés de tous les usagers pour “prédire” leurs préférences futures, et sur le double postulat selon lequel un utilisateur sera intéressé par des contenus proches de ceux qu’il a déjà consultés et/ou par des contenus déjà consultés par des utilisateurs similaires.
    Conceptuellement ce mode de recommandations correspond moins au mode de pensée des bibliothécaires, et ce pour diverses raisons (respect de la vie privée et des données personnelles de l’usager, difficultés techniques liée à la gestion de données d’usage produites en flux continu, compétences techniques il faut bien le dire aussi…). Quoi qu’il en soit en bibliothèque, en règle générale dans le cadre de cette approche, la stratégie adoptée consiste à extraire, nettoyer et traiter des données d’utilisation d’une plate-forme (les achats ou abonnements bien sûr, mais aussi les avis, notes et commentaires laissés par les usagers), de manière à élaborer une matrice2  des comportements d’achats ou de scoring dite user/item (c’est-à dire détaillée au niveau de chaque item et de chaque utilisateur), pour enfin tester et paramétrer des algorithmes de Machine Learning sur cette matrice. Techniquement plusieurs familles d’algorithmes sont disponibles (k-NN, co-clustering, et factorisation de matrice en tête), largement implémentées et prêts à l’emploi dans des librairies Python dédiées à l’apprentissage automatique (Scikit-learn, Surprise) .

Notons d’ailleurs qu’une des solutions de collaborative filtering les plus utilisées n’est autre que la technique de factorisation de matrice perfectionnée et popularisée à l’occasion du challenge Netflix évoqué plus haut (basée sur le paramétrage d’un algorithme de régularisation qui minimise l’effet d’entraînement dans le cadre d’un modèle de décomposition de matrice de type Singular Value Decomposition)

Et donc… [à suivre]

—————————–
↑ 1. Concrètement, face à une tâche à réaliser (proposer les recommandations individualisées de séries les plus pertinentes sur Netflix, détecter les images qui représentent des visages dans un corpus iconographique, adapter le moment des mises à jour d’un OS en fonction de l’usage qui est fait de l’ordinateur…), la stratégie de Machine Learning consiste à collecter le maximum d’observations pertinentes. On part du principe que ces observations sont les résultats d’une fonction mathématique dont il faudrait trouver la formule, l’équation, à déduire à partir des observations. Cette fonction restera toujours inconnue mais le but des algorithmes de Machine Learning est d’en fournir la meilleure approximation en se servant des données d’observation comme ensemble d’apprentissage. C’est donc une démarche “data-driven”, pilotée par les données et qui s’absout des règles métiers pour l’extraction d’informations.
L’application de méthodes de Machine Learning peut répondre à un vaste ensemble de problématiques, dans la mesure où il existe plusieurs familles d’algorithmes s’adaptant à plusieurs types de situation : des algorithmes de régression ou de classification, supervisés ou non supervisés, géométriques ou probabilistes, paramétriques ou non-paramétriques. La méthode quant à elle est bien éprouvée : elle consiste à déterminer la variable cible à prédire et les variables explicatives qui vont servir d’input (données en entrée), puis à diviser le jeu de données de départ en un set d’entraînement sur lequel l’algorithme va être élaboré, et un set de test sur lequel l’algorithme va être appliqué. La performance est ensuite évaluée en comparant la donnée cible prédite par l’algorithme sur le jeu de test et la vraie donnée.

↑ 2. Un tableau à double entrées de m lignes et n colonnes représentant les valeurs combinées de deux variables.

%d blogueurs aiment cette page :