1 points par GN⁺ 2025-11-07 | 1 commentaires | Partager sur WhatsApp
  • Un système qui propose le prochain livre à lire lorsqu’un utilisateur saisit les livres qu’il a déjà lus
  • Les résultats de recherche et les recommandations n’incluent que les livres dépassant un seuil de popularité
  • Les livres peu populaires peuvent être utilisés dans une autre section du site (intersect)
  • Les recommandations sont les plus précises lorsque 3 livres ou plus sont saisis
  • Une implémentation expérimentale d’une technologie de recommandation de lecture personnalisée exploitant de vastes données d’avis

Fonction de recommandation de livres

  • Lorsque l’utilisateur saisit les livres qu’il a déjà lus, le service fournit des recommandations fondées sur un modèle
    • Il suggère des livres à lire ensuite à partir de la liste de livres saisie
  • Les recommandations et les résultats de recherche n’incluent que des livres ayant un niveau minimal de popularité
    • Les livres en dessous du critère de popularité sont exclus des résultats de recommandation

Méthode de saisie et de recherche

  • Les résultats s’affichent lorsqu’au moins deux caractères sont saisis dans la barre de recherche
  • Les livres sélectionnés par l’utilisateur s’affichent dans la zone « Selected Books »,
    et si aucun n’a encore été choisi, le message « No books selected yet » apparaît

Fonctionnalités supplémentaires

  • Les livres peu populaires peuvent être utilisés séparément sur la page /intersect
  • Lorsque 3 livres ou plus sont saisis, la précision des recommandations s’améliore

Présentation du service

  • Le site utilise un modèle de recommandation fondé sur de grandes quantités de données d’avis Goodreads (3 milliards)
  • L’objectif est d’offrir une expérience de recommandation de lecture personnalisée selon l’historique de lecture de l’utilisateur
  • Le texte source ne fournit pas de détails techniques supplémentaires ni d’explication de l’algorithme

