Para clasificar las noticas en negativas o positivas, primero fueron traducidas al inglés y luego se usó el servicio AutoML de Google para clasificarlas. Las noticias fueron traducidas al inglés debido a que AutoML de Google no puede determinar el sentimiento de textos en español.
En el siguiente paso, se empezó a realizar un proceso de muestreo aleatorio para balancear la proporción de noticias en 1:1, esto se realizó para que no exista un bias a la hora de entrenar el modelo. Al concluir este proceso se obtuvo una base de datos de noticias, de 20 000 noticias (10 000 noticias negativas y 10 000 noticias positivas) (Trochim, 2007).
Tabla 1
Distribución de las noticias
Base de datos de noticias | ||
Fuente | Positivas | Negativas |
El Comercio | 2563 | 1709 |
La República | 2896 | 2108 |
RPP | 2563 | 3156 |
Exitosa | 1978 | 3027 |
10 000 | 10 000 |
Elaboración propia
Luego, se realizó un proceso de encoding y tokenización (Famili, Shen, Weber y Simoudis, 1997). De esta forma se transformarán las noticias en vectores de números. También se creó automáticamente un diccionario de palabras en el cual se identifican las palabras con un valor numérico, generado después del encoding.
En la tarea de tokenización se realizó la eliminación de stop-words, la eliminación de caracteres especiales y signos de puntuación (Klevecka y Lelis, 2008).
2.2 Desarrollo del modelo
Para determinar la polaridad de las noticias se decidió usar una granularidad a nivel del documento, esto se debe a que una noticia posee un texto extenso, entonces es necesario poder obtener la polaridad de este en forma conjunta, pues a lo largo del escrito puede haber diferentes puntos de vista, tomar la granularidad a nivel de oración podría haber sido perjudicial para la tarea de clasificación.
El modelo de aprendizaje de máquinas seleccionado fue de redes neuronales recurrentes, en específico el tipo LSTM (Hochreiter y Schmidhuber, 1997), este tipo se escogió debido a la capacidad de poder “recordar” los elementos de un texto, esto es fundamental en el análisis de textos largos porque de esta manera se puede capturar su contexto completo.
Para normalizar los datos de entrada (inputs) del modelo se usó la técnica de mean pooling por dos motivos: 1) para controlar la cantidad de features que van a ser recibidas por la capa de regresión logística; 2) para extraer la información promedio de cada texto, tomando en cuenta toda la información del texto, esto quiere decir que todos los valores son usados para realizar un mapeado de features.
Para determinar la clasificación de las noticias, en la capa final de la red neuronal, se usó una regresión logística, debido a que la salida de la red LSTM normalizada por el average pooling brinda valores entre 0 y 1, lo cual demuestra una probabilidad de ser positivos o negativos, pero para ser aún más exactos, se decidió usar la regresión logística ya que sólo se cuenta con dos posibles clasificaciones, positivas o negativas.
Se decidió recolectar un dataset propio de noticias de medios de comunicación locales, debido a que no existe uno. Igualmente, se recurrió al uso de técnicas de limpiado de datos como la eliminación de signos de puntación y de stopwords, ya que ambos no agregan valor para la tarea a realizar. Luego se realizó un muestreo aleatorio en la base de datos para tenerla en una relación de 1:1 con respecto a noticias positivas y negativas, esto con el fin de que no exista un bias a la hora de entrenar el modelo.
El modelo propuesto es una variación de la red neuronal LSTM. En esta variación, la activación que ocurre en la puerta de salida de la capa LSTM no depende de su estado Ct, esto permite realizar parte de las operaciones necesarias en paralelo, volviendo el modelo mucho más eficiente computacionalmente, menos tiempo en entrenar el modelo sin algún impacto notable en la efectividad del modelo (Gers, Schmidhuber y Cummins, 2000).
Las ecuaciones siguientes describen como se actualiza la capa LSTM en cada unidad de tiempo t, según el modelo propuesto.
1) Es el input (datos de entrada) de la capa LSTM en un tiempo t.
2) Wf, Wc, Wo, Ui, Uf, Uc, Uo y Vo son matrices de weights (pesos del modelo).
3) bi, bf, bc y bo son vectores “bias”.
Primero, se calculan los valores para la puerta de entrada y el valor candidato para los estados de la capa LSTM en un tiempo t.
Donde it es el valor de la puerta de entrada en un tiempo t y σ es la función de activación.
Donde
Luego se calcula el valor de la función de activación ft de las puertas de olvido en un tiempo t.
Luego de obtener el valor de la función de activación de la puerta de entrada, el valor de la función de activación de la puerta de salida y el valor candidato para los estados de la capa LSTM, se pasa a calcular el nuevo estado Ct de la capa LSTM en un tiempo t.
Donde
Una vez calculado el nuevo estado Ct de la capa LSTM, se puede obtener el valor de sus puertas de salida y, como consecuencia, la salida final ht de la capa LSTM.
Donde ot es el valor de la puerta de salida de la red LSTM y σ es la función de activación.
La estructura final del modelo a usar consiste en una sola capa de redes neuronales LSTM, luego se implementará una capa de normalización (mean pooling), esto va a disminuir la variancia entre los valores, debido a que se va a tomar un promedio de la cantidad de datos para realizar un mapeo final de features. Después se implementará una capa de regresión logística para obtener una mayor eficacia a la hora de clasificar las noticias.
2.3 Algoritmo de optimización
Para incrementar la eficiencia de la red neuronal propuesta, se ha decidido implementar un algoritmo llamado Adam, el cual sirve para escoger el mejor learning rate para que el entrenamiento de la red neuronal sea el más rápido y efectivo posible (Kingma et al., 2014).
Adam es un algoritmo de learning rate adaptativo, lo que significa que calcula learning rates individuales para diferentes parámetros. Su nombre se deriva de la estimación del momento adaptativo, y la razón por la que se llama así es porque Adam usa estimaciones