Diferencia entre revisiones de «Trabajo:Análisis de sesgos sobre un algoritmo de medición de toxicidad - colaboración con Newtral»

De FdIwiki ELP
Saltar a: navegación, buscar
(Trabajo:Análisis de sesgos sobre un algoritmo de medición de toxicidad - colaboración Newtral)
(Primer draft)
Línea 1: Línea 1:
 +
{| border="0" class="infobox" style="width:350px; line-height: 1.4em; text-align:left; padding:.23em;border: 1px solid #B4BBC8;background-color: #f9f9f9;color: #000;margin: .5em 0 .7em 1.2em;padding: .4em;clear: right;float: right;font-size: 90%;line-height: 1.5em;"
 +
|+ align="center" style="background:#0645ad; color:white"|<big>'''Análisis de sesgos sobre un algoritmo de medición de toxicidad'''</big>
 +
|-
 +
| colspan="2" style="text-align:center;background-color:#DCEAEC;"| '''Autores: Grupo 4'''
 +
|-
 +
| colspan="2"  | [https://github.com/pablodll Pablo Daurell Marina] (GII 4º A) (2021/22)
 +
|-
 +
| colspan="2"  | [https://github.com/beleen3103 Belén García Puente] (GII 4º A) (2021/22)
 +
|-
 +
| colspan="2"  | [https://github.com/Elaphernelia Ela Katherine Shepherd Arévalo] (GII 4º A) (2021/22)
 +
|-
 +
| colspan="2"  | [https://github.com/MiquelVera Miquel Vera Ramis] (GII 4º A) (2021/22)
 +
|-
 +
| colspan="2"  | [https://github.com/AlbertoGarciaDomenech Alberto García Doménech] (GII 4º A) (2021/22)
 +
|-
 +
| colspan="2"  | [https://github.com/ferbellot Fernando Bellot Rodríguez] (GIS 4º A) (2021/22)
 +
|-
 +
| colspan="2"  | [https://github.com/matgon Mateo González de Miguel] (GIC 4º A) (2021/22)
 +
|-
 +
|-
 +
|colspan="2" style="text-align:center;background-color:#DCEAEC;" | '''Información general:'''
 +
|-
 +
|
 +
|-
 +
|'''Repositorio:    '''    ||'''[https://github.com/AlbertoGarciaDomenech/SesgosToxicidadTweets Github]'''
 +
|-
 +
|
 +
|-
 +
|'''Licencia del proyecto:    '''    ||'''[https://github.com/AlbertoGarciaDomenech/SesgosToxicidadTweets/blob/main/LICENSE MIT License]'''
 +
|-
 +
|
 +
|-
 +
|'''Colaboradores:    '''    ||'''[https://www.newtral.es/ Newtral]'''
 +
|}
 +
 +
 +
 +
 
==Introducción==
 
==Introducción==
  
El objetivo de este proyecto de impacto social es ayudar a una entidad que haga una labor social como es el caso de la detección y concienciación de las fake news. Dicha entidad, con la que hemos tenido la suerte de colaborar, ha sido con una de los medios de comunicación de fact checking más famosos de este ámbito en España: Newtral.
+
El objetivo de este proyecto de impacto social es ayudar a una entidad que haga una labor social como es el caso de la detección y concienciación de las fake news. Dicha entidad, con la que hemos tenido la suerte de colaborar, ha sido con una de los medios de comunicación de [https://es.wikipedia.org/wiki/Verificación_de_hechos fact-checking] más famosos de este ámbito en España: Newtral.
  
 
===¿Qué es Newtral?===
 
===¿Qué es Newtral?===
  
Resumidamente, Newtral realiza varias iniciativas con el fin de transparentar y verificar la información que existe sobre ciertos políticos y noticias en general.  
+
Newtral es medio de comunicación digital fundado en 2018 centrado en [https://es.wikipedia.org/wiki/Verificación_de_hechos fact-checking], aunque también realizan otras tareas centradas en la transparencia de la información. Hace poco comenzaron con una iniciativa de investigación basada en los protocolos de Inteligencia Artificial, que es el proyecto en el que hemos estado colaborando.
 +
 
 
===Primer contacto con Newtral===
 
===Primer contacto con Newtral===
  
Al principio creímos que sería algo imposible contactar con ellos pero una vez nos decidimos a hacerlo, nos respondieron de forma cordial y rápida. Nuestro primer contacto con Newtral fue en una reunión en la que comentamos cómo podríamos brindar nuestra ayuda hacia esta asociación, con esto sacamos dos conclusiones: Ayudar en el aspecto de la educación social o en uno más tecnológico y práctico. Nos decantamos por este segundo, decidiendo buscar información sobre sesgos que pueda tener el algoritmo que estaban desarrollando sobre la toxicidad que pueden generar ciertas citas en redes sociales.
+
Al principio creímos que sería algo difícil contactar con ellos pero una vez nos decidimos a hacerlo, nos respondieron de forma cordial y rápida.  
 +
Nuestro primer contacto con Newtral fue vía email con la rama de Newtral Educación, donde comentamos quiénes éramos y nos redirigieron con el apartado Tecnológico de Newtral. Tras contactar con ellos realizamos una reunión en la que comentamos de qué iba nuestro trabajo social, presentando nuestros conocimientos a nivel de informática. A partir de ahí nos comentaron que estaban desarrollando un modelo de Machine Learning para detectar toxicidad en Tweets de políticos españoles, y que les vendría bien contar con un equipo externo que les ayudase a encontrar diferentes sesgos en el mismo.
  
 
===Trabajo a realizar===
 
===Trabajo a realizar===
Nuestra tarea es ayudar a esta empresa a encontrar ciertos sesgos sobre la identificación de toxicidad en un algoritmo que recoge datos de twitter.
+
Inicialmente nos hablaron sobre un modelo de Google similar: [https://perspectiveapi.com/ Perspective API] sobre el que ya se había realizado alguna investigación similar para encontrar sesgos, como [https://arxiv.org/abs/2012.15606 HateCheck: Functional Tests for Hate Speech Detection Models].
 +
 
 +
A partir de aquí, tras hojear el paper para tener ideas iniciales, nos compartieron el dataset en formato csv con más de 13,000 tweets ya clasificados tanto por el algoritmo de Newtral como por la Perspective API, para que empezásemos a hacer pruebas.
 +
 
 +
Con todo esto, el objetivo era buscar los sesgos que pueda tener el algoritmo a la hora de clasificar la toxicidad de los tweets.
  
 
===Originalidad===
 
===Originalidad===
Línea 17: Línea 61:
  
 
===Impacto===
 
===Impacto===
Feedback para Newtral
+
Al trabajar con Newtral, el impacto es directo al ayudar directamente a una empresa dándoles feedback para poder mejorar su algoritmo. A su vez, Newtral tiene mucho más impacto en la sociedad del que podríamos tener nosotros realizando cualquier otro tipo de trabajo genérico.
  
 
==Evolución del proyecto==
 
==Evolución del proyecto==
 +
Decidimos realizar reuniones semanales con Newtral con el fin de concretar nuestros avances de esa semana y que nos retribuyesen sus opiniones y posibles problemas y soluciones que podríamos explorar.
  
Para empezar con este trabajo necesitábamos hacer uso de una base de datos o dataset más o menos grande, con lo que poder analizar y sacar conclusiones de estos sesgos y dar nuestro feedback a la empresa. Esto nos lo facilitó Newtral, dándonos un fichero csv con más de 13.000 tweets de políticos españoles, además de ciertas guías e información sobre el algoritmo que usa google y el que usan ellos.
+
===Primera parte - Análisis del dataset===
 +
Inicialmente empezamos a analizar los datos inmediatos que podíamos sacar del csv que nos proporcionaron, para tener una información orientativa a la hora de buscar los sesgos posteriormente.
  
Con esto, nuestro trabajo empezó obteniendo la media de toxicidad de los partidos políticos principales en España y ordenándolos de mayor a menor, de aquí tendríamos un punto de partida de donde sacar conclusiones sobre dónde indagar para poder extraer ciertos sesgos posteriormente.
+
El csv tenía las siguientes columnas:
 +
*'''twitter_id''': ID de Twitter correspondiente al tweet. Se puede usar como identificador único del tweet. No debería haber repetidos.<br/>
 +
*'''text''': texto del tweet. Son todos tweets originales, con lo cual en ningún caso está el texto de una respuesta, un retweet o un quote.<br/>
 +
*'''toxicity''': predicción de toxicidad de Perspective API entre 0 y 1. La solemos binarizar en 0.5 por defecto.<br/>
 +
*'''sev_toxicity''': predicción de toxicidad severa de Perspective API entre 0 y 1. No la hemos usado.<br/>
 +
*'''profanity''': predicción de “profanity” de Perspective API entre 0 y 1. No estamos muy seguros de su definición.<br/>
 +
*'''threat''': predicción de amenaza de Perspective API entre 0 y 1.<br/>
 +
*'''degree1, degree2, degree3''': cada uno de las tres anotaciones realizadas por anotadores humanos en Newtral respecto al problema que tenemos definido como Decibelios (valoración del grado de crispación, agresividad, confrontación, en el discurso político). Sus posibles valores son:<br/>
 +
**'''0''': el tweet no contiene crispación.<br/>
 +
**'''1''': el tweet contiene algo de crispación, pero no está acompañado por unas formas agresivas, violentas, etc.<br/>
 +
**'''2''': el tweet contiene crispación y su contenido es agresivo, violento, etc.<br/>
 +
*'''degree_final''': etiqueta final que utilizamos en nuestros modelos agregando las anotaciones anteriores de 3 personas. Sus valores también son 0, 1, 2. Se asigna el valor mayoritario siempre que lo hay. La única excepción es 0-1-2 (cada persona otorga un valor distinto), entonces se asigna un 1 por ser el valor medio.<br/>
 +
*'''degree_predicted''': predicción de Decibelios que hace nuestro modelo. Sus valores posibles son 0, 1, 2.<br/>
 +
*'''degree_confidence''': confianza en la predicción de Decibelios de “degree_predicted”. Es un valor entre 0 y 1 que, cuanto más alto, más seguro está el modelo del valor predicho. Lo calculamos haciendo unas transformaciones sobre los logits de salida de la red neuronal. Somos conscientes de que, por el funcionamiento del modelo que usamos y cómo produce las probabilidades, la mayoría están en valores cercanos al 99% y eso dificulta su interpretación.<br/>
 +
*'''annotation_date''': fecha en la que fue anotado el tweet respecto a la definición de Decibelios.<br/>
 +
*'''slug''': nombre normalizado del político autor del tweet.<br/>
 +
*'''twitter_url''': URL del político autor del tweet.<br/>
 +
*'''party_slug''': nombre normalizado del partido político al que pertenece el autor del tweet.<br/>
 +
*'''parliamentary_group_slug''': nombre normalizado del grupo parlamentario al que pertenece el autor del tweet. No siempre hay una asignación 1 a 1 entre partido y grupo parlamentario. Por ejemplo, existen el grupo mixto y el grupo plural en el que se juntan diferentes partidos que no han obtenido suficiente representación para obtener grupo propio. También puede haber casos raros de personas que abandonan su partido y se integran en el grupo mixto, por ejemplo<br/>
  
Para encontrar dichos sesgos, utilizamos la api de Newtral (toxic tweets in spanish politics) en la que poder comprobar a mano diferentes textos que compartan similitudes para poder separarlos y clasificarlos. Algunas de las palabras que aparecían en estos textos, los cuales en cuanto el algoritmo las reconocía las marcaba como tóxicas o muy tóxicas, son las siguientes:
 
 
<br/>
 
<br/>
*“Comunistas”<br/>
+
En esta fase analizamos el dataset, tanto con la información proporcionada por la Perspective API como por el modelo de Newtral, aunque en fases posteriores lo único que nos importa es el model de Newtral.
*“Fascistas”<br/>
+
 
*“Señala”<br/>
+
Lo primero que decidimos hacer fue calcular la '''toxicidad media de cada partido político''' según la Perspective API y la predicción del modelo de Newtral, para entender cómo trabajar con los datos y tener una idea inicial del comportamiento que tiene el algoritmo, permitiéndonos saber dónde podríamos encontrar los sesgos.
*“Obstáculo”<br/>
+
 
*“La Derecha” / “La Izquierda”<br/>
+
A partir de aquí, sacamos además la '''toxicidad media de cada político''' dentro de su correspondiente partido.
*“Las élites”<br/>
+
 
*“Todo”<br/>
+
Como último punto en cuanto a esto, ordenamos los políticos por su toxicidad media, independientemente de su partido político.
 +
 
 +
A parte de este análisis político, queríamos ver cuáles eran las palabras que repetían más en los tweets que el modelo identificaba como tóxicos, para encontrar palabras clave que podrían generar un nivel de toxicidad más alto.
 +
 
 +
De aquí sacamos qué partidos puede ser que generen más toxicidad, y qué palabras pueden llevar a un tweet a ser clasificado como tóxico (insultos, temas controvertidos, ...). Esto nos ayudó para las siguientes fases.
 +
 
 +
Todo esto se lo hemos ido comentando a Newtral en las diversas reuniones.
 +
 
 +
''Este trabajo se puede ver con más detalle, junto con los resultados obtenidos, en el [https://github.com/AlbertoGarciaDomenech/SesgosToxicidadTweets/blob/main/analysis_notebooks/Analisis_Dataset_Newtral.ipynb Notebook] del repositorio de [https://github.com/AlbertoGarciaDomenech/SesgosToxicidadTweets Github]''.
 +
 
 +
===Segunda parte - Pruebas con el modelo===
 +
Para la siguiente fase, nos proporcionaron el acceso a una [https://huggingface.co/spaces/Newtral/toxic-tweets-in-spanish-politics API] para poder acceder al modelo sin depender del dataset ya generado, lo que nos permitió realizar más pruebas con los textos que quisiéramos en cualquier momento.
 +
 
 +
A diferencia del dataset en el que nos pasaron anteriormente donde los tweets se clasificaban en toxic y very toxic, ahora el modelo nos devuelve un valor continuo para toxic y otro para very toxic.
 +
 
 +
Basándonos en los métodos que utilizaban en el paper de HateCheck, establecimos ciertos patrones que serían interesantes investigar:
 +
*Comparar uso con odio de insultos con uso sin odio
 +
*Diferenciar insultos de palabras malsonantes
 +
*Tener en cuenta erratas
 +
*Tener en cuenta negaciones
 +
*Diferenciar entre preguntas y afirmaciones
 +
*Diferenciar entre mensajes de odio o mensajes que hacen referencia a ese odio
 +
*Tener en cuenta las diferencias entre odio a grupos protegidos y no protegidos
  
Además de palabras, terminamos descubriendo que dependiendo del formato en el que esté el texto y su ortografía, los resultados podrían cambiar en algunos casos desmedidamente. Por ejemplo, el algoritmo diferencia entre frases bien escritas y escritas erróneamente, sesgo que tiene sentido cuando pensamos en una persona que escribe dicha frase para hacer mofa de alguien o algo, pero no debería ser así con frases sin tildar o sin signos de puntuación ya que es un fallo ortográfico muy común.
+
Con ello, empezamos a hacer pruebas a mano escribiendo tweets artificiales con los diferentes sesgos que aparecían en el paper. Ahí encontramos los siguientes indicios de sesgo:
 +
*''"Odio a (grupos desfavorecidos)"'' aparecía menos tóxico que a un grupos favorecidos(''Grupos desfavorecidos: inmigrantes, mujeres, homosexuales, ...)
 +
*Añadir ''"comunista"'' o ''"fascista"'' a cualquier mensaje aumenta la toxicidad
 +
*Añadir ''"para la sociedad"'' aumenta la toxicidad
 +
*Añadir palabras como ''"lacra"'' u ''"obstáculo"'' aumenta la toxicidad
 +
*Añadir interrogaciones al final aumenta la toxicidad
 +
*Palabras como ''"no"'' y ''"más"'', así como las negaciones aumentan la toxicidad independientemente del contexto
 +
*Usar el femenino aumenta levemente la toxicidad
 +
*El algoritmo diferencia entre mayúscula, minúscula y palabras con tilde
  
Otra diferenciación que encontramos fue al probar la frase “odio a...” seguido de cualquier colectivo (transexuales, homosexuales, heterosexuales...), lo cual resultaba en que al insertar un colectivo protegido, este lo reconoció con más toxicidad que uno no tan protegido. Asimismo, el agregar un signo de exclamación al final de la frase, reducía su toxicidad.
+
Al retribuir la información a Newtral nos confirmaron que se cumplían sus principales sospechas, y junto a todo esto redirigimos el enfoque del trabajo a centrarnos en el contexto político, ya en la tercera fase.
  
Por último, otros sesgos que encontramos más razonables, fueron los siguientes: La diferenciación entre mayúsculas y minúsculas (la toxicidad es mayor cuantas más mayúsculas haya, ya que coloquialmente simula un grito) y el aumento de signos de interrogación (la toxicidad es directamente proporcional al número de interrogaciones).
+
===Tercera parte - Creación de datos===
 +
===Cuarta parte - Creación de datos===
 +
====Análisis político====
 +
====Análisis contextual====
 +
====Emojis====
  
 
==Links==
 
==Links==
*Github del proyecto: [https://github.com/AlbertoGarciaDomenech/SesgosToxicidadTweets]
+
*Github del proyecto: [https://github.com/AlbertoGarciaDomenech/SesgosToxicidadTweets Github]<br/>
 +
*Modelo de Newtral: [https://huggingface.co/Newtral/xlm-r-finetuned-toxic-political-tweets-es Modelo]
  
 
==Conclusión==
 
==Conclusión==

Revisión de 20:11 19 dic 2021

Análisis de sesgos sobre un algoritmo de medición de toxicidad
Autores: Grupo 4
Pablo Daurell Marina (GII 4º A) (2021/22)
Belén García Puente (GII 4º A) (2021/22)
Ela Katherine Shepherd Arévalo (GII 4º A) (2021/22)
Miquel Vera Ramis (GII 4º A) (2021/22)
Alberto García Doménech (GII 4º A) (2021/22)
Fernando Bellot Rodríguez (GIS 4º A) (2021/22)
Mateo González de Miguel (GIC 4º A) (2021/22)
Información general:
Repositorio: Github
Licencia del proyecto: MIT License
Colaboradores: Newtral



Introducción

El objetivo de este proyecto de impacto social es ayudar a una entidad que haga una labor social como es el caso de la detección y concienciación de las fake news. Dicha entidad, con la que hemos tenido la suerte de colaborar, ha sido con una de los medios de comunicación de fact-checking más famosos de este ámbito en España: Newtral.

¿Qué es Newtral?

Newtral es medio de comunicación digital fundado en 2018 centrado en fact-checking, aunque también realizan otras tareas centradas en la transparencia de la información. Hace poco comenzaron con una iniciativa de investigación basada en los protocolos de Inteligencia Artificial, que es el proyecto en el que hemos estado colaborando.

Primer contacto con Newtral

Al principio creímos que sería algo difícil contactar con ellos pero una vez nos decidimos a hacerlo, nos respondieron de forma cordial y rápida. Nuestro primer contacto con Newtral fue vía email con la rama de Newtral Educación, donde comentamos quiénes éramos y nos redirigieron con el apartado Tecnológico de Newtral. Tras contactar con ellos realizamos una reunión en la que comentamos de qué iba nuestro trabajo social, presentando nuestros conocimientos a nivel de informática. A partir de ahí nos comentaron que estaban desarrollando un modelo de Machine Learning para detectar toxicidad en Tweets de políticos españoles, y que les vendría bien contar con un equipo externo que les ayudase a encontrar diferentes sesgos en el mismo.

Trabajo a realizar

Inicialmente nos hablaron sobre un modelo de Google similar: Perspective API sobre el que ya se había realizado alguna investigación similar para encontrar sesgos, como HateCheck: Functional Tests for Hate Speech Detection Models.

A partir de aquí, tras hojear el paper para tener ideas iniciales, nos compartieron el dataset en formato csv con más de 13,000 tweets ya clasificados tanto por el algoritmo de Newtral como por la Perspective API, para que empezásemos a hacer pruebas.

Con todo esto, el objetivo era buscar los sesgos que pueda tener el algoritmo a la hora de clasificar la toxicidad de los tweets.

Originalidad

Proyecto en desarrollo pionero en detección de toxicidad en redes sociales

Impacto

Al trabajar con Newtral, el impacto es directo al ayudar directamente a una empresa dándoles feedback para poder mejorar su algoritmo. A su vez, Newtral tiene mucho más impacto en la sociedad del que podríamos tener nosotros realizando cualquier otro tipo de trabajo genérico.

Evolución del proyecto

Decidimos realizar reuniones semanales con Newtral con el fin de concretar nuestros avances de esa semana y que nos retribuyesen sus opiniones y posibles problemas y soluciones que podríamos explorar.

Primera parte - Análisis del dataset

Inicialmente empezamos a analizar los datos inmediatos que podíamos sacar del csv que nos proporcionaron, para tener una información orientativa a la hora de buscar los sesgos posteriormente.

El csv tenía las siguientes columnas:

  • twitter_id: ID de Twitter correspondiente al tweet. Se puede usar como identificador único del tweet. No debería haber repetidos.
  • text: texto del tweet. Son todos tweets originales, con lo cual en ningún caso está el texto de una respuesta, un retweet o un quote.
  • toxicity: predicción de toxicidad de Perspective API entre 0 y 1. La solemos binarizar en 0.5 por defecto.
  • sev_toxicity: predicción de toxicidad severa de Perspective API entre 0 y 1. No la hemos usado.
  • profanity: predicción de “profanity” de Perspective API entre 0 y 1. No estamos muy seguros de su definición.
  • threat: predicción de amenaza de Perspective API entre 0 y 1.
  • degree1, degree2, degree3: cada uno de las tres anotaciones realizadas por anotadores humanos en Newtral respecto al problema que tenemos definido como Decibelios (valoración del grado de crispación, agresividad, confrontación, en el discurso político). Sus posibles valores son:
    • 0: el tweet no contiene crispación.
    • 1: el tweet contiene algo de crispación, pero no está acompañado por unas formas agresivas, violentas, etc.
    • 2: el tweet contiene crispación y su contenido es agresivo, violento, etc.
  • degree_final: etiqueta final que utilizamos en nuestros modelos agregando las anotaciones anteriores de 3 personas. Sus valores también son 0, 1, 2. Se asigna el valor mayoritario siempre que lo hay. La única excepción es 0-1-2 (cada persona otorga un valor distinto), entonces se asigna un 1 por ser el valor medio.
  • degree_predicted: predicción de Decibelios que hace nuestro modelo. Sus valores posibles son 0, 1, 2.
  • degree_confidence: confianza en la predicción de Decibelios de “degree_predicted”. Es un valor entre 0 y 1 que, cuanto más alto, más seguro está el modelo del valor predicho. Lo calculamos haciendo unas transformaciones sobre los logits de salida de la red neuronal. Somos conscientes de que, por el funcionamiento del modelo que usamos y cómo produce las probabilidades, la mayoría están en valores cercanos al 99% y eso dificulta su interpretación.
  • annotation_date: fecha en la que fue anotado el tweet respecto a la definición de Decibelios.
  • slug: nombre normalizado del político autor del tweet.
  • twitter_url: URL del político autor del tweet.
  • party_slug: nombre normalizado del partido político al que pertenece el autor del tweet.
  • parliamentary_group_slug: nombre normalizado del grupo parlamentario al que pertenece el autor del tweet. No siempre hay una asignación 1 a 1 entre partido y grupo parlamentario. Por ejemplo, existen el grupo mixto y el grupo plural en el que se juntan diferentes partidos que no han obtenido suficiente representación para obtener grupo propio. También puede haber casos raros de personas que abandonan su partido y se integran en el grupo mixto, por ejemplo


En esta fase analizamos el dataset, tanto con la información proporcionada por la Perspective API como por el modelo de Newtral, aunque en fases posteriores lo único que nos importa es el model de Newtral.

Lo primero que decidimos hacer fue calcular la toxicidad media de cada partido político según la Perspective API y la predicción del modelo de Newtral, para entender cómo trabajar con los datos y tener una idea inicial del comportamiento que tiene el algoritmo, permitiéndonos saber dónde podríamos encontrar los sesgos.

A partir de aquí, sacamos además la toxicidad media de cada político dentro de su correspondiente partido.

Como último punto en cuanto a esto, ordenamos los políticos por su toxicidad media, independientemente de su partido político.

A parte de este análisis político, queríamos ver cuáles eran las palabras que repetían más en los tweets que el modelo identificaba como tóxicos, para encontrar palabras clave que podrían generar un nivel de toxicidad más alto.

De aquí sacamos qué partidos puede ser que generen más toxicidad, y qué palabras pueden llevar a un tweet a ser clasificado como tóxico (insultos, temas controvertidos, ...). Esto nos ayudó para las siguientes fases.

Todo esto se lo hemos ido comentando a Newtral en las diversas reuniones.

Este trabajo se puede ver con más detalle, junto con los resultados obtenidos, en el Notebook del repositorio de Github.

Segunda parte - Pruebas con el modelo

Para la siguiente fase, nos proporcionaron el acceso a una API para poder acceder al modelo sin depender del dataset ya generado, lo que nos permitió realizar más pruebas con los textos que quisiéramos en cualquier momento.

A diferencia del dataset en el que nos pasaron anteriormente donde los tweets se clasificaban en toxic y very toxic, ahora el modelo nos devuelve un valor continuo para toxic y otro para very toxic.

Basándonos en los métodos que utilizaban en el paper de HateCheck, establecimos ciertos patrones que serían interesantes investigar:

  • Comparar uso con odio de insultos con uso sin odio
  • Diferenciar insultos de palabras malsonantes
  • Tener en cuenta erratas
  • Tener en cuenta negaciones
  • Diferenciar entre preguntas y afirmaciones
  • Diferenciar entre mensajes de odio o mensajes que hacen referencia a ese odio
  • Tener en cuenta las diferencias entre odio a grupos protegidos y no protegidos

Con ello, empezamos a hacer pruebas a mano escribiendo tweets artificiales con los diferentes sesgos que aparecían en el paper. Ahí encontramos los siguientes indicios de sesgo:

  • "Odio a (grupos desfavorecidos)" aparecía menos tóxico que a un grupos favorecidos(Grupos desfavorecidos: inmigrantes, mujeres, homosexuales, ...)
  • Añadir "comunista" o "fascista" a cualquier mensaje aumenta la toxicidad
  • Añadir "para la sociedad" aumenta la toxicidad
  • Añadir palabras como "lacra" u "obstáculo" aumenta la toxicidad
  • Añadir interrogaciones al final aumenta la toxicidad
  • Palabras como "no" y "más", así como las negaciones aumentan la toxicidad independientemente del contexto
  • Usar el femenino aumenta levemente la toxicidad
  • El algoritmo diferencia entre mayúscula, minúscula y palabras con tilde

Al retribuir la información a Newtral nos confirmaron que se cumplían sus principales sospechas, y junto a todo esto redirigimos el enfoque del trabajo a centrarnos en el contexto político, ya en la tercera fase.

Tercera parte - Creación de datos

Cuarta parte - Creación de datos

Análisis político

Análisis contextual

Emojis

Links

Conclusión

Agradecimientos

Al equipo de Newtral, sobre todo a los miembros con los que hemos tenido más contacto:

  • Rubén Míguez Pérez
  • Javier Beltrán Jorba
  • Sara Estévez Manteiga

Integrantes del grupo de trabajo

  • Pablo Daurell Marina
  • Belén García Puente
  • Ela Katherine Shepherd Arévalo
  • Miquel Vera Ramis
  • Alberto García Doménech
  • Fernando Bellot Rodríguez
  • Mateo González de Miguel