desarrollo de una herramienta para detectar spoilers y

58
Facultad de Informatica de Barcelona Grado en Ingenier´ ıa Informatica Especialidad de Computacion Trabajo de fin de grado Desarrollo de una herramienta para detectar spoilers y evaluar sinopsis Rub´ en Comino Gallego Director: Llu´ ıs Padr´ o Cirera 18 de enero de 2021

Upload: others

Post on 10-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de una herramienta para detectar spoilers y

Facultad de Informatica de Barcelona

Grado en Ingenierıa Informatica

Especialidad de Computacion

Trabajo de fin de grado

Desarrollo de una herramienta para

detectar spoilers y evaluar sinopsis

Ruben Comino Gallego

Director: Lluıs Padro Cirera

18 de enero de 2021

Page 2: Desarrollo de una herramienta para detectar spoilers y

Indice

1. Contexto 5

1.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2. Conceptos generales . . . . . . . . . . . . . . . . . . . . . . . 5

1.3. Descripcion del problema . . . . . . . . . . . . . . . . . . . . 6

1.4. Agentes implicados . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Justificacion 7

3. Alcance 8

3.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2. Subobjetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.3. Obstaculos y riesgos . . . . . . . . . . . . . . . . . . . . . . . 9

4. Metodologıa 10

4.1. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.2. Validacion de resultados . . . . . . . . . . . . . . . . . . . . . 11

5. Planificacion temporal 12

5.1. Descripcion de las tareas . . . . . . . . . . . . . . . . . . . . . 12

5.1.1. Gestion del proyecto . . . . . . . . . . . . . . . . . . . 12

5.1.2. Trabajo previo . . . . . . . . . . . . . . . . . . . . . . 13

5.1.3. Detector de spoilers . . . . . . . . . . . . . . . . . . . 13

5.2. Evaluador de pelıculas . . . . . . . . . . . . . . . . . . . . . . 14

1

Page 3: Desarrollo de una herramienta para detectar spoilers y

5.3. Creacion de la API . . . . . . . . . . . . . . . . . . . . . . . . 14

5.4. Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5.5. Tabla resumen . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5.6. Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . 16

5.7. Gestion del riesgo . . . . . . . . . . . . . . . . . . . . . . . . . 16

6. Gestion economica 18

6.1. Costes de personal . . . . . . . . . . . . . . . . . . . . . . . . 18

6.2. Costes genericos . . . . . . . . . . . . . . . . . . . . . . . . . 20

6.2.1. Lugar de trabajo . . . . . . . . . . . . . . . . . . . . . 20

6.2.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6.2.3. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . 20

6.2.4. Costes genericos totales . . . . . . . . . . . . . . . . . 20

6.3. Contingencias . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.4. Imprevistos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.5. Coste total . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.6. Control de gestion . . . . . . . . . . . . . . . . . . . . . . . . 21

7. Sostenibilidad y compromiso social 23

7.1. Autoevaluacion . . . . . . . . . . . . . . . . . . . . . . . . . . 23

7.2. Dimension economica . . . . . . . . . . . . . . . . . . . . . . 23

7.3. Dimension ambiental . . . . . . . . . . . . . . . . . . . . . . . 23

7.4. Dimension social . . . . . . . . . . . . . . . . . . . . . . . . . 24

2

Page 4: Desarrollo de una herramienta para detectar spoilers y

8. Conceptos teoricos 25

8.1. Red neuronal . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

8.2. Codificacion de textos . . . . . . . . . . . . . . . . . . . . . . 26

8.3. Red neuronal convolucional . . . . . . . . . . . . . . . . . . . 27

9. Implementacion 31

9.1. Detector de spoilers . . . . . . . . . . . . . . . . . . . . . . . 31

9.1.1. Analisis del dataset . . . . . . . . . . . . . . . . . . . . 31

9.1.2. Tipos de modelo . . . . . . . . . . . . . . . . . . . . . 32

9.1.3. Longitud de textos utilizando un diccionario propio . . 32

9.1.4. Modelos con diccionario propio utilizando la sinopsis . 36

9.1.5. Modelos con diccionario propio utilizando el resumen . 39

9.1.6. Modelos con Bert y sinopsis . . . . . . . . . . . . . . . 42

9.1.7. Modelos con Bert y resumen . . . . . . . . . . . . . . 43

9.1.8. Eleccion final del modelo . . . . . . . . . . . . . . . . 44

9.2. Evaluador de pelıculas . . . . . . . . . . . . . . . . . . . . . . 45

9.2.1. Analisis del dataset . . . . . . . . . . . . . . . . . . . . 45

9.2.2. Tipos de modelo . . . . . . . . . . . . . . . . . . . . . 46

9.2.3. Longitud de textos para el diccionario propio . . . . . 46

9.2.4. Modelos con diccionario propio utilizando la sinopsis . 46

9.2.5. Modelos con diccionario propio utilizando el resumen . 47

9.2.6. Modelos con Bert y sinopsis . . . . . . . . . . . . . . . 48

9.2.7. Modelos con Bert y resumen . . . . . . . . . . . . . . 48

3

Page 5: Desarrollo de una herramienta para detectar spoilers y

9.2.8. Eleccion final del modelo . . . . . . . . . . . . . . . . 49

9.3. API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

9.3.1. Detector de spoilers . . . . . . . . . . . . . . . . . . . 50

9.3.2. Evaluador de pelıculas . . . . . . . . . . . . . . . . . . 50

10.Bibliografıa 51

Anexo 54

4

Page 6: Desarrollo de una herramienta para detectar spoilers y

1. Contexto

1.1. Introduccion

La inteligencia artificial es uno de los campos de la informatica que mas haevolucionado en la ultima decada. Con los ultimos avances en hardware nosolo ha aumentado la complejidad que es capaz de resolver, sino que tambienla ha hecho mas accesible.

Con el paso de los anos las diferentes aplicaciones que utilizan la inteligenciaartificial han ido reduciendo el trabajo menos apetecible y realizando cadavez mas a tareas que anteriormente estaban reservadas a humanos.

Este es un trabajo de final de grado de modalidad A (centro) de la Facultadde informatica de Barcelona que tiene como objetivo crear una herramientapara la deteccion automatica de spoilers y para la evaluacion de sinopsis.

1.2. Conceptos generales

Un spoiler es una palabra de origen ingles se suele utilizar para hacer refe-rencia al texto que anticipa la trama de una pelıcula, libro u otra obra.

Un dataset es un conjunto de datos que se utiliza para ensenar a una inte-ligencia artificial (IA) a hacer predicciones o tomar decisiones.

Ese conjunto de datos se suele asociar a una tabla donde las columnas sonvariables y las filas son registros. Las variables son la informacion que la IAha de tener en cuenta para hacer una prediccion. Una de esas variables esla prediccion esperada y el resto son variables de entrada.

Figura 1: Ejemplo de datasetFuente: Elaboracion propia

5

Page 7: Desarrollo de una herramienta para detectar spoilers y

1.3. Descripcion del problema

Uno de los problemas que han habido en internet desde hace anos son losspoilers. Normalmente cuando un usuario de una plataforma social va aescribir sobre una obra y va a revelar parte de la trama lo avisa o lo esconde,pero no siempre es ası. Este hecho se vuelve un problema mayor cuandoaparecen los spoilers antes que la propia obra se publique, como fue el casodel capıtulo final de la serie Juego de Tronos [1].

Por otro lado tambien existe el problema de saber si una obra va a ser buenao no. Normalmente los humanos nos guiamos a partir de la sinopsis y a vecestambien nos vemos influenciados con obras de tematica similar. El problemaesta en las personas estamos sesgadas segun nuestros intereses. Por lo queuna persona puede valorar positivamente una obra y otra negativamente. Porello serıa interesante si una maquina tambien pudiera hacer estos analisis yaque ella podrıa valorar las obras de forma mas objetiva.

1.4. Agentes implicados

Los agentes implicados son los siguientes:

• Personal del proyecto: Somos los que desarrollaremos el proyectopara conseguir un producto funcional y de calidad.

• Plataformas sociales: Son los que se beneficiarıan de un detectorautomatico de spoilers. Al anadirlo a sus plataformas detectarıan losspoilers antes de ser publicados y le darıan el tratamiento que se me-rezcan.

• Usuarios de las plataformas sociales: Podrıan navegar por lasplataformas sociales sin miedo a que se revele la trama de las obrasque sigan.

• Creadores de contenido: Un evaluador de la trama les ayudarıa atener una crıtica objetiva sobre la calidad del contenido sobre el queestan trabajando.

6

Page 8: Desarrollo de una herramienta para detectar spoilers y

2. Justificacion

