Pular para o conteúdo principal

O que é tokenização?

A tokenização divide o texto em partes menores para facilitar a análise da máquina, ajudando as máquinas a entender a linguagem humana.
Actualizado 22 de nov. de 2024  · 10 min de leitura

A tokenização, no âmbito do Processamento de Linguagem Natural (PLN) e da aprendizagem automática, refere-se ao processo de conversão de uma sequência de texto em partes menores, conhecidas como tokens. Esses tokens podem ser tão pequenos quanto caracteres ou tão longos quanto palavras. O principal motivo pelo qual esse processo é importante é que ele ajuda as máquinas a entender a linguagem humana, dividindo-a em pedaços pequenos, que são mais fáceis de analisar.

Aprimoramento de IA para iniciantes

Aprenda os fundamentos da IA e do ChatGPT do zero.
Aprenda IA de graça

Explicação sobre a tokenização

Imagine que você está tentando ensinar uma criança a ler. Em vez de mergulhar diretamente em parágrafos complexos, você começaria apresentando a eles letras individuais, depois sílabas e, por fim, palavras inteiras. De forma semelhante, a tokenização divide grandes extensões de texto em unidades mais digeríveis e compreensíveis para as máquinas.

O principal objetivo da tokenização é representar o texto de uma maneira que seja significativa para as máquinas sem perder o contexto. Ao converter o texto em tokens, os algoritmos podem identificar padrões com mais facilidade. Esse reconhecimento de padrões é fundamental, pois permite que as máquinas compreendam e respondam às informações humanas. Por exemplo, quando uma máquina encontra a palavra "running" (correndo), ela não a vê como uma entidade singular, mas sim como uma combinação de tokens que ela pode analisar e derivar o significado.

Para se aprofundar na mecânica, considere a frase: "Os chatbots são úteis". Quando você tokeniza essa frase por palavras, ela se transforma em uma matriz de palavras individuais:

["Chatbots", "are", "helpful"].

Essa é uma abordagem direta em que os espaços normalmente ditam os limites dos tokens. No entanto, se você fizer a tokenização por caracteres, a frase se fragmentará em:

["C", "h", "a", "t", "b", "o", "t", "s", " ", "a", "r", "e", " ", "h", "e", "l", "p", "f", "u", "l"].

Esse detalhamento em nível de caractere é mais granular e pode ser especialmente útil para determinados idiomas ou tarefas específicas de PNL.

Em essência, a tokenização é semelhante à dissecação de uma frase para entender sua anatomia. Assim como os médicos estudam células individuais para entender um órgão, os profissionais de PNL usam a tokenização para dissecar e entender a estrutura e o significado do texto.

Vale a pena observar que, embora nossa discussão se concentre na tokenização no contexto do processamento de idiomas, o termo "tokenização" também é usado nos domínios da segurança e da privacidade, especialmente em práticas de proteção de dados, como a tokenização de cartões de crédito. Nesses cenários, os elementos de dados confidenciais são substituídos por equivalentes não confidenciais, chamados de tokens. Essa distinção é fundamental para evitar qualquer confusão entre os dois contextos.

Tipos de tokenização

Os métodos de tokenização variam de acordo com a granularidade da divisão do texto e os requisitos específicos da tarefa em questão. Esses métodos podem variar desde dissecar o texto em palavras individuais até dividi-lo em caracteres ou unidades ainda menores. Veja a seguir uma análise mais detalhada dos diferentes tipos:

  • Tokenização de palavras. Esse método divide o texto em palavras individuais. Essa é a abordagem mais comum e é particularmente eficaz para idiomas com limites claros de palavras, como o inglês.
  • Tokenização de caracteres. Aqui, o texto é segmentado em caracteres individuais. Esse método é útil para idiomas que não têm limites claros de palavras ou para tarefas que exigem uma análise granular, como a correção ortográfica.
  • Tokenização de subpalavras. Ao atingir um equilíbrio entre a tokenização de palavras e caracteres, esse método divide o texto em unidades que podem ser maiores que um único caractere, mas menores que uma palavra completa. Por exemplo, "Chatbots" poderia ser tokenizado em "Chat" e "bots". Essa abordagem é especialmente útil para idiomas que formam o significado combinando unidades menores ou ao lidar com palavras fora do vocabulário em tarefas de PNL.

Aqui está uma tabela que explica as diferenças: 

