Introdução
Neste projeto, você aprenderá como implementar um sistema de tokenização de texto usando Python. A tokenização de texto é uma tarefa fundamental no processamento de linguagem natural (PLN), onde um texto é dividido em unidades menores chamadas tokens. Esses tokens podem representar palavras, números, pontuação ou outros elementos significativos no texto. A capacidade de tokenizar texto é essencial para muitas aplicações, como análise léxica em compiladores, análise de sentimento e classificação de texto.
👀 Visualização
## text = 'total = 1 + 2 * 3'
tokens = [Token(type='NAME', value='total'), Token(type='WS', value=' '), Token(type='EQ', value='='), Token(type='WS', value=' '), Token(type='NUM', value='1'), Token(type='WS', value=' '), Token(type='ADD', value='+'), Token(type='WS', value=' '), Token(type='NUM', value='2'), Token(type='WS', value=' '), Token(type='MUL', value='*'), Token(type='WS', value=' '), Token(type='NUM', value='3')]
🎯 Tarefas
Neste projeto, você aprenderá:
- Como definir uma classe
Tokenpara representar os tokens no texto - Como implementar uma função
generate_tokensque recebe um texto de entrada e gera um fluxo de tokens - Como testar o processo de tokenização com um texto de exemplo
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Compreender o conceito de tokenização de texto e sua importância no processamento de linguagem natural
- Implementar um sistema básico de tokenização de texto usando Python
- Personalizar o processo de tokenização definindo diferentes tipos de tokens e suas expressões regulares correspondentes
- Testar e depurar o sistema de tokenização com vários textos de entrada
Definindo a Classe Token
Nesta etapa, você aprenderá como definir a classe Token, que representará os tokens no processo de tokenização de texto.
Abra o arquivo
/home/labex/project/texttokenizer.pyem um editor de texto.No início do arquivo, importe a função
namedtupledo módulocollections:from collections import namedtupleDefina a classe
Tokencomo uma named tuple com dois atributos:typeevalue.Token = namedtuple("Token", ["type", "value"])
Implementando a Função generate_tokens
Nesta etapa, você implementará a função generate_tokens, que receberá o texto de entrada e gerará um fluxo de tokens.
No arquivo
texttokenizer.py, defina a funçãogenerate_tokens:def generate_tokens(text): ## Define token types and corresponding regular expressions token_specification = { "NAME": r"[a-zA-Z_][a-zA-Z_0-9]*", "NUM": r"\d+", "ADD": r"\+", "SUB": r"-", "MUL": r"\*", "DIV": r"/", "EQ": r"=", "WS": r"\s+", } ## Combine regular expressions into one large regular expression regex = "|".join("(?P<%s>%s)" % pair for pair in token_specification.items()) scanner = re.finditer(regex, text) for m in scanner: type = m.lastgroup value = m.group() yield Token(type, value)A função
generate_tokensprimeiro define um dicionáriotoken_specificationque mapeia os tipos de token para suas expressões regulares correspondentes.Em seguida, ela combina todas as expressões regulares em uma única e grande expressão regular usando o operador
|.A função então usa a função
re.finditerpara encontrar todas as correspondências no texto de entrada e produz um objetoTokenpara cada correspondência, com o tipo e o valor do token.
Testando a Tokenização
Nesta etapa, você testará a função generate_tokens analisando um texto de exemplo.
No final do arquivo
texttokenizer.py, adicione o seguinte código:if __name__ == "__main__": text = "total = 1 + 2 * 3" tokens = list(generate_tokens(text)) print(tokens)Salve o arquivo
texttokenizer.py.Execute o script
texttokenizer.pydo diretório/home/labex/project:python texttokenizer.pyA saída deve ser uma lista de objetos
Tokenrepresentando os tokens no texto de entrada:[Token(type='NAME', value='total'), Token(type='WS', value=' '), Token(type='EQ', value='='), Token(type='WS', value=' '), Token(type='NUM', value='1'), Token(type='WS', value=' '), Token(type='ADD', value='+'), Token(type='WS', value=' '), Token(type='NUM', value='2'), Token(type='WS', value=' '), Token(type='MUL', value='*'), Token(type='WS', value=' '), Token(type='NUM', value='3')]
Parabéns! Você implementou com sucesso a função generate_tokens e a testou com um texto de exemplo. Na próxima etapa, você aprenderá como usar a função generate_tokens para tokenizar um texto maior.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.






