Descripción del Problema


La clasificación de documentos es un problema recurrente en diversos campos de las ciencias de la computacion. Basicamente el problema radica en la tarea de etiquetar un documento en una o más clases, de acuerdo a algun criterio prestablecido; por ejemplo el contenido y o temática del mismo. Esta clasificación puede ser desarrollada de manera algorítmica al abordarse la problemática con herramientas de mínera de texto, o en su defecto de manera manual, cuando los volumenes de información son acotados.


Como proyecto semestral, se ha propuesto el abordar este problema en el contexto de la categorización de peliculas en base su guión. Es decir, se pretende el entrenamiento de diversas alternativas de clasificación para comprobar la factibilidad de desarrollar esta tarea con ciertos niveles de performance, discutidos de manera posterior en este trabajo.


En relación a la motivación del trabajo, junto con la predilección de los integrantes del equipo por las diferentes expresiones del séptimo arte, parte de este interés también se debe; a la curiosidad de de saber si es posible clasificar una película en su correcto género a partir de su "script", e al aplicar algoritmos de minería de texto, tanto en la transformación del los datos, como en la extracción de "conocimiento" de los mismos. Adicionalmente, se tenía la creencia que en los elementos determinantes en la clasificación, podían ser a su vez buenas variables explicativas de la popularidad de las mismas, aspecto que habría sido interesante testear.


Las hipótesis del proyecto, se encuetran relacionadas en gran medida con la motivación del mismo. Estas son recogidas en las siguientes tres proposiciones:



No obstante, en términos de poner a prueba estas hipótesis, solo se abordaría la primera de ellas, cuyo prueba y resulatdos son el principal tema de este trabajo.


Finalemente, en términos de aplicaciones del proyecto presentado, la primera de ellas corresponde de manera directa al uso que pueda darse a la clasifación de guiones de peliculas, por ejemplo un estudio que debe evaluar muchos guiones antes de poder tomar una decisión, situación en la que la clasificación podría plantearse como un paso previo a la lecctura de los mismos. Por otra parte, se eculubra que la comprensión del contenido del filme, podría ser un elemento interesante de evaluar dentro de sistemas de recomendación, aún cuando esta proposición cae fuera de los alcances del proyecto. Por último, se cuentan todas las extrapolaciones que puedan hacerse del problema propuesto, para otros campos que requieran de la clasificación de documentos extensos (Libros, tesis, noticias, etc).


Datos a utilizar


Los datos a utilizar corresponden a los guiones de las películas, que fueron obtenidos vía scraping desde IMSDb (The Internet Movie Script Database), y a la metadata disponible de cada una, obtenida por medio de la API de OMDb (The Open Movie Database). Del total de películas disponibles en IMSDb se extrajeron 1021 guiones en texto plano, para luego realizar los requests correspondientes a OMDb. Los guiones restantes sólo están disponibles en formato PDF, lo que dificulta su manipulación, por lo que no fueron considerados en este primer acercamiento, aunque no se descarta a futuro extraer el texto directamente o utilizar OCR en el caso de los documentos escaneados.


Respecto a la estructura de la metadata de cada filme incorporado en el data set a través de la obtención de su guión, se presenta un ejemplo de la misma:


            {
                "Awards":"Won 1 Oscar. Another 19 wins & 18 nominations.",
                "Cast":["Mark Hamill", "Harrison Ford", "Carrie Fisher", "Billy Dee Williams"],
                "DVD":"21 Sep 2004",
                "Director":"Irvin Kershner",
                "Genre-List":["Action", "Adventure", "Fantasy"],
                "Main-Genre":"Action",
                "Rated":"PG",
                "Stopwords":["Leia", "Vader", "R2D2", "Creature", "Ben", "Solo", "voice", "Landos",
                "Chewbacca", "Ugnaught", "Kenobi", "Chief", "Fett", "Yoda", "C3PO",
                "Darth", "Snow", "Aide", "Calrissian", "Emperor", "Skywalker", "Luke",
                "Lando", "ObiWan", "Princess", "Boba", "Han"],
                "Title":"Star Wars: Episode V - The Empire Strikes Back",
                "Year":"1980",
                "file":"Star Wars: The Empire Strikes Back",
                "imdbID":"tt0080684",
                "imdbRating":"8.8",
                "tomatoUserRating":"4.1"
            }