Tipo Descrição Casos de uso
Tokenização de palavras Divide o texto em palavras individuais. Eficaz para idiomas com limites claros de palavras, como o inglês.
Tokenização de caracteres Segmenta o texto em caracteres individuais. Útil para idiomas sem limites claros de palavras ou tarefas que exigem análise granular.
Tokenização de subpalavras Quebra o texto em unidades maiores que caracteres, mas menores que palavras. É útil para idiomas com morfologia complexa ou para lidar com palavras fora do vocabulário.

Casos de uso de tokenização

A tokenização é a espinha dorsal de uma infinidade de aplicativos no mundo digital, permitindo que as máquinas processem e entendam grandes quantidades de dados de texto. Ao dividir o texto em partes gerenciáveis, a tokenização facilita uma análise de dados mais eficiente e precisa. Aqui estão alguns casos de uso importantes, juntamente com aplicativos do mundo real:

Mecanismos de pesquisa

Quando você digita uma consulta em um mecanismo de pesquisa como o Google, ele emprega a tokenização para dissecar sua entrada. Esse detalhamento ajuda o mecanismo a examinar bilhões de documentos para apresentar a você os resultados mais relevantes.

Tradução automática

Ferramentas como o Google Translate utilizam a tokenização para segmentar frases no idioma de origem. Uma vez tokenizados, esses segmentos podem ser traduzidos e reconstruídos no idioma de destino, garantindo que a tradução mantenha o contexto original.

Reconhecimento de fala

Os assistentes ativados por voz, como Siri ou Alexa, dependem muito da tokenização. Quando você faz uma pergunta ou dá um comando, suas palavras faladas são primeiro convertidas em texto. Esse texto é então tokenizado, permitindo que o sistema processe e atue de acordo com sua solicitação.

Análise de sentimento em avaliações

A tokenização desempenha um papel fundamental na extração de insights de conteúdo gerado pelo usuário, como avaliações de produtos ou publicações em mídias sociais. Por exemplo, um sistema de análise de sentimentos para plataformas de comércio eletrônico pode tokenizar as avaliações dos usuários para determinar se os clientes estão expressando sentimentos positivos, neutros ou negativos. Por exemplo:

  • A avaliação: "This product is amazing, but the delivery was late."
  • Após a tokenização: ["This", "product", "is", "amazing", ",", "but", "the", "delivery", "was", "late", "."]

Os tokens "amazing" (incrível) e "late" (atrasado) podem então ser processados pelo modelo de sentimento para atribuir rótulos de sentimentos mistos, fornecendo insights práticos para as empresas.

Chatbots e assistentes virtuais

A tokenização permite que os chatbots entendam e respondam às entradas do usuário de forma eficaz. Por exemplo, um chatbot de atendimento ao cliente pode tokenizar a consulta:

"I need to reset my password but can't find the link."

Que é tokenizado como: ["I", "need", "to", "reset", "my", "password", "but", "can't", "find", "the", "link"].

Esse detalhamento ajuda o chatbot a identificar a intenção do usuário ("redefinir senha") e a responder adequadamente, por exemplo, fornecendo um link ou instruções.

Desafios da tokenização

Navegar pelas complexidades da linguagem humana, com suas nuances e ambiguidades, apresenta um conjunto de desafios exclusivos para a tokenização. A seguir, você vai se aprofundar em alguns desses obstáculos, juntamente com os avanços recentes que os solucionam:

Ambiguidade

A linguagem é inerentemente ambígua. Considere a frase "Voar em aviões pode ser perigoso". Dependendo de como é simbolizado e interpretado, isso pode significar que o ato de pilotar aviões é arriscado ou que os aviões em voo representam um perigo. Essas ambiguidades podem levar a interpretações muito diferentes.

Idiomas sem limites claros

Alguns idiomas, como chinês, japonês ou tailandês, não têm espaços claros entre as palavras, o que torna a tokenização mais complexa. Determinar onde uma palavra termina e outra começa é um desafio significativo nesses idiomas.

Para resolver isso, os avanços nos modelos de tokenização multilíngue fizeram progressos significativos. Por exemplo:

  • O XLM-R (Cross-lingual Language Model - RoBERTa) usa tokenização de subpalavras e pré-treinamento em larga escala para lidar com mais de 100 idiomas de forma eficaz, inclusive aqueles sem limites claros de palavras.
  • O mBERT (Multilingual BERT) utiliza a tokenização do WordPiece e demonstrou um bom desempenho em vários idiomas, destacando-se na compreensão de estruturas sintáticas e semânticas, mesmo em idiomas com poucos recursos.

Esses modelos não apenas tokenizam o texto com eficiência, mas também aproveitam vocabulários de subpalavras compartilhados entre idiomas, melhorando a tokenização de scripts que normalmente são mais difíceis de processar.

