Calculadora TF-IDF
Pega varios documentos, uno por línea o separados por líneas en blanco, y descubre qué palabras pesan más en cada uno. TF-IDF da una puntuación alta a las palabras frecuentes en un documento pero raras en los demás, y casi cero a las que aparecen en todos.
Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.
Cómo se usa
- Pega los documentos: uno por línea, o cambia a párrafos si tus documentos ocupan varias líneas.
- Elige las variantes de TF e IDF. Las predeterminadas (recuento ÷ palabras, ln(N ÷ df)) son las de los manuales.
- Lee la tabla de cada documento: palabras ordenadas por TF-IDF, con su recuento, TF e IDF al lado.
Cómo funciona
Para cada palabra w del documento d:
- TF = recuento de w en d (o una variante);
- df = número de documentos que contienen w; N = número de documentos;
- IDF = ln(N ÷ df);
- TF-IDF = TF × IDF.
Las palabras con la misma puntuación mantienen el orden en que aparecen por primera vez en el documento.
Ejemplo
Tres documentos: «el gato come», «el perro come», «el gato corre». N = 3 y cada documento tiene 3 palabras, así que cada palabra que aparece una vez tiene TF = 1 ÷ 3 = 0,3333.
En el documento 2:
- perro aparece en 1 documento: IDF = ln(3 ÷ 1) = 1,0986, TF-IDF = 0,3333 × 1,0986 = 0,3662;
- come aparece en 2 documentos: IDF = ln(3 ÷ 2) = 0,4055, TF-IDF = 0,1352;
- el aparece en los 3: IDF = ln 1 = 0, TF-IDF = 0.
Así, perro es la palabra que mejor describe el documento 2.
Consejos
- Usa más documentos para que la IDF tenga sentido: con dos documentos cada palabra recibe ln 2 o 0.
- Quita antes el texto repetido (firmas, cabeceras), o dominará las puntuaciones.
- Para contar palabras en un solo texto, usa el contador de frecuencia de palabras.
Preguntas frecuentes
¿Qué es TF-IDF?
Un peso para una palabra en un documento: la frecuencia de término (cuántas veces aparece la palabra en ese documento) por la frecuencia inversa de documento (lo rara que es en el conjunto). Las palabras comunes en un documento y raras en los demás puntúan más alto.
¿Qué fórmulas usa?
TF es el recuento, el recuento dividido por el número de palabras del documento (por defecto) o 1 + ln(recuento). IDF es ln(N ÷ df), donde N es el número de documentos y df el número de documentos que contienen la palabra, o la forma suavizada ln((1 + N) ÷ (1 + df)) + 1, la que usa scikit-learn por defecto. El logaritmo es natural.
¿Por qué palabras como el o la dan cero?
Con IDF = ln(N ÷ df), una palabra que aparece en todos los documentos tiene df = N y ln 1 = 0, así que su TF-IDF es 0 sea cual sea su recuento. Con la IDF suavizada recibe en cambio un peso pequeño positivo.
¿Cómo se separan las palabras?
Una palabra es una secuencia de letras (con tildes y ñ incluidas) y dígitos; un apóstrofo dentro de una palabra se conserva, el resto de signos separa palabras y todo se pasa a minúsculas. No hay lematización ni lista de palabras vacías, así que gato y gatos son palabras distintas.
¿Por qué mis números no coinciden con scikit-learn?
TfidfVectorizer usa recuentos brutos con la IDF suavizada y luego escala el vector de cada documento a longitud 1 (normalización L2). Elige Recuento y la IDF suavizada para obtener sus números antes de normalizar.