La idea de la creacion de un detector de spoilers no es nueva. Se planteo enun artıculo de 2013 [2] y al menos en dos de 2020 [3] [4].

Existen productos que bloquean los spoilers como pueden ser SpoilerAlert[5] y TVTime [6], dos extensiones para Google Chrome. En estas extensionesse configura cuales son las palabras clave que se quieren evitar y cada vezque aparezcan se oculta el fragmento de texto. Este enfoque puede provocarmas problemas de los que resuelve ya que al bloquear todas las referenciasa las obras tambien oculta contenido de la obra que no contenga spoilers.

El detector de spoilers que se desarrollara en este proyecto identificara eltexto que realmente revele parte de la trama de la obra e ignorara aquellosque simplemente hablen de la sinopsis, por ejemplo.

Calcular la puntuacion de una obra a partir de la informacion de ella tampo-co es un concepto nuevo y ya lo plantearon para usarlo en pelıculas en 2011[7]. En el artıculo se explica como calcular la puntuacion de una pelıcula apartir de informacion de la pelıcula como pueden ser los actores, directo-res y guionistas implicados. Sin embargo en este proyecto quiero estudiar laviabilidad de predecir la puntuacion a partir de unicamente su sinopsis.

7

Page 9: Desarrollo de una herramienta para detectar spoilers y

3. Alcance

Es importante definir el alcance del proyecto ya que la herramienta podrıahacerse para diferentes tipos de obra como pueden ser series de television,pelıculas, libros o videojuegos. Sin embargo en este proyecto me voy a limitaral mundo de las pelıculas.

3.1. Objetivos

Como se ha mencionado anteriormente los objetivos del proyecto son:

• Dado un texto y la sinopsis o el resumen de una pelıcula ser capaz dedetectar si contiene spoilers dicho texto.

• Dada la sinopsis o el resumen de una pelıcula ser capaz de predecir lapuntuacion que recibira.

3.2. Subobjetivos

Los subobjetivos son los siguientes:

• Detector de spoilers:

• Obtener un prototipo funcional basico.

• De forma sucesiva se consiguen prototipos mejores que los exis-tentes.

• El prototipo definitivo ha sido implementado.

• Evaluador de pelıculas:

• Obtener un prototipo funcional basico.

• De forma sucesiva se consiguen prototipos mejores que los exis-tentes.

• El prototipo definitivo ha sido implementado.

8

Page 10: Desarrollo de una herramienta para detectar spoilers y

• Creacion de la api:

• La api contiene la implementacion del detector de spoilers.

• La api contiene la implementacion del evaluador de pelıculas.

3.3. Obstaculos y riesgos

Uno de los obstaculos a afrontar es el coste computacional de los entrena-mientos. Como explicare mas adelante utilizare Google Colab para que nosea un problema crıtico, pero aun ası el coste temporal continua siendo unproblema.

Otro obstaculo se encuentra a la hora de valorar los modelos. Un buen mo-delo debe tener una tasa de fallos lo mas baja posible pero una tasa de fallosen el entrenamiento demasiado baja puede provocar que este sobreajustado,es decir, que este demasiado acostumbrado a los datos de entrenamiento yfalle a la hora de predecir cualquier otro dato.

Por ultimo no se puede dejar de lado la posibilidad de perder datos por cual-quier motivo. Para evitarlo se utilizara Github para guardar periodicamentelas diferentes versiones del proyecto.

9

Page 11: Desarrollo de una herramienta para detectar spoilers y

4. Metodologıa

La metodologıa que se utilizara es Kanban[8], que permitira estructurar lastareas de forma visual y flexibilizar el flujo de trabajo.

El proyecto se divide en pocas tareas, pero algunas de ellas se repiten a lolargo del tiempo. Tal y como se ha definido en los subobjetivos la mayor partedel tiempo consistira en partir de un prototipo funcional de cada moduloe ir obteniendo prototipos mejores a lo largo del tiempo. Una metodologıaagile como Kanban permitira flexibilizar las tareas de manera que se puedapriorizar uno de los modulos en concreto en caso de ser necesario.

4.1. Herramientas

Para poder cumplir con la metodologıa mencionada anteriormente se utili-zara Github [9], lo que tambien me permitira llevar un control de las versio-nes.

Para gestionar las tareas se utilizara Trello [10] que permite controlarlas deforma agil.

El lenguaje de programacion a utilizar sera Python junto con la librerıaKeras [11]. Para entrenar los modelos serıa necesario una buena maquina.Para evitarlo tambien se utilizara Google Colab [12] con lo que solo seranecesario un pc con un navegador. La version de Python que se utilizara esla 3.6.9 y la de Keras la 2.4.3.

A la hora de intercambiar informacion entre el pc y Google Colab se utilizaraGoogle Drive [13] y Github. Los datos guardados en Google Drive consistiranen:

• Guardar los diferentes modelos entrenados. Esto permitira analizarlossin tener que entrenarlos cada vez.

• El dataset estara almacenado en ese servicio.

Github se utilizara para descargar el codigo reutilizable.

10

Page 12: Desarrollo de una herramienta para detectar spoilers y

A la hora de entrenar la IA se utilizara el dataset de spoilers de IMDB[14]. Este dataset consta de 573913 registros con analisis de pelıculas de lascuales 150924 contienen spoilers. Ademas incluye informacion de las pelıculasanalizadas como su puntuacion y la sinopsis.

Ademas la API se creara con Django [15] como framework.

4.2. Validacion de resultados

La validacion de los resultados es diferente en funcion del tipo de problema.

En el caso del detector de spoilers se utilizaran como metricas la precisiony el recall. En caso de duda se utilizara el f1-score y en el caso de seguir te-niendo dudas el roc. Unicamente se utilizara un subconjunto del dataset quese dividira en entrenamiento, test y validacion. En el momento de compararmodelos se compararan las metricas mencionadas a partir de la prediccionsobre los datos de validacion.

En el caso del evaluador de pelıculas las metricas a utilizar seran R2, MSE yla correlacion de la salida con la salida esperada. Tambien se proporcionarael RMSE para una mejor valoracion del error. Como en este caso el datasetes mucho mas pequeno, se utilizara todo divido en datos entrenamiento yde test.

11

Page 13: Desarrollo de una herramienta para detectar spoilers y

5. Planificacion temporal

Esta previsto que el proyecto necesite 582 horas a lo largo de 18 semanascomprendidas entre el 21/09/2020 y el 18/01/2021, con un mınimo de dedi-cacion de 4 horas diarias.

El turno de lectura sera el 26 de enero de 2021.

5.1. Descripcion de las tareas

5.1.1. Gestion del proyecto

Se estima que este grupo de tareas tomara 114 horas.

• Contexto y alcance [T1]: Se contextualiza el proyecto, se definenlos objetivos y se justifica porque se desarrolla y con que medios.

Tiempo: 20h

Recursos humanos: Administrador del proyecto

• Planificacion temporal [T2]: Se definen las fases del proyecto, laestimacion temporal y las dependencias entre ellas.

Tiempo: 8h

Recursos humanos: Administrador del proyecto

• Presupuesto y sostenibilidad [T3]: Se definen los costes aproxi-mados del proyecto y se crea el informe de sostenibilidad.

Tiempo: 8h

Recursos humanos: Administrador del proyecto

• Memoria [T4]: Consiste en los documentos generados por GEP y laparte de desarrollo del proyecto.

Tiempo: 60h

Dependencias: T1, T2, T2

Recursos humanos: Administrador del proyecto

12

Page 14: Desarrollo de una herramienta para detectar spoilers y

• Presentacion [T5]: Consiste en preparar la presentacion ante el tri-bunal del TFG.

Tiempo: 8h

Dependencias: T4

Recursos humanos: Administrador del proyecto

• Reuniones [T6]: A lo largo del proyecto se haran varias reuniones.

Tiempo: 10h

Recursos humanos: Administrador del proyecto

5.1.2. Trabajo previo

Seran necesarias 75 horas.

• Estudio sobre Natural Language Processing(NLP) [T7]: Aun-que se poseen conceptos sobre aprendizaje automatico sera necesarioobtener conocimientos de este subcampo.

Tiempo: 40h

Recursos humanos: Programador

• Familiarizarse con el entorno [T8]: Como se ha mencionado ante-riormente se utilizara Google Colab junto con Keras, pero al no habertrabajado nunca con ellos sera necesario un tiempo para familiarizarsecon ellos.

Tiempo: 35h

Recursos humanos: Programador

5.1.3. Detector de spoilers

En esta fase se desarrollara la parte de detectar spoilers. Seran necesarias192 horas.

• Prototipado [T9]: Cada dos semanas se creara un nuevo prototipoy se evaluara su tasa de fallos..

