Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Tokenización Utilizando Expresiones Regulares | Fundamentos de la Preprocesamiento de Texto
Introducción al PLN

bookTokenización Utilizando Expresiones Regulares

¿Por qué expresiones regulares?

Aunque las funciones word_tokenize() y sent_tokenize() de la biblioteca NLTK ofrecen formas convenientes de tokenizar texto en palabras y oraciones, puede que no siempre se adapten a necesidades específicas de procesamiento de texto. Por ello, exploremos un enfoque alternativo: la tokenización utilizando expresiones regulares (regex).

Note
Definición

Expresión regular (regex) es una secuencia de caracteres que define un patrón de búsqueda. Las expresiones regulares pueden utilizarse para diversas tareas de procesamiento de texto, incluyendo búsqueda, reemplazo y división de texto según patrones específicos.

En el contexto de la tokenización, regex permite definir patrones personalizados que pueden identificar tokens, ofreciendo mayor control sobre el proceso de tokenización que las funciones predefinidas.

Uso de regexp_tokenize()

Afortunadamente, la biblioteca NLTK incluye la función regexp_tokenize() en el módulo tokenize, que divide una cadena en subcadenas utilizando una expresión regular. Esta función es especialmente útil cuando se necesita tokenizar texto según patrones que no son bien gestionados por los tokenizadores estándar.

Los parámetros más importantes de regexp_tokenize() son sus dos primeros: text (la cadena que se va a tokenizar) y pattern (el patrón de expresión regular).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Como se puede observar, el proceso es similar al uso de la función word_tokenize(), sin embargo, los resultados pueden variar dependiendo del patrón. En nuestro ejemplo, se utiliza el patrón '\w+' para coincidir con secuencias de uno o más caracteres alfanuméricos (letras y números) y guiones bajos.

Esto da como resultado una lista de palabras sin signos de puntuación, lo que difiere de word_tokenize(), ya que esta última normalmente incluye la puntuación como tokens separados.

Uso de RegexpTokenizer

Un enfoque alternativo para la tokenización personalizada consiste en utilizar la clase RegexpTokenizer del módulo tokenize de NLTK. Primero, se debe crear una instancia de RegexpTokenizer con el patrón de expresión regular deseado como argumento. Una vez creada la instancia con el patrón especificado, se puede pasar el texto como argumento al método tokenize().

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Este enfoque produce los mismos resultados y puede ser más conveniente en casos donde se necesita un único tokenizador para diferentes textos, ya que permite crear el tokenizador una sola vez y luego aplicarlo a varias entradas de texto sin redefinir el patrón cada vez.

Continuemos con otro ejemplo. Supongamos que solo queremos que los dígitos sean nuestros tokens; entonces, nuestro patrón '\d+' buscará uno o más dígitos, como en el siguiente ejemplo:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

En general, la tokenización mediante expresiones regulares permite una tokenización altamente personalizada, lo que la hace ideal para manejar patrones complejos y reglas de tokenización específicas que no se gestionan fácilmente con métodos estándar como word_tokenize(). En nuestro ejemplo, cuando queríamos utilizar números como tokens, word_tokenize() no sería adecuado para esta tarea.

question mark

¿Cuál de las siguientes opciones describe mejor lo que el patrón de expresión regular '\w+' detecta cuando se utiliza con regexp_tokenize() o RegexpTokenizer?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.45

bookTokenización Utilizando Expresiones Regulares

Desliza para mostrar el menú

¿Por qué expresiones regulares?

Aunque las funciones word_tokenize() y sent_tokenize() de la biblioteca NLTK ofrecen formas convenientes de tokenizar texto en palabras y oraciones, puede que no siempre se adapten a necesidades específicas de procesamiento de texto. Por ello, exploremos un enfoque alternativo: la tokenización utilizando expresiones regulares (regex).

Note
Definición

Expresión regular (regex) es una secuencia de caracteres que define un patrón de búsqueda. Las expresiones regulares pueden utilizarse para diversas tareas de procesamiento de texto, incluyendo búsqueda, reemplazo y división de texto según patrones específicos.

En el contexto de la tokenización, regex permite definir patrones personalizados que pueden identificar tokens, ofreciendo mayor control sobre el proceso de tokenización que las funciones predefinidas.

Uso de regexp_tokenize()

Afortunadamente, la biblioteca NLTK incluye la función regexp_tokenize() en el módulo tokenize, que divide una cadena en subcadenas utilizando una expresión regular. Esta función es especialmente útil cuando se necesita tokenizar texto según patrones que no son bien gestionados por los tokenizadores estándar.

Los parámetros más importantes de regexp_tokenize() son sus dos primeros: text (la cadena que se va a tokenizar) y pattern (el patrón de expresión regular).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Como se puede observar, el proceso es similar al uso de la función word_tokenize(), sin embargo, los resultados pueden variar dependiendo del patrón. En nuestro ejemplo, se utiliza el patrón '\w+' para coincidir con secuencias de uno o más caracteres alfanuméricos (letras y números) y guiones bajos.

Esto da como resultado una lista de palabras sin signos de puntuación, lo que difiere de word_tokenize(), ya que esta última normalmente incluye la puntuación como tokens separados.

Uso de RegexpTokenizer

Un enfoque alternativo para la tokenización personalizada consiste en utilizar la clase RegexpTokenizer del módulo tokenize de NLTK. Primero, se debe crear una instancia de RegexpTokenizer con el patrón de expresión regular deseado como argumento. Una vez creada la instancia con el patrón especificado, se puede pasar el texto como argumento al método tokenize().

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Este enfoque produce los mismos resultados y puede ser más conveniente en casos donde se necesita un único tokenizador para diferentes textos, ya que permite crear el tokenizador una sola vez y luego aplicarlo a varias entradas de texto sin redefinir el patrón cada vez.

Continuemos con otro ejemplo. Supongamos que solo queremos que los dígitos sean nuestros tokens; entonces, nuestro patrón '\d+' buscará uno o más dígitos, como en el siguiente ejemplo:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

En general, la tokenización mediante expresiones regulares permite una tokenización altamente personalizada, lo que la hace ideal para manejar patrones complejos y reglas de tokenización específicas que no se gestionan fácilmente con métodos estándar como word_tokenize(). En nuestro ejemplo, cuando queríamos utilizar números como tokens, word_tokenize() no sería adecuado para esta tarea.

question mark

¿Cuál de las siguientes opciones describe mejor lo que el patrón de expresión regular '\w+' detecta cuando se utiliza con regexp_tokenize() o RegexpTokenizer?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 5
some-alt