PNL simple en Python con TextBlob: detecci贸n de N-gramos

     

    Introducci贸n

    El crecimiento constante de datos en Internet crea una demanda de una herramienta que pueda procesar informaci贸n textual de una manera m谩s r谩pida y sin esfuerzo por parte del usuario com煤n.

    Adem谩s, es muy importante que este instrumento de an谩lisis de texto pueda implementar soluciones para tareas de PNL tanto de bajo como de alto nivel, como contar frecuencias de palabras, calcular an谩lisis de sentimientos de los textos o detectar patrones en las relaciones entre palabras.

    TextBlob es una gran biblioteca ligera para una amplia variedad de tareas de PNL.

    En este tutorial, arrojaremos algo de luz sobre c贸mo realizar la detecci贸n de N-Grams en Python usando TextBlob.

    驴Qu茅 son los N-gramos?

    Los N-gramas representan una secuencia continua de N elementos de un conjunto dado de textos. En t茅rminos generales, estos elementos no significan necesariamente cadenas de palabras, tambi茅n pueden ser fonemas, s铆labas o letras, seg煤n lo que desee lograr.

    Sin embargo, en el procesamiento del lenguaje natural se refiere m谩s com煤nmente a los N-gramas como cadenas de palabras, donde n representa la cantidad de palabras que est谩 buscando.

    Por lo general, se distinguen los siguientes tipos de N-gramos:

    • Unigrama – Un N-gram con solo una cadena adentro (por ejemplo, puede ser una palabra 煤nica – YouTube o TikTok de una oraci贸n determinada, por ejemplo, YouTube est谩 lanzando un nuevo formato de video de formato corto que se parece much铆simo a TikTok).
    • 2 gramos o Bigram – Por lo general, una combinaci贸n de dos cadenas o palabras que aparecen en un documento: video de formato corto o formato de video probablemente ser谩 un resultado de b煤squeda de bigramas en un determinado corpus de textos (y no video de formato, video de formato corto como el orden de las palabras sigue siendo el mismo).
    • 3 gramos o Trigrama – Un N-gram que contiene hasta tres elementos que se procesan juntos (por ejemplo, formato de video de formato corto o nuevo video de formato corto), etc.

    N -grams encontr贸 su aplicaci贸n principal en un 谩rea de modelos ling眉铆sticos probabil铆sticos. A medida que estiman la probabilidad del siguiente elemento en una secuencia de palabras.

    Este enfoque para el modelado de lenguaje asume una estrecha relaci贸n entre la posici贸n de cada elemento en una cadena, calculando la ocurrencia de la siguiente palabra con respecto a la anterior. En particular, el modelo de N-gramos determina la probabilidad de la siguiente manera: N-1.

    Por ejemplo, un modelo de trigrama (con N = 3) predecir谩 la siguiente palabra en una cadena bas谩ndose en las dos palabras anteriores como N-1 = 2.

    Los otros casos de implementaci贸n de modelos N-gramas en la industria pueden ser la detecci贸n de plagio, donde los N-gramas obtenidos de dos textos diferentes se comparan entre s铆 para determinar el grado de similitud de los documentos analizados.

    Detecci贸n de N-gram en Python usando TextBlob

    An谩lisis de una oraci贸n

    Para comenzar a detectar los N-gramos en Python, primero tendr谩 que instalar el paquete TexBlob. Nota que esta biblioteca es aplicable tanto para Python 2 como para Python 3.

    Tambi茅n queremos descargar los corpus de texto necesarios para que funcione:

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

    Una vez que se configura el entorno, est谩 listo para cargar el paquete y calcular N-gramos en una oraci贸n de muestra. Al principio, veremos los N-gramas en la cita de M. Mullenweg: La tecnolog铆a es mejor cuando une a las personas.

    Empecemos:

    from textblob import TextBlob
    
    # Sample sentence for N-gram detection
    sentence = "Technology is best when it brings people together"
    

    Hemos creado un sentence cadena que contiene la oraci贸n que queremos analizar. Luego pasamos esa cadena al TextBlob constructor, inyect谩ndolo en el TextBlob instancia en la que ejecutaremos operaciones:

    ngram_object = TextBlob(sentence)
    

    Ahora, ejecutemos la detecci贸n de N-gram. Para empezar, hagamos una detecci贸n de 2 gramos. Esto es especifico en la lista de argumentos del ngrams() Llamada de funci贸n:

    ngrams = ngram_object.ngrams(n=2) # Computing Bigrams
    print(ngrams) 
    

    los ngrams() La funci贸n devuelve una lista de tuplas de norte palabras sucesivas. En nuestra oraci贸n, un modelo de bigrama nos dar谩 el siguiente conjunto de cadenas:

    [WordList(['Technology', 'is']), 
    WordList(['is', 'best']), 
    WordList(['best', 'when']), 
    WordList(['when', 'it']), 
    WordList(['it', 'brings']), 
    WordList(['brings', 'people']), 
    WordList(['people', 'together'])]
    

    An谩lisis de documentos

    A pesar de la naturaleza simple de esta biblioteca de Python, TextBlob tambi茅n proporciona una variedad de funciones avanzadas para el an谩lisis. La mayor铆a de las veces, no trabajamos con frases 煤nicas para la detecci贸n de N-gramos. Es mucho m谩s com煤n trabajar con documentos, art铆culos o corporas m谩s grandes.

    En nuestro siguiente ejemplo, usaremos un art铆culo del portal de noticias de CNBC sobre Bill Gates.

    Creemos un documento de texto y llam茅moslo como algo parecido a Input.txt para el pr贸ximo an谩lisis:

    import sys
    
    # Opening and reading the `Input.txt` file
    corpus = open("Input.txt").read()
    

    Luego, como de costumbre, crearemos una instancia TextBlob ejemplo, pasando el corpus al constructor, y ejecuta el ngrams() funci贸n:

    ngram_object = TextBlob(corpus)
    trigrams = ngram_object.ngrams(n=3) # Computing Trigrams
    print(trigrams) 
    

    Esto imprimir谩 los Trigramas del contenido que proporcionamos. Sin embargo, tenga en cuenta que la salida puede diferir seg煤n el enfoque que aplique para manejar los signos de puntuaci贸n:

    [WordList(['Bill', 'Gates', 'says']), 
    WordList(['Gates', 'says', 'that']),
    WordList(['says', 'that', 'antitrust']), 
    WordList(['that', 'antitrust', 'regulators']),
    WordList(['antitrust', 'regulators', 'should'])
    <...>]
    

    En comparaci贸n, el an谩lisis de Bigram para el art铆culo dado nos proporcionar谩 una lista diferente:

    ngram_object = TextBlob(corpus)
    Bigram = ngram_object.ngrams(n=) # Computing Bigrams
    print(Bigram) 
    

    Un fragmento de la salida:

    [WordList(['Bill', 'Gates']),
    WordList(['Gates', 'says']),
    WordList(['says', 'that']),
    WordList(['that', 'antitrust']),
    WordList(['antitrust', 'regulators'])
    <...>]
    

    Conclusi贸n

    La detecci贸n de N-Grams es una tarea simple y com煤n en muchos proyectos de PNL. En este art铆culo, hemos repasado c贸mo realizar la detecci贸n de N-Gram en Python usando TextBlob.

     

    Etiquetas:

    Deja una respuesta

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