13

Page 15: Desarrollo de una herramienta para detectar spoilers y

Tiempo: 188h

Recursos humanos: Administrador del proyecto, Programador

• Implementacion [T10]: Una vez se haya creado el prototipo defini-tivo se procedera a implementar el propio detector..

Tiempo: 4h

Recursos humanos: Programador

5.2. Evaluador de pelıculas

En esta fase paralela a la anterior se desarrollara el evaluador de pelıculas.Se necesitaran 193 horas.

• Prototipado [T11]: Se creara nuevos prototipos cada dos semanas.Se intercalara la creacion de estos prototipos con los de los spoilers..

Tiempo: 189h

Recursos humanos: Administrador del proyecto, Programador

• Implementacion [T12]: Cuando se decida que se ha encontrado elmejor prototipo se procedera a implementar el evaluador..

Tiempo: 4h

Recursos humanos: Programador

5.3. Creacion de la API

• Implementacion de la API [T13]: Cuando ambas implementacio-nes esten completas se integraran en una api REST para permitirintegrar ambas funciones en cualquier software.

Tiempo: 8h

Dependencias: T9, T10

Recursos humanos: Administrador del proyecto, Programador

14

Page 16: Desarrollo de una herramienta para detectar spoilers y

5.4. Recursos

Una vez definidas las tareas es el momento de describir los recursos necesa-rios.

• Recursos humanos:

• Jefe del proyecto: Es el responsable de la planificacion del pro-yecto, liderar las reuniones con el equipo y escribir la documen-tacion.

• Programador: Es la persona encargada de hacer la implemen-tacion del proyecto.

• Recursos materiales:

• Ordenador: Un ordenador portatil. No es necesario que tengaprestaciones muy altas.

• Dataset de spoilers [14]: Se utilizara para entrenar los mode-los.

• Visual Studio Code [16]: Editor de codigo fuente. Se utilizarapara escribir la documentacion con LaTeX. Tambien se utilizarapara programar el producto final.

• Google Colab [12]: Permitira entrenar los modelos con cual-quier tipo de ordenador.

• MiKTeX [17]: Contiene lo necesario para crear los documentoscon LaTeX.

• Trello [10]: Se utilizara para organizar las tareas.

• Git y Github [9]: Permitira gestionar las versiones del proyecto.

15

Page 17: Desarrollo de una herramienta para detectar spoilers y

5.5. Tabla resumen

Codigo Tarea Tiempo Dependencias

- Gestion del proyecto 114h

T1 Contexto y alcance 20h

T2 Planificacion 8h

T3 Presupuesto y sostenibilidad 8h

T4 Memoria 60h T1, T2, T2

T5 Presentacion 8h T4

T6 Reuniones 10h

- Trabajo previo 75h

T7 Estudio sobre NLP 40h

T8 Familiarizarse con el entorno 35h

- Detector de spoilers 192h

T9 Prototipo 188h

T10 Implementacion 4h T9

- Analizador de sinopsis 193h

T11 Prototipo 189h

T12 Implementacion 4h T11

- Creacion de la API 8h

T13 Implementacion de la API 8h T10, T12

Tabla 1: Tabla resumen de las tareas

5.6. Diagrama de Gantt

El diagrama se encuentra en la figura 13 en el anexo.

5.7. Gestion del riesgo

A continuacion se presentan los posibles riesgos del proyecto y los planesalternativos. En ninguno de ellos serıan necesarios mas recursos.

• Tiempo de entrenamiento demasiado alto: Segun los lımites dela version gratuita de Google Colab, un fragmento de codigo solo puedeestar funcionando un maximo de 12 horas seguidas. Pasado ese tiempo

16

Page 18: Desarrollo de una herramienta para detectar spoilers y

se finaliza su ejecucion. Lo que mas tiempo consume es el entrenamien-to de los modelos. Si se diera el caso que el tiempo necesario sobrepasaesas 12 horas, se puede utilizar el sistema de puntos de guardado deKeras. Eso me permitirıa continuar el progreso una vez que Googlecerrara el proceso de forma abrupta.

En el caso de no poder utilizar el sistema de puntos de guardado lounico que podrıa hacer es reducir el tamano del dataset. Esta solucionnecesitarıa un tiempo de estudio para valorar que valores conservary cuales eliminar y los modelos resultantes serıan peores, por lo quequedarıa como ultima opcion.

• Tiempo insuficiente: Valorar el tiempo que serıa necesario para im-plementar las tareas - y - es difıcil ya que depende de la calidad de losmodelos resultantes. Por ello el tiempo ha sido sobreestimado.

• Cuarentena: En el caso de declararse otra cuarentena ya sea a nivelgeneral o a nivel personal no afectarıa en gran medida a este proyecto.El proyecto se puede realizar desde casa y las reuniones se puedenhacer online con herramientas como Skype.

17

Page 19: Desarrollo de una herramienta para detectar spoilers y

6. Gestion economica

6.1. Costes de personal

En este proyecto seran necesarios 3 roles: un administrador del proyecto quesera el responsable de las tareas de diseno y administracion, un linguistacomputacional que se encargara del analisis de textos y un programador quesera cree las herramientas y las integre en una api.

En la tabla 2 se pueden observar el coste por hora de cada rol. En dichovalor estan incluidos el salario bruto y las contingencias a pagar por partede la empresa.

Rol Retribucion horaria

Programador [18] 18,12€Administrador del proyecto [19] 21,27€

Tabla 2: Retribucion horaria por rol. Incluye el sueldo bruto y el coste enrelacion a la Seguridad SocialFuente: Elaboracion propia

18

Page 20: Desarrollo de una herramienta para detectar spoilers y

Cada tarea tiene asociada los roles necesarios para poder realizarla. En latabla 3 se pueden ver el coste de cada una segun el tiempo y los rolesnecesarios.

Tarea Rol Coste

Administradordel proyecto

Programador

Gestion delproyecto

114h 0h 2424,78€

Contexto yalcance

20h 0h 425,40€

Planificaciontemporal

8h 0h 170,16€

Presupuesto ysostenibilidad

8h 0h 170,16€

Memoria 60h 0h 1276,20€Presentacion 8h 0h 170,16€Reuniones 10h 0h 212,70€

Trabajo previo 0h 75h 1359,00€Estudio sobre

NLP0h 40h 724,80€

Familiarizarse conel entorno

0h 35h 634,20€

Implementacion 25h 320h 6330,15€Implementaciondel detector de

spoilers12h 156h 3081,96€

Implementaciondel analizador de

sinopsis12h 157h 3100,08€

Implementacionde la API

1h 7h 148,11€

Total 139h 395h 10113,93€

Tabla 3: Costes del personal basado en las tareas de la planificaciontemporal

Fuente: Elaboracion propia

19

Page 21: Desarrollo de una herramienta para detectar spoilers y

6.2. Costes genericos

6.2.1. Lugar de trabajo

El lugar de trabajo seria una oficina[20] con un precio de 302,50€. Como laduracion esperada del proyecto son 4 meses, el coste total serian 1210€. Eneste precio se incluye internet, la electricidad y el agua.

6.2.2. Software

Todo el software utilizado como son Google Colab, Trello y Git es gratuitopor lo que el coste es 0€.

6.2.3. Hardware

El unico hardware que se utilizara es un ordenador portatil con un coste de645,59€. Suponiendo una vida util de 5 anos el coste por mes por portatiles Precio portatil

Anos de vida util∗12 . Como la duracion estimada del proyecto son 4 meses yes necesario un portatil por rol la amortizacion total es 86,08€.

6.2.4. Costes genericos totales

En la tabla 4 se pueden observar los costes genericos totales teniendo encuenta los puntos anteriores.

Actividad Coste

Lugar de trabajo 1210€Software 0€Hardware 86,08€Total 1296,08€

Tabla 4: Estimacion de los costes genericosFuente: Elaboracion propia

20

Page 22: Desarrollo de una herramienta para detectar spoilers y

6.3. Contingencias

Debido a la posibilidad de contratiempos se prepara un fondo de contingenciadel 15 %. Como la suma de costes de personal y costes genericos es 11410,01€el fondo de contingencia sera 1711,50€.

6.4. Imprevistos

De los tres riesgos mencionados anteriormente solo uno de ellos podrıa teneralgun coste economico que serıa no tener suficiente tiempo. Pero tal y comose explico las tareas que tienen este riesgo han sido sobreestimadas, por loque el coste de los imprevistos ya esta incluido en el coste de personal.

6.5. Coste total

En la tabla 5 se estima el coste del proyecto teniendo en cuenta las estima-ciones de las categorıas anteriores.

Concepto Importe

