No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
0 Hrs
33 Min
29 Seg

Procesamiento de datos: tokenización y creación de vocabulario

13/24
Recursos

Aportes 8

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Como se actualizó el dataset de DBpedia, puede crear un archivo de Python y copiar el source code del dataset <https://pytorch.org/text/stable/_modules/torchtext/datasets/dbpedia.html> Mi script lo llamé dbpedia.py y lo importo de la siguiente manera `from`` dbpedia ``import`` DBpedia` Únicamente elimine \[docs de `[docs]@_create_dataset_directory(``dataset_name``=DATASET_NAME)` Y el url lo cambié por `URL = "https://drive.usercontent.google.com/download?id=0Bz8a_Dbh9QhbQ2Vic1kxMmZZQ1k&export=download&authuser=0"` Espero les sirva para seguir el curso
Se actualizo la libreria no funciona, me pide los datos de train pero no encuentro la forma de solucionarlo :C

Tuve la duda de cómo funcionaba el tokenizer + vocabulario y traigo mis conclusiones.

El tokenizer simplemente separa las palabras en tokens, y el algoritmo que usemos (en este caso basic_english) determinará qué caracteres tokenizará y que limpiezas y convenciones llevará a cabo (agregar espacios a las puntuaciones, transformar los saltos de linea en espacios sencillos y demás limpiezas) y retornará un array gigante con los cada palabra tokenizada.

El vocab (o vocabulario) por otra parte es especial. El proceso para determinar qué valor numérico pertenece a cada token es directamente proporcional a su frecuencia de aparición. Entre más aparezca un token en un dataset (también llamado text corpus) menor valor tendrá, por eso los conectores suelen tener valores tan bajos.

La razón por la que debemos agregar el <unk> en el vocab es porque únicamente hemos creado los valores de los tokens disponibles en el text corpus, por lo que, si en alguna inferencia usamos texto que no contiene un token válido, debemos tener un mecanismo para encapsularlo.

si tienen el error

ImportError: cannot import name ‘DILL_AVAILABLE’ from ‘torch.utils.data.datapipes.utils.common

Utilicen

torch.utils.data.datapipes.utils.common.DILL_AVAILABLE = torch.utils._import_utils.dill_available()

antes de

train_iter = iter(DBpedia(split='train'))

Ver el enlace

El procesamiento de datos, especialmente en tareas de procesamiento de lenguaje natural (NLP), implica pasos como la tokenización y la creación de vocabularios. Aquí te explico ambos conceptos y cómo se implementan, particularmente en el contexto de PyTorch. \### 1. Tokenización La \*\*tokenización\*\* es el proceso de dividir un texto en unidades más pequeñas llamadas "tokens". Estos pueden ser palabras, subpalabras o caracteres. La tokenización permite que los modelos entiendan el texto en un formato que pueden procesar. Existen diferentes enfoques de tokenización: \- \*\*Tokenización por palabras\*\*: Divide el texto en palabras. \- \*\*Tokenización por subpalabras\*\*: Utiliza algoritmos como Byte Pair Encoding (BPE) para dividir palabras en subunidades, lo que es útil para manejar palabras desconocidas y reducir el vocabulario. \- \*\*Tokenización por caracteres\*\*: Cada carácter se convierte en un token, lo que puede ser útil para ciertos tipos de modelos. \### Ejemplo de Tokenización en PyTorch Aquí hay un ejemplo básico de cómo realizar la tokenización utilizando `torchtext`: ```python import torch from torchtext.data.utils import get\_tokenizer \# Texto de ejemplo text = "Hola, esto es un ejemplo de tokenización." \# Crear un tokenizador tokenizer = get\_tokenizer("basic\_english") \# Tokenizar el texto tokens = tokenizer(text) print(tokens) ``` \### 2. Creación de Vocabulario La \*\*creación de vocabulario\*\* implica construir un conjunto de todos los tokens únicos que aparecen en tu conjunto de datos. Esto es fundamental porque el modelo necesita mapear cada token a un número entero (índice) que puede utilizar durante el entrenamiento. Los vocabularios pueden ser simples o pueden incluir mapeos adicionales, como las frecuencias de palabras. \### Ejemplo de Creación de Vocabulario en PyTorch A continuación, se muestra un ejemplo de cómo crear un vocabulario a partir de los tokens: ```python from collections import Counter from torchtext.vocab import Vocab \# Contar la frecuencia de los tokens counter = Counter(tokens) \# Crear el vocabulario vocab = Vocab(counter) \# Ver el vocabulario print(vocab.stoi) # Muestra el índice de cada token print(vocab.itos) # Muestra el token correspondiente a cada índice ``` \### Integración en el Entrenamiento del Modelo Una vez que tienes los tokens y el vocabulario, puedes convertir tus textos en secuencias de índices y alimentar estos índices a tu modelo de PyTorch para el entrenamiento. \### Ejemplo Completo Aquí hay un flujo de trabajo más completo que incluye la tokenización y la creación de vocabulario: ```python import torch from torchtext.data.utils import get\_tokenizer from collections import Counter from torchtext.vocab import Vocab \# Texto de ejemplo corpus = \[ "Hola, esto es un ejemplo de tokenización.", "Este es otro ejemplo para crear vocabulario." ] \# Crear un tokenizador tokenizer = get\_tokenizer("basic\_english") \# Tokenizar y contar la frecuencia de tokens tokens = \[] for line in corpus: tokens.extend(tokenizer(line)) \# Crear el vocabulario counter = Counter(tokens) vocab = Vocab(counter) \# Convertir texto a índices text\_indices = \[\[vocab\[token] for token in tokenizer(line)] for line in corpus] \# Mostrar los resultados print("Vocabulario:", vocab.stoi) print("Índices del texto:", text\_indices) ``` \### Conclusión La tokenización y la creación de vocabulario son pasos críticos en el procesamiento de datos para modelos de NLP. Usar bibliotecas como `torchtext` simplifica mucho estos procesos, permitiendo concentrarse en el diseño y entrenamiento de modelos en lugar de preocuparse por el preprocesamiento de datos.
Les qiuiero compartir un video que me explico de una manera muy clara el concepto <https://www.youtube.com/watch?v=LagcbjDkqJE>
Si no les funciona ninguna de las otras soluciones que estaban en los comentarios para solucionar el problema con el dataset, lo que hice fue crear otro ambiente con python 3.9 e instalar la version de torchtext 0.15.1. No necesariamente debe ser la 3.9, pero era la que tenia a la mano.
¿Dónde estan las archivos de recursos de la clase ?