1 puntos por GN⁺ 2025-11-07 | 1 comentarios | Compartir por WhatsApp
  • Cuando el usuario ingresa los libros que ha leído, el modelo de recomendaciones sugiere qué libro leer después
  • Tanto en los resultados de búsqueda como en las recomendaciones solo se incluyen libros que superan un umbral mínimo de popularidad
  • Los libros con baja popularidad pueden aprovecharse en otra sección del sitio (intersect)
  • Ofrece los resultados más precisos cuando se ingresan 3 libros o más
  • Implementación experimental de una tecnología de recomendación de lectura personalizada que aprovecha datos masivos de reseñas

Función de recomendación de libros

  • Cuando el usuario ingresa libros que ya ha leído, se muestran resultados de recomendación basados en un modelo
    • A partir de la lista de libros ingresados, sugiere qué libros podría leer después
  • En las recomendaciones y los resultados de búsqueda solo se incluyen libros con un nivel mínimo de popularidad
    • Los libros por debajo del criterio de popularidad se excluyen de los resultados recomendados

Forma de entrada y búsqueda

  • Los resultados se muestran al escribir dos caracteres o más en la barra de búsqueda
  • Los libros seleccionados por el usuario se muestran en la sección “Selected Books” y,
    si aún no se ha seleccionado ninguno, aparece el mensaje “No books selected yet”

Funciones adicionales

  • Los libros con baja popularidad pueden aprovecharse por separado en la página /intersect
  • Al ingresar 3 libros o más, mejora la precisión de las recomendaciones

Descripción general del servicio

  • El sitio utiliza un modelo de recomendación basado en datos masivos de reseñas de Goodreads (3 mil millones)
  • El objetivo es ofrecer una experiencia personalizada de recomendación de libros según el historial de lectura del usuario
  • El texto original no incluye detalles técnicos adicionales ni explicación del algoritmo

