Skip to content

[SPN] Speech Analysis and NLP to predict affinity to WW2 leaders

Notifications You must be signed in to change notification settings

jpined93/NLP_2022_3

Repository files navigation

NLP_2022_3

Titulo del proyecto: Clasificador de afinidad en discursos de la Segunda Guerra mundial

La Segunda Guerra Mundial fue uno de los grandes hitos de la historia geopolítica del siglo XX, conflicto que involucró prácticamente a todas las partes del mundo durante los años 39- 45. Las principales luchas se dieron entre las potencias del Eje (Alemania, Italia y Japón) y los Aliados (Francia, Gran Bretaña, Estados Unidos, la Unión Soviética y, en menor medida, China), y muchas de estas luchas fueron determinadas o impulsadas por discursos emblemáticos entre todas las partes involucradas. El conjunto de datos está compuesto por 3521 discursos de la segunda guerra mundial, traducidos al inglés, obtenidos de fuentes abiertas, se encuentran acompañados del Autor, Fecha de alocución, facción a la que pertenece y país.

Tabla de Contenidos

Autores

A continuación se presenta el listado de autores y su respectivo correo electronico.

Organización Nombre del Miembro Correo electronico
PUJ-Bogota Sebastián Pineda juanspineda@javeriana.edu.co
PUJ-Bogota Camilo Cano c-cano@javeriana.edu.co
PUJ-Bogota Daniel Latorre latorreldaniel@javeriana.edu.co
PUJ-Bogota Cesar Ramirez ce-ramirez@javeriana.edu.co

Análisis exploratorio

Distribución de textos por año:

1

La mayor cantidad de discursos se encuentran concentrados hacia la etapa tardía de la guerra, entre 1940 y 1944. Siendo los mayores representantes Hitler,Stalin, Roosevelt y Churchill.

Análisis de frecuencia de palabras por Autor:

2

Al estudiar las frecuencias de palabras por cada autor podemos ver nuevamente que Churchill, Roosevelt y Stalin tienen la mayor cantidad de palabras, seguidos por Hitler sin importar si tomamos a consideración la cuenta de palabras distintas o no.

Longitud Media de los discursos por Autor:

3

Se resalta la variabilidad en la longitud de sus alocuciones, representada por el coeficiente de variación, que para los casos puntuales de Patton y Stalin es considerablemente alto.

Descripción de la solución

Se desarrolló e implementó una red neuronal recurrente bidireccional (BRNN), esta estructura se compone de dos capas ocultas opuestas que se concatenan a la salida. Emplea dos direcciones, una dirección positiva (estados adelante) y otra dirección negativa (estados atrás). La salida de los dos estados no está conectada a las entradas de los estados de dirección opuesta; las dos neuronas direccionales no tienen interacciones. Se escogen dos redes de memoria a largo plazo (LSTM) debido a su capacidad de agregar o eliminar información a esta celda de estado usando una serie de compuertas (forget, update y output) que permiten discriminar entre la información relevante e irrelevante. Se emplea la herramienta Tensor Flow para su desarrollo. Al existir un desbalance de clases (autores) se aplican técnicas de nivelación de datos, en este caso Oversampling. Para la construcción del modelo se define una estructura con dos capas bidireccionales LSTM y una capa densa de decisión. Para evitar el sobre ajuste se emplea un Dropout de 0,5 y al ser una red de clasificación multi clase se aplica una función de pérdida Cross entropy. Se emplean 10 épocas para el entrenamiento en búsqueda de los mejores resultados.

Resultados.

Se obtiene un Accuracy en entrenamiento de 92.40% y un Accuracy para pruebas de 82.83%.

Resultados entrenamiento Accuracy por épocas:

accurracy

Resultados entrenamiento Pérdida por épocas:

loss

Resultados Autor discursos vs precisión, Recall y F1 score.

resultados

GUI

Para consumir el modelo desarrollado se genera un Dashboard con el framework Dash, para Python que está basado en Flask, Plotly y ReactJS. Se integra la base de datos, el modelo de clasificación y un Callback. Como entrada se tiene un espacio de texto libre al cual se aplican técnicas de limpieza de texto que será consumido por el modelo de clasificación desarrollado. Retorna el Top 3 de los autores al cual tiene más afinidad. Se agrega un selector desplegable que permite hacer comparación de análisis de datos entre el autor a establecer y el discurso cargado.

WhatsApp Image 2022-11-20 at 9 10 56 PM

Requerimientos

Librerias Empleadas

  • nltk~=3.7
  • dash~=2.6.2
  • dash-bootstrap-components~=1.2.1
  • dash-core-components~=2.0.0
  • dash-html-components~=2.0.0
  • dash-table~=5.0.0
  • spacy~=3.4.1
  • numpy~=1.23.3
  • plotly~=5.10.0
  • autocorrect~=2.6.1
  • tqdm~=4.64.1
  • sklearn~=0.0
  • scikit-learn~=1.1.2
  • clean-text~=0.6.0
  • pandas~=1.5.0
  • wheel~=0.37.1
  • setuptools~=59.8.0
  • matplotlib~=3.6.0
  • py~=1.11.0
  • Werkzeug~=2.2.2
  • pip~=22.3
  • cryptography~=38.0.3
  • Flask~=2.2.2
  • tensorflow~=2.10.0

About

[SPN] Speech Analysis and NLP to predict affinity to WW2 leaders

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages