Tokenización en el procesamiento del lenguaje natural
Publicado: 2020-12-01Cuando se trata de datos textuales, el paso más básico es tokenizar el texto. Los 'tokens' pueden considerarse palabras individuales, oraciones o cualquier unidad mínima. Por lo tanto, dividir las oraciones en unidades separadas no es más que tokenización.
Al final de este tutorial, tendrá el conocimiento de lo siguiente:
- ¿Qué es la tokenización?
- Diferentes tipos de tokenizaciones
- Diferentes formas de tokenizar
La tokenización es el paso más fundamental en una canalización de NLP.
Pero ¿por qué es eso?
Estas palabras o tokens se convierten luego en valores numéricos para que la computadora pueda entenderlos y darles sentido. Estos tokens se limpian, preprocesan y luego se convierten en valores numéricos mediante los métodos de "Vectorización". Luego, estos vectores se pueden alimentar a los algoritmos de aprendizaje automático y las redes neuronales.
La tokenización no solo puede ser a nivel de palabra, sino también a nivel de oración. Es decir, el texto puede tokenizarse con palabras como tokens u oraciones como tokens. Analicemos algunas formas de realizar la tokenización.

Tabla de contenido
División de Python ()
La función split() de Python devuelve la lista de tokens divididos por el carácter mencionado. Por defecto, divide las palabras por espacios.
Tokenización de palabras
Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es esencial en las tareas de PNL”. Fichas = Mystr.split() |
#Producción: >> [ 'Esto' , 'es' , 'a' , 'tokenización' , 'tutorial.' , 'Nosotros' , 'somos' , 'aprendizaje' , 'diferente' , 'tokenización' , 'métodos' , 'y' , 'maneras?' , 'Tokenización' , 'es' , 'esencial' , 'en' , 'PNL' , 'tareas'. ] |
Tokenización de oraciones
El mismo texto se puede dividir en oraciones pasando el separador como ".".
Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es esencial en las tareas de PNL”. Fichas = Mystr.split( “.” ) |
#Producción: >> [ 'Este es un tutorial de tokenización' , '¿Estamos aprendiendo diferentes métodos y formas de tokenización? La tokenización es fundamental en las tareas de la PNL' , ” ] |
Aunque esto parece directo y simple, tiene muchos defectos. Y si te das cuenta, se divide después del último "." así como. Y no considera el "?" como indicador de la siguiente oración porque solo toma un carácter, que es ".".
Los datos de texto en escenarios de la vida real están muy sucios y no están bien expresados en palabras y oraciones. Es posible que haya una gran cantidad de texto basura, lo que hará que sea muy difícil para usted tokenizar de esta manera. Por lo tanto, avancemos hacia mejores y más optimizadas formas de tokenización.
Debe leer: Las 10 técnicas principales de aprendizaje profundo que debe conocer
Expresión regular
La expresión regular (RegEx) es una secuencia de caracteres que se utiliza para comparar con un patrón de caracteres. Usamos RegEx para encontrar ciertos patrones, palabras o caracteres para reemplazarlos o realizar cualquier otra operación en ellos. Python tiene el módulo re que se usa para trabajar con RegEx. Veamos cómo podemos tokenizar el texto usando re .
Tokenización de palabras
Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” Fichas = re.findall( “[\w']+” , Mystr) |
#Producción: >> [ 'Esto' , 'es' , 'un' , 'tokenización' , 'tutorial' , 'Nosotros' , 'somos' , 'aprendizaje' , 'diferente' , 'tokenización' , 'métodos' , 'y' , 'formas' , 'tokenización' , 'es' , 'esencial' , 'en' , 'PNL' , 'tareas' ] |
Entonces, ¿qué pasó aquí?
La función re.findall() compara todas las secuencias que coinciden con ella y las almacena en una lista. La expresión “[\w]+” significa que cualquier carácter, ya sean letras, números o guiones bajos (“_”). El símbolo “+” significa todas las ocurrencias del patrón. Básicamente, escaneará todos los caracteres y los colocará en la lista como un token cuando encuentre un espacio en blanco o cualquier otro carácter especial además de un guión bajo.
Tenga en cuenta que la palabra "NLP's" es una sola palabra, pero nuestra expresión regular la dividió en "NLP" y "s" debido al apóstrofo.
Tokenización de oraciones
Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” Tokens = re.compile( '[.!?] ' ).split(Mystr) |
#Producción: >> [ 'Este es un tutorial de tokenización' , 'Estamos aprendiendo diferentes métodos y formas de tokenización' , 'La tokenización es esencial en las tareas de NLP.' ] |
Ahora, aquí combinamos varios caracteres de división en una sola condición y llamamos a la función re.split. Por lo tanto, cuando encuentre alguno de estos 3 caracteres, lo tratará como una oración separada. Esta es una ventaja de RegEx sobre la función de división de python donde no puede pasar varios caracteres para dividir.
Lea también: Aplicaciones del procesamiento del lenguaje natural
Tokenizadores NLTK
Natural Language Toolkit (NLTK) es una biblioteca de Python específicamente para manejar tareas de NLP. NLTK consta de funciones y módulos incorporados que se crean para algunos procesos específicos de la canalización completa de NLP. Echemos un vistazo a cómo NLTK maneja la tokenización.
Tokenización de palabras
NLTK tiene un módulo separado, NLTK.tokenize, para manejar tareas de tokenización. Para la tokenización de palabras, uno de los métodos que lo componen es word_tokenize.
desde nltk.tokenize importar word_tokenize Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” word_tokenize(Mistr) |
#Producción: >>[ 'Esto' , 'es' , 'a' , 'tokenización' , 'tutorial' , '.' , 'Nosotros' , 'somos' , 'aprendizaje' , 'diferente' , 'tokenización' , 'métodos' , ',' ' y' , 'formas' , '?' , 'Tokenización' , 'es' , 'esencial' , 'en' , 'PNL' , 'tareas' , '.' ] |
Tenga en cuenta que word_tokenize consideró los signos de puntuación como tokens separados. Para evitar que esto suceda, debemos eliminar todos los signos de puntuación y los caracteres especiales antes de este paso.

Tokenización de oraciones
de nltk.tokenize importar sent_tokenize Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” sent_tokenize(Mistr) |
#Producción: >> [ 'Este es un tutorial de tokenización.' , '¿Estamos aprendiendo diferentes métodos y formas de tokenización?' , 'La tokenización es esencial en las tareas de PNL.' ] |
Tokenizadores SpaCy
SpaCy es probablemente una de las bibliotecas más avanzadas para tareas de PNL. Consta de soporte para casi 50 idiomas. Por lo tanto, el primer paso es descargar el núcleo para el idioma inglés. A continuación, necesitamos importar el módulo en inglés que carga el tokenizador, el etiquetador, el analizador, el NER y los vectores de palabras.
Tokenización de palabras
de spacy.lang.en importar inglés pnl = inglés() Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” mi_doc = nlp(Mystr) fichas = [] para token en my_doc: Fichas.append(ficha.texto) fichas |
#Producción: >> [ 'Esto' , 'es' , 'a' , 'tokenización' , 'tutorial' , '.' , 'Nosotros' , 'somos' , 'aprendizaje' , 'diferente' , 'tokenización' , 'métodos' , ',' ' y' , 'formas' , '?' , 'Tokenización' , 'es' , 'esencial' , 'en' , 'PNL' , “'s” , 'tareas' , '.' ] |
Aquí, cuando llamamos a la función nlp con MyStr pasado, crea los tokens de palabras para ella. Luego los indexamos y los almacenamos en una lista separada.
Tokenización de oraciones
de spacy.lang.en importar inglés pnl = inglés() sent_tokenizer = nlp.create_pipe( 'sentencizer' ) nlp.add_pipe(sent_tokenizer) Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” mi_doc = nlp(Mystr) Envíos = [] para enviado en doc.sents: Enviados.append(enviado.texto) Envía |
#Producción: >> [ 'Este es un tutorial de tokenización.' , '¿Estamos aprendiendo diferentes métodos y formas de tokenización?' , “La tokenización es fundamental en las tareas de la PNL.” ] |
Para la tokenización de oraciones, llame al método creat_pipe para crear el componente sentencizer que crea tokens de oraciones. Luego agregamos la canalización al objeto nlp. Cuando pasamos la cadena de texto al objeto nlp, esta vez crea tokens de oración para él. Ahora se pueden agregar a una lista de la misma manera que en el ejemplo anterior.
Tokenización de Keras
Keras es uno de los marcos de aprendizaje profundo preferidos actualmente. Keras también ofrece una clase dedicada para tareas de procesamiento de texto: keras.preprocessing.text. Esta clase tiene la función text_to_word_sequence que crea tokens de nivel de palabra a partir del texto. Echemos un vistazo rápido.
de keras.preprocessing.text importar text_to_word_sequence Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” Fichas = text_to_word_sequence(Mystr) fichas |
#Producción: >> [ 'esto' , 'es' , 'un' , 'tokenización' , 'tutorial' , 'nosotros' , 'somos' , 'aprendizaje' , 'diferente' , 'tokenización' , 'métodos' , 'y' , 'maneras' , 'tokenización' , 'es' , 'esencial' , 'en' , “nlp's” , 'tareas' ] |
Tenga en cuenta que trató la palabra "PNL" como un solo token. Además, este tokenizador de keras puso en minúsculas todos los tokens, lo que es una ventaja adicional.
Tokenizador Gensim
Gensim es otra biblioteca popular para manejar tareas basadas en NLP y modelado de temas. La clase gensim.utils ofrece un método tokenize, que puede usarse para nuestras tareas de tokenización.

Tokenización de palabras
desde gensim.utils import tokenize Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” list(tokenize(Mystr)) |
#Producción: >> [ 'Esto' , 'es' , 'un' , 'tokenización' , 'tutorial' , 'Nosotros' , 'somos' , 'aprendizaje' , 'diferente' , 'tokenización' , 'métodos' , 'y' , 'formas' , 'Tokenización' , 'es' , 'esencial' , 'en' , 'PNL' , 's' , 'tareas' ] |
Tokenización de oraciones
Para la tokenización de oraciones, usamos el método split_sentences de la clase gensim.summarization.textcleaner .
de gensim.summarization.textcleaner importar split_sentences Mystr = “Este es un tutorial de tokenización. Estamos aprendiendo diferentes métodos y formas de tokenización. La tokenización es fundamental en las tareas de la PNL.” Fichas = oraciones_divididas( Mystr ) fichas |
#Producción: >> [ 'Este es un tutorial de tokenización.' , '¿Estamos aprendiendo diferentes métodos y formas de tokenización?' , “La tokenización es fundamental en las tareas de la PNL.” ] |
Antes de que te vayas
En este tutorial, discutimos varias formas de tokenizar sus datos de texto en función de las aplicaciones. Este es un paso esencial de la canalización de NLP, pero es necesario limpiar los datos antes de proceder a la tokenización.
Si está interesado en obtener más información sobre el aprendizaje automático y la IA, consulte el Diploma PG en aprendizaje automático e IA de IIIT-B y upGrad, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, Estado de ex alumnos de IIIT-B, más de 5 proyectos prácticos finales y asistencia laboral con las mejores empresas.