La información obtenida desde OMDb corresponde a una respuesta en formato JSON con ~35 atributos, que van desde el título hasta la fecha de estreno en DVD. De éstos se seleccionó un subconjunto de 8 atributos relevantes a la temática del proyecto: Título, Año, Actores, Directores, Géneros, Premios, User Score (RottenTomatoes) y Clasificación. De estos atributos, el más importante son los Géneros, los cuales serán utilizados para etiquetar los guiones recopilados.


Estructura de los Guiones

Los guiones de las películas están escritos en texto plano, utilizando _whitespace_ para darles formato. En su mayoría siguen una estructura estándar, escribiendo palabras clave con mayúsculas, centrando diálogos, etc., lo cual es aprovechado a la hora de limpiar el texto. A continuación se presenta el fragmento de uno de los guiones considerados en el data set.



                        INT. GANTRY - OUTSIDE CONTROL ROOM - REACTOR SHAFT

                        VADER
                        There is no escape.  Don't make
                        me destroy you.  You do not yet
                        realize your importance.  You
                        have only begun to discover your
                        power.  Join me and I will complete
                        your training.  With our combined
                        strength, we can end this destructive
                        conflict and bring order to the
                        galaxy.

                        LUKE
                        I'll never join you!

                        VADER
                        If you only knew the power of the
                        dark side.  Obi-Wan never told
                        you what happened to your father.

                        LUKE
                        He told me enough!  It was you
                        who killed him.

                        VADER
                        No.  I am your father.

                        Shocked, Luke looks at Vader in utter disbelief.

                        LUKE
                        No.  No.  That's not true!
                        That's impossible!

                        VADER
                        Search your feelings.  You know
                        it to be true.

                        LUKE
                        No!  No!  No!

                        VADER
                        Luke.  You can destroy the Emperor.
                        He has foreseen this.  It is your
                        destiny.  Join me, and together
                        we can rule the galaxy as father
                        and son.  Come with me.  It is the
                        only way.

El fragmento en cuestión corresponde a una de las escenas más icónicas de la saga de ciencia ficción y acción "Star Wars", en este pueden observarse los personajes destacados con mayúsculas y la descripcción de la locación de la escena en el mismo formato. Además, se aprecia las acotaciones correspondientes a las acciones no verbales de los personajes.


Limpieza de Datos


Dada la naturaleza de los datos, existe un vocabulario común utilizado por todos los guiones, particularmente a la hora de describir las escenas. Además, cada película tiene su propio conjunto de personajes cuyos nombres también se repiten en toda la extensión del guión, ya que en cada línea de diálogo aparece el nombre del personaje que está hablando, además de ser nombrados constantemente en las acotaciones y en los mismos diálogos. Es por esto que la limpieza de los datos se centró principalmente en la eliminación de estos términos que, si bien aportan información posiblemente relevante a la hora de clasificar, en general sólo introducen ruido e incrementan las probabilidades de producir un overfitting. Las palabras a eliminar son:



Exploración de datos


Distribución de Clases (Géneros)


Las películas se clasifican en 24 géneros, cada una perteneciendo por lo menos a uno de ellos. Para el etiquetado se escogió el Género Principal de la película, determiando por el primer elemento del arreglo de Géneros entregado por la API de OMDb.


La distribución de las películas dentro de estas 24 categorías se puede ver en la siguiente figura:



Debido a la gran diferencia en la representatividad de las clases, se decidió reducirlas a las 7 con mayor representación: Acción, Aventura, Animación, Comedia, Crimen, Drama y Horror. Para aquellas películas donde el Género Principal no corresponde a ninguno de los seleccionados se utilizó como género principal el género siguiente en orden de importancia dado por la lista de Géneros. Las películas que no tienen ninguno de los géneros seleccionados dentro de su lista de Géneros, principalmente Documentales o Biografías, fueron simplemente descartadas y eliminadas del dataset.


La distribución final de las películas dentro de las 7 categorías es la siguiente:



Extensión de los Guiones


Respecto a los resultados preliminares de la exploración de los palabras en los guiones, en términos de extensión estos pueden ser descritos de acuerdo a una distribución que basandose en su desripcción gráfica puede ser considerada normal.



Palabras más Frecuentes


