Investigación de un caso de estudio de PLN

Este artículo es la respuesta al Sprint 3 planteado en la asignatura Procesamiento del Lenguaje Natural impartida por la Ing. Layla Scheli, dentro del Máster de Data Science y Big Data — IEBS.

El objetivo es analizar un caso práctico de aplicación del Procesamiento del Lenguaje Natural.

El caso elegido es la tesis de la Estudiante Florencia Piñeyrúa y se puede encontrar en el siguiente link: https://ri.unsam.edu.ar/bitstream/123456789/1651/1/TLIC_IDAES_2021_PF.pdf

En dicha tesis se hace uso de PLN para estudiar los tópicos de las noticias de seguridad en Argentina en el periodo que va de Julio a Septiembre de 2019.

También te puede interesar¿Está más inclinado a usar Bing ahora que funciona con IA?

I. Problemas

II. Datos utilizados

Los datos se obtienen de la base de datos GDELT a través de Google Big Query. Son 52.154 links de noticias en el periodo mecionado. Se organizan posteriormente los datos en una tabla con columnas como: Título, Medio, Fecha, link, texto, etc.

Se hace un preprocesamiento de los datos transformándolos en vectores (Document-Term Frequency Matrix) que básicamente presenta las repeticiones de un término dentro de una frase (Titular). Veamos un ejemplo:

También te puede interesarCero disparo, pocos disparos, un disparo Aprendizaje en PNL

Titular:

Gráfico 1: Titular de ejemplo.

Vector:

Gráfico 2: representación vectorial del Titular.

tercero LDA

En base a esto podemos establecer los siguientes tópicos: Elecciones, Espectáculos, Deportes, Seguridad, Política Exterior, Otras publicaciones generales y Economía.

También te puede interesarTrabajar con codificadores automáticos variacionales parte 5 (aprendizaje automático)

Al evolución diaria por tópico la vemos en el siguiente gráfico:

IV. Conclusiones

Tras el análisis, se observa que el tópico más común del universo análizado fue Elecciones seguido de Espectáculos y Deportes. Es importante destacar que durante el mes de Agosto tuvo lugar la celebración de elecciones Primarias Abiertas Simultáneas y Obligatorias (PASO 2019), por este motivo la fuerte presencia de este tópico en el periodo de tiempo analizado.

Este análisis pone de manifiesto la posibilidad de poder analizar grandes cantidades de noticias y establecer patrones en la información publicada en diferentes medios. Con el uso de Web Scraping se puede acceder a más fuentes de información de una manera rápida ayudando así a poder escalar y replicar el análisis de manera rápida y eficiente. Se otorga así un enorme potencial a las Ciencias Sociales para llevar a cabo estudios que en otros tiempos tendrían una duración y un coste muy elevado.

También te puede interesarSIMILARIDAD DE NLP: use incrustaciones de palabras preentrenadas para la búsqueda de similitud semántica con BERT

V. Análisis del análisis

  • Pasamos el pdf a txt.
  • Creamos una función para pasarlo todo a minúsculas, quitar números, caracteres raros, etc.
  • Quitamos las stopwords.
  • Identificamos los 10 términos más repetidos y número de apariciones.
  • Aquí el resultado:

    Gráfico 4: términos más repetidos.

    Y el detalle para cada término:

    (‘noticias’, 176)
    (‘temas’, 170)
    (‘análisis’, 133)
    (‘datos’, 88)
    (‘técnicas’, 82)
    (‘hilo’, 75)
    (‘agenda’, 72)
    (‘medios’, 68)
    (‘cuerpo’, 67)
    (‘procesamiento’, 64)
    (‘mediática’, 63)
    (‘digitales’, 62)
    (‘seguridad’, 60)
    (‘sociales’, 59)
    (‘contenido’, 59)
    (‘estudio’, 56)
    (‘argentina’, 55)
    (‘investigación’, 52)
    (‘lenguaje’, 51)
    (‘estudios’, 49)

    Como vemos, los términos más repetidos son precisamente el objeto de la tesis: noticias, identificación de tópicos, análisis y técnicas.

    Por último el código en python. Este código es válido para usar sobre cualquier otro texto entero que tengamos.

    import json, re
    import pandas as pd
    from nltk.corpus import stopwords
    from nltk.stem import SnowballStemmer
    from nltk.tokenize import ToktokTokenizer
    from nltk.tokenize import sent_tokenize
    from nltk.tokenize import word_tokenize
    from nltk.text import Text
    import numpy as np

    with open('TLIC_IDAES_2021_PF.txt','r') as tesis:
    texto_total = tesis.read()
    print(texto_total)

    # Creación de una función para limpiar texto:
    def limpiar_texto(texto):

    texto = re.sub(r'W', ' ', str(texto))
    texto = re.sub(r's+[a-zA-Z]s+', ' ', texto)
    texto = re.sub(r's+', ' ', texto, flags=re.I)
    texto = texto.lower()
    return texto

    # Creamos la función para eliminar las stopwords
    STOPWORDS = set(stopwords.words("spanish"))
    def filtrar_stopword_digitos(tokens):
    return [token for token in tokens if token not in STOPWORDS
    and not token.isdigit()]

    # Quitamos las stopwords
    texto_total_limpio_2 = filtrar_stopword_digitos(word_tokenize(texto_total_limpio_1))

    # Ahora mostramos las palabras más frecuentes
    frequency = {}
    for word in graph.vocab().most_common(20):
    count = frequency.get(word,0)
    frequency[word] = count + 1

    frequency_list = frequency.keys()

    palabrasMasFrecuentes = [key for key, value in graph.vocab().most_common(10)]
    graph.dispersion_plot(palabrasMasFrecuentes)
    palabrasMasFrecuentes

    for words in frequency_list:
    print (words)

    Scroll al inicio