- Ao inserir os livros que o usuário já leu, o modelo de recomendação sugere o próximo livro para ler
- Os resultados de busca e as recomendações incluem apenas livros acima de um limite mínimo de popularidade
- Livros com baixa popularidade podem ser aproveitados em outra seção do site (
intersect)
- Os resultados de recomendação são mais precisos ao inserir 3 livros ou mais
- Implementação experimental de uma tecnologia de recomendação de leitura personalizada com uso de dados de avaliações em larga escala
Recurso de recomendação de livros
- Quando o usuário informa os livros que já leu, o sistema fornece resultados de recomendação baseados em modelo
- Com base na lista de livros inseridos, sugere livros que valem a pena ser lidos em seguida
- As recomendações e os resultados de busca incluem apenas livros com nível mínimo de popularidade
- Livros abaixo do critério de popularidade são excluídos dos resultados de recomendação
Forma de entrada e busca
- Os resultados são exibidos ao digitar duas letras ou mais na caixa de busca
- Os livros selecionados pelo usuário são mostrados na área “Selected Books” e,
caso ainda não haja seleção, aparece a mensagem “No books selected yet”
Recursos adicionais
- Livros com baixa popularidade podem ser usados separadamente na página /intersect
- Ao inserir 3 livros ou mais, a precisão das recomendações melhora
Visão geral do serviço
- O site usa um modelo de recomendação baseado em dados em larga escala de avaliações do Goodreads (3 bilhões de registros)
- O objetivo é oferecer uma experiência personalizada de recomendação de livros de acordo com o histórico de leitura do usuário
- O texto original não traz detalhes técnicos adicionais nem explicações sobre o algoritmo
1 comentários
Opiniões no Hacker News
Lá diz para não usar o conteúdo do serviço para “modificar, copiar, distribuir ou criar obras derivadas”, então parece que seria necessária uma autorização explícita para usar o conteúdo dos avaliadores no treinamento de LLMs
A legalidade de scraping depende da jurisdição. Nos EUA, com o precedente HiQ Labs v. LinkedIn, ficou reconhecido que raspar páginas públicas não viola a CFAA. Foi por isso que surgiram tantas startups de scraping de dados públicos
As informações exibidas no site são apenas título e autor, e isso não pertence ao Goodreads.
Pode até esbarrar na cláusula de “criar obras derivadas”, mas é difícil dizer que recomendar livros com base em reviews seja infração.
É algo parecido com um youtuber fazer um vídeo de “livros que recomendo após ler 50 reviews”
Mas tenho algumas sugestões
Se a minha lista de livros lidos for grande o bastante, seria legal encontrar leitores parecidos comigo (“eigenfriends”) e recomendar livros controversos ou de nicho que eles leram
Na próxima versão, seria divertido conectar um VLM para permitir entrada por foto da estante
Por exemplo, se você colocar “Lenin’s Tomb” e “Secondhand Time”, pode ver outros livros lidos por quem leu os dois.
Isso é parecido com a forma como o Filmaffinity funciona. Eles oferecem recomendações com base em grupos de usuários de gosto semelhante chamados de ‘soulmates’
Pessoalmente, acho melhor conseguir recomendações mais frescas por meio do filtro de amigos com gostos diferentes do que por livros controversos
Mas, se você coloca um volume de série (por exemplo, Discworld #33), essa série passa a dominar as recomendações. Eu gostaria de excluir séries que já estou lendo
Além disso, alguns livros que estão no Goodreads não apareceram na busca. Parece que faltam no dataset
Quando cliquei no botão “Similar”, apareceram livros formalmente parecidos, mas com contexto diferente.
Ainda assim, para livros mais gerais, bateu bem com a minha wishlist
Eu já estava satisfeito com as métricas de teste e a checagem de qualidade, então lancei assim mesmo, mas a solução provavelmente seria gerar 100–200 candidatos com um modelo transformer e depois aplicar um reranker
Agora isso está mais para recomendação baseada em conteúdo, mas daqui para frente também será preciso considerar métricas como serendipidade e novidade
Em serviços reais, foi eficaz usar recomendadores diferentes para objetivos diferentes e depois fazer uma integração ponderada dos resultados
Por exemplo, misturar recomendações baseadas em conteúdo, em grafos, modelos voltados a objetivos específicos e até abordagens baseadas em TF‑IDF/BM25/Splade
Como cada pessoa quer ser recomendada de um jeito diferente, o essencial é o ajuste de pesos por usuário
Se eu já gosto daquele escritor, eu mesmo vou procurar outras obras dele, então recomendar livros do mesmo autor não faz muito sentido
Uma recomendação realmente interessante é aquela que (1) eu gosto e (2) é inesperada
Recomendações parecidas demais correm o risco de criar uma câmara de eco
Muitas vezes a pessoa nem sabe que há outras obras de um autor que já leu uma vez
Mas seria bom poder adicionar também um sinal negativo para livros de que eu não gosto
No geral, os resultados foram bastante impressionantes
Independentemente da questão legal, isso me parece eticamente inadequado
O último item acaba tendo o maior peso na previsão da próxima interação
Ao adicionar mais livros, esse efeito diminui
No momento estamos em beta privado no TestFlight e devemos abrir em breve
Na época, a maioria dizia que isso era impossível, mas agora parece ser viável
Ainda assim, se existe um dataset tão grande, fico em dúvida se IA é realmente necessária
Em vez de modelos como SASRec/RAG, talvez fosse possível chegar a resultados parecidos com rankings simples e cálculo de interseção, como no antigo last.fm
No passado, eu já tinha imaginado uma estrutura de grafo tipo “cérebro” para recomendação, em que a pontuação se espalha seguindo as conexões entre itens.
Na prática, imagino que variações disso já devam ser usadas em lugares como a Amazon
Sem saber quais filmes o usuário já viu ou quais são suas preferências, não dá para recomendar com precisão “um filme de que ele vá gostar e ainda não viu”
No fim, isso se torna um sistema geral de recomendação viável quando se relaxa a restrição de informação