Tokenización y Vocabulario en TorchText para DBpedia
Clase 13 de 24 • Curso de Redes Neuronales con PyTorch
Resumen
¿Cómo iniciar la tokenización de nuestros textos con Torch Text?
En la ciencia de datos y el procesamiento del lenguaje natural, la tokenización es un paso esencial para convertir textos en datos que una máquina pueda utilizar. En esta clase, te guiaré para comprender cómo comenzar con esta tarea usando Torch Text, específicamente aplicando tokenización a los textos de DBpedia.
¿Qué es Torch Text y cómo se utiliza?
Torch Text es una poderosa biblioteca de PyTorch destinada a facilitar el manejo y la transformación de datos textuales. Nos permite tokenizar textos, crear vocabularios y más. Empezaremos examinando un dataset para familiarizarnos con su estructura antes de avanzar al procesamiento.
- Carga inicial del dataset: Utilizaremos un
train iter
que actuará como iterador sobre los datos ya importados de DBpedia. Esto nos permite visualizar cómo son los textos en bruto. - Uso del iterador: Con el comando
next
, podemos obtener el siguiente elemento del iterador, lo que nos permite observar los datos de nuestro dataset de manera secuencial.
train_iter = ...
sample_text = next(train_iter)
¿Cuál es la importancia de la tokenización?
La tokenización convierte largas oraciones o fragmentos textuales en piezas más pequeñas. Esto es crucial para que las máquinas puedan trabajar con texto, transformándolo en números y facilitando así la comprensión y el procesamiento automatizado.
- Importar herramientas necesarias: Usaremos
GetTokenizer
de Torch Text para la tokenización. Esta función nos proporciona una variedad de tokenizadores predefinidos, incluyendoBasicEnglish
. - Elegir el tokenizador correcto: Torch Text permite utilizar diferentes tokenizadores. Aunque en este caso usamos
BasicEnglish
, otros comospaCy
oHuggingFace
también son viables dependiendo de nuestras necesidades.
from torchtext.data.utils import get_tokenizer
tokenizador = getTokenizer('basic_english')
¿Cómo se crea y utiliza un vocabulario?
Un vocabulario traduce los tokens en números. Esto permite a las máquinas interpretar el texto de manera eficiente.
- Crear un iterador: Necesitamos un iterador de nuestros datos para pasar cada texto por el tokenizador.
- Generar tokens: Construimos una función
yieldTokens
que toma un iterador de textos y devuelve los tokens procesados. - Construcción del vocabulario: Utilizamos la función
BuildVocabFromIterator
para crear un mapa de tokens a números enteros, considerando también los tokens desconocidos.
from torchtext.vocab import build_vocab_from_iterator
def yield_tokens(data_iter):
for _, text in data_iter:
yield tokenizador(text)
vocabulario = build_vocab_from_iterator(yield_tokens(train_iter), specials=["<unk>"])
vocabulario.set_default_index(vocabulario["<unk>"])
¿Cómo desarrollar funciones para procesar datos eficientemente?
El uso de funciones ayuda a simplificar el proceso de conversión de texto en números. Dos funciones clave son textoPipeline
y labelpipeline
:
- Pipeline de texto: Transformación de texto en una secuencia de tokens que luego pasan a números usando un vocabulario.
- Pipeline de etiquetado: Toma una etiqueta numérica y la ajusta para empezar desde cero.
texto_pipeline = lambda x: vocabulario(tokenizador(x))
label_pipeline = lambda x: int(x) - 1
Cuando ejecutamos estas herramientas en texto de ejemplo como "Hello, I am Omar", obtenemos una lista de números enteros que representan cada palabra en el vocabulario. Así, logramos que los datos textuales sean aptos para el análisis y modelado.
El viaje hacia el procesamiento y análisis de datos nunca termina. ¡Anímate a seguir explorando el potencial de estas técnicas y herramientas que ofrece Torch Text!