¿Qué es la tokenización? Métodos para realizar la tokenización

Contenidos

Visión general

  • ¿Desea comenzar con el procesamiento del lenguaje natural (NLP)? Este es el primer paso perfecto
  • Aprenda a realizar la tokenización, un aspecto clave para preparar sus datos para crear modelos de PNL
  • Presentamos 6 formas diferentes de realizar tokenización en datos de texto

Introducción

¿Le fascina la cantidad de datos de texto disponibles en Internet? ¿Está buscando formas de trabajar con estos datos de texto pero no está seguro de por dónde empezar? Después de todo, las máquinas reconocen los números, no las letras de nuestro idioma. Y ese puede ser un panorama complicado de navegar en el aprendizaje automático.

Entonces, ¿cómo podemos manipular y limpiar estos datos de texto para construir un modelo? La respuesta está en el maravilloso mundo de Procesamiento del lenguaje natural (NLP).

Resolver un problema de PNL es un proceso de varias etapas. Primero debemos limpiar los datos de texto no estructurados antes de que podamos pensar en llegar a la etapa de modelado. La limpieza de los datos consta de algunos pasos clave:

  • Tokenización de palabras
  • Predecir partes del discurso para cada token
  • Lematización de texto
  • Identificar y eliminar palabras vacías y mucho más.

comp-2-0_00_13_15-8303848

En este artículo, hablaremos sobre el primer paso: la tokenización. Primero veremos qué es la tokenización y por qué es necesaria en la PNL. Luego, veremos seis formas únicas de realizar la tokenización en Python.

Este artículo no tiene requisitos previos. Cualquiera que esté interesado en la PNL o la ciencia de datos podrá seguirlo. Si está buscando un recurso integral para aprender PNL, debe consultar nuestro curso integral:

Tabla de contenido

  • ¿Qué es la tokenización en PNL?
  • ¿Por qué se requiere la tokenización?
  • Diferentes métodos para realizar la tokenización en Python
    • Tokenización usando la función split () de Python
    • Tokenización mediante expresiones regulares
    • Tokenización usando NLTK
    • Tokenización usando Spacy
    • Tokenización usando Keras
    • Tokenización usando Gensim

¿Qué es la tokenización en PNL?

La tokenización es una de las tareas más comunes cuando se trata de trabajar con datos de texto. Pero, ¿qué significa realmente el término ‘tokenización’?

La tokenización consiste esencialmente en dividir una frase, oración, párrafo o un documento de texto completo en unidades más pequeñas, como palabras o términos individuales. Cada una de estas unidades más pequeñas se llama tokens.

Mira la imagen de abajo para visualizar esta definición:

screenshot-from-2019-07-05-13-50-56-1778299

Las fichas pueden ser palabras, números o signos de puntuación. En la tokenización, las unidades más pequeñas se crean localizando los límites de las palabras. Espera, ¿qué son los límites de las palabras?

Estos son el punto final de una palabra y el comienzo de la siguiente. Estos tokens se consideran un primer paso para la derivación y lematización (la siguiente etapa en el preprocesamiento de texto que cubriremos en el próximo artículo).

¿Difícil? ¡No te preocupes! El siglo XXI ha facilitado la accesibilidad al aprendizaje y al conocimiento. Se puede utilizar cualquier curso de procesamiento del lenguaje natural para aprenderlos fácilmente.

¿Por qué se requiere la tokenización en NLP?

Quiero que pienses en el idioma inglés aquí. Elija cualquier oración que se le ocurra y manténgala en su mente mientras lee esta sección. Esto lo ayudará a comprender la importancia de la tokenización de una manera mucho más fácil.

Antes de procesar un lenguaje natural, necesitamos identificar el palabras que constituyen una cadena de caracteres. Es por eso que tLa okenización es el paso más básico para proceder con NLP (datos de texto). Esto es importante porque el significado del texto podría interpretarse fácilmente analizando las palabras presentes en el texto.

Pongamos un ejemplo. Considere la siguiente cadena:

«Este es un gato.»

¿Qué crees que sucederá después de que realicemos la tokenización en esta cadena? Obtenemos [‘This’, ‘is’, ‘a’, cat’].

Existen numerosos usos para hacer esto. Podemos usar este formulario tokenizado para:

  • Cuente el número de palabras en el texto.
  • Cuente la frecuencia de la palabra, es decir, el número de veces que está presente una palabra en particular.

Etcétera. Podemos extraer mucha más información que discutiremos en detalle en artículos futuros. Por ahora, es hora de profundizar en el meollo de este artículo: los diferentes métodos para realizar la tokenización en PNL.

Métodos para realizar la tokenización en Python

Veremos seis formas únicas en las que podemos realizar la tokenización en datos de texto. He proporcionado el código Python para cada método para que pueda seguirlo en su propia máquina.

1. Tokenización usando la función split () de Python