Coste de personal 10113,93€Costes genericos 1296,08€Contingencias 1711,50€Total 13121,51€

Tabla 5: Estimacion del coste total del proyectoFuente: Elaboracion propia

6.6. Control de gestion

Para controlar la gestion del proyecto cada semana se calculara la diferenciaentre las horas que se han necesitado para realizar las tareas programadasy las que se han necesitado realmente. Ademas se utilizara otra metricaque sera la desviacion del coste, que se calcularıa como (horas reales −horas estimadas) ∗ coste por hora. Esta segunda metrica se utilizara paravalorar la diferencia de coste de una tarea ya que no todas las tareas tienenel mismo.

21

Page 23: Desarrollo de una herramienta para detectar spoilers y

En el caso que las desviaciones fueran elevadas se recalcularıa el resto detareas de manera que se parezca lo maximo posible a la antigua planificacion.

22

Page 24: Desarrollo de una herramienta para detectar spoilers y

7. Sostenibilidad y compromiso social

7.1. Autoevaluacion

Despues de realizar la encuesta de sostenibilidad me he dado cuenta quemis conocimientos sobre el tema son el esperado. Conozco las consecuenciasque puede tener una solucion TIC pero no pienso en ellas a la hora dedesarrollar un proyecto, y este no es una excepcion. Imagino que al habertrabajado mayormente con proyectos pequenos que puedan tener un impactonegligible hace que sea una materia que no tenga muy trabajada.

Actualmente el aspecto mas valorado en un proyecto es el economico y uni-camente se valora el impacto social y medioambiental a corto plazo. Estehecho evidencia que hace falta mas trabajo de concienciacion en la sociedadya que no solo se deberıa plantear al planificar un proyecto sino tambien alconsumir un producto.

7.2. Dimension economica

El coste del proyecto se ha intentado minimizar lo maximo posible. Sinembargo es posible que algunas tareas hayan sido sobreestimadas en excesoy se pueda reducir la cantidad de horas necesarias sin que repercuta en elresultado final. Como es difıcil saber la cantidad de horas necesarias se haescogido la opcion pesimista para asegurar que el proyecto llegue a buenpuerto.

Al ser tecnologıa innovadora no existen demasiadas soluciones con las quecompararse. Por ello permite ahorrar personal ya que la forma de resolverlos problemas era manualmente.

7.3. Dimension ambiental

El impacto medioambiental de este proyecto se debe mayormente a las emi-siones de CO2 provocadas para generar la electricidad consumida por elordenador y los servidores de los recursos web utilizados. De dichos recursoscabe destacar Google Colab ya que sus servidores ejecutaran codigo del pro-

23

Page 25: Desarrollo de una herramienta para detectar spoilers y

yecto durante muchas horas. Sin embargo si este proyecto no utilizara susservidores continuarıan encendidos y consumiendo electricidad por lo que elcoste ambiental debido a su uso no es muy alto.

El ordenador a usar durante el proyecto se lleva usando durante varios anospor lo que los costes materiales del proyecto quedan reducidos.

7.4. Dimension social

A nivel personal el proyecto me permite profundizar en NLP, un campoque no se da en el grado. Ademas al ser el primer proyecto grande querealice me permitira conseguir conocimientos no tecnicos como la capacidadde organizacion.

La mejor manera de resolver el problema de los spoilers es avisando conantelacion antes de publicar el contenido. Como no siempre es ası por unlado existen herramientas automaticas capaces de esconder el texto si en else encuentra alguna palabra clave que el usuario defina y por otro existe elcomponente humano de revisar los contenidos para detectar los spoilers. Porello una herramienta que sea especialista en detectar spoilers serıa de granayuda y permitirıa una navegacion por la web mas satisfactoria.

Por otro lado existe el problema de valorar una obra por su sinopsis. Actual-mente es un trabajo mayormente humano pero una herramienta que puedapuntuarlas puede servir como apoyo a creadores de contenido que necesitenfeedback de forma objetiva.

24

Page 26: Desarrollo de una herramienta para detectar spoilers y

8. Conceptos teoricos

En este apartado se explicara los conceptos teoricos necesarios para entendercomo se ha implementado el proyecto.

8.1. Red neuronal

Una red neuronal es un conjunto de unidades conectadas llamadas neuro-nas. Las redes neuronales se dividen en capas compuestas por una cantidadvariable de neuronas. Al conectar dos capas entre sı se crean aristas entrelos nodos de una capa y los de la siguiente. Cada arista tiene asociado unvalor numerico y un peso que se ajusta a lo largo del proceso de aprendizaje.Para calcular su salida cada neurona suma cada arista teniendo en cuentasu valor y su peso.

De manera que dados unos datos de entrada, se propagan por la red hastaque la red da una salida. Esta red pasara por un proceso de aprendizajehasta que la salida sea la esperada. Una red neuronal de ejemplo se puedeobservar en la figura 2.

Figura 2: Red neuronal simple con una capa de entrada simple de 3 neuronas,una capa oculta de 4 neuronas y una capa salida de 1

Fuente: Towards Data Science [21]

25

Page 27: Desarrollo de una herramienta para detectar spoilers y

Cada tipo de capa utilizada en una red neuronal tiene su funcion. En lossiguientes apartados se explicaran algunas de las capas utilizadas y comocodificar un texto para utilizarlo como entrada.

8.2. Codificacion de textos

Para poder utilizar un texto (lista de palabras) como entrada en una redneuronal se debe convertir a una lista de numeros.

Una de las tecnicas mas utilizadas se llama Index Based Encoding. Con estatecnica se asocia un codigo a cada palabra de un texto, de manera que eltexto se ha convertido a una lista de codigos numericos.

Figura 3: Un ejemplo de codificacion utilizando Index Based EncodingFuente: Towards data science blog[22]

Para utilizar esta tecnica primero se eliminan todos los signos de puntuacion

26

Page 28: Desarrollo de una herramienta para detectar spoilers y

y se hace que todas las palabras empiecen por minuscula. A continuacion secrea un diccionario con X entradas, donde se guardaran las X palabras mascomunes con su codigo asociado. Esta limitacion de palabras del diccionariose hace para reducir la cantidad de memoria necesaria. Las palabras que noesten incluidas en el diccionario se sustituiran por un codigo especial con elque indicar que no esta en el diccionario.

Ademas cada texto debe tener una longitud fija. Por ello un a texto con unalongitud menor de la necesaria se le anadira padding, es decir, se anadiranpalabras vacıas hasta que el texto llegue a la longitud necesaria. Por otrolado si un texto tiene una longitud mayor a la necesaria se truncara, enotras palabras, se eliminaran palabras hasta que el texto llegue a la longitudnecesaria.

Otra tecnica que se utilizara es la conocida como Word embeddings. Parapoder utilizarla es necesario utilizar textos con la misma longitud de palabrasy con la tecnica anterior aplicada sobre ellos. El resultado de esta tecnica seraque cada palabra tendra asociada unas coordenadas espaciales. La distanciaentre palabras indica la relacion que hay entre ellas, de manera que las mascercanas seran las que esten mas relacionadas.

Figura 4: Un ejemplo de relacion entre palabras utilizando Word EmbeddingsFuente: Towards data science blog[23]

8.3. Red neuronal convolucional

Una red neuronal convolucional es un tipo de red neuronal que habitualmen-te se utiliza en el analisis visual de imagenes, pero que tambien se utilizacon textos.

27

Page 29: Desarrollo de una herramienta para detectar spoilers y

Tal y como se ha mencionado anteriormente el resultado de aplicar Wordembeddings a un texto es una lista donde cada palabra del texto tiene aso-ciada unas coordenadas espaciales. Una red neuronal convolucional puedeextraer informacion de dicha lista reduciendo el espacio necesario para re-presentarla.

2 de las partes mas importantes de una red neuronal convolucional son laconvolucion y el pooling.

Una representacion de una convolucion se puede observar en la figura si-guiente.

28

Page 30: Desarrollo de una herramienta para detectar spoilers y

Figura 5: Los 2 primeros pasos de la convolucion de un filtro sobre un textocon coordenadas espacialesFuente: Joshua Kim: Understanding how Convolutional Neural Network

(CNN) perform text classification with word embeddings [24]

Por un lado se puede ver una tabla en blanco de 5x7 que representa lascoordenadas espaciales del texto. Por otro lado hay una tabla amarilla de5x2 que representa un filtro y otra tabla amarilla de 1x5 que representa lasalida de dicho filtro.

