Data SEO Academy

TF-IDF en python: Automatización SEO para frecuencia de términos inversa

¿Te ha pasado alguna vez

TF-IDF en python: Automatización SEO para frecuencia de términos inversa

¿Te ha pasado alguna vez que sientes que tu contenido es bueno, pero no termina de despegar en los buscadores? Bueno, TF-IDF es una pieza fundamental que puede hacer tus análisis más profundos para encontrar más oportunidades de mejora en tus contenidos.

¿Por qué TF-IDF es crucial para los profesionales SEO?

TF-IDF (Frecuencia del Término - Frecuencia Inversa del Documento) es un concepto fundamental en el SEO que influye notablemente en la visibilidad y relevancia de un sitio web en los resultados de los motores de búsqueda. Esta medida estadística (Entra en la categoría de NLP o procesamiento de lenguaje natural) combina la frecuencia con la que aparece una palabra clave en un documento específico con su rareza en una colección de documentos. Los motores de búsqueda emplean TF-IDF para analizar y comprender la relevancia del contenido en relación con las consultas de búsqueda de los usuarios. Al calcular el TF-IDF, los profesionales de SEO pueden identificar las palabras clave más importantes en un texto y determinar su relevancia en comparación con otros documentos, lo que permite una utilización estratégica de las palabras clave y la optimización del contenido, mejorando en última instancia el posicionamiento de una página en los motores de búsqueda. La implementación de TF-IDF en las estrategias de SEO mejora la calidad y relevancia del contenido, factores clave para lograr un mejor posicionamiento en los resultados de búsqueda.

Y ahora te preguntarás, ¿por qué es tan importante Python en todo esto? Bueno, Python nos permite automatizar el cálculo de TF-IDF de manera eficiente, analizar grandes cantidades de texto y, sobre todo, ¡tomar decisiones basadas en datos concretos! Como SEO, siempre busco herramientas que me ahorren tiempo y me den una ventaja competitiva para el análisis de textos, y Python es, sin duda, una de ellas.

Cálculo de TF-IDF

TF-IDF, o term frequency-inverse document frequency, es una medida estadística utilizada en el procesamiento del lenguaje natural (NLP) y la Recuperación de Información que evalúa la relevancia de una palabra en un documento en relación con un corpus de documentos. TF-IDF utiliza la vectorización de texto para transformar las palabras de un documento en valores numéricos.

En esencia, TF-IDF es la multiplicación de la Frecuencia del Término (TF) y la Frecuencia Inversa del Documento (IDF).

Simplemente, la importancia de un término en TF-IDF es mayor cuando el término aparece mucho en un documento y no a menudo en otros (cuán importante es el término para ese documento específico, en comparación con todos los demás). Para entender TF-IDF (frecuencia del término-frecuencia inversa del documento) y cómo evalúa la relevancia de las palabras, necesitamos entender sus partes individuales.

Frecuencia del Término en TF-IDF

La frecuencia del términoes la frecuencia de una palabra clave en comparación con el número de palabras en un documento. Se calcula utilizando el número de veces que se encuentra una palabra en un documento dividido por el número de palabras en el documento.

Frecuencia Inversa del Documento en TF-IDF

La frecuencia inversa del documento (IDF) es un factor de amortiguación inventado por Sparck Jones utilizado para reducir la importancia de las consultas que son comunes a muchos documentos.

El IDF se calcula computando el log() del resultado de la división entre el Número de documentos y el número de documentos que contienen la palabra objetivo.

Veamos la importancia de ciertas consultas para un artículo sobre Aprendizaje automático no supervisado. Consultas como “acerca de” o “pero” aparecerán mucho en el artículo. ¿Significa eso que el artículo trata sobre estas preposiciones? Seguramente no. Para esto se utiliza el IDF. Cuando una palabra clave aparece en un gran número de documentos (por ejemplo, “a”, “el”, “ellos”), se considera menos importante para un documento específico.

Cuando la palabra clave rara vez aparece en todos los documentos (por ejemplo, una consulta como Reducción de dimensionalidad), se considerará de mayor relevancia para los documentos en los que aparece. Lo que nosotros veremos, por cada resultado es una ponderación numérica.

Aplicaciones prácticas de TF-IDF

