EL PROBLEMA DE LA AUTORIA DE TEXTOS LITERARIOS MULTILINGÜE Gonzalo Mamano Escudero Conrado Poole Siguero Universidad Europea de Madrid C/ General Peron nº 6 6ª Madrid Spain Universidad Europea de Madrid C/Cadiz nº49 28230 Las Rozas Madrid Spain Resumen: En este artículo describimos el trabajo de investigación que hemos realizado este curso en la asignatura de PLN (procesamiento del lenguaje natural), una asignatura de 5º de ingeniería informática de la universidad CEES de Madrid. Hemos intentado afrontar el problema de la autoría de textos literarios. Para ello nos propusimos el reto de intentar generalizar el sistema para hacerlo independiente del idioma, ya que el reconocimiento del estilo es algo independiente de la lengua utilizada. Para ello atacamos el problema desde dos puntos de vista: los rasgos estilográficos y la utilización de n-gramas. Abstract: In this article we described investigation which we have made this course in the PLN subject (Natural Language Processing), a subject of 5º of computer science engineering of university CEES of Madrid. We have tried to confront the problem of the literary text authorship attribution. For it we set out the challenge to try to generalize the system to make it independent of the language, since the recognition of the style is something independent of the used language. For it we attacked the problem from two points of view: the stilographic characteristics and the use of n-grams. 1. INTRODUCCIÓN El problema de la autoría de autores consiste en reconocer la al autor de un texto analizando su contenido. Se supone que cada autor tiene un estilo diferenciable, todo escritor tiene sus hábitos, técnicas y recursos a la hora de escribir, por lo que es algo que a priori parece un problema a solucionar mediante aprendizaje automático. Solucionar este problema puede ser muy útil para descubrir autores de libros anónimos o pude servir para aplicarse a autorías de correos electrónicos o incluso en el campo criminológico. Analizando los estudios ya realizados, decidimos abordar el problema desde dos perspectivas: los rasgos estilográficos y la utilización de los n-gramas. Estas dos técnicas ya han sido usadas y están referenciadas en los artículos:”Using machina learning Techniques for Stylometry” (Universidad de Georgia) y “language Independent authorship attribution using carácter level language models” (Universidad de Waterloo). El objetivo era estudiar cada uno por separado y luego mezclar ambas técnicas para ver el resultado. En los siguientes apartados de este artículo se irán exponiendo los distintos enfoques y experimentos con sus respectivos resultados. 2.- Longitud de las Oraciones (mean sentence length): el uso de oraciones largas indican un tipo de escritura más elaborada y menos coloquial. 3.- Longitud de los párrafos (mean paragraph length): 4.- Número de comas por miles de tokens (number of commas per thousand tokens): 5. - Número de Comillas por miles de tokens (number of semicolons per thousand tokens): 2. EL ENFOQUE 6.- Numero de Citas(number of quotation marks per thousand tokens): Como hemos explicado antes nos hemos centrado en dos líneas de experimentación, los n-gramas y los rasgos estilográficos, usando como herramientas de aprendizaje automático WEKA, para lo cual hemos necesitado de la creación de varias herramientas de software para generar el tipo de archivos que acepta WEKA. A continuación se detallan cada uno de los enfoques. 7.- Número de Exclamaciones (number of exclamation marks per thousand tokens): 8.- Número de Guiones (number of hyphens per thousand tokens): 9.- (number of ands per thousand tokens): 10.- (number of buts per thousand tokens): 11.- (number of howevers per thousand tokens): 2.1 RASGOS ESTILOGRÁFICOS 12.- (number of ifs per thousand tokens): Como hemos introducido antes todo escritor tiene unos hábitos y unos recursos que aplica tanto consciente como inconscientemente a la hora de escribir. La clave es descubrir que aspectos de la escritura son los más identificativos. Los atributos que escogimos fueron los siguientes: 13.- (number of thats per thousand tokens): 1.- Longitud de las Palabras (mean word length): el uso de palabras más largas suele ir relacionado con un lenguaje más formal. 14.- (number of mores per thousand tokens): 15.- (number of musts per thousand tokens): 16.- (number of mights per thousand tokens): 17.- (number of thiss per thousand tokens): 18.-( number of verys per thousand tokens): Estos atributos han sido sacados del articulo:”Using machina learning Techniques for Stylometry” (Universidad de Georgia). 2.2 N-GRAMAS En cuanto al uso de n-gramas se ha de decir que según el idioma involucrado pueden ser mejor sacar, bigramas, trigramas, tetragramas, etc… Para lo cual hemos desarrollado un software que nos ayuda a la creación de los mismos. La forma de nuestros n-gramas, es la siguiente demostrada con un Ej.: Tetragramas de “programación”: 1. prog 2. _pro 3. __pr 4. ___p 5. rogr 6. ogra 7. gram 8. rama 9. amac 10. maci 11. ació 12. ción 13. ión_ 14. ón__ 15. n___ Si tuviéramos una palabra de longitud menor a la del ngrama, procederíamos así: Trigramas de “of”: 1. of_ 2. __o 3. f__ La ventaja de usar este tipo de creación de n-gramas frente a los basados en letras nada mas (sin guiones) es que a parte de los n-gramas sin guiones tenemos todas las terminaciones y comienzos de cada palabra, que pueden ser fundamentales a las hora de identificar un autor.Vease el ejemplo del uso de pasados en verbos regulares en el Ingles característica que puede servir para identificar a un autor, pues bien gracias a el uso de ngramas de esta forma siempre tendremos el ngrama “ed” ya sean bigramas, trigramas, etc. Cada NGrama se convertirá posteriormente un atributo de tal forma que el algoritmo de aprendizaje que usemos intentara generar conocimiento sobre el uso de los ngramas por parte de cada autor. Cada atributo (NGrama) tendrá un valor real asociado que sale de la siguiente fórmula: vj = frec jd Tfrec j Siendo: Vj El valor del atributo j. frecjd La frecuencia del atributo j en el documento d. Tfreqj La frecuencia del atributo j en la colección de documentos. Para conseguir probar el uso de esta técnica con el WEKA hemos tenido que crearnos un software de creación de archivos reconocidos por WEKA. Esta herramienta la hemos llamado “NGram Arff Creator” y esta desarrollada en Java.A continuación se describe el funcionamiento de la misma, para que se puedan reproducir nuestro experimentos correctamente. La herramienta esta compactada en un archivo Jar, para poder ejecutarla es necesario contar con una Maquina Virtual de Java instalada en nuestro ordenador (la herramienta esta probada bajo la versión 1.4.5 de la maquina virtual de sun). La sintaxis de la aplicación es la siguiente: Java –jar NGramArffCreator.jar DirTextos NumNGrams SizeNGram NGramTable Siendo: DirTextos: El directorio donde tenemos, los directorios de cada uno de los autores, dentro de los cuales están los ficheros de texto correspondientes al autor. NumNGrams: Es un numero entero que representa, con cuantos NGramas se va a crear el archivo de entrenamiento, sabiendo que cada ngrama va a representar un atributo.De tal manera que se quedaran con el numero indicado de ngramas mas frecuentes. SizeNGram: representa el tamaño de cada ngrama, es decir, si vamos a sacar bigramas(2), trigramas(3), etc… NGramTable: Puede tomar dos valores, true o false.El parámetro a true significa que el programa buscara y contara la frecuencia total de todos los ngramas encontrados y creara posteriormente un fichero llamado NGramsTable.dat en el que almacenara los NumNGrams mas frecuentes y sus frecuencias (Estamos creando un fichero de entrenamiento).El parámetro a false representara que no hace falta buscar y contar los ngramas sino que los cargaremos del fichero NGramsTable.dat (Estamos creando un archivo de pruebas). El resultado que da nuestro programa es un archivo .arff reconocible por weka para usarlo con los algoritmos de aprendizaje que nos proporciona. 3. EXPERIMENTACION Como el objetivo final de nuestra investigación consistía en intentar hallar una forma de detección de autoría independiente del idioma hemos realizado experimentos en más de un idioma. Además para cada idioma se han realizado los experimentos en tres fases: 1. Uso de ngramas 2. Uso de rasgos estilográficos 3. Mezcla de 1 y 2 Como métricas para medir los resultados nos basamos en el porcentaje de acierto del sistema y los datos proporcionados de Recall y Precisión. En cuanto a él algoritmo usado para entrenar nuestro sistema el utilizado fue un algoritmo de boost (AdaBoostM1) con 50 iteraciones de mejora y que trabajaba internamente con una algoritmo de árboles de decisión , un c4.5 ( o J48 como viene en el WEKA). 3.1 EL GRIEGO La colección de documentos usada consiste en una serie de textos periodísticos y nos la proporcionaron desde la Schoole of Computer Science de la Universidad de Waterloo. Esta colección contiene a su vez dos colecciones distintas A y B, para las cuales tenemos un conjunto de textos para el entrenamiento y un conjunto de textos para las pruebas. La siguiente tabla representa la colección de documentos: 3.1.1 NGRAMAS Como punto de partida para la experimentación con ngramas sobre esta colección tomamos las referencias que teníamos de XXXXX las cuales decían que los mejores resultados obtenidos habían sido con ngramas de longitud 6 (Sexagramas), razón por la cual empezamos nuestro experimentos por crear un archivo arff de sexagramas. 3.1.1.1 Corpus A Sobre esta colección no conseguimos ningún resultado satisfactorio, obtuvimos unos porcentajes de acierto realmente bajos e investigando el porque de ese error tan elevado encontramos que teníamos un Overfitting (Sobreajuste) máximo. Obteníamos un error de 55% sobre el conjunto de pruebas así que para detectar si teníamos sobreajuste lo que hicimos fue hacer una evaluación cruzada con 10 folders, y los resultados nos daban de un acierto del 100%, claro indicador de sobreajuste ya que estos resultados indican que no se equivocaba nunca haciendo pruebas con el conjunto de entrenamiento.El sistema se había aprendido demasiado bien los ejemplos de entrenamiento, memorizando en vez de generalizando. 3.1.1.2 Corpus B Afortunadamente en esta colección no tuvimos problemas de sobreajuste como los ocurridos sobre la colección A. Los mejores resultados los obtuvimos creando atributos basados en sexagramas y quedándonos con los 16000 mas frecuentes. Evaluando sobre la colección de test obtuvimos unos porcentajes de acierto nada desdeñables del 97%. A continuación se muestran unas tablas con los resultados obtenidos de Recall y precisión. Precision 1 1 1 1 0.833 1 0.909 1 1 1 Recall 1 1 0.9 1 1 1 1 0.9 0.9 1 F1 1 1 0.947 1 0.909 1 0.952 0.947 0.947 1 Class Alaxiotis Babiniotis Bokos Dertilis Kiosse Liakos Maronitis Ploritis Tasios Tsukalas 3.1.2 Rasgos Estilográficos 3.1.2.1 Corpus A Los resultados obtenidos fueron de fracaso total por sobreajuste al 100% exactamente igual en en el caso de NGramas, la Razón¿? 3.1.2.2 Corpus B Los resultados no fueron muy buenos, aunque ya era previsible porque habíamos usado un grupo bastante pequeño de atributos, dando por hecho que esos aspectos ya los cubrían los n-gramas. El error fue de un 42%. Precision 0.571 0.75 0.583 0.444 0.462 0.75 Recall 0.4 0.6 0.7 0.4 0.6 0.6 F1 0.471 0.667 0.636 0.421 0.522 0.667 Class Alaxiotis Babiniotis Bokos Dertilis Kiosse Liakos 0.5 0.692 1 0.267 0.3 0.9 0.9 0.4 0.375 0.783 0.947 0.32 Maronitis Ploritis Tasios Tsukalas 3.1.3 Mezcla ambos métodos Este método consiste simplemente en la mezcla de ambos métodos, es decir crear un archivo arff con los atributos de los ngramas y los de los rasgos estilográficos. 3.1.3.1 Corpus A Como cabía a esperar si en la aplicación de los métodos por separado obteníamos un sobreajuste máximo en la aplicación de la mezcla de ambos métodos, ocurre exactamente lo mismo por lo que no obtenemos ningún resultado nuevo. 3.1.3.2 Corpus B La aplicación del metodo de mezcla en este corpus no mejoro los resultados obtenidos mediante el metodo de los ngramas, de donde se podia deducir que los atributos estilograficos no aportan mas información que los ngramas, razon por la cual se creo un ranking por Information Gain y se observo lo anteriormente dicho, en el ranking aparecian al final los atributos estilograficos y todos con valor de importacia 0. El error que se obtuvo fue de un 3% y los resultados de Recall, Precision, etc son los mismos que para el metodo de los Ngramas aplicado con sexagramas, resultados que se pueden consultar mas arriba. 5. Trabajo relacionado Respecto de trabajos realizados usando ambas técnicas a la vez, ngramas y rasgos estilográficos no hemos encontrado ninguna fuente. Si bien si sobre cada una de las técnicas por separado, trabajos los cuales usamos como referencia para desarrollar el nuestro.Estos trabajos estan nombrados en las referencias. Por ejemplo en el uso de ngramas, sobre el griego, los autores del trabajo referenciado obtuvieron mejores resultados que nosotros sobre el corpus A (74%) pero sobre el B ellos obtuvieron un 90% frente a nuestro 97%. 6. Conclusiones y trabajo futuro Las conclusiones que podemos sacar son acerca del Griego nada mas y contemplan que en este idioma los rasgos estilográficos no aportan gran información sino que son los sexagramas los que nos aportan mas información acerca de la autoría, si bien estos resultados pueden ser esperables ya que en el uso de ngramas estamos recogiendo varios rasgos estilográficos, aunque sean medidos respecto de otras métricas (frecuencia frente a medidas por miles de tokens). Como se ha podido observar por falta de tiempo no se ha podido realizar investigación más que en un idioma (Griego) así que el principal trabajo futuro seria el intento de aplicar los métodos utilizados a otros idiomas (Ingles, Español, etc). Además queda como investigación el descubrir que características acerca del Corpus Griego A hacen que usando cualquiera de los dos métodos, o la mezcla de los dos se llegue siempre a un sobreajuste. 7. Referencias Como nuestro trabajo consistía en el intento por fusionar dos técnicas usadas ya: Ngramas y Rasgos estilográficos, nuestras fuentes han sido 2 artículos: 1) Using Machine Learning Techniques for Stylometry http://webster.cs.uga.edu/~khaled/MLcourse/Abstract1.pdf 2) Language Independent Authorship Attribution using Character Level Language Models. http://acl.ldc.upenn.edu/E/E03/E03-1053.pdf