Manuseio de caracteres especiais

Os textos geralmente contêm mais do que apenas palavras. Endereços de e-mail, URLs ou símbolos especiais podem ser difíceis de tokenizar. Por exemplo,"john.doe@email.com" deve ser tratado como um único token ou dividido no ponto ou no símbolo "@"? Os modelos avançados de tokenização agora incorporam regras e padrões aprendidos para garantir o tratamento consistente desses casos.

Implementação da tokenização

O cenário do processamento de linguagem natural oferece muitas ferramentas, cada uma adaptada a necessidades e complexidades específicas. Aqui você encontra um guia de algumas das ferramentas e metodologias mais importantes disponíveis para tokenização:

  • NLTK (Natural Language Toolkit). Um dos pilares da comunidade de NLP, o NLTK é uma biblioteca Python abrangente que atende a uma ampla gama de necessidades linguísticas. Ele oferece funcionalidades de tokenização de palavras e frases, o que o torna uma opção versátil tanto para iniciantes quanto para profissionais experientes.
  • Spacy. Uma alternativa moderna e eficiente ao NLTK, o Spacy é outra biblioteca de PNL baseada em Python. Ele é rápido e oferece suporte a vários idiomas, o que o torna um dos favoritos para aplicativos de grande escala.
  • Tokenizador BERT. Surgindo do modelo pré-treinado do BERT, esse tokenizador se destaca na tokenização com reconhecimento de contexto. Ele é hábil em lidar com as nuances e ambiguidades da linguagem, o que o torna a melhor opção para projetos avançados de PNL (consulte este tutorial sobre PNL com o BERT).
  • Técnicas avançadas.
    • Codificação de par de bytes (BPE). Um método de tokenização adaptável, o BPE tokeniza com base nos pares de bytes mais frequentes em um texto. É particularmente eficaz para idiomas que formam o significado combinando unidades menores.
    • SentencePiece. Um tokenizador e destokenizador de texto não supervisionado, principalmente para tarefas de geração de texto baseadas em redes neurais. Ele lida com vários idiomas com um único modelo e pode tokenizar o texto em subpalavras, tornando-o versátil para várias tarefas de PNL.

Transformadores de rostos abraçados

Uma das ferramentas mais populares para tarefas de PNL, a biblioteca Hugging Face Transformers oferece uma integração perfeita com o PyTorch, tornando-a ideal para pesquisa e produção. Essa biblioteca inclui tokenizadores avançados projetados para funcionar com modelos de transformadores de última geração, como BERT, GPT e RoBERTa. Os principais recursos incluem:

  • Tokenizadores rápidos: Criados com o Rust, esses tokenizadores oferecem melhorias significativas de velocidade, permitindo um pré-processamento mais rápido para grandes conjuntos de dados.
  • Suporte para tokenização de subpalavras: A biblioteca oferece suporte a Byte-Pair Encoding (BPE), WordPiece e tokenização Unigram, garantindo o tratamento eficiente de palavras fora do vocabulário e idiomas complexos.
  • Tokenizadores pré-treinados incorporados: Cada modelo da biblioteca Hugging Face Transformers vem com um tokenizador pré-treinado correspondente, garantindo compatibilidade e facilidade de uso. Por exemplo, o tokenizador do BERT divide o texto em subpalavras, o que o torna hábil em lidar com as nuances do idioma.

A escolha da ferramenta deve estar alinhada com os requisitos específicos do seu projeto. Para aqueles que estão dando os primeiros passos na PNL, o NLTK ou o Spacy podem oferecer uma curva de aprendizado mais acessível. No entanto, para projetos que exigem uma compreensão mais profunda do contexto e das nuances, o Hugging Face Transformers e o tokenizador BERT se destacam como opções robustas.

Como usei a tokenização em um projeto de classificador de classificação

Adquiri minha experiência inicial com tokenização de texto ao trabalhar em um projeto de portfólio há três anos. O projeto envolveu um conjunto de dados contendo avaliações e classificações de usuários, que usei para desenvolver um modelo de classificação de texto de aprendizagem profunda. Usei o `word_tokenize` do NLTK para limpar o texto e o `Tokenizer` do Keras para pré-processá-lo. Você pode usar o `Tokenizer` do NLTK para limpar o texto.