Empecemos con el separar() método ya que es el más básico. Devuelve una lista de cadenas después de dividir la cadena dada por el separador especificado. De forma predeterminada, split () rompe una cadena en cada espacio. Podemos cambiar el separador a cualquier cosa. Vamos a ver.

Tokenización de palabras

Output : ['Founded', 'in', '2002,', 'SpaceX’s', 'mission', 'is', 'to', 'enable', 'humans', 
          'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi-planet', 
          'species', 'by', 'building', 'a', 'self-sustaining', 'city', 'on', 'Mars.', 'In', 
          '2008,', 'SpaceX’s', 'Falcon', '1', 'became', 'the', 'first', 'privately', 
          'developed', 'liquid-fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth.']

Tokenización de sentencias

Esto es similar a la tokenización de palabras. Aquí, estudiamos la estructura de las oraciones en el análisis. Una oración generalmente termina con un punto (.), Por lo que podemos usar «.» como separador para romper la cuerda:

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

Un gran inconveniente de usar Python separar() El método es que solo podemos usar un separador a la vez. Otra cosa a tener en cuenta: en la tokenización de palabras, separar() no consideró la puntuación como un símbolo independiente.

2. Tokenización mediante expresiones regulares (RegEx)

Primero, entendamos qué es una expresión regular. Básicamente, es una secuencia de caracteres especial que le ayuda a hacer coincidir o encontrar otras cadenas o conjuntos de cadenas utilizando esa secuencia como patrón.

Podemos usar el re biblioteca en Python para trabajar con expresiones regulares. Esta biblioteca viene preinstalada con el paquete de instalación de Python.

Ahora, realicemos la tokenización de palabras y la tokenización de oraciones teniendo en cuenta la expresión regular.

Tokenización de palabras

Output : ['Founded', 'in', '2002', 'SpaceX', 's', 'mission', 'is', 'to', 'enable', 
          'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 
          'multi', 'planet', 'species', 'by', 'building', 'a', 'self', 'sustaining', 
          'city', 'on', 'Mars', 'In', '2008', 'SpaceX', 's', 'Falcon', '1', 'became', 
          'the', 'first', 'privately', 'developed', 'liquid', 'fuel', 'launch', 'vehicle', 
          'to', 'orbit', 'the', 'Earth']

los re.findall () La función busca todas las palabras que coinciden con el patrón que se le ha pasado y las almacena en la lista.

Los «w”Representa“ cualquier carácter de palabra ”que normalmente significa alfanumérico (letras, números) y guión bajo (_). ‘+’ significa cualquier número de veces. Entonces [w’]+ indica que el código debe encontrar todos los caracteres alfanuméricos hasta que se encuentre cualquier otro carácter.

screenshot-from-2019-07-05-13-31-01-1727408

Tokenización de sentencias

Para realizar la tokenización de oraciones, podemos usar el re.split () función. Esto dividirá el texto en oraciones pasándole un patrón.

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars.', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

Aquí, tenemos una ventaja sobre el separar() método ya que podemos pasar varios separadores al mismo tiempo. En el código anterior, usamos el re.compile () función en la que pasamos [.?!]. Esto significa que las oraciones se dividirán tan pronto como se encuentre alguno de estos caracteres.

¿Está interesado en leer más sobre la expresión regular? Los siguientes recursos lo ayudarán a comenzar con las expresiones regulares en PNL:

3. Tokenización mediante NLTK

Ahora, esta es una biblioteca que apreciará cuanto más trabaje con datos de texto. NLTK, abreviatura de Natural Language ToolKit, es una biblioteca escrita en Python para el procesamiento simbólico y estadístico del lenguaje natural.

Puede instalar NLTK usando el siguiente código:

pip install --user -U nltk

NLTK contiene un módulo llamado tokenizar () que además se clasifica en dos subcategorías:

  • Tokenización de palabra: Usamos el método word_tokenize () para dividir una oración en tokens o palabras
  • Tokenización de la oración: Usamos el método sent_tokenize () para dividir un documento o párrafo en oraciones

Veamos ambos uno por uno.

Tokenización de palabras

Output: ['Founded', 'in', '2002', ',', 'SpaceX', '’', 's', 'mission', 'is', 'to', 'enable', 
         'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 
         'multi-planet', 'species', 'by', 'building', 'a', 'self-sustaining', 'city', 'on', 
         'Mars', '.', 'In', '2008', ',', 'SpaceX', '’', 's', 'Falcon', '1', 'became', 
         'the', 'first', 'privately', 'developed', 'liquid-fuel', 'launch', 'vehicle', 
         'to', 'orbit', 'the', 'Earth', '.']

Tokenización de sentencias

Output: ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
          civilization and a multi-planet nspecies by building a self-sustaining city on 
          Mars.', 
         'In 2008, SpaceX’s Falcon 1 became the first privately developed nliquid-fuel 
          launch vehicle to orbit the Earth.']

4. Tokenización mediante la biblioteca spaCy

