Tokenizar texto usando NLTK en Python

La tokenización de texto es una técnica fundamental de procesamiento del lenguaje natural (PLN) y una de esas técnicas es Tokenización.  Es el proceso de dividir el texto en componentes o tokens más pequeños. Estos pueden ser:

  • Palabras: Me encanta la PNL → ['I' 'me encanta' 'PNL']
  • Oraciones: Me encanta la PNL. Python es genial. → ['Me encanta la PNL.' 'Python es genial.']

Con la popular biblioteca de Python  NLTK (Natural Language Toolkit) dividir el texto en unidades significativas se vuelve simple y extremadamente efectivo.

Implementación básica

Veamos la implementación de Tokenización usando NLTK en Python

Paso 1: instalación y configuración

Instale el punto Modelos de tokenizador necesarios para la tokenización de oraciones y palabras.

Python
   !  pip   install   nltk   import   nltk   nltk  .  download  (  'punkt'  )   

Paso 2: tokenizar oraciones

sent_tokenize() divide una cadena en una lista de oraciones que manejan puntuación y abreviaturas.

Python
   from   nltk.tokenize   import   sent_tokenize   text   =   'NLTK is a great NLP toolkit. It makes processing text easy!'   sentences   =   sent_tokenize  (  text  )   print  (  sentences  )   

Producción:

['NLTK es un excelente conjunto de herramientas de PNL.' '¡Facilita el procesamiento de texto!']

Paso 3: tokenizar palabras

  • word_tokenize() divide una oración en palabras y signos de puntuación como tokens separados.
  • Maneja contracciones, números de puntuación y más.
Python
   from   nltk.tokenize   import   word_tokenize   sentence   =   'Tokenization is easy with NLTK's word_tokenize.'   words   =   word_tokenize  (  sentence  )   print  (  words  )   

Producción:

['La tokenización' 'es' 'fácil' 'con' 'NLTK' ''s' 'word_tokenize' '.']

Veamos algunos ejemplos más.

1. Tokenizador de WordPunct

Él Divide el texto en caracteres alfabéticos y no alfabéticos

  • Separa todas las secuencias de caracteres de palabras y puntuación en tokens.
  • Especialmente divide las contracciones (Don't se convierte en Don' t).
  • Divide los correos electrónicos en correos electrónicos.
Python
   from   nltk.tokenize   import   WordPunctTokenizer   tokenizer   =   WordPunctTokenizer  ()   tokens   =   tokenizer  .  tokenize  (   'Don't split contractions. E-mails: [email protected]!'  )   print  (  tokens  )   

Producción:

['No' ''' 'no' 'dividir' las 'contracciones' '.' 'E' '-' 'correos' ':' 'hola' '@' 'ejemplo' '.' 'com' '!']

2. Tokenizador de palabras de Treebank

Es adecuado para el análisis lingüístico, maneja puntuación y contracciones.

  • Imita la tokenización al estilo de Penn Treebank, que se usa comúnmente para el análisis lingüístico de PNL.
  • Maneja ciertas estructuras gramaticales del inglés de manera más inteligente.
Python
   from   nltk.tokenize   import   TreebankWordTokenizer   tokenizer   =   TreebankWordTokenizer  ()   tokens   =   tokenizer  .  tokenize  (  'Have a look at NLTK's tokenizers.'  )   print  (  tokens  )   

Producción:

['Echa' 'una' 'mirada' 'a' los 'tokenizadores' de 'NLTK' '.']

3. Tokenizador de expresiones regulares

Personaliza la división basada en patrones.

  • Tokeniza según un patrón de expresión regular.
  • w+ coincide con palabras y números omitiendo la puntuación por completo.
Python
   from   nltk.tokenize   import   RegexpTokenizer   tokenizer   =   RegexpTokenizer  (  r  'w+'  )   tokens   =   tokenizer  .  tokenize  (   'Custom rule: keep only words & numbers drop punctuation!'  )   print  (  tokens  )   

Producción:

['Regla' 'personalizada' 'mantener' 'solo' 'palabras' 'números' 'eliminar' 'puntuación']

NLTK proporciona un conjunto de herramientas útil y fácil de usar para tokenizar texto en Python, que admite una variedad de necesidades de tokenización, desde la división básica de palabras y oraciones hasta patrones personalizados avanzados.

Crear cuestionario