Para calcular el resultado el filtro se posiciona sobre las 2 primeras palabras.Despues realiza el producto entre cada elemento y suma los resultados. Enel primer caso realizarıa (0,6 ∗ 0,2 + 0,5 ∗ 0,1 + ... + 0,1 ∗ 0,1 = 0,51). Acontinuacion el filtro se mueve una posicion y vuelve a realizar el calculo.Este proceso hasta que la tabla de salidas se llena y el filtro no se puededesplazar mas.

29

Page 31: Desarrollo de una herramienta para detectar spoilers y

Aunque en este ejemplo el filtro tiene 2 filas, este numero es configurable enfuncion del numero de palabras que se desea incluir en un mismo paso delfiltro.

Ademas en una misma capa se pueden utilizar multiples filtros de maneraque cada uno de ellos se especialice en extraer una caracterıstica concreta.

El pooling se encarga de comparar los resultados de cada filtro y extraer lascaracterısticas mas relevantes como se puede observar en la siguiente figura.

Figura 6: Resultado de aplicar max pooling a 4 filtros de 2 dimensionesFuente: GeeksForGeeks: CNN — Introduction to Pooling Layer [25]

En este ejemplo hay 4 filtros de 2 dimensiones, diferenciados por colores.El tipo de pooling aplicado ha sido Max Pooling que consiste en devolver elvalor maximo de un filtro.

Aunque en el ejemplo se utilizan 2 dimensiones en el caso de usar 1 el procesoes el mismo. La funcion de pooling devuelve un unico valor por cada filtro,siendo en este caso una salida de 1 dimension y tantos valores como filtros.

30

Page 32: Desarrollo de una herramienta para detectar spoilers y

9. Implementacion

En esta seccion se explicara como se han implementado las diferentes fun-ciones de la api.

9.1. Detector de spoilers

9.1.1. Analisis del dataset

El dataset a utilizar contiene un total de 573913 opiniones de usuarios de1572 pelıculas. De esas opiniones 150924 tienen spoiler, es decir, que repre-sentan el 26,3 % del total.

Como trabajar con todo el dataset serıa muy costoso se trabajara con unsubconjunto de el. En concreto se utilizara para el entrenamiento un sub-conjunto de 106000 opiniones. De esa cantidad un 80 % correspondera alentrenamiento y un 20 % al test.

Como es arriesgado utilizar un dataset desequilibrado en cuanto a cantidadde analisis con spoiler como en el original a la hora de entrenar, se utilizarauna proporcion diferente. Durante el entrenamiento un 40 % de las opinionescontendran spoilers. Ese sera el porcentaje existente tanto en los datos deentrenamiento como de test.

Para valorar la calidad de los modelos se utilizara otro subconjunto diferentedel dataset. Este subconjunto contiene 20000 analisis con una proporcion despoilers del 20 %. Ademas los analisis no son de ninguna de las pelıculasutilizadas durante el entrenamiento.

31

Page 33: Desarrollo de una herramienta para detectar spoilers y

9.1.2. Tipos de modelo

A lo largo del proyecto se han creado 4 tipos de modelo en funcion del tipode entrada que reciben y el diccionario utilizado.

A la hora de construir el modelo se proporciona como primera entrada elpropio analisis de una pelıcula pero en cuanto a la segunda entrada hay 2opciones.

• Sinopsis: Es un texto que explica los primeros minutos de trama deuna pelıcula y es el que se utiliza para atraer a los espectadores. Alutilizar este texto como entrada proporciona una descripcion de lapelıcula sin spoilers.

• Resumen: Este texto explica la trama de la pelıcula de principio afin. Al utilizar este texto como entrada proporciona una descripcionde la pelıcula con spoilers. Tambien hay que resaltar que un resumensuele ser mas largo que una sinopsis.

Ademas de la clasificacion anterior los modelos utilizados tambien se dividenen el tipo de diccionario y capa embeddings utilizado.

• Diccionario propio: Se crea un diccionario propio con las 5000 pa-labras mas comunes de las opiniones y los textos de pelıcula del sub-conjunto de datos utilizado durante el entrenamiento.

• Utilizando Bert: Con Bert la capa de embeddings ya esta entrena-da con un vocabulario generico habiendose utilizado una cantidad detextos mucho mayor. Sin embargo los modelos resultantes son masgrandes, la capa de embeddings es mas compleja y la longitud de lostextos esta limitada a 512 palabras.

En las figuras 10 y 11 situados en el anexo se pueden observar los diagramasde capas de los modelos.

9.1.3. Longitud de textos utilizando un diccionario propio

Antes de crear un modelo es importante definir cual va a ser la longitud detextos en palabras tanto para las opiniones como para los textos de pelıculas.

32

Page 34: Desarrollo de una herramienta para detectar spoilers y

Una longitud larga permite un mejor analisis del texto, pero tambien tam-bien hace el modelo mas lento. Ademas se debera anadir padding a los textoscon una longitud menor a la maxima.

Por otro lado una longitud demasiado corta obligara a truncar los textosque la excedan, perdiendo informacion.

Por ello es importante analizar las longitudes de palabras de los textos paraencontrar el mejor valor. Se utilizara el subconjunto de datos usados duranteel entrenamiento y el test para ello.

En la figura siguiente se puede observar la distribucion de longitudes depalabras de las opiniones.

Figura 7: Distribucion de las longitudes de palabras de las opinionesFuente: Propia

Es importante que la longitud de estos textos sea larga para obtener lamaxima informacion posible, pero 8000 o 10000 palabras es excesivo. Porello se utilizara una longitud de 4000 palabras. Con ellos el 94 % de lostextos evitaran ser truncados.

33

Page 35: Desarrollo de una herramienta para detectar spoilers y

En la figura siguiente se muestra la distribucion de longitudes de palabrasde las sinopsis.

Figura 8: Distribucion de longitudes de palabras de las sinopsisFuente: Propia

En este caso se utilizara un longitud de 1000 palabras. Con esa longitud el95 % de los textos evitara ser truncado.

Finalmente en la figura 9 se observa la distribucion de longitudes de palabrasde los resumenes.

34

Page 36: Desarrollo de una herramienta para detectar spoilers y

Figura 9: Distribucion de longitudes de palabras de los resumenesFuente: Propia

En este caso escoger un valor es difıcil. En el caso de querer utilizar el criteriode los casos anteriores (representar el 95 % de los textos) serıa necesario unalongitud de 28000, lo que es excesivo. En el caso de querer bajar el porcentajede representacion a 30 % serıa necesario una longitud de 7000 palabras. Porello se ha decidido utilizar una longitud de 1000 palabras. Solo representaal 0.57 % de textos, pero la cantidad necesaria para representar a un altoporcentaje de textos es excesiva.

35

Page 37: Desarrollo de una herramienta para detectar spoilers y

9.1.4. Modelos con diccionario propio utilizando la sinopsis

A continuacion se analizara como se comporta un modelo con diccionariopropio utilizando la sinopsis como segunda entrada. Todos los modelos ana-lizados utilizaran un valor de dropout de 0.1 para reducir el overfitting.Ademas los hiperparametros se definiran de forma simetrica en ambas ra-mas.

Para valorar los mejores hiperparametros se fijara una cierta cantidad de fil-tros y se variara la cantidad de neuronas. De esta manera se podra encontrarla cantidad optima de neuronas en funcion de la cantidad de filtros.

La primera cantidad de filtros a utilizar seran 32 y se evaluara con 10, 8 y6 neuronas.

Neuronas Precision Recall F1-score Roc

10 0.43 0.41 0.42 0.6378 0.36 0.59 0.44 0.6616 0.40 0.48 0.44 0.651

Tabla 6: Resultados de modelos con 32 filtros en funcion de sus neuronas

En la tabla 6 se pueden observar las metricas con los modelos de 32 filtrosen funcion de la cantidad de neuronas especificada. La F1-score indica quelos modelos de 8 y 6 neuronas son mejores que el de 10 pero segun estametrica el rendimiento de estos 2 es muy similar. Por eso al fijarnos en elRoc se puede ver que el de 8 es mejor que el de 6. El de 8 es ligeramentemenos preciso que el de 6, pero tiene un recall mas alto. Por ello consideroque el de 8 es el mejor de entre los 3.

Como parece que prediccion mejora con una complejidad intermedia, la si-guiente cantidad de filtros a utilizar es 16.

Neuronas Precision Recall F1-score Roc

10 0.42 0.47 0.44 0.6528 0.42 0.47 0.44 0.6536 0.42 0.44 0.43 0.641

Tabla 7: Resultados de modelos con 16 filtros en funcion de sus neuronas

36

Page 38: Desarrollo de una herramienta para detectar spoilers y

En la tabla 7 se encuentran los resultados de modelos con 16 filtros con unacantidad de neuronas de 6, 8 y 10.

