Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Tokenização Usando Expressões Regulares | Fundamentos de Pré-Processamento de Texto
Introdução ao PLN

bookTokenização Usando Expressões Regulares

Por que Expressões Regulares?

Embora as funções word_tokenize() e sent_tokenize() da biblioteca NLTK ofereçam maneiras convenientes de tokenizar texto em palavras e sentenças, elas podem não atender sempre a necessidades específicas de processamento de texto. Por isso, vamos explorar uma abordagem alternativa: a tokenização utilizando expressões regulares (regex).

Note
Definição

Expressão regular (regex) é uma sequência de caracteres que define um padrão de busca. Expressões regulares podem ser utilizadas em diversas tarefas de processamento de texto, incluindo busca, substituição e divisão de texto com base em padrões específicos.

No contexto da tokenização, regex permite definir padrões personalizados que podem identificar tokens, oferecendo mais controle sobre o processo de tokenização do que funções pré-construídas.

Usando regexp_tokenize()

Felizmente, a biblioteca NLTK inclui a função regexp_tokenize() no módulo tokenize, que tokeniza uma string em substrings utilizando uma expressão regular. Esta função é especialmente útil quando é necessário tokenizar textos com base em padrões que não são bem tratados pelos tokenizadores padrão.

Os parâmetros mais importantes de regexp_tokenize() são os dois primeiros: text (a string a ser tokenizada) e pattern (padrão de expressão 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 pode ser observado, o processo é semelhante ao uso da função word_tokenize(), porém, os resultados podem variar dependendo do padrão utilizado. No exemplo apresentado, o padrão '\w+' é utilizado para corresponder a sequências de um ou mais caracteres alfanuméricos (letras e números) e sublinhados.

Isso resulta em uma lista de palavras sem sinais de pontuação, o que difere do word_tokenize(), pois este normalmente inclui a pontuação como tokens separados.

Utilizando RegexpTokenizer

Uma abordagem alternativa para tokenização personalizada envolve o uso da classe RegexpTokenizer do módulo tokenize da NLTK. Primeiro, crie uma instância de RegexpTokenizer com o padrão de expressão regular desejado como argumento. Após criar uma instância com o padrão especificado, é possível passar o texto como argumento para o 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

Essa abordagem produz os mesmos resultados e pode ser mais adequada em casos nos quais é necessário um tokenizador para diferentes textos, pois permite criar o tokenizador uma única vez e aplicá-lo a várias entradas de texto sem redefinir o padrão a cada vez.

Vamos prosseguir com outro exemplo. Suponha que desejamos apenas dígitos como tokens; nesse caso, o padrão '\d+' irá buscar um ou mais dígitos, conforme o exemplo abaixo:

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

No geral, a tokenização por expressões regulares permite uma tokenização altamente personalizada, tornando-a ideal para lidar com padrões complexos e regras específicas de tokenização que não são facilmente gerenciadas por métodos padrão como word_tokenize(). No nosso exemplo, quando queríamos usar números como tokens, word_tokenize() não seria adequado para essa tarefa.

question mark

Qual das alternativas a seguir melhor descreve o que o padrão de expressão regular '\w+' corresponde quando usado com regexp_tokenize() ou RegexpTokenizer?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how to write custom regex patterns for different tokenization needs?

What are some common use cases where regexp_tokenize() is preferred over word_tokenize()?

Can you show more examples of tokenization with different regex patterns?

Awesome!

Completion rate improved to 3.45

bookTokenização Usando Expressões Regulares

Deslize para mostrar o menu

Por que Expressões Regulares?

Embora as funções word_tokenize() e sent_tokenize() da biblioteca NLTK ofereçam maneiras convenientes de tokenizar texto em palavras e sentenças, elas podem não atender sempre a necessidades específicas de processamento de texto. Por isso, vamos explorar uma abordagem alternativa: a tokenização utilizando expressões regulares (regex).

Note
Definição

Expressão regular (regex) é uma sequência de caracteres que define um padrão de busca. Expressões regulares podem ser utilizadas em diversas tarefas de processamento de texto, incluindo busca, substituição e divisão de texto com base em padrões específicos.

No contexto da tokenização, regex permite definir padrões personalizados que podem identificar tokens, oferecendo mais controle sobre o processo de tokenização do que funções pré-construídas.

Usando regexp_tokenize()

Felizmente, a biblioteca NLTK inclui a função regexp_tokenize() no módulo tokenize, que tokeniza uma string em substrings utilizando uma expressão regular. Esta função é especialmente útil quando é necessário tokenizar textos com base em padrões que não são bem tratados pelos tokenizadores padrão.

Os parâmetros mais importantes de regexp_tokenize() são os dois primeiros: text (a string a ser tokenizada) e pattern (padrão de expressão 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 pode ser observado, o processo é semelhante ao uso da função word_tokenize(), porém, os resultados podem variar dependendo do padrão utilizado. No exemplo apresentado, o padrão '\w+' é utilizado para corresponder a sequências de um ou mais caracteres alfanuméricos (letras e números) e sublinhados.

Isso resulta em uma lista de palavras sem sinais de pontuação, o que difere do word_tokenize(), pois este normalmente inclui a pontuação como tokens separados.

Utilizando RegexpTokenizer

Uma abordagem alternativa para tokenização personalizada envolve o uso da classe RegexpTokenizer do módulo tokenize da NLTK. Primeiro, crie uma instância de RegexpTokenizer com o padrão de expressão regular desejado como argumento. Após criar uma instância com o padrão especificado, é possível passar o texto como argumento para o 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

Essa abordagem produz os mesmos resultados e pode ser mais adequada em casos nos quais é necessário um tokenizador para diferentes textos, pois permite criar o tokenizador uma única vez e aplicá-lo a várias entradas de texto sem redefinir o padrão a cada vez.

Vamos prosseguir com outro exemplo. Suponha que desejamos apenas dígitos como tokens; nesse caso, o padrão '\d+' irá buscar um ou mais dígitos, conforme o exemplo abaixo:

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

No geral, a tokenização por expressões regulares permite uma tokenização altamente personalizada, tornando-a ideal para lidar com padrões complexos e regras específicas de tokenização que não são facilmente gerenciadas por métodos padrão como word_tokenize(). No nosso exemplo, quando queríamos usar números como tokens, word_tokenize() não seria adequado para essa tarefa.

question mark

Qual das alternativas a seguir melhor descreve o que o padrão de expressão regular '\w+' corresponde quando usado com regexp_tokenize() ou RegexpTokenizer?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5
some-alt