Me encanta la biblioteca SpaCy. No recuerdo la última vez que no lo usé cuando estaba trabajando en un proyecto de PNL. Es así de útil.

spaCy es un biblioteca de código abierto para avanzado Procesamiento natural del lenguaje (PNL). Admite más de 49 idiomas y proporciona una velocidad de cálculo de vanguardia.

spacy-2586479

Para instalar Spacy en Linux:

pip install -U spacy
python -m spacy download en

Para instalarlo en otros sistemas operativos, vaya a este enlace.

Entonces, veamos cómo podemos utilizar la genialidad de spaCy para realizar la tokenización. Usaremos spacy.lang.en que admite el idioma inglés.

Tokenización de palabras

Output : ['Founded', 'in', '2002', ',', 'SpaceX', '’s', 'mission', 'is', 'to', 'enable', 
          'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 
          'multi', '-', 'planet', 'n', 'species', 'by', 'building', 'a', 'self', '-', 
          'sustaining', 'city', 'on', 'Mars', '.', 'In', '2008', ',', 'SpaceX', '’s', 
          'Falcon', '1', 'became', 'the', 'first', 'privately', 'developed', 'n', 
          'liquid', '-', 'fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth', '.']

Tokenización de sentencias

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars.', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

spaCy es bastante rápido en comparación con otras bibliotecas mientras realiza tareas de PNL (sí, incluso NLTK). Te animo a que escuches el siguiente podcast de DataHack Radio para conocer la historia detrás de cómo se creó spaCy y dónde puedes usarlo:

Y aquí hay un tutorial detallado para comenzar con spaCy:

5. Tokenización usando Keras

¡Keras! Uno de los marcos de aprendizaje profundo más populares de la industria en este momento. Es una biblioteca de redes neuronales de código abierto para Python. Keras es muy fácil de usar y también se puede ejecutar sobre TensorFlow.

En el contexto de la PNL, podemos utilizar Keras para limpiar los datos de texto no estructurados que normalmente recopilamos.

keras_tokenization-4173569

Puede instalar Keras en su máquina usando solo una línea de código:

pip install Keras

Pongamos manos a la obra. Para realizar la tokenización de palabras usando Keras, usamos el text_to_word_sequence método del keras.preprocessing.text clase.

Veamos a Keras en acción.

Tokenización de palabras

Output : ['founded', 'in', '2002', 'spacex’s', 'mission', 'is', 'to', 'enable', 'humans', 
          'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi', 
          'planet', 'species', 'by', 'building', 'a', 'self', 'sustaining', 'city', 'on', 
          'mars', 'in', '2008', 'spacex’s', 'falcon', '1', 'became', 'the', 'first', 
          'privately', 'developed', 'liquid', 'fuel', 'launch', 'vehicle', 'to', 'orbit', 
          'the', 'earth']

Keras reduce la caja de todos los alfabetos antes de tokenizarlos. ¡Eso nos ahorra bastante tiempo como puedes imaginar!

6. Tokenización usando Gensim

El método de tokenización final que cubriremos aquí es el uso de la biblioteca Gensim. Es una biblioteca de código abierto para el modelado de temas sin supervisión y el procesamiento del lenguaje natural. y está diseñado para extraer automáticamente temas semánticos de un documento determinado.

Así es como puede instalar Gensim:

pip install gensim

Podemos usar el gensim.utils clase para importar el tokenizar método para realizar la tokenización de palabras.

Tokenización de palabras

Outpur : ['Founded', 'in', 'SpaceX', 's', 'mission', 'is', 'to', 'enable', 'humans', 'to', 
          'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi', 'planet', 
          'species', 'by', 'building', 'a', 'self', 'sustaining', 'city', 'on', 'Mars', 
          'In', 'SpaceX', 's', 'Falcon', 'became', 'the', 'first', 'privately', 
          'developed', 'liquid', 'fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 
          'Earth']

Tokenización de sentencias

Para realizar la tokenización de oraciones, usamos el split_sentences método del gensim.summerization.texttcleaner clase:

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet ', 
          'species by building a self-sustaining city on Mars.', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed ', 
          'liquid-fuel launch vehicle to orbit the Earth.']

Es posible que haya notado que Gensim es bastante estricto con la puntuación. Se divide cada vez que se encuentra una puntuación. En la división de oraciones también, Gensim tokenizó el texto al encontrar » n» mientras que otras bibliotecas lo ignoraron.

Notas finales

La tokenización es un paso crítico en la canalización general de la PNL. No podemos simplemente saltar a la parte de construcción del modelo sin limpiar primero el texto.

En este artículo, vimos seis métodos diferentes de tokenización (palabra y oración) de un texto dado. También hay otras formas, pero son lo suficientemente buenas para comenzar con el tema.

Cubriré otros pasos de limpieza de texto como eliminar palabras vacías, etiquetado de parte del discurso y reconocer entidades con nombre en mis publicaciones futuras. Hasta entonces, ¡sigue aprendiendo!

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.