Semestre 02, 2026
Proceso de extraer información útil, patrones y conocimiento a partir de grandes colecciones de texto escrito en lenguaje natural.
El texto no viene en filas y columnas.
Todo el campo se apoya en una sola transformación.
Texto crudo -> Texto limpio -> Números -> Modelo -> Conocimiento
Una vez que el texto es un vector de números, le aplicamos cualquier método que ya conocemos: clasificación, regresión, agrupamiento o reducción de dimensionalidad.
"Fui al banco a sacar dinero." -> institución financiera
"Me senté en el banco del parque." -> mueble
"Un banco de peces cruzó la bahía." -> grupo de animales
La misma cadena de letras significa tres cosas distintas. Solo el contexto lo resuelve, y eso es justo lo que un conteo de palabras no captura.
"El perro mordió al hombre."
"El hombre mordió al perro."
Las dos frases tienen exactamente las mismas palabras y significan cosas opuestas. Cualquier método que solo cuente palabras las considera idénticas.
No se puede alimentar texto directamente a un modelo. Siempre hay preprocesamiento y vectorización antes del aprendizaje, y ahí vive buena parte del esfuerzo del proyecto.
| Aspecto | Minería de datos | Minería de texto |
|---|---|---|
| Entrada | Datos estructurados (tablas) | Texto libre en lenguaje natural |
| Preprocesamiento | Limpieza, imputación, escalado | Tokenización, normalización, vectorización |
| Dimensionalidad | Decenas o cientos de variables | Decenas de miles de términos |
| Densidad | Matriz densa | Matriz dispersa |
| Ambigüedad | Baja: cada columna significa una cosa | Alta: polisemia, sarcasmo, contexto |
La minería de texto es minería de datos precedida por una etapa que fabrica las variables a partir del texto.
Campo que estudia cómo hacer que una máquina procese lenguaje humano: sintaxis, morfología, semántica, generación de texto.
Aplicación orientada a descubrir conocimiento en colecciones grandes de documentos.
La minería de texto usa NLP como herramienta. NLP es más amplio y persigue también objetivos que no buscan patrones, como traducir, resumir o generar.
La recuperación encuentra lo que ya está escrito. La minería produce información que no estaba explícita en ningún documento individual.
Colección: 50,000 reseñas de un hotel
Recuperación: "reseñas que mencionen el desayuno"
-> devuelve las 3,200 reseñas que lo mencionan
Minería: "¿de qué se queja la gente?"
-> descubre que las quejas por ruido subieron
40% desde que abrió el bar del cuarto piso
Ninguna reseña individual dice eso. Es conocimiento que solo aparece al analizar la colección completa.
| Disciplina | Pregunta que responde |
|---|---|
| Recuperación de información | ¿Qué documento responde a mi consulta? |
| NLP | ¿Cómo entiende la máquina esta oración? |
| Minería de texto | ¿Qué patrones esconde esta colección? |
| Minería de datos | ¿Qué patrones esconde esta tabla? |
Todas parten de texto y terminan en una decisión: una etiqueta, un número, un grupo o un ranking.
El flujo es estable, sin importar la aplicación.
Las etapas 1 a 3 consumen la mayor parte del tiempo. La elección del algoritmo suele importar menos que la calidad de la representación.
Reducir el ruido y la variabilidad innecesaria del texto sin perder la señal. Es donde se decide qué información sobrevive hasta el modelo.
Cada técnica que sigue elimina una fuente distinta de variabilidad.
N-gramas para recuperar algo del orden perdido, y corrección de errores de escritura.
Quitar todo lo que no es lenguaje: etiquetas, enlaces, menciones, símbolos.
Original: @tiendaXY Mira esto!!! <b>OFERTA</b>
https://tienda.co/x3f 😍😍 #descuento
Limpio: Mira esto OFERTA descuento
Qué se borra depende de la tarea. En análisis de sentimientos los emojis cargan opinión y conviene conservarlos o traducirlos a palabras.
Unificar formas que significan lo mismo para que el modelo las cuente como un solo término.
Mayúsculas: "PRODUCTO" "Producto" "producto" -> producto
Acentos: "cafe" "café" "CAFÉ" -> cafe
Puntuación: "bueno!!!" "bueno..." "bueno" -> bueno
Números: "2024" "1998" -> <NUM>
Quitar acentos en español fusiona palabras distintas: papa y papá, esta y está, publico y público.
Partir el texto en unidades mínimas de análisis, llamadas tokens. Es la primera decisión estructural: define cuáles son las piezas con las que trabaja todo lo demás.
"El servicio no fue bueno."
Tokens: [ El ] [ servicio ] [ no ] [ fue ] [ bueno ] [ . ]
Texto: "No me gustó. El envío tardó mucho."
Oraciones: [ No me gustó. ] [ El envío tardó mucho. ]
Palabras: [ No ] [ me ] [ gustó ] [ El ] [ envío ] [ tardó ] [ mucho ]
Caracteres:[ N ] [ o ] [ ] [ m ] [ e ] ...
Palabras es lo habitual. Oraciones sirve para análisis de sentimientos por oración. Caracteres se usa en lenguas sin espacios y en detección de errores de escritura.
"Nueva York" dos palabras, un solo concepto
"del" contracción de "de" + "el"
"[email protected]" un token, no cuatro
"3.14" un número, no "3" y "14"
"rock and roll" tres palabras, un solo nombre
"no-conformidad" ¿uno o dos tokens?
El chino y el japonés se escriben sin espacios entre palabras, así que ahí el corte requiere un modelo entrenado, no una regla.
Es lo que usan los modelos modernos: parten las palabras raras en fragmentos frecuentes.
"inconstitucionalmente"
-> [ in ] [ constitucional ] [ mente ]
Ninguna palabra queda fuera del vocabulario: incluso una que el modelo nunca vio se representa como suma de fragmentos conocidos.
Una colección real casi nunca viene en un solo idioma. Antes de procesar hay que saber en cuál está cada documento.
"El producto llegó roto." -> español
"The product arrived broken." -> inglés
"O produto chegou quebrado." -> portugués
"El delivery llegó bien pero meh" -> español con inglés
Las listas de palabras vacías, los lematizadores y los léxicos de sentimiento son específicos de cada idioma. Aplicar los de español a un texto en inglés produce basura.
Llevar todo a un idioma común permite analizar la colección completa con un solo conjunto de herramientas.
Colección multilingüe Traducida al español
"The room was filthy" -> "El cuarto estaba asqueroso"
"O quarto estava sujo" -> "El cuarto estaba sucio"
"La chambre était sale" -> "El cuarto estaba sucio"
Ahora las tres quejas se agrupan como un mismo problema.
Un solo idioma significa un solo léxico, un solo modelo y resultados comparables entre países. Es lo práctico cuando el idioma dominante es uno.
La traducción introduce errores propios y aplana matices: la ironía, la jerga local y los juegos de palabras rara vez sobreviven.
Usar un modelo multilingüe, que representa frases de distintos idiomas en un mismo espacio sin traducirlas.
Términos muy frecuentes que aportan estructura gramatical pero casi ninguna información sobre el tema del documento.
Español: el, la, los, de, que, y, a, en, un, por, con, para...
Inglés: the, of, and, to, in, is, that, for, it, with...
Original: "el servicio de la tienda fue muy bueno y rápido"
Vacías: el · de · la · fue · muy · y
Resultado: "servicio tienda bueno rápido"
Original: "la película no me gustó nada"
Filtrado: "película gustó" <- ¡el sentido se invirtió!
Original: "el cuarto no estaba sucio"
Filtrado: "cuarto sucio" <- dice lo contrario
En análisis de sentimientos, las negaciones (no, sin, nunca, tampoco) deben salir de la lista de palabras vacías. Son justo lo que invierte la polaridad.
Colección de reseñas de hoteles:
"hotel" aparece en el 98% de los documentos
-> no distingue nada, funciona como palabra vacía
Colección de expedientes clínicos:
"paciente", "consulta", "doctor"
-> mismo caso: son ruido de fondo del dominio
Además de la lista estándar del idioma, conviene agregar los términos que saturan la colección concreta.
Recortar la palabra a una raíz aproximada aplicando reglas de corte de sufijos. Es rápido y burdo: la raíz no tiene por qué ser una palabra real.
corriendo · corredor · corremos · correrá -> corr
jugando · jugador · juegos -> jug
niñas · niños · niñito -> niñ
Corta de más (overstemming):
universidad · universo · universal -> univers
Tres conceptos distintos quedan como uno solo.
Corta de menos (understemming):
fui · iba · ir
El verbo irregular no se reduce: quedan como tres términos.
El español tiene mucha más flexión verbal que el inglés, así que el stemming es aquí más agresivo y más propenso a error.
Llevar la palabra a su forma de diccionario, el lema, usando análisis morfológico y el contexto de la oración. Es más lento y más correcto.
corriendo · corrió · correrá -> correr
fui · iba · vamos -> ir
mejores · mejor -> bueno
casas · casita -> casa
Palabra Stemming Lematización
corriendo corr correr
mejores mejor bueno
fuimos fu ir
estudios estudi estudio
| Criterio | Stemming | Lematización |
|---|---|---|
| Método | Reglas de corte | Diccionario y contexto |
| Resultado | Puede no ser palabra | Siempre palabra real |
| Velocidad | Muy rápida | Más lenta |
| Precisión | Baja | Alta |
Tratar secuencias de n palabras consecutivas como una unidad, para recuperar parte del orden que se pierde al contar palabras sueltas.
Frase: "no me gustó el servicio"
Unigramas: no | me | gustó | el | servicio
Bigramas: no me | me gustó | gustó el | el servicio
Trigramas: no me gustó | me gustó el | gustó el servicio
Con unigramas:
"no me gustó" -> no · me · gustó (gustó parece positivo)
Con bigramas:
"no me gustó" -> no me · me gustó (la negación sobrevive)
Expresiones que solo existen juntas:
"Nueva York" · "no obstante" · "servicio al cliente"
Cada nivel multiplica el vocabulario. Pasar de unigramas a bigramas puede llevar de 20,000 a cientos de miles de términos.
En redes sociales y chats, el mismo concepto aparece escrito de muchas formas.
Original: "q buenoo stá el prodcto, 100% recomendadoo!!! xd"
Corregido: "que bueno está el producto, recomendado"
Variantes del mismo término:
"porfa" · "xfa" · "porfavor" · "por favor" -> por favor
"buenisimoo" · "buenísimo" · "wenisimo" -> buenísimo
Sin esta normalización, cada variante ocupa una dimensión distinta del vocabulario y el modelo nunca junta suficientes ejemplos de ninguna.
Original @tienda Los ZAPATOS que compré NO llegaron!!! 😡
https://x.co/a
Limpieza Los ZAPATOS que compré NO llegaron
Normalización los zapatos que compre no llegaron
Tokenización [los] [zapatos] [que] [compre] [no] [llegaron]
Vacías [zapatos] [no] [llegaron] (se conserva "no")
Lematización [zapato] [no] [llegar]
Bigramas [zapato no] [no llegar]
| Tarea | Palabras vacías | Reducción | N-gramas |
|---|---|---|---|
| Clasificar temas | Quitar | Lematizar | Unigramas |
| Análisis de sentimientos | Conservar negaciones | Lematizar | Bigramas |
| Modelado de tópicos | Quitar de forma agresiva | Lematizar | Unigramas |
| Detección de autoría | Conservar todo | Ninguna | N-gramas de caracteres |
La pregunta siempre es la misma: lo que estoy borrando, ¿es ruido para esta tarea, o es justo la señal que necesito?
Convertir documentos en vectores numéricos. Hay tres enfoques principales: bolsa de palabras, TF-IDF y embeddings.
Cada documento se representa por la frecuencia de cada término del vocabulario.
Vocabulario: [ buena · mala · película · actuación ]
"buena película" -> [ 1, 0, 1, 0 ]
"mala actuación" -> [ 0, 1, 0, 1 ]
"buena actuación" -> [ 1, 0, 0, 1 ]
Se pierde el orden por completo. Para este método, la película mordió al actor y el actor mordió a la película son el mismo documento.
Los términos frecuentes en todos los documentos aportan poco. TF-IDF los penaliza.
$$\text{tf-idf}(t, d) = \text{tf}(t, d) \times \log\frac{N}{\text{df}(t)}$$
\(\text{tf}(t,d)\) es la frecuencia del término en el documento, \(N\) el total de documentos y \(\text{df}(t)\) cuántos lo contienen. Un valor alto significa frecuente aquí y raro en el resto: característico de ese documento.
Colección: 1,000 reseñas de restaurantes
Término Aparece en Peso IDF ¿Informativo?
comida 950 reseñas muy bajo no distingue nada
bueno 780 reseñas bajo casi nada
rancio 14 reseñas muy alto sí, mucho
cucaracha 3 reseñas altísimo sí, señal fuerte
En la reseña "la comida estaba rancia":
comida -> peso bajo · rancia -> peso alto
El vector del documento queda dominado por rancia, que es exactamente lo que lo hace distinto de las otras 999 reseñas.
Vectores densos de pocas dimensiones donde la cercanía geométrica refleja cercanía semántica.
Palabras más cercanas a "médico":
doctor · enfermera · hospital · clínica · paciente
Palabras más cercanas a "rancio":
podrido · echado a perder · vencido · descompuesto
Relaciones que el espacio aprende solo:
rey - hombre + mujer ~ reina
París - Francia + Guatemala ~ Guatemala (capital)
Para TF-IDF, médico y doctor son dos términos sin relación alguna. Para un embedding están casi en el mismo punto del espacio.
El vector de una palabra cambia según la oración en la que aparece.
"Fui al banco a sacar dinero."
banco -> cerca de: cajero · cuenta · sucursal
"Me senté en el banco del parque."
banco -> cerca de: silla · plaza · jardín
Es la solución al problema de la ambigüedad que planteamos al inicio: la misma palabra recibe dos representaciones distintas.
| Representación | Dimensión | Orden | Semántica | Costo |
|---|---|---|---|---|
| Bolsa de palabras | Vocabulario | No | No | Bajo |
| TF-IDF | Vocabulario | No | No | Bajo |
| Word2Vec / GloVe | 100–300 | No | Sí | Medio |
| BERT | 768+ | Sí | Sí, contextual | Alto |
Tarea supervisada que asigna una etiqueta discreta a un documento. Es la aplicación más común de la minería de texto.
"Gana dinero rápido, haz clic aquí" -> spam
"Reunión mañana a las 10 en el aula 302" -> no spam
Binaria "Gana dinero rápido" -> spam / no spam
Multiclase "Guatemala ganó 2 a 0" -> deportes
"El quetzal se devaluó" -> economía
Multietiqueta
"El ministro de salud
renunció tras el escándalo"
-> [ política, salud ]
Un clasificador lineal aprende un peso por término. Los pesos son legibles y explican la decisión.
Clasificador de spam — términos con más peso
Hacia spam: gratis · gana · clic · urgente · premio
Hacia no spam: reunión · adjunto · informe · gracias
Poder mirar esa lista es lo que permite auditar el modelo y detectar que aprendió algo absurdo antes de ponerlo en producción.
Empieza siempre con TF-IDF más regresión logística o Naive Bayes. Un transformer solo se justifica si supera claramente esa referencia.
Clasificar no es lo único que se puede predecir. La predicción abarca cualquier salida estimada a partir del texto: una etiqueta, un número, un evento futuro o la siguiente palabra.
El texto se vectoriza y se usa como entrada de un modelo de regresión.
"Llegó tarde y la caja venía abierta" -> 2 estrellas
"Cumple, nada especial" -> 3 estrellas
"Excelente calidad, superó mis expectativas" -> 5 estrellas
Muy común en la práctica: variables tabulares y variables derivadas del texto en un mismo modelo.
[ edad, ingreso, región ] + [ términos del comentario ]
-> modelo -> predicción
Usar el texto disponible hoy para anticipar algo que ocurrirá después.
Ticket de hoy Predicción
"Es la tercera vez que escribo
y nadie responde" -> alta probabilidad de
cancelar el servicio
"El clima hoy está muy ___"
caluroso 40%
frío 25%
agradable 15%
húmedo 8%
Estimar la probabilidad de la siguiente palabra dado lo anterior es el objetivo de entrenamiento sobre el que se construyeron los modelos de lenguaje modernos.
Sin decirle nada, el modelo agrupa los términos que suelen aparecer juntos. El nombre del tema lo pone la persona.
Colección: 20,000 noticias sin etiquetar
Tópico 1 gol · partido · equipo · jugador · torneo -> Deportes
Tópico 2 paciente · síntoma · dosis · hospital -> Salud
Tópico 3 acción · mercado · inversión · bolsa -> Finanzas
Tópico 4 voto · congreso · partido · elección -> Política
Partido aparece en dos tópicos con sentidos distintos. La interpretación siempre requiere criterio humano.
También llamado minería de opinión. Determina la actitud, opinión o emoción expresada en un texto.
"Me encantó, volvería sin dudarlo" -> positivo
"Llegó tarde y frío" -> negativo
"El pedido llegó el martes" -> neutro
"Está bien" -> positivo débil
"Está bueno" -> positivo
"Está buenísimo" -> positivo fuerte
"Es lo mejor que he probado" -> positivo muy fuerte
Un cliente que dice está bien y otro que dice es lo mejor que he probado no valen lo mismo para el negocio, aunque ambos sean positivos.
Una sola polaridad para todo el texto.
Una polaridad por cada oración del texto.
Una polaridad por cada aspecto mencionado. Es el nivel más útil y también el más difícil.
"La comida estaba deliciosa pero el servicio fue lentísimo
y el lugar es carísimo."
Documento -> mixto
Aspecto comida -> positivo
Aspecto servicio -> negativo
Aspecto precio -> negativo
Una etiqueta única para todo el texto pierde información accionable. Al negocio le sirve saber qué aspecto concreto falla.
Un diccionario asigna polaridad a cada palabra y se combinan las puntuaciones del texto.
Léxico: excelente +3 · bueno +1
malo -1 · pésimo -3
"El servicio fue excelente pero la comida mala"
+3 -1 -> +2 positivo
Se entrena un clasificador con textos ya etiquetados por personas.
Datos de entrenamiento
"Me encantó el servicio" -> positivo
"Nunca más vuelvo a este lugar" -> negativo
"Cumplió con lo prometido" -> neutro
... 10,000 ejemplos más ...
Se ajusta un modelo de lenguaje preentrenado o se usa uno ya afinado en sentimientos.
"El hotel está mal" -> negativo
"El hotel no está mal" -> positivo
(la palabra "mal" sigue ahí)
"No puedo decir que no me
haya gustado" -> positivo, con doble negación
Un léxico simple falla en los tres casos. Aquí se ve por qué no conviene borrar las negaciones al filtrar palabras vacías.
"Excelente, otra vez se cayó el sistema"
^ palabra positiva, mensaje negativo
"Qué maravilla esperar dos horas por un café frío"
"Me fascina que cancelen el vuelo sin avisar"
La ironía depende de conocimiento del mundo: hay que saber que un sistema caído es malo. Ningún conteo de palabras lo resuelve.
"impredecible" en un auto -> negativo
en una novela -> positivo
"pequeño" en un cuarto -> negativo
en un celular -> positivo
"largo" en una espera -> negativo
en una batería -> positivo
Un léxico o un modelo entrenado en otro dominio se traslada mal. El vocabulario de opinión cambia radicalmente entre industrias.
Comparación "mejor que el anterior"
no dice si el producto es bueno
Jerga local "está de a huevo" · "qué chilero" · "me cae gordo"
Emojis "Llegó el pedido 😡" vs "Llegó el pedido 😍"
el texto es idéntico, la opinión es opuesta
Un léxico sirve para explorar rápido. Para producción, entrena o ajusta un modelo con datos del dominio real: el vocabulario de opinión cambia radicalmente entre industrias.
| Métrica | Qué mide |
|---|---|
| Exactitud | Proporción de aciertos. Engañosa con clases desbalanceadas |
| Precisión | De lo que predije positivo, cuánto lo era |
| Recall | De lo positivo real, cuánto encontré |
| F1 | Media armónica de precisión y recall |
| Macro-F1 | Promedio de F1 por clase; trata igual a las clases raras |
10,000 correos: 9,700 legítimos · 300 spam
Modelo tramposo: "todo es legítimo"
Exactitud: 97% parece excelente
Recall spam: 0% no detectó un solo spam
El spam es minoritario, las quejas graves son minoritarias, las noticias falsas son minoritarias. Reportar solo exactitud oculta que el modelo falla justo en lo que importa. Usa F1, macro-F1 y la matriz de confusión.
Incorrecto construir el vocabulario con TODOS los documentos
y después partir en entrenamiento y prueba
-> el modelo ya vio términos de la prueba
-> la métrica sale mejor de lo que será en producción
Correcto partir primero, construir el vocabulario solo
con el entrenamiento
| Herramienta | Para qué sirve |
|---|---|
| NLTK | Enseñanza, tokenización, corpus y léxicos |
| spaCy | NLP de producción: lematización, POS, entidades |
| scikit-learn | Vectorización, clasificación y agrupamiento |
| Gensim | Word2Vec, LDA y similitud entre documentos |
| Transformers | Modelos preentrenados y ajuste fino |
| pysentimiento | Sentimientos y emociones en español |
El texto lo producen personas, y eso trae responsabilidades.