1 commentaires

 
GN⁺ 2025-11-07
Avis Hacker News
  • Je me demande si cela ne viole pas la clause 4 des conditions d'utilisation de Goodreads
    Il y est écrit qu'il ne faut pas modifier, copier, distribuer ou utiliser le contenu du service pour créer des œuvres dérivées, donc il semble qu'une autorisation explicite soit nécessaire pour utiliser le contenu des critiques afin d'entraîner un LLM
    • À notre époque, je pense que ce type de clause n'a plus beaucoup de sens
      La légalité du scraping dépend de la juridiction. Aux États-Unis, grâce au précédent HiQ Labs v. LinkedIn, il a été reconnu que scraper des pages web publiques ne constitue pas une violation du CFAA. C'est pour cela qu'il y a eu autant de startups de scraping de données publiques
    • Techniquement, cela ne revient pas à utiliser publiquement l'œuvre de Goodreads elle-même
      Les informations affichées sur le site ne sont que le titre et l'auteur, et cela n'appartient pas à Goodreads.
      Cela pourrait éventuellement relever de la clause sur les « œuvres dérivées », mais il est difficile de considérer qu'une recommandation de livres basée sur des critiques constitue une violation.
      C'est à peu près comparable à un youtubeur qui ferait une vidéo du type « 50 critiques lues pour recommander des livres »
    • De nos jours, même entraîner un LLM sur des livres entiers est considéré comme relevant du fair use, donc il est probable que les critiques non plus ne nécessitent pas d'autorisation. J'aimerais quand même avoir l'avis d'un juriste
    • Je ne comprends pas pourquoi poser une question dont on connaît déjà la réponse
  • En continuant d'ajouter des livres, j'ai fini par obtenir le message « il y en a trop ». L'idée est vraiment amusante
    J'ai quand même quelques suggestions
    • UI : les livres sur lesquels on clique sur « Add » devraient disparaître de la liste de recommandations. Sinon, c'est déroutant
    • Diversité des recommandations : le système retrouve très bien les livres que j'ai déjà lus, mais il y a peu de nouvelles découvertes.
      Si ma liste de livres lus est suffisamment longue, ce serait bien de trouver des lecteurs similaires à moi (« eigenfriends ») et de recommander les livres polémiques ou de niche qu'ils ont lus
      Ce serait amusant, la prochaine fois, de brancher un VLM pour permettre une entrée via photo de bibliothèque
    • La page « intersect » du site permet de saisir plusieurs livres pour trouver l'ensemble de lecteurs commun.
      Par exemple, si on entre « Lenin’s Tomb » et « Secondhand Time », on peut voir les autres livres lus par les personnes qui ont lu les deux.
      C'est similaire à l'approche de Filmaffinity. Ils proposent des recommandations à partir de groupes d'utilisateurs aux goûts similaires appelés « soulmates »
      Personnellement, je pense qu'on obtient de meilleures recommandations fraîches en filtrant les amis aux goûts différents plutôt qu'en misant sur des livres polémiques
  • Le site est rapide et vraiment impressionnant
    Mais quand on ajoute un tome d'une série (par ex. Discworld #33), cette série finit par dominer les recommandations. J'aimerais pouvoir exclure les séries que je lis déjà
    Par ailleurs, certains livres présents sur Goodreads n'étaient pas trouvables dans la recherche. Ils semblent manquer dans le dataset
    Quand j'ai cliqué sur le bouton « Similar », j'ai obtenu des livres formellement similaires mais dans un contexte différent.
    Malgré cela, pour les livres plus généraux, ça correspondait bien à ma wishlist
    • Je pense que la gestion des séries est le plus gros problème
      Les métriques de test et les contrôles qualité étaient satisfaisants, donc j'ai publié, mais la solution sera probablement de générer 100 à 200 candidats avec un modèle transformer puis d'appliquer un reranker
  • Pour avoir déjà construit des systèmes de recommandation, c'est maintenant que la vraie difficulté commence
    Pour l'instant, on est plutôt sur de la recommandation basée sur le contenu, mais à l'avenir il faudra aussi prendre en compte des métriques comme la sérendipité (serendipity) et la nouveauté (novelty)
    En production, il était efficace d'avoir différents moteurs de recommandation selon l'objectif, puis d'en faire une intégration pondérée des résultats
    Par exemple en mélangeant du contenu, du graph-based, des modèles orientés vers des objectifs spécifiques, voire des approches TF‑IDF/BM25/Splade
    Comme chacun veut être recommandé différemment, l'ajustement des poids par utilisateur est essentiel
  • Il faudrait exclure du résultat les auteurs des livres saisis
    Si j'aime déjà cet écrivain, je trouverai bien ses autres œuvres moi-même, donc recommander des livres du même auteur n'a pas beaucoup d'intérêt
    Une recommandation vraiment intéressante, c'est un livre qui (1) me plaît et (2) auquel je ne m'attendais pas
    Des recommandations trop similaires risquent de créer une chambre d'écho
    • D'accord pour exclure les séries, mais pour les auteurs, il vaudrait mieux en faire une option
      Il arrive souvent qu'on ne sache même pas qu'un auteur déjà lu a d'autres œuvres
    • Ce n'est pas terrible de continuer à recommander des livres déjà lus
  • J'ai saisi des livres variés, et ça a bien retrouvé des livres que j'avais déjà lus et aimés
    Ce serait quand même bien de pouvoir ajouter aussi un signal négatif sur les livres qu'on n'aime pas
    Globalement, les résultats étaient assez impressionnants
  • Le fichier robots.txt indique explicitement scraping interdit (disallow)
    Indépendamment de l'aspect légal, cela me semble éthiquement inapproprié
    • En tant que personne qui écrit souvent des critiques sur Goodreads, ce type d'usage me déplaît
  • Le dernier livre ajouté semble avoir une influence excessive sur les résultats de recommandation
    • C'est dû aux caractéristiques des positional embeddings
      Le dernier élément est celui qui pèse le plus dans la prédiction de l'interaction suivante
      Cet effet s'atténue si on ajoute davantage de livres
  • Nous construisons ce dataset depuis 2016, donc c'est déjà couvert
    Nous sommes actuellement en bêta privée TestFlight et l'ouverture publique est prévue bientôt
  • Il y a environ cinq ans, j'imaginais un moteur capable de trouver de nouveaux films si on lui disait simplement « recommande-moi un bon film de gangsters »
    À l'époque, la plupart disaient que c'était impossible, mais cela semble désormais faisable
    Je me demande quand même si, avec un dataset de cette taille, l'IA est vraiment nécessaire
    Au lieu de modèles comme SASRec/RAG, on pourrait peut-être obtenir des résultats similaires avec un simple calcul de classement et d'intersection, comme l'ancien last.fm
    J'avais autrefois imaginé une structure de graphe « cerveau » pour la recommandation, où l'on propage un score en suivant les connexions entre items.
    J'imagine que des variantes de ce type sont effectivement utilisées chez Amazon et ailleurs
    • Ce n'est pas possible avec la seule requête « recommande-moi un bon film de gangsters »
      Sans connaître les films vus par l'utilisateur ou ses préférences, on ne peut pas recommander avec précision un film qu'il n'a pas encore vu mais qu'il aimera
      En fin de compte, cela devient possible dès lors qu'on relâche la contrainte d'information, et on retombe sur un système de recommandation général
    • Pour info, last.fm n'utilisait pas seulement un simple classement mais aussi des algorithmes de machine learning de base