0Pricing
Learn AI with Python · Lección

Filtrado basado en contenido

Representaciones de elementos con TF-IDF, similitud coseno y creación de un recomendador de películas a partir de metadatos.

Filtrado basado en contenido es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué es el filtrado basado en contenido?

El filtrado basado en contenido recomienda elementos similares a los que ya le han gustado al usuario, basándose en las propias características de los elementos (texto, género, etiquetas). A diferencia del filtrado colaborativo, no necesita datos de otros usuarios, por lo que evita el problema del arranque en frío de los elementos.

Los elementos como vectores de características

La idea clave es convertir cada elemento en un vector numérico que describa su contenido y, después, medir la similitud entre los vectores. Para las descripciones de texto, TF-IDF es el método clásico para crear esos vectores.

¿Qué es TF-IDF?

TF-IDF (frecuencia de término-frecuencia inversa de documento) asigna pesos a las palabras según la frecuencia con la que aparecen en un elemento, pero reduce el peso de las palabras comunes a todos los elementos. Las palabras poco frecuentes y distintivas reciben pesos altos, lo que permite capturar qué hace único a un elemento.

TfidfVectorizer

scikit-learn convierte una lista de descripciones de elementos en una matriz TF-IDF en dos líneas.

from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])

Comprensión de la forma de la matriz

tfidf_matrix tiene la forma (n_items, n_terms): una fila por elemento y una columna por cada palabra única del vocabulario. Es dispersa, ya que la mayoría de los elementos utilizan solo una fracción de todas las palabras.

print(tfidf_matrix.shape)  # (n_items, vocabulary_size)

Ajuste del vectorizador

Parámetros útiles: stop_words elimina las palabras comunes, max_features limita el tamaño del vocabulario y ngram_range=(1,2) incluye expresiones de dos palabras para obtener características más completas.

vectorizer = TfidfVectorizer(
    stop_words="english",
    max_features=5000,
    ngram_range=(1, 2)
)

Similitud coseno entre elementos

Calcule la similitud por pares entre todos los elementos. El resultado es una matriz n_items x n_items en la que cada celda indica la similitud entre las descripciones de dos elementos.

from sklearn.metrics.pairwise import cosine_similarity

cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape)  # (n_items, n_items)

Atajo con el núcleo lineal

Dado que los vectores TF-IDF están normalizados con la norma L2 de forma predeterminada, linear_kernel produce el mismo resultado que la similitud coseno, pero más rápido; es una optimización habitual para catálogos grandes.

from sklearn.metrics.pairwise import linear_kernel

cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)

Asignación de títulos a índices

Para buscar un elemento por nombre, cree un índice inverso que asigne cada título a la posición de su fila.

indices = pd.Series(df.index, index=df["title"]).drop_duplicates()

La función get_recommendations

Dado un título, obtenga su fila de similitudes, ordénela de forma descendente, omita el propio elemento y devuelva las coincidencias principales.

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]

Ventajas y limitaciones

Ventajas: funciona con elementos completamente nuevos y las recomendaciones se pueden explicar («porque comparte estas palabras»).

Limitaciones: se mantiene dentro de los gustos conocidos de un usuario (especialización excesiva) y no puede descubrir hallazgos sorprendentes entre géneros distintos como sí puede hacerlo el filtrado colaborativo.

Comprobación rápida

Compruebe sus conocimientos sobre el filtrado basado en contenido.

Resumen

Construyó un filtrado basado en contenido: TfidfVectorizer convierte las descripciones en una matriz (n_items, n_terms), cosine_similarity compara los elementos y get_recommendations devuelve los elementos más similares (omitiendo el propio elemento). Gestiona el arranque en frío, pero puede provocar una especialización excesiva. Siguiente tema: sistemas híbridos y métricas de evaluación.

Preguntas frecuentes

¿La lección «Filtrado basado en contenido» es gratis?

Sí — el texto completo de «Filtrado basado en contenido» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Filtrado basado en contenido»?

Representaciones de elementos con TF-IDF, similitud coseno y creación de un recomendador de películas a partir de metadatos. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Filtrado basado en contenido»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Filtrado colaborativo: basado en usuarios y en elementos
  2. Factorización matricial con SVD
  3. Filtrado basado en contenido
  4. Sistemas híbridos y métricas de evaluación
← Volver a Learn AI with Python