En este caso el que se observa claramente como inferior es el de 6 neuronasya que tiene un menor recall que los otros 2, pero en el caso de 8 y 10 la di-ferencia es practicamente inapreciable. La unica manera de ver la diferenciaes con el Roc que situa el modelo con 8 neuronas ligeramente por encima,aunque se podrıan considerar practicamente identicos.

Si comparamos las 2 tablas fijando la cantidad de neuronas en 10 se puedeobservar como el modelo de 16 filtros se ha beneficiado de la reduccion decomplejidad. Por ello la siguiente cantidad de filtros sera 8.

Neuronas Precision Recall F1-score Roc

10 0.41 0.48 0.44 0.6538 0.37 0.58 0.45 0.6656 0.38 0.48 0.42 0.642

Tabla 8: Resultados de modelos con 8 filtros en funcion de sus neuronas

En la tabla 8 se puede observar que es mejor utilizar 8 neuronas en lugarde 6 o 10. Su recall es claramente superior y, a pesar de ser el que tiene lamenor precision de los 3, la f1-score indica que compensa.

Si se compara la tabla 7 con la tabla 8 se puede observar que no demasiadadiferencia en las metricas a pesar de haber reducido la cantidad de filtros ala mitad. Por ello la siguiente cantidad de filtros a utilizar sera 4.

Neuronas Precision Recall F1-score Roc

10 0.37 0.53 0.43 0.658 0.39 0.42 0.40 0.6266 0.40 0.45 0.42 0.638

Tabla 9: Resultados de modelos con 4 filtros en funcion de sus neuronas

En la tabla 9 se pueden observar los resultados utilizando 4 filtros. En estecaso el mejor modelo es el de 10 neuronas. Es el que tiene mas recall teniendouna precision ligeramente inferior.

A continuacion se compararan los seleccionados como mejores modelos segun

37

Page 39: Desarrollo de una herramienta para detectar spoilers y

su cantidad de filtros.

Filtros Neuronas Precision Recall F1-score Roc

32 8 0.36 0.59 0.44 0.66116 8 0.37 0.47 0.44 0.6538 8 0.37 0.58 0.45 0.6654 10 0.37 0.53 0.43 0.65

Tabla 10: Resultados de los modelos en funcion de la cantidad de filtros yneuronas

El que tiene mejor recall es el modelo de 32 filtros y 8 neuronas, sin embargoa pesar que el modelo de 8 filtros y 8 neuronas tiene un recall ligeramenteinferior, tambien es el que tiene mas precision. Este balance se ve reflejadoen la f1-score que es el mas alto.

Por ello el mejor modelo con diccionario propio utilizando la sinopsis es elde 8 filtros y 8 neuronas.

38

Page 40: Desarrollo de una herramienta para detectar spoilers y

9.1.5. Modelos con diccionario propio utilizando el resumen

A continuacion se analizara como se comporta un modelo con diccionariopropio utilizando el resumen como segunda entrada. Como los modelos delapartado anterior se utilizara un valor de dropout de 0.1 y lo hiperparame-tros se definiran de forma simetrica en ambas ramas.

La primera cantidad de filtros a utilizar seran 32 y se evaluara con 10, 8 y6 neuronas.

Neuronas Precision Recall F1-score Roc

10 0.41 0.46 0.44 0.6498 0.39 0.55 0.45 0.6656 0.38 0.53 0.44 0.656

Tabla 11: Resultados de modelos con 32 filtros en funcion de sus neuronas

En la tabla 11 se puede observar que el modelo con 8 neuronas el el quetiene mejor recall. A pesar de tener ligeramente menos precision que el de10 la f1-score refleja el de 8 es considerado un mejor modelo.

Como en el caso de 32 filtros se ha beneficiado de reducir la complejidad delmodelo la siguiente cantidad de filtros a probar sera 16.

Neuronas Precision Recall F1-score Roc

10 0.40 0.50 0.44 0.6548 0.38 0.51 0.44 0.6536 0.49 0.38 0.43 0.639

Tabla 12: Resultados de modelos con 16 filtros en funcion de sus neuronas

En la tabla 12 se encuentran los resultados de utilizar modelos de 16 filtrosen funcion de la cantidad de neuronas utilizadas. El modelo de 6 neuronas esligeramente inferior debido a su valor de recall. Sin embargo los modelos de8 y 10 neuronas son muy similares. Ambos tienen una precision y un recalltan similares que tienen el mismo f1-score. En este caso es el roc que indicaque el modelo de 10 neuronas es ligeramente superior.

Como reducir la complejidad del modelo no parece haber afectado demasiado

39

Page 41: Desarrollo de una herramienta para detectar spoilers y

a los resultados los siguientes modelos seran de 8 filtros.

Neuronas Precision Recall F1-score Roc

10 0.38 0.54 0.45 0.6608 0.41 0.45 0.43 0.6446 0.39 0.54 0.45 0.663

Tabla 13: Resultados de modelos con 8 filtros en funcion de sus neuronas

En los resultados de los modelos de la tabla 13 se puede observar que elpeor es el de 8 neuronas. Aunque es ligeramente mas preciso que los otros2 su recall es inferior. Por otro lado los modelos de 8 y 10 neuronas sonmuy similares. De los 2 el mejor es el de 6 debido a tener una precisionligeramente superior.

En los siguientes modelos se utilizaran 4 filtros para seguir la tendencia dereducir la complejidad del modelo.

Neuronas Precision Recall F1-score Roc

10 0.43 0.37 0.40 0.6258 0.37 0.55 0.44 0.6586 0.39 0.41 0.40 0.626

Tabla 14: Resultados de modelos con 4 filtros en funcion de sus neuronas

Como se observa en la tabla 14 el recall del modelo de 8 neuronas es mayorque el de los modelos de 6 y 10. A pesar de tener una menor precision elf1-score indica que ese mayor valor en el recall compensa. Por eso el mejormodelo utilizando 4 filtros es el de 8 neuronas.

Como no parece que reducir mas la complejidad de los modelos vaya a resul-tar en mejores modelos, a continuacion se compararan los mejores modelosen funcion de su cantidad de filtros.

40

Page 42: Desarrollo de una herramienta para detectar spoilers y

Filtros Neuronas Precision Recall F1-score Roc

32 8 0.39 0.55 0.45 0.66516 10 0.40 0.50 0.44 0.6548 6 0.39 0.54 0.45 0.6634 8 0.37 0.55 0.44 0.658

Tabla 15: Resultados de los modelos en funcion de la cantidad de filtros yneuronas

Los modelos de 8 filtros y de 32 son los que tienen el f1-score mas alto. Apesar de ello el modelo de 32 filtros tiene un recall ligeramente superior, loque lo convierte en el mejor modelo utilizando un diccionario propio y elresumen de las pelıculas como segunda entrada.

41

Page 43: Desarrollo de una herramienta para detectar spoilers y

9.1.6. Modelos con Bert y sinopsis

A diferencia de los modelos de los apartados anteriores, en los modelos deeste no ha sido necesario utilizar dropout.

El primer modelo probado ha sido uno con una unica capa convolucional de16 filtros.

Filtros Precision Recall F1-score Roc

16 0.40 0.59 0.48 0.685

Tabla 16: Resultados de un modelo con una capa convolucional de 16 filtros

Si se comparan estos resultados con los de los mejores modelos utilizando undiccionario propio y la sinopsis como entrada en la tabla 10 se puede observarcomo este ultimo modelo es mejor que los mencionados en esa tabla, ya quelos supera tanto en precision como en recall.

Aunque los resultados parecen bastante buenos se han creado unos modelosmas para comprobar si se puede encontrar otro mejor.

2 de esos modelos han consistido en anadir una capa convolucional extra almodelo anterior. De manera que un modelo tendra como filtros 32 y 16 y laotra 16 y 8.

Filtros Precision Recall F1-score Roc

32, 16 0.47 0.48 0.47 0.67316, 8 0.44 0.50 0.47 0.670

Tabla 17: Resultados de un modelo con 2 capas

Anadir una capa extra ha arrojado unos modelos ligeramente peores. Sonligeramente mas precisos pero perdiendo recall. Este cambio ha hecho quedisminuya el f1-score.

Como anadir una capa extra no parece funcionar se han creado 3 modelosmodificando la cantidad de filtros.

42

Page 44: Desarrollo de una herramienta para detectar spoilers y

Filtros Precision Recall F1-score Roc

64 0.44 0.50 0.47 0.67032 0.42 0.55 0.48 0.6828 0.47 0.45 0.46 0.663

Tabla 18: Resultados de un modelo con 32 filtros y con 8

Si se comparan los modelos creados (tablas 16, 17 y 18) el de 16 filtros es elque arroja mejores resultados. Es uno de los que tiene el f1-score mas altoy el que tiene el recall mas alto.