1 comentarios

 
GN⁺ 2025-11-07
Opiniones en Hacker News
  • Me pregunto si esto no viola la sección 4 de los Términos de Servicio de Goodreads
    Dice algo como “no usar el contenido del servicio para modificarlo, copiarlo, distribuirlo o crear obras derivadas”, así que parece que para usar el contenido de los reseñistas para entrenar un LLM haría falta permiso explícito
    • Creo que hoy en día ese tipo de cláusulas no significan mucho
      La legalidad del scraping depende de la jurisdicción. En EE. UU., gracias al precedente de HiQ Labs v. LinkedIn, se reconoció que raspar páginas web públicas no viola la CFAA. Por eso surgieron muchas startups de scraping de datos públicos
    • Técnicamente, no están usando públicamente la obra protegida de Goodreads en sí
      La información que se muestra en el sitio es solo el título y el autor, y eso no le pertenece a Goodreads.
      Podría rozar la cláusula de “crear obras derivadas”, pero es difícil verlo como una infracción si recomiendan libros a partir de reseñas.
      Es parecido a que un youtuber haga un video de “libros que recomiendo después de leer 50 reseñas”
    • Hoy en día incluso entrenar un LLM con libros completos se considera fair use, así que es probable que las reseñas tampoco requieran permiso. Aun así, me gustaría escuchar la opinión de un experto legal
    • No entiendo por qué haces una pregunta cuya respuesta ya conoces
  • Seguí agregando libros hasta que me salió un mensaje de “demasiados”. Es una idea realmente divertida
    Pero tengo algunas sugerencias
    • UI: los libros a los que les das “Add” deberían desaparecer de la lista de recomendaciones. Si se quedan ahí, confunden
    • Diversidad de recomendaciones: el sistema acertó muy bien con libros que ya había leído, pero hubo pocos descubrimientos nuevos.
      Si mi lista de libros leídos ya es lo bastante grande, estaría bueno encontrar lectores parecidos a mí (“eigenfriends”) y recomendarme libros polémicos o de nicho que ellos hayan leído
      La próxima estaría bueno conectar un VLM para ingresar una foto del librero
    • En la página “intersect” del sitio se pueden ingresar varios libros para encontrar el conjunto de lectores en común.
      Por ejemplo, si pones “Lenin’s Tomb” y “Secondhand Time”, puedes ver qué otros libros leyeron las personas que leyeron ambos.
      Esto se parece a cómo funciona Filmaffinity. Ellos ofrecen recomendaciones basadas en un grupo de usuarios con gustos similares llamados ‘soulmates’
      En lo personal, creo que en vez de libros polémicos es mejor obtener recomendaciones más frescas mediante filtrado de amigos con gustos distintos
  • El sitio es rápido y está muy bueno
    Pero si agregas un libro de una serie (por ejemplo, Discworld #33), esa serie domina las recomendaciones. Quisiera poder excluir las series que ya estoy leyendo
    Además, algunos libros que están en Goodreads no aparecieron en la búsqueda. Parece que faltan en el dataset
    Cuando apreté el botón “Similar”, salieron libros formalmente parecidos pero con contextos distintos.
    Aun así, con libros más generales coincidió bien con mi wishlist
    • Creo que la forma de manejar las series es el mayor problema
      Lo lancé porque las métricas de prueba y la revisión de calidad fueron satisfactorias, pero la solución probablemente sea generar 100–200 candidatos con un modelo transformer y luego aplicar un reranker
  • Habiendo construido sistemas de recomendación, diría que a partir de ahora viene la parte realmente difícil
    Ahora mismo esto se parece más a una recomendación basada en contenido, pero más adelante también hay que considerar métricas como serendipia (serendipity) y novedad (novelty)
    En servicios reales, fue efectivo tener distintos recomendadores según el objetivo e integrar los resultados con pesos
    Por ejemplo, mezclar modelos basados en contenido, en grafos, modelos ajustados a objetivos específicos e incluso enfoques basados en TF‑IDF/BM25/Splade
    Como cada persona quiere ser recomendada de una forma distinta, la clave está en el ajuste de pesos por usuario
  • El autor de los libros ingresados debería excluirse en la salida
    Si ya me gusta ese autor, ya buscaré por mi cuenta otras obras suyas, así que no tiene mucho sentido recomendar libros del mismo autor
    Las recomendaciones realmente interesantes son las que (1) me gustan y (2) no me esperaba
    Las recomendaciones demasiado parecidas corren el riesgo de crear una cámara de eco
    • Estoy de acuerdo con excluir las series, pero lo del autor mejor dejarlo como opción
      Muchas veces ni siquiera sabes si hay otras obras de un autor que ya leíste una vez
    • No está bueno que sigan recomendando libros que ya leí
  • Ingresé varios libros distintos y acertó muy bien con libros que ya había leído y me habían gustado
    Pero estaría bueno poder agregar también una señal negativa (negative signal) de libros que no me gustan
    En general, los resultados fueron bastante impresionantes
  • En robots.txt dice explícitamente disallow para el scraping
    Más allá del tema legal, me parece éticamente inapropiado
    • Como alguien que escribe reseñas seguido en Goodreads, este uso me resulta desagradable
  • Parece que el último libro agregado tiene una influencia excesiva en los resultados de recomendación
    • Eso se debe a la naturaleza del positional embedding
      Porque el último elemento se refleja como el más relevante para predecir la siguiente interacción
      Si agregas más libros, ese efecto se suaviza
  • Nosotros llevamos construyendo este dataset desde 2016 y ya está cubierto
    Ahora mismo estamos en beta privada de TestFlight y pronto será público
  • Hace unos 5 años imaginé un motor que pudiera encontrar películas nuevas si le decías “recomiéndame buenas películas de gánsteres
    En ese momento la mayoría decía que era imposible, pero ahora parece que ya se puede
    Aun así, con un dataset tan grande, me pregunto si de verdad hace falta IA
    En vez de modelos como SASRec/RAG, quizá se podrían lograr resultados parecidos con rankings simples y cálculo de intersecciones, como el viejo last.fm
    Antes había pensado en una estructura de grafo tipo ‘cerebro’ para recomendaciones, donde se propagan puntajes siguiendo las conexiones entre ítems.
    De hecho, imagino que en lugares como Amazon deben usar alguna variante de eso
    • Solo con la petición “recomiéndame buenas películas de gánsteres” no alcanza
      Si no conoces las películas que vio el usuario ni su información de gustos, no puedes recomendar con precisión “películas que le gustarán y que aún no ha visto”
      Al final, eso se vuelve posible si relajas las restricciones de información en un sistema de recomendación general
    • Como referencia, last.fm tampoco usaba solo rankings simples, sino algoritmos básicos de machine learning