Vamos explorar como usei os tokenizadores no projeto:

  1. Ao trabalhar com dados de NLP, os tokenizadores são normalmente usados para processar e limpar o conjunto de dados de texto. O objetivo é eliminar palavras de parada, pontuação e outras informações irrelevantes do texto. Os tokenizadores transformam o texto em uma lista de palavras, que pode ser limpa usando uma função de limpeza de texto.
  2. Depois disso, usei o método Keras Tokenizer para transformar o texto em uma matriz para análise e preparar os tokens para o modelo de aprendizagem profunda. Nesse caso, usei o modelo Bidirectional LSTM, que produziu os resultados mais favoráveis.
  3. Em seguida, converti tokens em uma sequência usando a função `texts_to_sequences`.
  4. Antes de alimentar o modelo com a sequência, tive que adicionar um preenchimento para que a sequência de números tivesse o mesmo comprimento.
  5. Por fim, dividi o conjunto de dados em conjuntos de treinamento e teste, treinei o modelo no conjunto de treinamento e o avaliei no conjunto de teste.

O tokenizador tem muitos benefícios no campo do processamento de linguagem natural, onde é usado para limpar, processar e analisar dados de texto. O foco no processamento de texto pode melhorar o desempenho do modelo.

Recomendo que você faça o curso Introduction to Natural Language Processing in Python para saber mais sobre as técnicas de pré-processamento e se aprofundar no mundo dos tokenizadores.

Você quer saber mais sobre IA e aprendizado de máquina? Confira estes recursos:

Obtenha uma das melhores certificações de IA

Demonstre que você pode usar a IA de forma eficaz e responsável.

Perguntas frequentes

Qual é a diferença entre tokenização de palavras e caracteres?

A tokenização de palavras divide o texto em palavras, enquanto a tokenização de caracteres o divide em caracteres.

Por que a tokenização é importante na PNL?

Ele ajuda as máquinas a entender e processar a linguagem humana, dividindo-a em partes gerenciáveis.

Posso usar vários métodos de tokenização no mesmo texto?

Sim, dependendo da tarefa em questão, a combinação de métodos pode produzir melhores resultados.

Quais são as ferramentas de tokenização mais comuns usadas em NLP?

Algumas das ferramentas de tokenização mais populares usadas em NLP são NLTK, Spacy, Stanford CoreNLP, GENSIM e TensorFlow Tokenizer. Cada um tem seus próprios pontos fortes e é adequado para diferentes tarefas.

Como a tokenização funciona em idiomas como chinês ou japonês, que não têm espaços?

A tokenização usa técnicas como a segmentação em nível de caractere ou a descoberta dos limites de palavras mais prováveis com base em modelos estatísticos para idiomas sem separadores explícitos de palavras.

Como a tokenização ajuda os mecanismos de pesquisa a retornar resultados relevantes?

Ele divide as consultas e os documentos em unidades indexáveis, permitindo pesquisas e correspondências eficientes. Isso aumenta a velocidade e a precisão.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sou um cientista de dados certificado que gosta de criar aplicativos de aprendizado de máquina e escrever blogs sobre ciência de dados. No momento, estou me concentrando na criação e edição de conteúdo e no trabalho com modelos de linguagem de grande porte.

Temas
Relacionado

blog

O que é geração de texto?

A geração de texto é um processo em que a IA produz um texto que se assemelha à comunicação humana natural.
Abid Ali Awan's photo

Abid Ali Awan

4 min

blog

O que são embeddings vetoriais? Uma explicação intuitiva

As incorporações de vetores são representações numéricas de palavras ou frases que capturam seus significados e relacionamentos, ajudando os modelos de machine learning a entender o texto com mais eficiência.
Tom Farnschläder's photo

Tom Farnschläder

9 min

blog

O que é um algoritmo?

Aprenda algoritmos e sua importância no aprendizado de máquina. Entenda como os algoritmos resolvem problemas e executam tarefas com etapas bem definidas.
DataCamp Team's photo

DataCamp Team

11 min

tutorial

Tiktoken Tutorial: Biblioteca Python da OpenAI para tokenização de texto

O Tiktoken é um tokenizador BPE rápido desenvolvido pela OpenAI, usado principalmente para contar tokens para seus grandes modelos de linguagem e garantir um processamento de texto eficiente dentro dos limites especificados.
Dimitri Didmanidze's photo

Dimitri Didmanidze

5 min

tutorial

Guia de Introdução ao Ajuste Fino de LLMs

O ajuste fino dos grandes modelos de linguagem (LLMs, Large Language Models) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de textos. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos pelo processo de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

12 min

tutorial

Stemming e lematização em Python

Este tutorial aborda o stemming e a lematização de um ponto de vista prático usando o pacote Python Natural Language ToolKit (NLTK).
Kurtis Pykes 's photo

Kurtis Pykes

12 min

Ver maisVer mais