Como no parece que hacer mas modificaciones vaya a mejorar el resultado,el mejor modelo utilizando bert y la sinopsis de las pelıculas como segundaentrada es el de 16 filtros.

9.1.7. Modelos con Bert y resumen

Al igual que en el apartado anterior en estos modelos tampoco se ha utilizadodropout.

Se han creado los siguientes modelos en funcion de la cantidad de filtrosutilizados.

Filtros Precision Recall F1-score Roc

16 0 0 0 0.532 0.22 0.06 0.10 0.50464 0.21 0.45 0.29 0.511

Tabla 19: Resultados de los modelos en funcion de la cantidad de filtros

El modelo de 64 filtros es claramente el mejor en este caso. En este tipo demodelos parece haber una clara tendencia de mejora al anadir complejidadal modelo, sin embargo no se ha probado ninguno mas de esos 3. La razones que los modelos de los apartados anteriores tienen un rendimiento muysuperior y un hipotetico modelo utilizando Bert y el resumen de las pelıculascon un rendimiento similar deberıa ser mas grande y, por lo tanto, tambiendeberıa ser mas lento y deberıa gastar mas memoria.

43

Page 45: Desarrollo de una herramienta para detectar spoilers y

9.1.8. Eleccion final del modelo

En la tabla 20 se muestran los mejores modelos de cada uno de los apartadosanteriores.

Tipo Entrada Filtros Neuronas Prec. Recall F1 Roc

Propio Sinopsis 8 8 0.37 0.58 0.45 0.665Propio Resumen 32 8 0.39 0.55 0.45 0.665Bert Sinopsis 16 - 0.40 0.59 0.48 0.685Bert Resumen 64 - 0.21 0.45 0.29 0.511

Tabla 20: Resultados de los modelos en funcion de su tipo y su entrada

De los 4 tipos de modelo el que mejor resultados arroja es utilizando Bert yla sinopsis de las pelıculas como entrada. Supera al resto de opciones tantoen precision como en recall.

La segunda mejor opcion serıa utilizar un diccionario propio y la sinopsis.Segun las metricas las predicciones que hace son muy similares a hacerlascon el resumen como entrada, sin embargo el que utiliza la sinopsis comoentrada necesita menos filtros. Eso hace que el modelo sea mas rapido ynecesite menos memoria. Ademas una sinopsis de una pelıcula suele ser mascorta que un resumen, lo que hace el proceso de tokenizado mas rapido.

En ultima lugar se encuentra Bert utilizando un resumen. Es el que peorresultados aporta y, tal y como se ha mencionado anteriormente, en el casode encontrar un modelo de este tipo con un rendimiento similar, serıa mascostoso que el resto de opciones.

44

Page 46: Desarrollo de una herramienta para detectar spoilers y

9.2. Evaluador de pelıculas

9.2.1. Analisis del dataset

El dataset consta de 1572 pelıculas con una puntuacion de 0 a 10. Ademascada pelıcula contiene su sinopsis y su resumen.

Como este es un dataset pequeno se utilizara todo durante el entrenamiento.El 80 % seran los datos de training y el 20 % seran los de test.

Los modelos estan implementados de manera que da una puntuacion en unrango de [0, 1] en lugar de [0, 10]. Esto dato es importante para valorar losresultados de las metricas utilizadas.

En este problema se utilizaran las siguientes metricas:

• MSE: Es el promedio de los errores al cuadrado entre la salida delmodelo y la esperada. Siendo R la salida del modelo y E los resultadosesperados se define de la siguiente manera:

MSE =1

n

n∑i=1

(Ri − Ei)2

• RMSE: Es la raız cuadrada del promedio de errores cuadrados. Sedefine de la siguiente manera:

RMSE =√MSE

• R2: Representa la proporcion de la varianza que puede explicar elmodelo. Este valor puede llegar a ser negativo. Dado un modelo bque unicamente da como la salida la media de la lista de resultadosesperados del dataset, un modelo m tiene un valor R2 negativo si elerror cometido por la prediccion de m es mayor que el error cometidopor la prediccion de b. Es decir, que dar la media de los resultadosesperados ante cualquier entrada es mejor que utilizar m como modelo.

• Correlacion: Indica la fuerza de la relacion lineal entre el resultado deun modelo y el resultado esperado ante esa misma entrada. Este valorse encuentra en el rango [-1, 1]. Los valores cercanos a 1 indican unafuerte relacion directa, mientras que los valores cercanos a -1 indicanuna fuerte relacion inversa.

45

Page 47: Desarrollo de una herramienta para detectar spoilers y

A continuacion se encuentra el error que comete dicho modelo base que antecualquier entrada da como salida la media de los valores esperados.

• : R2: 0

• MSE: 0.00936

• RMSE: 0.09677

• Correlacion: No definida. Como la varianza de la salida del modelo es0, al calcular la correlacion se dividirıa por 0.

9.2.2. Tipos de modelo

Los modelos creados se pueden clasificar en los mismos 4 tipos que en eldetector de spoilers. Por un lado se pueden clasificar segun el tipo de entradaa utilizar (sinopsis o resumen) y por otro segun el tipo de diccionario yembeddings utilizado (propio o Bert).

En las figuras 11 y 12 situadas en el anexo se pueden observar los diagramasde los modelos.

9.2.3. Longitud de textos para el diccionario propio

La longitud de textos utilizada es la misma que con el detector de spoilers.

9.2.4. Modelos con diccionario propio utilizando la sinopsis

Estos son los modelos creados utilizando un diccionario propio y la sinopsisde las pelıculas.

46

Page 48: Desarrollo de una herramienta para detectar spoilers y

Filtros R2 MSE RMSE Correlacion

16 -0.01344 0.00963 0.98147 0.1782132 -0.05857 0.01006 0.10031 0.1023464 -0.00216 0.00953 0.0976 0.18703

128 0.08577 0.00868 0.09329 0.30102256 -0.00415 0.00954 0.0977 0.20399

Tabla 21: Resultados de los modelos en funcion de la cantidad de filtros

Solo uno de los modelos ha conseguido un error medio menor que caso base.Ademas este modelo tiene una buena correlacion con la salida esperada.Por ello considero que este el mejor modelo usando diccionario propio y lasinopsis como entrada.

9.2.5. Modelos con diccionario propio utilizando el resumen

Estos son los modelos creados utilizando un diccionario propio y el resumende las pelıculas.

Filtros R2 MSE RMSE Correlacion

16 0.0569 0.00896 0.09468 0.2608932 0.08457 0.0087 0.09328 0.2920764 0.12622 0.0083 0.09113 0.36496128 0.12314 0.00833 0.09129 0.36428256 0.12948 0.00827 0.09096 0.40332512 0.16539 0.00793 0.08907 0.413571024 0.15724 0.00801 0.0895 0.411732048 0.18171 0.00778 0.08819 0.434674096 0.13632 0.00821 0.0906 0.37393

Tabla 22: Resultados de los modelos en funcion de la cantidad de filtros

Utilizar el resumen de las pelıculas parece ser un mejor parametro de entradaque la sinopsis, ya que ninguno de los modelos ha resultado ser peor que elcaso base.

El mejor modelo es el de 2048 filtros, es el que tiene menor error medio ytiene una correlacion alta.

47

Page 49: Desarrollo de una herramienta para detectar spoilers y

9.2.6. Modelos con Bert y sinopsis

Estos son los modelos creados utilizando Bert y la sinopsis de las pelıculascomo entrada.

Filtros R2 MSE RMSE Correlacion

8 -0.00004 0.00951 0.0975 -0.029716 -0.1479 0.01091 0.10446 0.279832 -0.1007 0.01046 0.10228 0.3059964 -0.0011 0.00952 0.09755 0.00358

32, 16 -0.0405 0.00989 0.0995 0.076932, 16, 8 -0.1797 0.01121 0.1059 -0.0382

Tabla 23: Resultados de los modelos en funcion de la cantidad de filtros

Ninguno de estos modelos es mejor que otro modelo que a cualquier entradade la media como salida. La salida de los modelos de 16 y 32 filtros tieneuna buena correlacion con la salida esperada, pero debido al alto valor demse no pueden ser candidatos a buenos modelos.

Por ello considero que no hay ningun modelo bueno utilizando Bert y lasinopsis de las pelıculas.

9.2.7. Modelos con Bert y resumen

Estos son los modelos creados utilizando Bert y el resumen de las pelıculas.

Filtros R2 MSE RMSE Correlacion

16 -0.00099 0.009514 0.09754 -0.01255732 -0.00059 0.009511 0.09752 0.1552764 0.06162 0.008919 0.09444 0.25818