A continuación se muestran una serie de Wordclouds ilustrando las palabras más frecuentes dentro de los guiones de cada género, y cómo van cambiando al cambiar el método utilizado (tf o tf-idf) o al ir eliminando palabras (stopwords, pseudo-stopwords y nombres de personajes). Para efectos de ejemplificar como el preprocesamiento influye sobre la representación de los datos, para dos de los géneros se muestra la evolción sobre la frecuencia de las palabras a medida que este proceso se refina.


Palabras más frecuentes sin preprocesamiento

Como resultado de la vectorización por género de los términos en los diferentes documentos para la categoría "Action" se obtiene:

Representación Term Frequency


Representación Term Frequency Inverse Document Frequency


Palabras más frecuentes eliminando stopwords del Inglés

Como resultado de la vectorización por género de los términos en los diferentes documentos y eliminando stopwords en base a lista predefinida para el idioma inglés del objetos Vectorizer de sklearn para la categoría "Action" se obtiene:

Representación Term Frequency


Representación Term Frequency Inverse Document Frequency


Palabras más frecuentes eliminando stopwords y vocabulario de pseudo-stopwrods

Como resultado de la vectorización por género de los términos en los diferentes documentos y eliminando stopwords en base a lista predefinida para el idioma inglés del objetos Vectorizer de sklearn, además de incluir una lista de otras palabras a excluir en base a los resultados previos se obtiene para la categoría "Action":

Representación Term Frequency


Representación Term Frequency Inverse Document Frequency


Palabras más frecuentes preprocesadas

Finalmente, como resultado de la vectorización por género de los términos en los diferentes documentos y eliminando stopwords en base a lista predefinida para el idioma inglés, incluir una lista de otras palabras a excluir en base a resultados previos e incorporar un filtrado por los nombres de los personajes de cade pelicula, se obtiene para la categoría "Action":

Representación Term Frequency


Representación Term Frequency Inverse Document Frequency


De las gráficas word cloud antes descritas, se pueden establecer ciertas conclusiones respecto al dataset y a cómo se distribuyen en frequencia los diferentes términos en sus respectivos géneros. Destaca el hecho de que nombres de personajes y acotaciones referidas a contextos de las escenas son muy frecuentes y dada su especificidad a cada pelicula en particular, al momento de entrenar un clasificador ensuciarían los resultados. Es por este motivo que el preprocesamiento final contemplaría el obtener la lista de personajes de cada filme en el data set (IMDb), y junto a los procedimientos estándar de limpieza de texto serían eliminados de la data.


Resultados


A modo de aproximación al problema propuesto, se contemplaría el entrenamiento de diversos clasificadores para responder a la interrogante de si es posible clasificar películas en su género de acuerdo a su script. Para ello se dividirían los datos en un conjunto de entrenamiento y otro de prueba. Luego se desarrollaría la siguiente metodología:



Entrenamiento y cross validation con k-folds

Para desarrollar el entrenamiento de los distintos modelos de clasificación propuestos, se probarían cinco modelos de clasificación. Para ello se emplearía cross validation (k-folds). Este procedimiento sería efectuado sobre un set de entrenamiento obtenido al separar el data set original en dos partes, manteniendo la proporción de las clases en cada uno de ellos. Esto para que una vez ajustado los hiperparámetros considerados y seleccionado los mejores modelos, estos se probasen sobre el set de entrenamiento. A continuación se muestran los resultados de la validación y los respectivos intervalos de confianza para cada clasificador probado. Nótese que para la construcción del intervalo se emplearía una distribución t-student dado que el tamaño de la muestra resultante de cross validation resulta muy pequeño para aproximarlo por una distribución normal.


Accuracy (TF)

Classifier Mean Standar Deviation Confidence Interval
KNN 0.4466 0.055 [ 0.4151 0.4781]
Base 0.2145 0.0389 [ 0.1922 0.2368]
MNB 0.5157 0.0571 [ 0.4829 0.5484]
SVM 0.5895 0.0775 [ 0.545 0.6339]
Logistic Regression 0.5844 0.0686 [ 0.5451 0.6238]

Accuracy (TFIDF)

Classifier Mean Standar Deviation Confidence Interval
KNN 0.3842 0.088 [ 0.3338 0.4346]
Base 0.1899 0.0785 [ 0.1449 0.2349]
MNB 0.4221 0.043 [ 0.3974 0.4468]
SVM 0.522 0.0542 [ 0.4909 0.553 ]
Logistic Regression 0.4844 0.0531 [ 0.4539 0.5149]

Precision (TF)

