5 maneiras simples de realizar tokenização em Python
Tokenização é o processo de dividir uma string em tokens, ou "pedaços menores". No contexto do processamento de linguagem natural (PNL), os tokens geralmente são palavras, sinais de pontuação e números. A tokenização é uma etapa importante de pré-processamento para muitas tarefas de PNL, pois permite trabalhar com palavras e símbolos individuais em vez de texto bruto.
Neste artigo, veremos cinco maneiras de realizar tokenização em Python. Começaremos com o método mais simples, usando a função split(), e depois passaremos para técnicas mais avançadas usando bibliotecas e módulos como nltk, re, string e shlex.
Usando o método split()
O método split() é uma função integrada da classe str do Python que permite dividir uma string em uma lista de substrings com base em um delimitador especificado. Aqui está um exemplo de como usá-lo -
text = "This is a sample text"
tokens = text.split(" ")
print(tokens)
Este código dividirá o texto da string no caractere de espaço e os tokens resultantes serão
['This', 'is', 'a', 'sample', 'text'].
Você também pode especificar vários delimitadores passando uma lista de strings para o método split(). Por exemplo -
text = "This is a sample, text with punctuation!"
tokens = text.split([" ", ",", "!"])
print(tokens)
Isso dividirá o texto da string em espaços, vírgulas e pontos de exclamação, resultando nos tokens ['This', 'is', 'a', 'sample', '', 'text', 'with', 'ponctuation' , '']. Observe que os delimitadores também estão incluídos na lista de tokens, como sequências vazias.
Uma limitação do método split() é que ele só permite dividir uma string com base em um conjunto fixo de delimitadores. Se quiser dividir uma string em padrões mais complexos, como palavras ou números, você precisará usar uma técnica mais avançada.
Usando a biblioteca nltk
O Natural Language Toolkit (nltk) é uma biblioteca Python popular para trabalhar com dados de linguagem humana. Ele fornece diversas funções de tokenização que podem ser usadas para dividir strings em tokens com base em vários critérios.
Para usar a biblioteca nltk, você precisará instalá-la primeiro. Você pode fazer isso executando o seguinte comando -
pip install nltk
Depois de instalar o nltk, você pode usar a função word_tokenize() para dividir uma string em tokens com base nos limites das palavras -
import nltk
text = "This is a sample text"
tokens = nltk.word_tokenize(text)
print(tokens)
Isso produzirá o mesmo resultado que o método split() acima.
A biblioteca nltk também fornece uma série de outras funções de tokenização, como sent_tokenize(), que transforma um texto em frases.
Exemplo
Vamos ver um exemplo -
from nltk.tokenize import sent_tokenize
# Define the text to be tokenized
text = "This is an example sentence for tokenization. And this is another sentence"
# Tokenize the text into sentences
sentences = sent_tokenize(text)
print(sentences)
Saída
Isso produzirá uma lista de frases -
['This is an example sentence for tokenization.', 'And this is another sentence']
Exemplo
Também podemos tokenizar o texto usando o método word_tokenize() do módulo nltk.tokenize da seguinte forma -
from nltk.tokenize import word_tokenize
# Define the text to be tokenized
text = "This is an example sentence for tokenization."
# Tokenize the text into words
words = word_tokenize(text)
print(words)
Saída
Isso também gerará uma lista de palavras -
['This', 'is', 'an', 'example', 'sentence', 'for', 'tokenization', '.']
Como você pode ver, o método word_tokenize() transforma o texto em palavras individuais, assim como o método nltk.word_tokenize().
Exemplo
A biblioteca NLTK também fornece uma classe chamada TweetTokenizer, que é projetada especificamente para tokenizar tweets (mensagens de texto curtas na plataforma de mídia social Twitter). Funciona de forma semelhante ao método word_tokenize(), mas leva em consideração as características específicas dos tweets, como hashtags, menções e emoticons.
Aqui está um exemplo de como usar o TweetTokenizer -
import nltk
# Download the NLTK tokenizer
nltk.download('punkt')
from nltk.tokenize import TweetTokenizer
# Define the text to be tokenized
tweet = "This is an example tweet with #hashtag and @mention. 😊"
# Create a TweetTokenizer object
tokenizer = TweetTokenizer()
# Tokenize the text
tokens = tokenizer.tokenize(tweet)
print(tokens)
Saída
Ele produzirá a seguinte saída -
['This', 'is', 'an', 'example', 'tweet', 'with', '#hashtag', 'and', '@mention', '😊']
Como você pode ver, o TweetTokenizer não apenas tokeniza o texto em palavras individuais, mas também preserva hashtags e menções como tokens separados. Além disso, ele pode lidar com emojis, emoticons e outros caracteres especiais comumente usados em tweets.
Isso pode ser útil se você estiver trabalhando com dados do Twitter e quiser analisar aspectos específicos dos tweets, como hashtags e menções.
Usando expressões regulares
Expressões regulares são uma ferramenta poderosa para combinar e manipular strings e podem ser usadas para executar uma ampla variedade de tarefas de tokenização.
Exemplo
Vamos ver um exemplo de uso de expressões regulares para realizar tokenização em Python -
import re
text = "This is a sample text"
# Split on one or more whitespace characters
pattern = r"\s+"
tokens = re.split(pattern, text)
print(tokens)
# Split on words (any sequence of characters that are not whitespace)
pattern = r"\S+"
tokens = re.split(pattern, text)
print(tokens)
# Split on numbers (any sequence of digits)
pattern = r"\d+"
tokens = re.split(pattern, text)
print(tokens)
Neste código, temos três seções -
-
A primeira seção usa um padrão de expressão regular que corresponde a um ou mais caracteres de espaço em branco e os tokens resultantes são as palavras na string.
A segunda seção usa um padrão de expressão regular que corresponde a qualquer sequência de caracteres que não seja espaço em branco, resultando em uma lista de caracteres individuais.
A terceira seção usa um padrão de expressão regular que corresponde a qualquer sequência de dígitos, e os tokens resultantes são as palavras e a pontuação na string.
Saída
Quando você executa este código, ele produzirá a seguinte saída -
['This', 'is', 'a', 'sample', 'text']
['', ' ', ' ', ' ', ' ', '']
['This is a sample text']
Usando o módulo string
O módulo string em Python fornece uma série de funções de processamento de string, incluindo uma classe Template que pode ser usada para tokenizar uma string.
Para usar a classe Template, você precisará importar o módulo string e definir uma string de modelo com espaços reservados para os tokens que deseja extrair. Por exemplo -
import string
text = "This is a $token text"
template = string.Template(text)
Você pode então usar o método replace() para substituir os espaços reservados por valores reais e dividir a string resultante no caractere de espaço -
tokens = template.substitute({"token": "sample"}).split(" ")
print(tokens)
Isso substituirá o espaço reservado $token pela palavra "sample" e dividirá a string resultante no caractere de espaço, resultando nos tokens ['This', is', 'a', 'sample', 'text'].
A classe Template é útil para tokenizar strings com valores variáveis, como modelos de emails ou mensagens.
Usando o módulo shlex
O módulo shlex fornece um analisador léxico para sintaxe estilo shell. Ele pode ser usado para dividir uma string em tokens da mesma maneira que o shell faz.
Para usar o módulo shlex, você precisará importá-lo primeiro -
import shlex
text = "This is a sample text"
tokens = shlex.split(text)
print(tokens)
Isso dividirá a string em caracteres de espaço, assim como o método split() e a biblioteca nltk. O módulo shlex é útil para tokenizar strings com sintaxe estilo shell, como argumentos de linha de comando.
Saída
Quando você executa este código, ele produzirá a seguinte saída -
['This', 'is', 'a', 'sample', 'text']
Conclusão
Tokenização é o processo de dividir uma string em pedaços menores, ou tokens. No contexto do processamento de linguagem natural, os tokens geralmente são palavras, sinais de pontuação e números. A tokenização é uma etapa importante de pré-processamento para muitas tarefas de PNL, pois permite trabalhar com palavras e símbolos individuais em vez de texto bruto.
Neste tutorial, vimos cinco maneiras de realizar tokenização em Python: usando o método split(), a biblioteca nltk, expressões regulares, o módulo string e o módulo shlex. Cada um desses métodos tem suas vantagens e limitações, por isso é importante escolher aquele que melhor se adapta às suas necessidades. Esteja você trabalhando com strings simples ou dados complexos de linguagem humana, Python fornece uma variedade de ferramentas e bibliotecas que você pode usar para tokenizar seu texto de maneira eficaz.