¿Qué es la tokenización?
La tokenización, en el ámbito del Procesamiento del Lenguaje Natural (PLN) y el aprendizaje automático, se refiere al proceso de convertir una secuencia de texto en partes más pequeñas, conocidas como tokens. Estas fichas pueden ser tan pequeñas como caracteres o tan largas como palabras. La razón principal por la que este proceso es importante es que ayuda a las máquinas a comprender el lenguaje humano al descomponerlo en trozos del tamaño de un bocado, que son más fáciles de analizar.
Perfeccionamiento en IA para principiantes
Explicación de la tokenización
Imagina que intentas enseñar a leer a un niño. En lugar de sumergirte directamente en párrafos complejos, empezarías introduciéndoles letras sueltas, luego sílabas y, por último, palabras enteras. De forma similar, la tokenización descompone grandes extensiones de texto en unidades más digeribles y comprensibles para las máquinas.
El objetivo principal de la tokenización es representar el texto de forma que tenga sentido para las máquinas sin perder su contexto. Al convertir el texto en tokens, los algoritmos pueden identificar patrones más fácilmente. Este reconocimiento de patrones es crucial porque hace posible que las máquinas comprendan y respondan a la información humana. Por ejemplo, cuando una máquina se encuentra con la palabra "correr", no la ve como una entidad singular, sino como una combinación de tokens que puede analizar y de los que puede extraer un significado.
Para profundizar en la mecánica, considera la frase: "Los chatbots son útiles". Cuando tokenizamos esta frase por palabras, se transforma en una matriz de palabras individuales:
["Chatbots", "are", "helpful"].
Se trata de un enfoque sencillo en el que los espacios suelen dictar los límites de las fichas. Sin embargo, si tuviéramos que tokenizar por caracteres, la frase se fragmentaría en
["C", "h", "a", "t", "b", "o", "t", "s", " ", "a", "r", "e", " ", "h", "e", "l", "p", "f", "u", "l"].
Este desglose a nivel de caracteres es más granular y puede ser especialmente útil para determinadas lenguas o tareas específicas de PNL.
En esencia, la tokenización es como diseccionar una frase para comprender su anatomía. Al igual que los médicos estudian las células individuales para comprender un órgano, los profesionales de la PNL utilizan la tokenización para diseccionar y comprender la estructura y el significado del texto.
Merece la pena señalar que, aunque nuestro debate se centra en la tokenización en el contexto del procesamiento del lenguaje, el término "tokenización" también se utiliza en los ámbitos de la seguridad y la privacidad, sobre todo en prácticas de protección de datos como la tokenización de tarjetas de crédito. En estos casos, los elementos de datos sensibles se sustituyen por equivalentes no sensibles, llamados tokens. Esta distinción es crucial para evitar cualquier confusión entre ambos contextos.
Tipos de tokenización
Los métodos de tokenización varían en función de la granularidad del desglose del texto y de los requisitos específicos de la tarea en cuestión. Estos métodos pueden ir desde diseccionar el texto en palabras individuales hasta descomponerlo en caracteres o incluso en unidades más pequeñas. Aquí tienes una visión más detallada de los distintos tipos:
- Tokenización de palabras. Este método descompone el texto en palabras individuales. Es el enfoque más habitual y resulta especialmente eficaz en lenguas con límites claros de palabras, como el inglés.
- Tokenización de caracteres. Aquí, el texto se segmenta en caracteres individuales. Este método es beneficioso para las lenguas que carecen de límites claros entre las palabras o para tareas que requieren un análisis granular, como la corrección ortográfica.
- Tokenización de subpalabras. Buscando un equilibrio entre la tokenización de palabras y la de caracteres, este método divide el texto en unidades que pueden ser mayores que un solo carácter, pero menores que una palabra completa. Por ejemplo, "Chatbots" podría tokenizarse en "Chat" y "bots". Este enfoque es especialmente útil para las lenguas que forman significado combinando unidades más pequeñas o cuando se trata de palabras fuera de vocabulario en tareas de PNL.
Aquí tienes una tabla que explica las diferencias:
Tipo | Descripción | Casos prácticos |
---|---|---|
Tokenización de palabras | Rompe el texto en palabras individuales. | Eficaz para lenguas con límites claros de palabras, como el inglés. |
Tokenización de caracteres | Segmenta el texto en caracteres individuales. | Útil para lenguas sin límites claros de palabras o tareas que requieran un análisis granular. |
Tokenización de subpalabras | Rompe el texto en unidades mayores que caracteres pero menores que palabras. | Beneficioso para lenguas con morfología compleja o para manejar palabras fuera de vocabulario. |
Casos prácticos de tokenización
La tokenización sirve de columna vertebral para una miríada de aplicaciones en el ámbito digital, permitiendo a las máquinas procesar y comprender enormes cantidades de datos de texto. Al dividir el texto en trozos manejables, la tokenización facilita un análisis de datos más eficaz y preciso. He aquí algunos casos de uso destacados, junto con aplicaciones del mundo real:
Motores de búsqueda
Cuando escribes una consulta en un motor de búsqueda como Google, éste emplea la tokenización para diseccionar tu entrada. Este desglose ayuda al motor a cribar miles de millones de documentos para presentarte los resultados más relevantes.
Traducción automática
Herramientas como Google Translate utilizan la tokenización para segmentar frases en la lengua de origen. Una vez tokenizados, estos segmentos pueden traducirse y luego reconstruirse en la lengua de destino, garantizando que la traducción conserve el contexto original.
Reconocimiento de voz
Los asistentes activados por voz, como Siri o Alexa, dependen en gran medida de la tokenización. Cuando planteas una pregunta o una orden, tus palabras habladas se convierten primero en texto. A continuación, este texto se tokeniza, lo que permite al sistema procesar tu solicitud y actuar en consecuencia.
Análisis del sentimiento en las opiniones
La tokenización desempeña un papel crucial a la hora de extraer información del contenido generado por los usuarios, como las reseñas de productos o las publicaciones en redes sociales. Por ejemplo, un sistema de análisis de sentimientos para plataformas de comercio electrónico podría tokenizar las opiniones de los usuarios para determinar si los clientes expresan sentimientos positivos, neutrales o negativos. Por ejemplo:
- La revisión:
"This product is amazing, but the delivery was late."
- Después de la tokenización:
["This", "product", "is", "amazing", ",", "but", "the", "delivery", "was", "late", "."]
Los tokens "increíble" y "tarde" pueden ser procesados por el modelo de sentimiento para asignar etiquetas de sentimiento mixtas, proporcionando información procesable para las empresas.
Chatbots y asistentes virtuales
La tokenización permite a los chatbots comprender y responder eficazmente a las entradas de los usuarios. Por ejemplo, un chatbot de atención al cliente podría tokenizar la consulta:
"I need to reset my password but can't find the link."
Que se tokeniza como: ["I", "need", "to", "reset", "my", "password", "but", "can't", "find", "the", "link"]
.
Este desglose ayuda al chatbot a identificar la intención del usuario ("restablecer contraseña") y a responder adecuadamente, por ejemplo proporcionando un enlace o instrucciones.
Desafíos de la tokenización
Navegar por las complejidades del lenguaje humano, con sus matices y ambigüedades, presenta un conjunto de retos únicos para la tokenización. A continuación profundizamos en algunos de estos obstáculos, junto con los avances recientes que los abordan:
Ambigüedad
El lenguaje es intrínsecamente ambiguo. Considera la frase "Volar en avión puede ser peligroso". Dependiendo de cómo se interprete, podría significar que el acto de pilotar aviones es arriesgado o que los aviones en vuelo suponen un peligro. Tales ambigüedades pueden dar lugar a interpretaciones muy diferentes.
Lenguas sin límites claros
Algunas lenguas, como el chino, el japonés o el tailandés, carecen de espacios claros entre las palabras, lo que hace que la tokenización sea más compleja. Determinar dónde acaba una palabra y empieza otra es un reto importante en estas lenguas.
Para hacer frente a esto, los avances en los modelos de tokenización multilingüe han dado pasos importantes. Por ejemplo:
- XLM-R (Cross-lingual Language Model - RoBERTa) utiliza la tokenización de subpalabras y el preentrenamiento a gran escala para manejar más de 100 idiomas con eficacia, incluidos los que no tienen límites claros de palabras.
- mBERT (BERT Multilingüe) emplea la tokenización WordPiece y ha demostrado un gran rendimiento en diversas lenguas, destacando en la comprensión de estructuras sintácticas y semánticas incluso en lenguas con pocos recursos.
Estos modelos no sólo tokenizan el texto de forma eficaz, sino que también aprovechan los vocabularios de subpalabras compartidos entre lenguas, mejorando la tokenización de escrituras que suelen ser más difíciles de procesar.
Manejo de caracteres especiales
Los textos suelen contener algo más que palabras. Las direcciones de correo electrónico, las URL o los símbolos especiales pueden ser difíciles de tokenizar. Por ejemplo, ¿"john.doe@email.com" debe tratarse como un único token o dividirse en el punto o en el símbolo "@"? Los modelos avanzados de tokenización incorporan ahora reglas y patrones aprendidos para garantizar un tratamiento coherente de estos casos.
Implementar la tokenización
El panorama del Procesamiento del Lenguaje Natural ofrece muchas herramientas, cada una adaptada a necesidades y complejidades específicas. He aquí una guía de algunas de las herramientas y metodologías más destacadas disponibles para la tokenización:
- NLTK (Kit de herramientas de lenguaje natural). NLTK, un incondicional de la comunidad de la PNL, es una completa biblioteca de Python que satisface una amplia gama de necesidades lingüísticas. Ofrece funciones de tokenización de palabras y frases, lo que la convierte en una opción versátil tanto para principiantes como para profesionales experimentados.
- Spacy. Una alternativa moderna y eficaz a NLTK, Spacy es otra biblioteca de PNL basada en Python. Presume de velocidad y admite varios idiomas, lo que lo convierte en el favorito para aplicaciones a gran escala.
- Tokenizador BERT. Surgido del modelo preentrenado BERT, este tokenizador destaca en la tokenización consciente del contexto. Es experto en el manejo de los matices y ambigüedades del lenguaje, lo que lo convierte en la mejor opción para proyectos avanzados de PNL (consulta este tutorial sobre PNL con BERT).
- Técnicas avanzadas.
- Codificación Byte-Pair (BPE). Un método de tokenización adaptativa, BPE tokeniza basándose en los pares de bytes más frecuentes de un texto. Es especialmente eficaz para las lenguas que forman el significado combinando unidades más pequeñas.
- SentencePiece. Un tokenizador y detokenizador de texto no supervisado, principalmente para tareas de generación de texto basadas en Redes Neuronales. Maneja varios idiomas con un solo modelo y puede tokenizar el texto en subpalabras, lo que lo hace versátil para diversas tareas de PNL.
Transformadores de Caras Abrazadas
Una de las herramientas más populares para las tareas de PNL, la biblioteca Transformadores de Caras Abrazadas proporciona una integración perfecta con PyTorch, lo que la hace ideal tanto para la investigación como para la producción. Esta biblioteca incluye tokenizadores avanzados diseñados para trabajar con modelos de transformadores de última generación como BERT, GPT y RoBERTa. Las características principales son:
- Tokenizadores rápidos: Construidos con Rust, estos tokenizadores ofrecen importantes mejoras de velocidad, permitiendo un preprocesamiento más rápido para grandes conjuntos de datos.
- Soporte para la tokenización de subpalabras: La biblioteca admite la codificación Byte-Pair (BPE), WordPiece y la tokenización Unigram, lo que garantiza un tratamiento eficaz de las palabras fuera de vocabulario y los idiomas complejos.
- Tokenizadores preentrenados incorporados: Cada modelo de la biblioteca de Transformadores de Caras Abrazadas viene con su correspondiente tokenizador preentrenado, lo que garantiza su compatibilidad y facilidad de uso. Por ejemplo, el tokenizador BERT divide el texto en subpalabras, por lo que es experto en el manejo de matices lingüísticos.
La elección de la herramienta debe ajustarse a los requisitos específicos de tu proyecto. Para los que dan sus primeros pasos en PNL, NLTK o Spacy pueden ofrecer una curva de aprendizaje más asequible. Sin embargo, para los proyectos que exigen una comprensión más profunda del contexto y los matices, los Transformadores de Caras Abrazadas y el tokenizador BERT destacan como opciones sólidas.
Cómo utilicé la tokenización para un proyecto de clasificador de valoraciones
Adquirí mi experiencia inicial con la tokenización de texto mientras trabajaba en un proyecto de cartera hace tres años. El proyecto consistió en un conjunto de datos que contenía reseñas y valoraciones de usuarios, que utilicé para desarrollar un modelo de clasificación de texto de aprendizaje profundo. He utilizado `word_tokenize` de NLTK para limpiar el texto y `Tokenizer` de Keras para preprocesarlo.
Exploremos cómo utilicé los tokenizadores en el proyecto:
- Cuando se trabaja con datos de PNL, se suelen utilizar tokenizadores para procesar y limpiar el conjunto de datos de texto. El objetivo es eliminar del texto las palabras vacías, la puntuación y otra información irrelevante. Los tokenizadores transforman el texto en una lista de palabras, que pueden limpiarse mediante una función de limpieza de texto.
- Después, utilicé el método Tokenizer de Keras para transformar el texto en una matriz para su análisis y preparar los tokens para el modelo de aprendizaje profundo. En este caso, utilicé el modelo LSTM bidireccional, que produjo los resultados más favorables.
- A continuación, convertí los tokens en una secuencia utilizando la función `textos_a_secuencias`.
- Antes de introducir la secuencia en el modelo, tuve que añadir relleno para que la secuencia de números tuviera la misma longitud.
- Por último, dividí el conjunto de datos en conjuntos de entrenamiento y de prueba, entrené el modelo en el conjunto de entrenamiento y lo evalué en el conjunto de prueba.
El tokenizador tiene muchas ventajas en el campo del procesamiento del lenguaje natural, donde se utiliza para limpiar, procesar y analizar datos de texto. Centrarse en el tratamiento del texto puede mejorar el rendimiento del modelo.
Te recomiendo que sigas el curso Introducción al Procesamiento del Lenguaje Natural en Python para aprender más sobre las técnicas de preprocesamiento y profundizar en el mundo de los tokenizadores.
¿Quieres saber más sobre IA y aprendizaje automático? Consulta estos recursos:
Obtén una certificación superior en IA
Preguntas frecuentes
¿Qué diferencia hay entre la tokenización de palabras y la de caracteres?
La tokenización de palabras divide el texto en palabras, mientras que la tokenización de caracteres lo divide en caracteres.
¿Por qué es importante la tokenización en la PNL?
Ayuda a las máquinas a comprender y procesar el lenguaje humano descomponiéndolo en fragmentos manejables.
¿Puedo utilizar varios métodos de tokenización en el mismo texto?
Sí, dependiendo de la tarea a realizar, la combinación de métodos puede dar mejores resultados.
¿Cuáles son las herramientas de tokenización más utilizadas en PNL?
Algunas de las herramientas de tokenización más utilizadas en PNL son NLTK, Spacy, Stanford CoreNLP, GENSIM y TensorFlow Tokenizer. Cada uno tiene sus puntos fuertes y es adecuado para tareas diferentes.
¿Cómo funciona la tokenización en lenguas como el chino o el japonés que no tienen espacios?
La tokenización utiliza técnicas como la segmentación a nivel de caracteres o la búsqueda de los límites más probables de las palabras basada en modelos estadísticos para las lenguas sin separadores explícitos de palabras.
¿Cómo ayuda la tokenización a que los motores de búsqueda devuelvan resultados relevantes?
Descompone las consultas y los documentos en unidades indexables, permitiendo búsquedas y coincidencias eficaces. Esto potencia la velocidad y la precisión.
Soy un científico de datos certificado que disfruta creando aplicaciones de aprendizaje automático y escribiendo blogs sobre ciencia de datos. Actualmente me centro en la creación de contenidos, la edición y el trabajo con grandes modelos lingüísticos.
blog
¿Qué es vector embedding? Una explicación intuitiva
blog
¿Qué son los datos etiquetados?
blog
Explicación de la Comprensión del Lenguaje Natural (NLU)
Dimitri Didmanidze
7 min
tutorial
Tutorial de Tiktoken: Biblioteca Python de OpenAI para tokenizar texto
Dimitri Didmanidze
5 min
tutorial
Stemming y lematización en Python
tutorial