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
Analizar el contenido de las noticias de periódicos digitales mediante el uso de PLN y Web Scraping.
II. Datos utilizados
Se usa la información publicada entre Julio y Septiembre de 2019 en las plataformas: Clarín, Infobae, Página 12, La Nación, Perfil, Minuto Uno, Crónica y Télam.
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 PNLTitular:
Vector:
tercero LDA
Se utiliza la técnica de Asignación Latente de Dirichlet (ALD) o Asignación latente de Dirichlet (LDA). Que es una técnica que busca asociar las oraciones con los temas de los que trata. Es un modelo de agrupación en categorías también llamados tópicos.
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
Se hace uso de Web Scraping para obetener los datos para el análisis. Se pre-procesa y procesan los datos para poder analizarlos. Finalmente se alojan en tablas sobre las que se aplican las diversas técnicas vistas en clase. Se utiliza el algoritmo LDA para poder identificar los tópicos más importantes.
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 BERTV. Análisis del análisis
Para poner algo técnico/práctico en este Sprint. Vamos a hacer un análisis de las palabras más frecuentes y sus apariciones en toda la tesis. Esto nos ayudará a saber si el resumen aquí planteado tiene en cuenta los términos más usados dentro de la misma:
Aquí el resultado:
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 npwith 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)