PNL simple en Python con TextBlob: tokenizaci贸n

    Introducci贸n

    La cantidad de datos textuales en Internet ha aumentado significativamente en las 煤ltimas d茅cadas. No cabe duda de que el procesamiento de esta cantidad de informaci贸n debe ser automatizado y el TextBlob package es una de las formas bastante simples de realizar NLP – Natural Language Processing.

    Proporciona una API simple para sumergirse en tareas comunes de procesamiento de lenguaje natural (NLP), como etiquetado de parte del discurso, extracci贸n de frases nominales, tokenizaci贸n, an谩lisis de sentimientos, clasificaci贸n, traducci贸n y m谩s.

    No se necesitan requisitos previos t茅cnicos especiales para emplear esta biblioteca. Por ejemplo, TextBlob es aplicable tanto para Python 2 como para 3. En caso de que no tenga ninguna informaci贸n textual para el proyecto en el que desea trabajar, TextBlob proporciona los corpus necesarios del NLTK base de datos.

    Instalaci贸n de TextBlob

    Comencemos instalando TextBlob y los corpus NLTK:

    $ pip install -U textblob
    $ python -m textblob.download_corpora
    

    Nota: Este proceso puede llevar alg煤n tiempo debido a la gran cantidad de algoritmos y corpus que contiene esta biblioteca.

    驴Qu茅 es la tokenizaci贸n?

    Antes de profundizar en el campo de la PNL, tambi茅n deber铆a poder reconocer estos t茅rminos clave:

    • Cuerpo (o corpora en plural) – es simplemente una cierta colecci贸n de datos del lenguaje (por ejemplo, textos). Los corpus se utilizan normalmente para entrenar diferentes modelos de clasificaci贸n de texto o an谩lisis de sentimientos, por ejemplo.
    • Simb贸lico – es una cadena final que se separa del texto principal, o en otras palabras, es una salida de tokenizaci贸n.

    驴Qu茅 es la tokenizaci贸n en s铆?

    La tokenizaci贸n o segmentaci贸n de palabras es un proceso simple de separar oraciones o palabras del corpus en peque帽as unidades, es decir, tokens.

    Una ilustraci贸n de esto podr铆a ser la siguiente oraci贸n:

    • Entrada (corpus): El mal que hacen los hombres vive despu茅s de ellos
    • Salida (tokens): | El | maldad | que | hombres | hacer | vidas | despu茅s | ellos |

    Aqu铆, la oraci贸n de entrada se tokeniza sobre la base de espacios entre palabras. Tambi茅n puede tokenizar caracteres de una sola palabra (por ejemplo, manzana de manzana) o separar oraciones de un texto.

    La tokenizaci贸n es una de las etapas b谩sicas y cruciales del procesamiento del lenguaje. Transforma material textual no estructurado en datos. Esto podr铆a aplicarse a煤n m谩s en el desarrollo de varios modelos de traducci贸n autom谩tica, optimizaci贸n de motores de b煤squeda o diferentes consultas comerciales.

    Implementaci贸n de tokenizaci贸n en c贸digo

    En primer lugar, es necesario establecer una TextBlob object y defina un corpus de muestra que ser谩 tokenizado m谩s adelante. Por ejemplo, intentemos tokenizar una parte del poema si est谩 escrito por R. Kipling:

    from textblob import TextBlob
    
    # Creating the corpus
    corpus=""'If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
    '''
    

    Una vez que se crea el objeto, debe pasarse como argumento al TextBlob constructor:

    blob_object = TextBlob(corpus)
    

    Una vez construido, podemos realizar varias operaciones en este blob_object. Ya contiene nuestro corpus, categorizado hasta cierto punto.

    Tokenizaci贸n de palabras

    Finalmente, para obtener las palabras tokenizadas, simplemente recuperamos el words atributo a lo creado blob_object. Esto nos da una lista que contiene Word objetos, que se comportan de manera muy similar a str objetos:

    from textblob import TextBlob
    
    corpus=""'If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
    '''
    
    blob_object = TextBlob(corpus)
    
    # Word tokenization of the sample corpus
    corpus_words = blob_object.words
    # To see all tokens
    print(corpus_words)
    # To count the number of tokens
    print(len(corpus_words))
    

    Los comandos de salida deber铆an proporcionarle lo siguiente:

    ['If', 'you', 'can', 'force', 'your', 'heart', 'and', 'nerve', 'and', 'sinew', 'to', 'serve', 'your', 'turn', 'long', 'after', 'they', 'are', 'gone', 'and', 'so', 'hold', 'on', 'when', 'there', 'is', 'nothing', 'in', 'you', 'except', 'the', 'Will', 'which', 'says', 'to', 'them', 'Hold', 'on']
    38
    

    Vale la pena se帽alar que este enfoque tokeniza palabras usando SPACE como car谩cter delimitador. Podemos cambiar este delimitador, por ejemplo, a un TAB:

    from textblob import TextBlob
    from nltk.tokenize import TabTokenizer
    
    corpus=""'If you can force your heart and nerve and sinew to serve your turn long after they are gone. 	And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
    '''
    
    tokenizer = TabTokenizer()
    blob_object = TextBlob(corpus, tokenizer = tokenizer)
    
    # Word tokenization of the sample corpus
    corpus_words = blob_object.tokens
    # To see all tokens
    print(corpus_words)
    

    Tenga en cuenta que hemos agregado un TAB despu茅s de la primera oraci贸n aqu铆. C贸mo, el corpus de las palabras se parece a:

    ['If you can force your heart and nerve and sinew to serve your turn long after they are gone.','And so hold on when there is nothing in you except the Will which says to them: 'Hold on!']
    

    nltk.tokenize tambi茅n contiene otras opciones de tokenizaci贸n. Por defecto, usa el SpaceTokenizer que no necesita definir expl铆citamente, pero puede. Aparte de estos dos, tambi茅n contiene tokenizadores 煤tiles como LineTokenizer, BlankLineTokenizer y WordPunctTokenizer.

    Puede encontrar una lista completa en su documentaci贸n.

    Tokenizaci贸n de sentencias

    Para tokenizar a nivel de oraci贸n, usaremos el mismo blob_object. Esta vez, en lugar del words atributo, usaremos el sentences atributo. Esto devuelve una lista de Sentence objetos:

    from textblob import TextBlob
    
    corpus=""'If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
    '''
    
    blob_object = TextBlob(corpus)
    
    # Sentence tokenization of the sample corpus
    corpus_sentence = blob_object.sentences
    # To identify all tokens
    print(corpus_sentence)
    # To count the number of tokens
    print(len(corpus_sentence))
    

    Salida:

    [Sentence("If you can force your heart and nerve and sinew to serve your turn long after they are gone"), Sentence("And so hold on when there is nothing in you except the Will which says to them: 'Hold on!")]
    2
    

    Conclusi贸n

    La tokenizaci贸n es un paso de preprocesamiento de datos muy importante en NLP e implica la divisi贸n de un texto en trozos m谩s peque帽os llamados tokens. Estos tokens pueden ser palabras, oraciones o caracteres individuales en el texto original.

    TextBlob es una gran biblioteca para ingresar a la PNL, ya que ofrece una API simple que permite a los usuarios comenzar r谩pidamente a realizar tareas de PNL.

    En este art铆culo, discutimos solo una de las tareas de PNL de las que se ocupa TextBlob, pero en una pr贸xima serie, veremos c贸mo resolver problemas m谩s complejos, como tratar con inflexiones de palabras, formas de palabras en plural y singular, y m谩s.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *