Contenido del curso
Modelos Markovianos Latentes (HMM)
- 4

Modelos Marcovianos Latentes en PLN: Fundamentos y Aplicaciones
10:18 min - 5

Matemáticas de Cadenas de Markov y su Aplicación en Modelos Latentes
08:43 min - 6

Modelos Marcovianos Latentes: Etiquetado Gramatical Automático
13:25 min - 7

Implementación de Modelos Marcovianos Latentes en Python con Google Colab
07:50 min - 8

Entrenamiento de Modelos Marcobianos Latentes en Python
12:19 min
Algoritmo de Viterbi
- 9

Decodificación de Secuencias con el Algoritmo de Viterbi
07:19 min - 10

Cálculo de Probabilidades en el Algoritmo de Viterbi
09:08 min - 11

Implementación del Algoritmo de Viterbi en Python con NumPy
14:45 min - 12

Implementación del Algoritmo Viterbi para Modelos Ocultos de Markov
17:50 min - 13

Implementación de Modelos Ocultos de Markov en NLTK y Python
12:54 min
Modelos Markovianos de máxima entropía (MEMM)
Clasificación de texto con NLTK
Implementación de un modelo de clasificación de texto
- 21

Funcionamiento Matemático del Clasificador Naive Bayes
10:43 min - 22

Preparación de Datos para Modelo Naive Bayes en Python
Viendo ahora - 23

Implementación del Algoritmo Naive Bayes en Python con spaCy
17:01 min - 24

Implementación del Método Predict en Naive Bayes Clasificador
13:40 min - 25

Métricas de Evaluación en Modelos de Clasificación: Accuracy, Precision y Recall
07:32 min - 26

Clasificación de Sentimientos con Reviews de Amazon
07:01 min
Preparación de Datos para Modelo Naive Bayes en Python
Resumen
Construir un clasificador de correos electrónicos desde cero requiere una preparación de datos sólida y herramientas adecuadas para el procesamiento de texto. En esta sesión se aborda cómo organizar un corpus de correos almacenados en archivos individuales, consolidarlos en estructuras manejables en Python y se presenta Spacy, una librería profesional de procesamiento de lenguaje natural que será clave en la implementación del algoritmo de Naive Bayes.
¿Cómo se organizan los datos del corpus de correos electrónicos?
El punto de partida es un repositorio de datasets que contiene correos electrónicos en formato plaintext [0:43]. A diferencia del ejercicio anterior donde se trabajó con archivos CSV y pocos datos, ahora se utiliza un corpus más grande para entrenar el modelo con mayor robustez.
La estructura del corpus es particular: cada correo electrónico es un archivo independiente dentro de dos subcarpetas llamadas ham y spam [1:25]. Los archivos vienen comprimidos en formato .zip, por lo que el primer paso es extraerlos. Una vez descomprimidos, se obtiene una carpeta (por ejemplo, Corpus1) con las dos subcarpetas mencionadas.
- Cada archivo representa un único correo electrónico.
- La carpeta donde se encuentra determina su etiqueta de clase:
spamoham. - Los correos de spam contienen ofertas o contenido no deseado.
¿Qué librerías se necesitan para la preparación?
Se importan dos librerías fundamentales desde el inicio del notebook en Google Colab [0:25]:
- math: se utilizará para calcular los logaritmos de las probabilidades, un paso esencial en el cálculo probabilístico de Naive Bayes.
- os: permite listar archivos dentro de un directorio mediante el comando
os.listdir(), indispensable para recorrer las carpetas del corpus.
El comando os.listdir() [3:06] devuelve una lista con todos los nombres de archivos contenidos en una ruta específica, lo que lo convierte en la herramienta ideal para iterar sobre cada correo del dataset.
¿Cómo se consolidan los datos en listas de Python?
Como cada data point está en un archivo separado, se necesita unificar todo en un solo corpus. Para ello se crean dos listas [2:23]:
data: almacena el contenido de texto de cada correo.clases: almacena la etiqueta correspondiente (spamoham).
El proceso de lectura de los correos de spam sigue esta lógica [2:36]:
python for file in os.listdir('corpus1/spam/'): with open('corpus1/spam/' + file, encoding='latin1') as f: data.append(f.read()) clases.append('spam')
Se usa with open para abrir cada archivo con la ruta completa concatenada. El parámetro encoding='latin1' [3:45] es necesario porque el dataset contiene caracteres especiales que requieren esta codificación, según indica la documentación del corpus.
Para los correos ham, el código es prácticamente idéntico [4:29], cambiando únicamente la ruta de la carpeta y la etiqueta:
python for file in os.listdir('corpus1/ham/'): with open('corpus1/ham/' + file, encoding='latin1') as f: data.append(f.read()) clases.append('ham')
Al finalizar, se verifica la longitud del corpus con len(data) o len(clases), obteniendo un total de 5172 correos electrónicos [5:22], divididos entre ham y spam.
¿Qué es Spacy y por qué usarlo en Naive Bayes?
Spacy es una librería de procesamiento de lenguaje natural reconocida por su robustez y capacidad para llevar modelos a producción [5:52]. Se introduce como una herramienta nueva en el flujo de trabajo, y su función principal en este contexto es el tokenizador.
El tokenizer de Spacy [6:05] se encarga de dividir el texto en unidades individuales (tokens) de forma eficiente y confiable. A diferencia de métodos simples como split(), el tokenizador de Spacy maneja casos complejos de puntuación, caracteres especiales y estructuras lingüísticas.
- Permite implementar pipelines completos de procesamiento de texto.
- Su documentación es extensa y accesible.
- Está diseñado para entornos de producción, no solo experimentación.
Familiarizarse con Spacy representa una ventaja significativa, ya que abre la puerta a flujos de trabajo profesionales en NLP. La implementación concreta del tokenizador y su integración con el algoritmo de Naive Bayes se desarrollará en la siguiente sesión.
¿Ya habías trabajado con Spacy o es tu primer acercamiento? Comparte tu experiencia en los comentarios.