Codea Blog  

Blog Details

Procesamiento de lenguaje natural en Power BI mediante Python

INTRODUCCIÓN

El procesamiento de lenguaje natural es uno de los campos de la inteligencia artificial que vincula el lenguaje humano a través de la interpretación de textos, sentimientos, voz, entre otros, con una tecnología. Los objetivos de captar los mensajes de estos tipos de comunicación son muchos. Por ejemplo, usarlos como base de datos para servicios al cliente, seguimiento en redes sociales, asistentes de voz, monitorear las reacciones sobre un tema o producto.

 

 

Figura 01. Técnicas de Procesamiento de Lenguaje Natural (PNL)

 

En la figura 01 se presenta las principales técnicas de procesamiento del lenguaje natural usadas en las ciencias de datos. De manera general, la información es extraída para que sea cuantificable y luego procesada y analizada en plataformas como Power BI.


 

REVISIÓN DE LAS TÉCNICAS

1. Análisis de sentimientos:

Se determina las reacciones de una base de datos en texto, voz, u otros. La cual se puede clasificar como "a favor", "neutro", "en contra", de esta manera, se podría comprender la satisfacción del cliente o también una opinión a una pregunta sobre temas acerca del cambio climático, política, minería. Por ejemplo, se ha extraído algunos comentarios hechos en Twitter con solo buscar "minería perú":

 

"Los grupos armados ilegales a menudo se aprovechan de la minería ilegal en Perú para financiar sus actividades violentas" 
"El ecologismo radical en vez de denunciar la falta de desagües en las ciudades, se dedicó a inventar leyendas y mentiras contra la minería moderna, que solo consume el 1% del total de agua"
"No ### - sin ser partidario, el cambio climático se debe a todos los contaminantes que vertemos al medio ambiente- en Perú la minería ilegal es uno de los peores infractores"

 

Con este pequeño extracto podemos tomar en cuenta qué es lo que más concierne a nuestros pobladores y de esta manera empezar a plantear soluciones y ser conscientes de los problemas que aún nos falta abordar.

 

2. Reconocimiento de entidad nombrada:

Consiste en etiquetar identidades ubicadas dentro del texto que se extrae para posterior análisis de acuerdo al objetivo buscado. Por ejemplo, recientemente Nexa Resources ha lanzado el siguiente programa:

 

"Talento en la Nube"

 

¿Podríamos saber cuánto alcance está teniendo su difusión? ¿Cuántos usuarios estan interactuando con el proyecto o la empresa? De esta manera, de una base de datos ubicamos en frases los nombres de personas, empresas, organizaciones, u otros. Asimismo, podemos combinar técnicas para saber la respuesta y sentimientos hacia el "proyecto", "beca", "empresa", que se presenta en las redes.

 

3. Resumen de texto:

Con la gran cantidad de información que recibimos de todas partes y a veces con palabras complejas, el resumen de texto permite obtener un resumen con palabras más simples, concisas y que describan el tema principal. Por ejemplo, los Google News que recibimos en nuestros celulares para tener una idea de las principales noticias. 

 

Figura 02. Tomado de un modelo de última generación en resumen de texto "Pegasus" (Referencia 2)

 

4. Modelado de temas:

La técnica es de aprendizaje automático no supervisado que agrupa frases y palabras de textos que comparten temas comunes, de hecho, esta técnica se diferencia de otras porque no requiere de un conjunto previo de etiquetas. Por ejemplo, se puede usar en palabras claves para un tema de interés.

 

5. Frecuencia de término y Frecuencia Inversa de Término (FT-FID):

Refiere a las veces que aparece un término en un documento para su análisis se divide la cantidad por la longitud total del documento. Y para la frecuencia inversa se cuantifica la relevancia de una palabra mientras que se etiqueta algunas como "ignorados" por no tener relevancia como por ejemplo monosílabos (y, la, una, otros). De esta manera, se pondera el valor de ciertas palabras multiplicado la frecuencia de término y frecuencia inversa para designar palabras claves de entrada para los documentos.

 

6. Lematización:

Refiere a eliminar los extremos o modificar parte de la palabra para quedarse con la raíz. Por ejemplo, la palabra "trabajando" puede ser cambiada a su forma base como "trabajo".

 

