Introducción
En este proyecto, aprenderás a implementar un sistema de tokenización de texto utilizando Python. La tokenización de texto es una tarea fundamental en el procesamiento del lenguaje natural, donde un texto dado se divide en unidades más pequeñas llamadas tokens. Estos tokens pueden representar palabras, números, signos de puntuación u otros elementos significativos en el texto. La capacidad de tokenizar texto es esencial para muchas aplicaciones, como el análisis léxico en compiladores, el análisis de sentimiento y la clasificación de texto.
👀 Vista previa
## 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')]
🎯 Tareas
En este proyecto, aprenderás:
- Cómo definir una clase
Tokenpara representar los tokens en el texto - Cómo implementar una función
generate_tokensque tome un texto de entrada y genere un flujo de tokens - Cómo probar el proceso de tokenización con un texto de muestra
🏆 Logros
Después de completar este proyecto, podrás:
- Comprender el concepto de tokenización de texto y su importancia en el procesamiento del lenguaje natural
- Implementar un sistema básico de tokenización de texto utilizando Python
- Personalizar el proceso de tokenización definiendo diferentes tipos de tokens y sus correspondientes expresiones regulares
- Probar y depurar el sistema de tokenización con varios textos de entrada
Definiendo la clase Token
En este paso, aprenderás a definir la clase Token, que representará los tokens en el proceso de tokenización de texto.
Abra el archivo
/home/labex/project/texttokenizer.pyen un editor de texto.Al principio del archivo, importe la función
namedtupledel módulocollections:from collections import namedtupleDefina la clase
Tokencomo un named tuple con dos atributos:typeyvalue.Token = namedtuple("Token", ["type", "value"])
Implementando la función generate_tokens
En este paso, implementarás la función generate_tokens, que tomará el texto de entrada y generará un flujo de tokens.
En el archivo
texttokenizer.py, defina la funcióngenerate_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)La función
generate_tokensprimero define un diccionariotoken_specificationque mapea los tipos de tokens a sus correspondientes expresiones regulares.Luego combina todas las expresiones regulares en una sola gran expresión regular utilizando el operador
|.La función luego utiliza la función
re.finditerpara encontrar todas las coincidencias en el texto de entrada y produce un objetoTokenpara cada coincidencia, con el tipo y el valor del token.
Probando la tokenización
En este paso, probarás la función generate_tokens analizando un texto de muestra.
Al final del archivo
texttokenizer.py, agregue el siguiente código:if __name__ == "__main__": text = "total = 1 + 2 * 3" tokens = list(generate_tokens(text)) print(tokens)Guarde el archivo
texttokenizer.py.Ejecute el script
texttokenizer.pydesde el directorio/home/labex/project:python texttokenizer.pyLa salida debe ser una lista de objetos
Tokenque representan los tokens en el 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')]
¡Felicitaciones! Has implementado con éxito la función generate_tokens y la has probado con un texto de muestra. En el siguiente paso, aprenderás a usar la función generate_tokens para tokenizar un texto más largo.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



