Etiquetado de Palabras en Python con NLTK y Stanza
Clase 2 de 26 • Curso de Algoritmos de Clasificación de Texto
Contenido del curso
- 4

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

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

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

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

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

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

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

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

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

Implementación de Modelos Ocultos de Markov en NLTK y Python
12:55
- 21

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

Preparación de Datos para Modelo Naive Bayes en Python
07:43 - 23

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

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

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

Clasificación de Sentimientos con Reviews de Amazon
07:02
¿Cómo se etiquetan palabras en inglés usando NLTK?
El etiquetado de palabras en inglés con NLTK es un proceso relativamente sencillo gracias a los algoritmos preentrenados disponibles en la librería. Para comenzar, necesitamos importar la librería NLTK y descargar algunos recursos esenciales como el tokenizador de palabras. Una vez que tenemos los recursos listos, podemos aplicar el etiquetado usando el método pos_tag de NLTK.
import nltk
nltk.download('averaged_perceptron_tagger')
nltk.download('punkt')
from nltk.tokenize import word_tokenize
# Texto en inglés para etiquetar
text = "The quick brown fox jumps over the lazy dog"
# Tokenización del texto
tokens = word_tokenize(text)
# Etiquetado de las palabras
tags = nltk.pos_tag(tokens)
print(tags)
Este código segmenta un texto en palabras y les asigna etiquetas gramaticales como sustantivo (NN), verbo (VB), etc. Estas etiquetas corresponden a un estándar de categorías gramaticales conocido.
¿Cómo podemos entender el significado de las etiquetas?
NLTK proporciona un conjunto de etiquetado que podemos descargar para obtener más información sobre lo que significan estas etiquetas. Esto se realiza mediante el siguiente proceso:
nltk.download('tagsets')
# Lista de etiquetas que queremos explorar
etiquetas = ['CC', 'RB', 'PRP']
# Mostrar significado de cada etiqueta
for tag in etiquetas:
descripcion = nltk.help.upenn_tagset(tag)
print(descripcion)
Utilizando la descarga de conjuntos de etiquetas, podemos ver qué categoría gramatical representa cada etiqueta y ejemplos de su uso.
¿Cómo se etiquetan palabras en español usando NLTK?
El etiquetado de palabras en español con NLTK requiere pasos adicionales ya que no existen algoritmos preentrenados para este idioma. Estos son algunos pasos que debemos seguir:
- Obtener un corpus en español, como el
cess_esp. - Entrenar un modelo con un subconjunto del corpus.
- Evaluar el modelo.
¿Cómo funciona el etiquetado utilizando unigramas?
El etiquetador de unigramas utiliza el contexto de una palabra para asignarle una etiqueta gramátical.
from nltk.corpus import cess_esp as ces
from nltk.tag import UnigramTagger
# Separar las frases del corpus cess_esp
frases = ces.sents()
# Definir una fracción del dataset para entrenamiento
fraccion = int(len(frases) * 0.9)
# Entrenar un etiquetador de unigramas
etiquetador_unigrama = UnigramTagger(frases[:fraccion])
# Evaluar el etiquetador
precision = etiquetador_unigrama.evaluate(frases[fraccion:])
print(f"Precisión del etiquetador de unigramas: {precision}")
Este proceso implica entrenar al etiquetador con un 90% del dataset y evaluar su precisión con el 10% restante. También podemos etiquetar nuevas oraciones en español con etiquetador_unigrama.tag().
¿Es mejor el etiquetado usando bigramas?
Aunque uno podría pensar que los bigramas —que consideran el contexto de pares de palabras consecutivas— pueden ser más efectivos, en práctica no siempre es así. La implementación es similar, pero generalmente arroja una precisión más baja, como se muestra a continuación:
from nltk.tag import BigramTagger
# Entrenar un etiquetador de bigramas
etiquetador_bigrama = BigramTagger(frases[:fraccion])
# Evaluar el etiquetador de bigramas
precision_bigrama = etiquetador_bigrama.evaluate(frases[fraccion:])
print(f"Precisión del etiquetador de bigramas: {precision_bigrama}")
Es crucial probar ambos métodos y elegir el más adecuado dependiendo del caso de uso. El etiquetador de unigramas suele ofrecer mejores resultados en español.
¡Sigue explorando el fascinante mundo del procesamiento de lenguaje natural! Cada herramienta que domines te acerca más a ser un experto en esta área en constante evolución.