NLP
Natural Language Processing
Índice
Introducción a NLP 01
Transformaciones básicas 02
Transformaciones avanzadas 03
Embeddings (Word2Vec, BERT) 04
Introducción
NLP: Introducción
El procesamiento del lenguaje natural (NLP) es la disciplina que se
encarga de construir máquinas capaces de trabajar con el lenguaje
humano —o datos que se asemejan al lenguaje humano— tal como se
escribe, se habla y se organiza.
Es la base de todos los sofisticados modelos de lenguaje a gran escala
(LLMs) como Claude, GPT, Llama.
En términos simples, el NLP ayuda a las máquinas a interpretar el lenguaje
humano, ya sea para comprenderlo, analizarlo o incluso generarlo.
NLP: Introducción
En el NLP podemos diferenciar dos áreas:
Natural Language Understanding o comprensión del lenguaje natural
(NLU) se encarga de interpretar el significado detrás del texto.
Natural Language Generation o generación de lenguaje natural (NLG)
se enfoca en producir texto que imite la escritura humana. Suele ir de la
mano de tecnologías cmo Speech to Text o reconocimiento de voz.
NLP: casos de uso
Análisis de sentimiento
Análisis de emociones
Clasificación de e-mails
Generación de texto: Chatbots / asistentes virtuales, autocompletado,
Corrector gramatical, auto-correctore
Tratamiento de documentos: extracción de información relevante,
etiquetado, generación de resúmenes
Traducciones.
NLP: Librerías
NLP: algunas definiciones básicas
Documento
Un documento se refiere a un único fragmento de texto, que puede ser tan pequeño como una oración o un párrafo, o tan grande como un artículo completo. En los
conjuntos de datos, esto suele corresponder a una fila en un conjunto de datos de texto. Ejemplo: Un artículo de noticias dentro de una colección de datos periodísticos.
Corpus
Un corpus es una colección de documentos. Representa el conjunto completo de datos textuales que están siendo analizados o utilizados para entrenar un modelo de
procesamiento del lenguaje natural (NLP). Ejemplo: Una base de datos con 1,000 artículos recopilados para un análisis de sentimientos.
Diccionario
El diccionario es el conjunto de todas las palabras únicas presentes en el corpus. Se utiliza para construir características en modelos de NLP y, a menudo, excluye palabras
vacías (stop words) y términos poco frecuentes para optimizar la eficiencia. Ejemplo: El vocabulario de la frase "Me gustan las manzanas y naranjas" podría incluir {‘Me’,
‘gustan’, ‘manzanas’, ‘naranjas’} si se excluyen las palabras vacías.
Tokenización
Es el proceso de “trocear” el texto en unidades más pequeñas y manejables llamadas tokens. Estos tokens pueden ser palabras u otras frases.
Ejemplo: “Me encanta NLP. Es divertido” ”Me encanta NLP”, “Es divertido” : Sentence tokenization
“Me encanta NLP” ”Me”,“encanta”,“NLP” : Word tokenization
Stopwords
Son palabras que no aportan significado o aportan muy poco significado: Ej. articulos, determinante, conjunciones, …: “El”, “y”, “este”
Transformaciones básicas
Natural Language Programming (NLP)
Los algoritmos ML y las redes neuronales no entienden el texto, por ello se requiere “traducir” este texto en números.
NLP: Straightforward transformations
NLP: Straightforward transformations
NLP: Straightforward transformations
Bi-grams y n-grams
Tienen en cuenta palabras adyacentes Define pares de palabras según su secuencia de aparición
Crea un diccionario
Ahora representamos cada frase igual que hacía en BoW-
NLP: Straightforward transformations
TF-IDF
Tiene en cuenta la importancia de cada palabra dentro del documento.
TF(t,d) es la frecuencia del término t en el documento d. Esto es el cociente entre el
número de veces que aparece t en el documento y el número total de palabras del
documento d
N es el número total de documentos.
DF(t) es el número de documentos que contienen el término t.
Resumen: StraightForward Tranformations
Nombre de la técnica Nombre de la técnica Ventajas Desventajas Casos de uso comunes
Representa cada palabra como un vector binario No captura relaciones entre palabras y puede
One Hot Encoding donde solo una posición es 1 y las demás son 0.
Simplicidad y facilidad de implementación.
generar vectores muy grandes
Modelos de clasificación de texto simples
Cuenta la frecuencia de cada palabra en un No captura el contexto ni las relaciones entre Análisis de sentimientos, clasificación
Bag of Words documento, ignorando el orden de las palabras.
Fácil de entender e implementar.
palabras de documentos.
CountVectorizer()
Puede generar un gran número de
Captura contexto local y relaciones entre
N-grams Secuencias contiguas de 'n' palabras en un texto.
palabras.
características
Modelos de lenguaje, análisis de secuencias.
y ser computacionalmente costoso.
Asigna un peso a cada palabra basado en su
Reduce el impacto de palabras comunes y Requiere más recursos computacionales y puedeBúsqueda de información, recuperación de
TF-IDF frecuencia en un documento y su rareza en el
resalta términos importantes. ser complejo de implementar. documentos
corpus.
Transformaciones avanzadas
NLP: funciones más avanzadas
Tokenizacion
Stemming
Lemmatization
Part OF Speech (POS)
Named Entity Recognition (NER)
NLP: Tokenizer
Tokenizer
El proceso de dividir el texto en unidades más pequeñas llamadas tokens, que pueden ser palabras,
subpalabras o caracteres.
Tokenización de palabras: División del texto en palabras individuales. Ejemplo: "Estudio Machine Learning en Evolve
Academy." se tokenizará en palabras como: ['Estudio', 'Data', 'Science', 'en', 'Evolve', Academy', '.']
Tokenización de oraciones: División del texto en oraciones individuales. Ejemplo: "Estudio Machine Learning en
GeeksforGeeks. Actualmente, estoy estudiando NLP." se tokenizará en oraciones como: ['Estudio Data Science en Evolve
Academy.', 'Actualmente, estoy estudiando NLP.']
Tokenización de subpalabras: División de palabras en unidades más pequeñas, como prefijos, sufijos o caracteres individuales
Importancia: La tokenización es el primer paso en muchas canalizaciones de procesamiento de lenguaje
natural (NLP) y afecta las etapas de procesamiento posteriores.
NLP: Stemming & Lemmatisation
Stemming Lemmatisation
Definición Definición
El proceso de reducir las palabras a su forma raíz eliminando El proceso de reducir una palabra a su forma base o de
sufijos y prefijos. diccionario, llamada lema.
Ejemplo Ejemplo
Las palabras "comida" y "comer" se reducen a "com". Las palabras "comida" y "malcomer" se reducen a "com".
Diferencia con la Lemmatisation Importancia
El stemming es una técnica más rudimentaria en comparación Ayuda a comprender el significado subyacente de las palabras al
con la lematización y puede no siempre producir palabras reales. agrupar diferentes formas de una misma palabra.
Comparación
Los algoritmos de stemming son más rápidos y
computacionalmente menos costosos que los lematizadores.
NLP: POS y NER
Part of Speech (POS) Named Entity Recognition ( (NER)
El etiquetado de partes del discurso (POS tagging) es el El Reconocimiento de Entidades Nombradas (NER) es la tarea
proceso de asignar una categoría gramatical a cada palabra en de identificar y clasificar entidades específicas dentro de un
un texto. Estas categorías pueden incluir sustantivos (NOUN), texto, como personas, ubicaciones, organizaciones, fechas,
verbos (VERB), adjetivos (ADJ), adverbios (ADV), etc. valores numéricos, etc.
Ejemplo Ejemplo
En la frase "El procesamiento de lenguaje natural es En la frase "Barack Obama nació en Hawái y fue
fascinante." presidente de los Estados Unidos.", el modelo NER
podría detectar:
[('El', 'DET'), ('procesamiento', 'NOUN'), ('de',
'ADP'), ('lenguaje', 'NOUN'), ('natural', 'ADJ'), [('Barack Obama', 'PERSON'), ('Hawái', 'GPE'),
('es', 'AUX'), ('fascinante', 'ADJ'), ('.', ('Estados Unidos', 'GPE')]
'PUNCT')]
Embeddings
NLP: Word Embeddings
Los word embeddings son representaciones vectoriales densas,
de baja dimensión y continuas de palabras que capturan
información semántica y sintáctica.
Características
Denso: A diferencia de representaciones dispersas como la
codificación one-hot, los embeddings son densos, lo que
significa que la mayoría de sus elementos son distintos de cero.
Espacio Vectorial: Las palabras están posicionadas en un
espacio vectorial, lo que permite realizar operaciones
matemáticas y comparaciones.
Reducción de Dimensionalidad: El espacio vectorial suele
reducirse a una menor dimensión para mejorar la eficiencia
computacional y la visualización.
Similitud Semántica: Las palabras con significados similares
tienen embeddings similares.
NLP: Word Embeddings
NLP: Embeddings
Tipos de embeddings
Los word embeddings representan palabras individuales como vectores. Técnicas como Word2Vec, GloVe y FastText generan
estos embeddings capturando relaciones semánticas e información contextual a partir de grandes corpus de texto.
Los sentence embeddings representan oraciones completas como vectores. Modelos como Universal Sentence Encoder
(USE) y SkipThought generan embeddings que reflejan el significado y contexto general de las oraciones.
Los document embeddings representan documentos completos (como artículos de periódico, trabajos académicos o libros) en
forma de vectores. Capturan la información semántica y el contexto de todo el documento. Técnicas como Doc2Vec y
Paragraph Vectors están diseñadas para generar embeddings de documentos.
Embedding estáticos
Embeddings Estáticos
Los vectores densos o word embeddings abordan las limitaciones de la codificación one-hot proporcionando representaciones
más informativas y compactas de las palabras.
Reducción de Dimensionalidad
En lugar de tener una longitud de vector igual al tamaño del vocabulario, los embeddings suelen utilizar dimensiones mucho más
pequeñas (por ejemplo, 50, 100 o 300).
Proximidad Semántica
Los vectores densos ubican palabras semánticamente similares cerca unas de otras en el espacio vectorial. Por ejemplo, la
similitud del coseno entre los vectores de "gato" y "perro" será mayor que entre "gato" y "pez".
Ejemplos
Word2Vec: Aprende embeddings prediciendo una palabra a partir de su contexto o viceversa
GloVe: Utiliza factorización de matrices para derivar embeddings
FastText: Trabaja a nivel de subpalabras
Word2Vec
Desarrollado por Tomas Mikolov y otros en Google, 2013.
Word2Vec es un tipo de word embedding que asigna palabras a espacios vectoriales de alta dimensión, permitiendo realizar
operaciones matemáticas sobre ellas.
La clave de Word2Vect es que las palabras con significados similares tienden a aparecer en contextos similares.
Capturan propiedades semánticas como la similitud entre palabras, las analogías e incluso relaciones semánticas más complejas
Predice la palabra objetivo a partir del contexto (palabras vecinas)
Es más eficiente en datasets grandes y funciona bien para palabras
CBOW frecuentes
Ejemplo: Si tenemos "El ___ es azul", CBOW intenta predecir
"cielo".
Hace lo opuesto: predice el contexto dada una palabra objetivo
Funciona mejor con palabras poco frecuentes y captura relaciones
Skip-gram más complejas
Ejemplo: Si la palabra es "cielo", Skip-gram intenta predecir
"azul", "alto", "nubes".
GloVe
Desarrollado por investigadores de la Universidad de Stanford, 2014.
GloVe es un algoritmo de aprendizaje no supervisado que obtiene representaciones vectoriales de palabras analizando las
estadísticas de coocurrencia de términos en un corpus de texto. Estos vectores de palabras capturan el significado semántico y las
relaciones entre ellas.
La idea clave detrás de GloVe es generar word embeddings examinando la probabilidad de coocurrencia de palabras en todo el
corpus. Para ello, construye una matriz global de coocurrencia palabra-palabra y luego la factoriza para obtener vectores de
palabras, que representan los términos en un espacio vectorial continuo.
FasText
FastText es un modelo de aprendizaje automático desarrollado por Facebook AI Research (FAIR) en 2016
A diferencia de modelos como Word2Vec, que representan palabras como vectores únicos, FastText trabaja a nivel de subpalabras.
Esto significa que
Divide las palabras en n-gramas → Por ejemplo, la palabra "canción" se descompone en ["ca", "can", "anc", "nci", "ció", "ión"].
Genera embeddings para cada subpalabra → Esto permite que palabras similares tengan representaciones más cercanas.
Maneja mejor palabras desconocidas → Si una palabra no está en el vocabulario, FastText puede estimar su significado a partir
de sus subpalabras.
Comparativa embeddings estáticos
Característica Word2Vec GloVe FastText
Año de lanzamiento 2013 2014 2016
Desarrollado por Google Stanford Facebook AI Research
Método de aprendizaje Basado en ventana de contexto Basado en matriz de coocurrencia Basado en subpalabras (n-gramas)
Arquitectura CBOW y Skip-gram Factorización de matrices CBOW y Skip-gram con subpalabras
Muy alta (especialmente en palabras poco
Captura de relaciones semánticas Alta Alta
frecuentes)
Manejo de palabras desconocidas No aprende nuevas palabras No aprende nuevas palabras Sí, generaliza por subpalabras
Uso de memoria Moderado Alto (matriz grande) Alto (por subpalabras)
Velocidad de entrenamiento Rápido Más lento (requiere factorizar matriz) Muy rápido
NLP, clasificación de texto, modelado
Aplicaciones principales NLP, análisis semántico, búsqueda NLP, análisis semántico
de lenguaje
Embeddings contextuales
Embeddings Contextuales Los contextual embeddings son
representaciones vectoriales de palabras que capturan su
significado dependiendo del contexto en el que aparecen, a
diferencia de los embeddings estáticos que asignan un único
vector a cada palabra.
Self-Attention. Genera representaciones sensibles al contexto
gracias a su mecanismo de autoatención (self-attention).
Adaptación al contexto: Si una palabra aparecía en un contexto
diferente, el modelo generaría una representación distinta.
Mientras que los algoritmos estáticos (Word2Vec, GloVe)
generan siempre la misma representación.
Mayor Precisión Semántica: Al depender del entorno en el que
se usa la palabra, los embeddings contextuales mejoran la
comprensión del lenguaje natural.".
Algoritmos: ELMo, BERT, GPT, RoBERTa, ERNIE, T5
BERT
BERT (Bidirectional Encoder Representations from Transformers)
fue lanzado por Google AI en 2018
Enconder-Only; El bloque de codificador del Transformer recibe
una secuencia de entrada y generar representaciones vectoriales
enriquecidas para cada token. Los modelos Encoder-only son
buenos en tareas NLU. mientras que los decoder lo son en NLG
Preentreado. BERT ha sido entrenado con BookCorpus (colección
de libros de dominio público) y . la Wikipedia en inglés.
Bidireccional: Cada palabra de entrada toma contexto de las
anteriores y posteriores.
BERT: Algunos algoritmos
BERT: Algunos algoritmos
Modelo BERT Utilidad Principal Desarrollado Python
from transformers import pipeline; model =
BERT-base-uncased Análisis de texto en inglés sin mayúsculas Google AI pipeline("feature-extraction", model="bert-base-
uncased")
BERT-base-uncased Versión más potente de BERT-base Google AI model = pipeline("feature-extraction", model="bert-
large-uncased")
DistilBERT Versión ligera y rápida de BERT Hugging Face model = pipeline("feature-extraction",
model="distilbert-base-uncased")
RoBERTa Mejora de BERT con más entrenamiento Facebook AI model = pipeline("feature-extraction", model="roberta-
base")
ALBERT Optimización de BERT con menos parámetros Google AI model = pipeline("feature-extraction", model="albert-
base-v2")
mBERT (Multilingual BERT) omprensión de texto en múltiples idiomas Google AI model = pipeline("feature-extraction", model="bert-
C base-multilingual-uncased")
BioBERT Especializado en terminología biomédica orea University model = pipeline("feature-extraction", model="dmis-lab/
K biobert-base-cased")
ciBERT Orientado al análisis de textos científicos Allen Institute for AI model = pipeline("feature-extraction", model="allenai/
S scibert_scivocab_uncased")
LegalBERT Entrenado en documentos legales Various researchers model = pipeline("feature-extraction", model="nlpaueb/
legal-bert-base-uncased")
TweetEval-BERT Optimizado para clasificación de tweets Various researchers model = pipeline("text-classification",
model="cardiffnlp/twitter-roberta-base-sentiment")
BERTweet Ajustado para comprensión de lenguaje informal VinAI Research model = pipeline("feature-extraction", model="vinai/
bertweet-base")
Electra Modelo con entrenamiento más eficiente que BERT Google Research model = pipeline("feature-extraction", model="google/
electra-small-discriminator")
NLP: Casos de uso
Embeddings
Sentiment Analysis
Análisis de similitud
Topic analysis
Clustering de textos
Creación de un recomendador de canciones en función del sentimiento / emoción
Análisis de emociones