Filtragem baseada em conteúdo
Representações de itens com TF-IDF, similaridade cosseno e criação de um recomendador de filmes a partir de metadados.
Filtragem baseada em conteúdo é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
O que é filtragem baseada em conteúdo?
Filtragem baseada em conteúdo recomenda itens semelhantes àqueles de que um usuário já gostou, com base nas próprias características dos itens (texto, gênero, etiquetas). Ao contrário da filtragem colaborativa, ela não precisa de dados de outros usuários, portanto contorna o problema do início a frio dos itens.
Itens como vetores de características
A ideia central é transformar cada item em um vetor numérico que descreva seu conteúdo e, em seguida, medir a similaridade entre os vetores. Para descrições de texto, TF-IDF é a maneira clássica de criar esses vetores.
O que é TF-IDF?
TF-IDF (Frequência de Termos-Frequência Inversa de Documentos) atribui pesos às palavras de acordo com a frequência com que aparecem em um item, mas reduz o peso das palavras comuns a todos os itens. Palavras raras e distintas recebem pesos altos, capturando o que torna um item único.
TfidfVectorizer
O scikit-learn transforma uma lista de descrições de itens em uma matriz TF-IDF em duas linhas.
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])Entendendo o formato da matriz
A tfidf_matrix tem o formato (n_items, n_terms): uma linha por item e uma coluna por palavra exclusiva do vocabulário. Ela é esparsa, pois a maioria dos itens usa apenas uma fração de todas as palavras.
print(tfidf_matrix.shape) # (n_items, vocabulary_size)Ajustando o vetorizador
Parâmetros úteis: stop_words remove palavras comuns, max_features limita o tamanho do vocabulário e ngram_range=(1,2) inclui expressões de duas palavras para obter características mais completas.
vectorizer = TfidfVectorizer(
stop_words="english",
max_features=5000,
ngram_range=(1, 2)
)Similaridade de cosseno entre itens
Calcule a similaridade par a par entre todos os itens. O resultado é uma matriz n_items x n_items em que cada célula indica o quanto as descrições de dois itens são semelhantes.
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape) # (n_items, n_items)Atalho do núcleo linear
Como os vetores TF-IDF são normalizados por L2 por padrão, linear_kernel produz o mesmo resultado que a similaridade de cosseno, mas com mais rapidez — uma otimização comum para catálogos grandes.
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)Mapeando títulos para índices
Para localizar um item pelo nome, crie um índice reverso que associe cada título à posição da sua linha.
indices = pd.Series(df.index, index=df["title"]).drop_duplicates()A função get_recommendations
Dado um título, obtenha sua linha de similaridade, classifique-a em ordem decrescente, ignore o próprio item e retorne as correspondências mais relevantes.
def get_recommendations(title, n=10):
idx = indices[title]
scores = list(enumerate(cosine_sim[idx]))
scores = sorted(scores, key=lambda x: x[1], reverse=True)
top = scores[1:n+1] # skip itself at position 0
item_idxs = [i for i, _ in top]
return df["title"].iloc[item_idxs]Pontos fortes e limitações
Pontos fortes: funciona para itens completamente novos, e as recomendações são explicáveis ("porque compartilha estas palavras").
Limitações: permanece restrita às preferências conhecidas de um usuário (especialização excessiva) e não consegue descobrir combinações surpreendentes entre gêneros como a filtragem colaborativa consegue.
Verificação rápida
Faça um teste dos seus conhecimentos sobre filtragem baseada em conteúdo.
Recapitulação
Você criou uma filtragem baseada em conteúdo: TfidfVectorizer transforma descrições em uma matriz (n_items, n_terms), cosine_similarity compara os itens e get_recommendations retorna os itens mais semelhantes (ignorando o próprio item). Ela lida com o início a frio, mas corre o risco de especialização excessiva. Próximo tópico: sistemas híbridos e métricas de avaliação.
Perguntas Frequentes
A aula “Filtragem baseada em conteúdo” é grátis?
Sim — o texto completo de “Filtragem baseada em conteúdo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Filtragem baseada em conteúdo”?
Representações de itens com TF-IDF, similaridade cosseno e criação de um recomendador de filmes a partir de metadados. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Filtragem baseada em conteúdo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Filtragem colaborativa: baseada em usuários e itens
- Fatoração de matrizes com SVD
- Filtragem baseada em conteúdo
- Sistemas híbridos e métricas de avaliação