Classifier Mean Standar Deviation Confidence Interval
KNN 0.2787 0.0986 [ 0.2222 0.3352]
Base 0.1439 0.0546 [ 0.1126 0.1752]
MNB 0.2716 0.0588 [ 0.238 0.3053]
SVM 0.4814 0.1084 [ 0.4192 0.5435]
Logistic Regression 0.4936 0.1208 [ 0.4244 0.5628]

Precision (TFIDF)

Classifier Mean Standar Deviation Confidence Interval
KNN 0.2613 0.0675 [ 0.2226 0.3 ]
Base 0.1688 0.0495 [ 0.1405 0.1972]
MNB 0.1531 0.0302 [ 0.1358 0.1704]
SVM 0.2587 0.0648 [ 0.2216 0.2958]
Logistic Regression 0.2275 0.0548 [ 0.1961 0.2589]

Recall (TF)

Classifier Mean Standar Deviation Confidence Interval
KNN 0.3138 0.0772 [ 0.2695 0.358 ]
Base 0.1355 0.0591 [ 0.1016 0.1694]
MNB 0.323 0.0409 [ 0.2996 0.3464]
SVM 0.4503 0.0987 [ 0.3937 0.5069]
Logistic Regression 0.4729 0.1086 [ 0.4107 0.5351]

Recall (TFIDF)

Classifier Mean Standar Deviation Confidence Interval
KNN 0.2862 0.0556 [ 0.2543 0.3181]
Base 0.1265 0.0471 [ 0.0995 0.1535]
MNB 0.2651 0.03 [ 0.2479 0.2823]
SVM 0.3172 0.0471 [ 0.2902 0.3442]
Logistic Regression 0.2877 0.0329 [ 0.2689 0.3066]

En términos generales, de los resultados presentados previamente, la primera conclusión relevante es que la transformación TF consistententemente supera a TF-IDF en los diferentes clasificadores evaluados y en las tres métricas propuestas (Accuracy, Recall, Precision). Por su parte, la respuesta de los clasificadores se encuentra dentro de lo previsible, pues el peor desempeño corresponde al clasificador base line conformado por un DummyClassifier de caracter estratificado debido al desbalance entre clases. Este a su vez es seguido por la performance de KNN (K Nearest Neighbours) y MNB (Multinomial Naive Bayes). Ya en un nivel un tanto superior, se encuentra SVM (Support Vector Machine) y la regresión logística. En todas las métricas se observa que la diferencia entre ambos no es significativa al 95% de confianza (5% significancia).Por estos motivos, para efectos de seleccionar un clasificador en virtud de los objetivos del proyecto se considerarán los resultados de SVM y Logístic Regression.


Features más representativas

Conforme uno de los objetivos del proyecto corresponde a identificar elementos representativos dentro de un género, como resultado del entrenamiento de los clasificadores se presentan una serie de wordclouds ilustrando los features más representativos de cada clase obtenidos utilizando Logistic Regression:

Action (TF)


Action (TFIDF)


Adventure (TF)


Adventure (TFIDF)


Animation (TF)


Animation (TFIDF)


Comedy (TF)


Comedy (TFIDF)


Crime (TF)


Crime (TFIDF)


Drama (TF)


Drama (TFIDF)


Horror (TF)


Horror (TFIDF)


Testing y matrices de confusión

Para los dos modelos con mejor perfomance,estos en paralelo se entrenarían sobre el set completo de training y se probarían sobre el data set de testing, aun no considerado en más que la separación inicial. Así se volverían a calcular las métricas de desempeño anteriores como un indicador de que tan generalizables son los resultados obtenidos. Adicionalmente, se construirían matrices de confusión para determinar la calidad de la clasificación intra-clase.


Support Vector Machine


Classification Report

Class Precision Recall f1-score Support
0 0.60 0.73 0.66 70
1 0.38 0.18 0.24 17
2 1.00 0.40 0.57 10
3 0.56 0.74 0.64 65
4 0.50 0.44 0.47 27
5 0.47 0.35 0.40 52
6 0.55 0.40 0.46 15
avg/total 0.55 0.55 0.54 256

Matriz de Confusión

Action Adventure Animation Comedy Crime Drama Horror
Action 51 3 0 4 3 5 4
Adventure 8 3 0 4 0 2 0
Animation 1 0 4 5 0 0 0
Comedy 4 0 0 48 4 9 0
Crime 6 0 0 6 12 3 0
Drama 9 2 0 17 5 18 1
Horror 6 0 0 2 0 1 6