64, 32 0.1953 0.00765 0.08746 0.47575

Tabla 24: Resultados de los modelos en funcion de la cantidad de filtros

En este caso si que hay modelos mejores que dar la media como salida. Elunico que no cumple este condicion basica es el de 16 filtros. El resto va

48

Page 50: Desarrollo de una herramienta para detectar spoilers y

reduciendo el error en funcion de la complejidad del modelo, ademas de iraumentando la correlacion con la salida esperada.

Por ello el mejor modelo utilizando Bert y el resumen de las pelıculas es elque utiliza 2 capas de filtros de 64 y 32.

9.2.8. Eleccion final del modelo

En la tabla 25 aparecen los mejores modelos en funcion del tipo de modeloy el tipo de entrada.

Tipo Entrada Filtros R2 MSE RMSE Corr.

Propio Sinopsis 128 0.08577 0.00868 0.09329 0.30102Propio Resumen 2048 0.18171 0.00778 0.08819 0.43467Bert Sinopsis - - - - -Bert Resumen 64, 32 0.1953 0.00765 0.08746 0.47575

Tabla 25: Mejores modelos en funcion del tipo de modelo y el tipo de entrada

El mejor tipo de entrada ha resultado ser el resumen de las pelıculas. Uti-lizando la sinopsis unicamente ha dado resultados utilizando un diccionariopropio. Utilizar Bert no solo no lo ha ayudado, sino que ha dado resultadospeores.

En cuanto al resumen como entrada ambas opciones han dado muy buenosresultados, siendo el que utiliza Bert ligeramente superior.

Por ello el mejor modelo para resolver este problema es este ultimo.

9.3. API

Tal y como se ha mencionado anteriormente la API REST se ha construidoutilizando Django como framework.

Esta api unicamente acepta la operacion POST para la consulta de datos.El motivo por el que no acepta GET es que las se volverıan ilegibles al pro-porcionar los parametros de entrada, especialmente si los textos son largos.

49

Page 51: Desarrollo de una herramienta para detectar spoilers y

A continuacion se explicara la forma de interactuar con la API segun lafuncion a utilizar.

9.3.1. Detector de spoilers

La entrada ha de estar en formato JSON con las siguientes variables:

• ’plot’: El texto de la pelıcula. Se espera que sea su sinopsis.

• ’review’: Representa la opinion en la que se desea conocer si hayspoilers.

La API proporcionara la salida en formato JSON con la siguiente variable:

• ’is spoiler’: Es de tipo booleano e indica si la opinion proporcionadacontiene spoilers.

9.3.2. Evaluador de pelıculas

La entrada ha de estar en formato JSON con la siguiente variable:

• ’plot’: El texto de la pelıcula. Se espera que sea su resumen.

La API proporcionara la salida en formato JSON con la siguiente variable:

• ’score’: Es de tipo float y se encuentra en el rango [0, 10] y representala puntuacion de la pelıcula.

50

Page 52: Desarrollo de una herramienta para detectar spoilers y

10. Bibliografıa

Referencias

[1] Game Of Thrones spoilers for season eight finale ’leaks’ online —Daily Mail Online.url: https://www.dailymail.co.uk/tvshowbiz/article-7001197/Game-Thrones-spoilers-end-season-eight-leaks-

online-leaving-fans-livid.html (visitado 27-09-2020).

[2] Jordan Boyd-Graber, Kimberly Glasgow y Jackie Sauter Zajac.((Spoiler alert: Machine learning approaches to detect social mediaposts with revelatory information)).En: Proceedings of the ASIST Annual Meeting. Vol. 50. 1.John Wiley y Sons Inc., ene. de 2013, pags. 1-9.doi: 10.1002/meet.14505001073.

[3] Mengting Wan y col.((Fine-grained spoiler detection from large-scale review corpora)).En: ACL 2019 - 57th Annual Meeting of the Association forComputational Linguistics, Proceedings of the Conference.Association for Computational Linguistics, 2020, pags. 2605-2610.isbn: 9781950737482.

[4] Sreejita Biswas. MOVIE REVIEWS: TO READ OR NOT TOREAD! Spoiler Detection with Applied Machine Learning. Inf. tec.2020, pag. 11.

[5] Spoiler Alert - Chrome Web Store.url: https://chrome.google.com/webstore/detail/spoiler-alert/giamifkjbfoikpigmdmokddikadeolla (visitado 22-09-2020).

[6] TV Time - Chrome Web Store.url: https://chrome.google.com/webstore/detail/tv-time/fhcbbglcdkbmpdgjdjijeffldkboolmf (visitado 22-09-2020).

[7] Mladen Marovic y col.((Automatic movie ratings prediction using machine learning)).En: MIPRO 2011 - 34th International Convention on Informationand Communication Technology, Electronics and Microelectronics -Proceedings. 2011, pags. 1640-1645. isbn: 9789532330670.

51

Page 53: Desarrollo de una herramienta para detectar spoilers y

[8] ¿En que consiste la metodologıa Kanban y como utilizarla? — APD.url: https://www.apd.es/metodologia-kanban/ (visitado19-10-2020).

[9] GitHub. url: https://github.com/ (visitado 26-09-2020).

[10] Trello. url: https://trello.com/home (visitado 26-09-2020).

[11] Keras: the Python deep learning API.url: https://keras.io/ (visitado 26-09-2020).

[12] Google Colab. url:https://colab.research.google.com/notebooks/intro.ipynb

(visitado 21-09-2020).

[13] Almacenamiento en la nube para casa y el trabajo - Google Drive.url: https://www.google.com/intl/es/drive/ (visitado15-12-2020).

[14] IMDB Spoiler Dataset — Kaggle.url: https://www.kaggle.com/rmisra/imdb-spoiler-dataset?select=IMDB_reviews.json (visitado 21-09-2020).

[15] The Web framework for perfectionists with deadlines — Django.url: https://www.djangoproject.com/ (visitado 15-01-2021).

[16] Visual Studio Code - Code Editing. Redefined.url: https://code.visualstudio.com/ (visitado 05-10-2020).

[17] Home - MiKTeX.org.url: https://miktex.org/ (visitado 05-10-2020).

[18] Sueldos de Programador de sistemas en Espana — LinkedIn Salary.url: https://www.linkedin.com/salary/explorer?countryCode=es&titleId=539 (visitado 11-10-2020).

[19] Sueldos de Ingeniero de software en Espana — LinkedIn Salary.url: https://www.linkedin.com/salary/explorer?countryCode=es&titleId=9 (visitado 11-10-2020).

[20] Precios coworking Barcelona — Coworkidea.url: https://coworkidea.com/tarifas/ (visitado 12-10-2020).

[21] How does a neural network make predictions? — by Gerry Saporito— Towards Data Science.url: https://towardsdatascience.com/how-does-a-neural-network-make-predictions-6740663a63cb (visitado 30-12-2020).

52

Page 54: Desarrollo de una herramienta para detectar spoilers y

[22] Text Encoding: A Review. Authors: Rosaria Silipo and Kathrin. . . —by Rosaria Silipo — Towards Data Science.url: https://towardsdatascience.com/text-encoding-a-review-7c929514cccf (visitado 02-11-2020).

[23] Creating Word Embeddings: Coding the Word2Vec Algorithm inPython using Deep Learning — by Eligijus Bujokas — Towards DataScience. url: https://towardsdatascience.com/creating-word-embeddings-coding-the-word2vec-algorithm-in-python-using-

deep-learning-b337d0ba17a8 (visitado 02-11-2020).

[24] Understanding how Convolutional Neural Network (CNN) performtext classification with word embeddings — Joshua Kim.url: http://www.joshuakim.io/understanding-how-convolutional-neural-network-cnn-perform-text-

classification-with-word-embeddings/ (visitado 15-01-2021).

[25] CNN — Introduction to Pooling Layer - GeeksforGeeks.url: https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/ (visitado 15-01-2021).

53

Page 55: Desarrollo de una herramienta para detectar spoilers y

Anexo

Figura 10: Diagrama de capas de un modelo con diccionario propio paradetectar spoilers

Fuente: Propia

54

Page 56: Desarrollo de una herramienta para detectar spoilers y

Figura 11: Diagrama de capas de un modelo utilizando Bert tanto paradetectar spoilers como para evaluar pelıculas

Fuente: Propia

55

Page 57: Desarrollo de una herramienta para detectar spoilers y

Figura 12: Diagrama de capas de un modelo con diccionario propio paraevaluar pelıculas

Fuente: Propia

56

Page 58: Desarrollo de una herramienta para detectar spoilers y

Figura 13: Planificacion temporal del proyectoFuente: Propia

57