7. Stemming:

Refiere a eliminar los sufijos de las palabras a su raíz. Por ejemplo, la palabra "minado" puede ser reducida a su forma base como "mina". 

 

8. Tokenización:

Puede tratarse del primer paso para las demás técnicas en la que segmenta las oraciones en palabras para luego hacer los análisis adecuados. Pero antes debe hacerse un tratamiento de posibles palabras compuestas o signos de puntuación.


 

APLICACIÓN

Una interesante aplicación es analizar opiniones y sentimientos sobre un tópico en una red social como Twitter o LinkedIn y a partir de esta recopilación de información procesarlo en Power Bi junto con Python. A continuación, se citará algunas páginas donde podemos ver su utilidad como técnica en análisis de sentimientos y el uso que le podemos dar a una de las librerías más populares en Python para conseguir un preprocesamiento efectivo.

• En primer lugar, recopilar información buscando con una palabra de interés y con ello generar un archivo CSV.

• Agrupamos por categoría (de acuerdo con el interés) en columnas, por ejemplo, consideramos mensaje, fecha, reacciones, fuente, usuario, ID.  La técnica de tokenización servirá para separar las palabras de interés.

• A continuación, se aplica una de las técnicas, por ejemplo, con el análisis de los sentimientos, podemos usar la biblioteca TextBlob (clasificar las reacciones de las palabras para definir como en contra, a favor, neutro) y otra libería como snscraper (recopilar datos históricos).

import snscrape.modules.twitter as sntwitter

• Ejemplo de bucle for hecho para el caso de tweets:

query = “”

tweets = []

for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()):

   if i>10000:

      break

   else:

      tweets.append([tweet.fecha, tweet.etiqueta, tweet.fuente, tweet.usuario, tweet.id])

df = pd.DataFrame(tweets, columns = [‘fecha’, ‘etiqueta’, ‘fuente’, ‘id’])

• Extraer las palabras de interés generando para cada uno la función adecuada. Nos valemos de las diferentes técnicas antes explicadas para tener un adecuado tratamiento de la data.

• Finalmente, la información tratada es cargada a Power BI para ser más interactivos con la visualización.

Figura 03. Ejemplo propio de visualizaciones en Power BI

 

Librería Pycaret:

Es una biblioteca de aprendizaje automático de fácil uso que automatiza los flujos de trabajo y gestiona la selección de modelos que mejora la codificación manual en eficiencia de tiempo y permite comparar modelos.


 

CONCLUSIÓN

En definitiva, el procesamiento de lenguaje natural genera una oportunidad poderosa al momento de investigar el alcance, reacciones y relevancia de temas en política, medio ambiente, educación, salud, economía y por supuesto minería. En el caso de nuestro país (Perú), la minería no es totalmente aceptada en todas sus regiones, y seguramente contar con una herramienta más de comunicación como son las gráficas generadas con Power BI y Python ayuden a conocer y hacer visible sus sentimientos, ideas y contexto. La importancia en la comprensión es clave para las empresas, población y viceversa porque impulsa la acción de trabajar juntos. 


 

REFERENCIAS BIBLIOGRÁFICAS

1. Lobo, R. (2021). Natural Language Processing (NLP): 7 Key Techniques. Recuperado el 12 de agosto de 2023, website: https://monkeylearn.com/blog/natural-language-processing-techniques/

2. Liu, P. & Zhao, Y. (2020). Pegasus: A State-of-the-Art Model for Abstractive Text Summarization. Recuperado el 12 de agosto de 2023, website: https://ai.googleblog.com/2020/06/pegasus-state-of-art-model-for.html

3. Agboola, A. (2022). Sentiment Analysis of Tweets Using Power BI. Recuperado el 12 de agosto de 2023, website: https://techcommunity.microsoft.com/t5/educator-developer-blog/sentiment-analysis-of-tweets-using-power-bi/ba-p/3593336

Comentarios

Registrate o Inicia Sesión para comentar y obtener Cursos de pago gratis

function loadurl(){ var val1 = document.getElementById("valor3").value; console.log(val1); if(val1){ window.location = "/comunidad/blog/filtrar/"+val1+"/"} }