Logistic Regression


Classification Report

Class Precision Recall f1-score Support
0 0.66 0.76 0.71 70
1 0.45 0.29 0.36 17
2 0.80 0.40 0.53 10
3 0.61 0.72 0.66 65
4 0.45 0.56 0.50 27
5 0.50 0.40 0.45 52
6 0.50 0.27 0.35 15
avg / total 0.58 0.58 0.57 256

Matriz de Confusión

Action Adventure Animation Comedy Crime Drama Horror
Action 53 3 0 2 6 4 2
Adventure 4 5 0 4 0 4 0
Animation 1 0 4 5 0 0 0
Comedy 2 1 0 47 4 10 1
Crime 5 1 0 3 15 3 0
Drama 8 1 1 14 6 21 1
Horror 7 0 0 2 2 0 4

Gráficos de rueda

Como se concluyó, los mejores clasificadores ajustados en términos de métricas corresponden a Logistic Regression y Support Vector Machine. Estos una vez entrenados sobre el dataset para esta función, permiten predecir la clasificación que tendrán los guiones de otras películas; en particular aquellas en el conjunto de testing. Una forma de interpretar el funcionamiento detrás de los clasificadores, es estimar la probabilidad de que cada script, pertenezca a cada una de las clases en cuestión, para luego ser asignado a aquella con mayor probailidad. Esta aproximación, permite dar una interpretación adicional a los resultados obtenidos, por cuanto las películas en general no son clasificadas en único género y una incorrecta clasificación de las mismas; podría ser consecuencia de una pequeña diferencia entre dos clases con probabilidades muy cercanas.


A continuación, se presentan algunos ejemplos de las probabilidades de pertenencia para algunas de las películas contenidas en el dataset empleado para este trabajo. A modo de enriquecer el análisis se contrasta en base a las diferencias existentes, cuando las probabilidades son estimadas a partir del entrenamiento con regresión logística versus la máquina de vectores de soporte.


Support Vector Machine

Logistic Regression


A partir de la interpretación de la forma en la que quedan expresadas las probabilidades se observa que, en general, Support Vector Machine entrega más información sobre los géneros de una película, dando indicios de las proporciones de cada género en ésta, mientras que Logistic Regression pasa por alto los géneros secundarios para enfocarse sólo en el principal.

Conclusiones


  • La similitud entre las clases escogidas dificulta la diferenciación entre las features representativas. El criterio de selección se basó únicamente en la distribución de las clases, lo que puede complicar la clasificación si existen dos géneros muy similares. Un método más correcto podría ser el escoger los géneros más distintos entre sí, disminuyendo la repetición de features entre ellos.
  • La obtención de features representativas se dificulta mientras más variadas sean las tramas de un género. De las clases utilizadas, Comedy es la que presenta tramas más diversas, lo que se ve reflejado en un vocabulario amplio y poco específico desde el cual es difícil inferir el género al que pertenece.
  • La reducción del numero de clases de una película a un único género produce resultados contraintuitivos, especialmente en los casos donde el género principal de la película no pertenece al conjunto de clases escogido, pasando a ser etiquedada en base a sus géneros secundarios (como sucede con géneros como Sci-Fi o Thriller).
  • El preprocesamiento realizado es particular al problema planteado y requiere conocimiento del mismo para llevarlo a cabo, lo que dificulta la generalización del proyecto a otros tipos de documentos.
  • En relación a los clasificadores, los resultados obtenidos no permiten optar entre los dos mejores con la significancia tradicional (5%). No obstante, el ambos presentan buenos resultados, más allá de las métricas, pues permiten generar una lista de términos representativos coherente y desarrollan una clasificación que, aunque imperfecta ajusta bien a la realidad (Gráficos de ruedas de clasificación por género).
  • Finalmente, a modo de conclusión general, respecto a las hipótesis planteadas se concluye que la factibilidad de entrenar un clasificador de documentos, para aplicar a la categorización de guiones de películas, es real. Sin embargo, pese a que es posible desarrollar esta tarea, la misma se encuentra limitada por el arduo pre procesamiento que requieren los datos para conseguir una representación adecuada. Esto hace que, el problema desarrollado sea poco generalizable, pues parte esencial de la solución planteada requirió acceder a información adicional (metadata de los filmes) que para otras aplicaciones podría no existir.