- 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
Opiniones en Hacker News
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
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
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”
Pero tengo algunas sugerencias
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
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
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
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
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
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
Muchas veces ni siquiera sabes si hay otras obras de un autor que ya leíste una vez
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
Más allá del tema legal, me parece éticamente inapropiado
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
Ahora mismo estamos en beta privada de TestFlight y pronto será público
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
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