La medida TF-IDF se utiliza a menudo en aplicaciones de Procesamiento del Lenguaje Natural:

  • Motores de búsqueda que clasifican la relevancia de un documento para una consulta
  • Agrupación y clasificación de textos
  • Modelado de temas

Pero, ¿cómo esta técnica de extracción y análisis se aplica esto en el día a día del SEO? ¡Buena pregunta! Imaginate que estás optimizando una página sobre “zapatillas para correr”. TF-IDF te ayudaría a identificar qué términos son más relevantes para ese tema en particular. Por ejemplo, podrías descubrir que la palabra “amortiguación” es muy utilizada en los artículos mejor posicionados sobre zapatillas para correr, y así decidir incluirla de forma natural en tu contenido.

Además, TF-IDF te puede dar una mano para encontrar esos huecos en el mercado de contenidos. Si analizás las palabras clave de tus competidores y evaluás su TF-IDF, podés identificar oportunidades para crear contenido sobre temas menos saturados. ¡Ahí es donde está la magia!

IDF Python: Ejemplo de TF-IDF con Python y Scikit-Learn

La biblioteca de aprendizaje automático de Python Sklearn tiene la función TfidfVectorizer() para ayudar a aplicar TF-IDF a un corpus de texto o minería de texto.

Aquí utilizaremos TfidfVectorizer para aplicar TF-IDF a artículos de Wikipedia.

Para simplificar, no aplicaremos operaciones de preprocesamiento de texto como eliminar palabras vacías y puntuación y derivación.

import requests
articles = []
wiki_pages = [
    'Machine learning',
    'Artificial intelligence', 
    'Neural networks'
    ]
for subject in wiki_pages:
    url = 'https://en.wikipedia.org/w/api.php'
    params = {
            'action': 'query',
            'format': 'json',
            'titles': subject,
            'prop': 'extracts',
            'exintro': True,
            'explaintext': True,
        }
    response = requests.get(url, params=params)
    data = response.json()
    page = next(iter(data['query']['pages'].values()))
    articles.append(page['extract'])

El siguiente paso es construir el dataframe a partir de la lista de artículos almacenados en la variable articles.

Hay dos formas principales de construir un Dataframe de frecuencia tf de palabras TF-IDF con Scikit-learn:

  • Usando TfidfVectorizer
  • Usando CountVectorizer seguido de TfidfTransformer

Cualquiera de estas soluciones creará una matriz dispersa que se puede utilizar para crear el Dataframe de Pandas.

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
# Initialize the model
vec = TfidfVectorizer()
# Train the model
tf_idf =  vec.fit_transform(articles)
# Print the tf-idf sparse matrix
print(tf_idf)

La matriz dispersa tendrá una estructura como la siguiente. Las tuplas representan la ubicación de la fila y la columna, seguidas de la puntuación idf. A partir de la matriz dispersa, construimos el dataframe de frecuencia tf de palabras.

df = pd.DataFrame(
    tf_idf.toarray(), 
    columns=vec.get_feature_names(), 
    index=wiki_pages
    )
df.head()

¿Viste qué fácil es? Con estas pocas líneas de código, podés analizar cualquier texto y obtener los valores de TF-IDF de cada palabra. Una herramienta poderosa para tu arsenal SEO.

Uso de TF-IDF en datos reales

Si querés profundizar en TF-IDF, te recomiendo estos recursos:

  • Sistema de recomendación de Wikipedia con TF-IDF y NMF en Scikit-learn (Search Engine Journal)
  • TF-IDF en datos de Google Search Console
  • Agrupación y desduplicación de páginas web mediante KMeans y TF-IDF

Recordá que TF-IDF es una herramienta valiosa, pero no es la panacea. No considera el significado de las palabras, los sinónimos o las variaciones semánticas, lo que puede hacer que se pierdan términos relacionados que los motores de búsqueda ahora entienden. Además, ignora la ubicación de las palabras, como en los encabezados o títulos, que pueden ser más importantes para el SEO. Por eso, es fundamental combinar TF-IDF con otras técnicas SEO y, sobre todo, ¡pensar en el usuario!

En resumen, TF-IDF es una técnica poderosa de Machine Learning y Data Science que, combinada con Python y una buena estrategia SEO, puede ayudarte a mejorar el posicionamiento de tu contenido y atraer más tráfico orgánico. ¡Espero que este artículo te haya sido útil y te motive a experimentar con TF-IDF en tus proyectos!