miércoles, 26 de diciembre de 2012

EVALUACIÓN AUTOMÁTICA DE COHERENCIA TEXTUAL EN NOTICIAS POLICIALES UTILIZANDO ANÁLISIS SEMÁNTICO LATENTE*

http://www.scielo.cl/scielo.php?pid=S0718-48832010000200006&script=sci_arttext

. METODOLOGÍA APLICADA
Los pasos que se siguieron fueron fundamentalmente tres: recopilación del corpus, construcción del prototipo y evaluación de la coherencia de un conjunto de textos por el prototipo y por evaluadores humanos expertos.
En el desarrollo del trabajo se utilizó únicamente software libre, esto es, aquel que respeta las cuatro libertades esenciales establecidas por la Free Software Fundation (2010) –en español Fundación para el Software Libre–. Dichas libertades son:
a) Libertad de ejecutar el programa cuando se quiera.
b) Libertad de estudiar el código fuente y modificarlo para que haga lo que se quiera.
c) Libertad de copiar el programa y distribuir las copias cuando se quiera.
d) Libertad de publicar o distribuir una versión modificada cuando se quiera.

Según se desprende de lo anterior, se prescindió de cualquier aplicación propietaria y de código cerrado (que no puede ser modificado por el usuario), lo que garantiza que en todas las aplicaciones informáticas utilizadas no se vulnera ninguna licencia y, por ende, no hay uso ilegal de software de terceros.
Para toda la experiencia se empleó un computador con procesador Intel Centrino Duo, de 2 ghz, con una memoria RAM de 1 gb, es decir, un equipo promedio que se aleja de las características de los equipos de última generación. Esto no representó ningún problema pues el computador utiliza el sistema operativo Linux, específicamente la distribución Ubuntu de Canonical Ltd.; dicho sistema operativo tiene un alto grado de eficiencia y un bajo consumo de recursos en comparación con los sistemas operativos de Microsoft, por ejemplo. Además, la utilización de Linux fue una necesidad, debido a que muchas de las aplicaciones empleadas sólo corren de manera nativa en dicho ambiente.
3.1. Recopilación del corpus
Como se señaló en 2.2, el Análisis Semántico Latente precisa para su óptimo funcionamiento de extensos corpus de textos, y que estos textos, además, pertenezcan a un dominio temático restringido. Este corpus se utiliza para entrenar al software de Análisis Semántico Latente, y a partir de este conjunto de textos, la aplicación crea el espacio semántico multidimensional a la luz del cual analizará los textos que se procesen para calcular su coherencia. Teniendo en cuenta lo anterior y dado que la idea era trabajar con noticias, se optó por utilizar como dominio, de entre todos los temas que habitualmente aborda la prensa, el conocido como "Periodismo policial" o vulgarmente denominado "Crónica roja". La razón de esta elección es que dicho campo temático es uno de los que mayor volumen de informaciones ofrece, estando presente en el día a día de cualquier medio periodístico escrito.
Para la confección del corpus de entrenamiento se utilizaron 1.505 textos extraídos de medios de prensa chilenos, específicamente de El MercurioLa Tercera La Nación. La razón para elegir estos medios fue preferir aquéllos con circulación a nivel nacional, por considerarse más representativos del periodismo del país. Además, se les eligió por el mayor esmero con que cuidan el correcto uso del español en las noticias que publican (registro culto-formal). De esta forma se prescindió de otros medios como La Cuarta cuyo uso particular de la lengua no corresponde al habitual en los medios periodísticos y podría haber afectado el funcionamiento de la aplicación de Análisis Semántico Latente.
Otro de los motivos para elegir los medios en cuestión fue que publican sus noticias en Internet en formato html, esto es, utilizan texto que enriquecen con etiquetas que el navegador web debe interpretar. El proceso de recopilación del corpus, gracias a esto, se simplifica una enormidad: sólo basta con copiar y pegar el texto desde el sitio en Internet del medio a un editor de texto sin formato, con el fin de borrarle todas las etiquetas html y mantener únicamente el texto de la noticia en sí. Con esto se evitó el estar utilizando una aplicación de reconocimiento óptico de caracteres, lo que hubiera convertido un trabajo de por sí arduo, en una tarea prácticamente inmanejable por el elevado número de textos utilizados para conformar el corpus.
3.2. Construcción del prototipo
El prototipo puede ser descrito en pocas palabras, como una aplicación que recibe un texto como entrada, lo prepara para su procesamiento, lo lematiza, lo procesa a la luz del espacio semántico creado mediante el corpus de entrenamiento, lo convierte en una cantidad variable de vectores y, finalmente, calcula el coseno de las parejas de vectores adyacentes y los promedia para entregar la evaluación de coherencia del texto en cuestión.
Sin embargo, para comprender mejor su funcionamiento es necesario describir el proceso paso a paso y con mayores detalles.
Las principales aplicaciones informáticas empleadas son el lematizador Libstemmer (disponible en http://snowball.tartarus.org/dist/libstemmer_c.tgz), el editor de flujo Sed destinado a manejar cadenas de texto y el intérprete de be, que es un lenguaje de programación utilizado para realizar operaciones de cálculo numérico desde una línea de comandos (estas dos últimas aplicaciones vienen incluidas por defecto en la distribución de Linux utilizada). Por último, en el prototipo se usó la aplicación Infomap-NLP (disponible en http://infomap-nlp.sourceforge.net/). Dicha aplicación consiste en un paquete de software que debe ser compilado para operar en ambiente Linux y emplea una variante de Análisis Semántico Latente que representa las palabras de un corpus de texto en un espacio vectorial llamado WordSpace. La aplicación permite realizar recuperación de información desde el corpus y mediciones de relación semántica entre las palabras.
El diseño de la herramienta prototipo para evaluar la coherencia textual en forma automática se concibió como un script. Para el Diccionario Informático de Alegsa (en línea), un script es "un conjunto de instrucciones generalmente almacenadas en un archivo de texto que deben ser interpretadas línea a línea en tiempo real para su ejecución. Se distinguen de los programas, pues deben ser convertidos a un archivo binario ejecutable para correrlos".
Este script cumple la función de ordenar a todas las aplicaciones que componen el prototipo que realicen las tareas que de ellas se requieren. La importancia de éste es fundamental, pues todas las aplicaciones carecen de interfaz gráfica y operan sólo a través de comandos de consola, por lo que sin el script la operación de las diferentes aplicaciones sería una tarea que requeriría horas de aprendizaje para un individuo que no las conociera; a esto hay que sumar que el tiempo que llevaría la tarea de procesar un solo texto sería cercano a una hora, lapso que el script reduce a 10 segundos para una noticia de extensión promedio.
3.2.1. Preparación del corpus de entrenamiento y construcción del modelo mediante el Infomap
Los textos en bruto extraídos desde los tres medios periodísticos utilizados se unieron en un único archivo de texto plano, pues para el objetivo del trabajo realizado no importa la procedencia de ellos. Cada uno de los 1.505 textos fue preparado, etiquetándolos de la forma exigida por el Infomap.
Luego el archivo con los 1505 textos se sometió a diferentes operaciones con el fin de limpiarlo. Utilizando el comando Sed desde la Terminal (la consola de comandos de Linux), se eliminaron todas las tildes de las vocales, pues el Infomap no está habilitado para procesarlas y arroja un error cuando se encuentra con ellas. También se eliminaron de los textos todos los signos de puntuación, ya que éstos no son relevantes para el Análisis Semántico Latente; además los signos de puntuación provocan que el Libstemmer no lematice una palabra que va seguida de un punto o una coma, por ejemplo, pues considera al signo como parte de la palabra y no la reconoce. Hay que agregar que el Infomap, al encontrarse con una eñe, arroja un error similar que al encontrarse con una tilde, pero este problema se resolvió más adelante, una vez que el texto estuvo lematizado.
Posteriormente, el archivo con los textos fue transformado en una lista de palabras, con el fin de prepararlo para la lematización, dado que el Libstemmer sólo procesa palabras individuales. Para ello se ejecutó el comando Sed desde la Terminal con la orden de reemplazar todos los espacios en blanco por saltos de línea.
Luego el archivo, ya convertido en una extensa lista de palabras, fue procesado en el Libstemmer, arrojando como salida la misma lista de palabras, pero ahora lematizadas. Esta lista de palabras fue convertida nuevamente en un texto, reemplazando los saltos de línea por espacios en blanco. Luego, se separaron las etiquetas del corpus de cada uno de los textos, agregando saltos de línea antes y después de ellas.
Finalmente, una vez lematizado el texto quedaba el problema de que el Infomap no puede trabajar con las eñes por ser éstas ajenas al inglés, lengua de origen de la aplicación. El inconveniente se resolvió reemplazando las eñes por la secuencia nnn, que no se da dentro de la estructura silábica del español, por lo que se consideró una buena forma de representar a dicho grafema. Así el lema correspondiente a niño, que normalmente es niñ, fue reescrito como ninnn.Hay que señalar que esto no significa ningún problema en relación a los resultados del proceso, pues no afecta la medición de relación semántica, ya que la eñe en rigor no se eliminó, sino que se representó con la secuencia antes descrita.
A continuación se transcribe como ejemplo un texto ya sometido a todo el proceso señalado:
<DOC>
<TEXT>
pdi detien a herman del cisarr en pennnalol el menor de 17 annnos identific com icm reconoci hab particip en el rescat de su herman uno de los herman del cisarr identific com icm fue deten ayer por la brig del crim de la pdi deb a una orden pendient por hurt simpl el jov de 17 annnos qui present antecedent por hurt y consum de drog fue aprehend cerc de las 1630 en pennnalol al ser interrog reconoci hab particip en la fug de ccm 10 conoc com cisarr ocurr el 1 de agost cuand seis menor de edad lleg al centr del senam dond el ninnn permaneci reclu y con un arma de fueg lo ayud a huir hoy ser el control de detencion de icm mientr que su herman el cisarr qui ha sid deten 16 vec permanec reclu en el centr del senam desd dond escap
</TEXT>
</DOC>

Una vez ya preparado el corpus de entrenamiento como recién se expuso, queda un paso previo antes de construir el modelo que definirá el espacio semántico con el Infomap, éste es el relativo a las stop words. El Diccionario Tecnológico (2009, en línea) del sitio web chileno Usando.info, define a las stop words como "aquellas palabras que por ser comunes, los buscadores ignoran para asegurar la calidad de los resultados de lo que se busca. Normalmente entran en esta categoría las preposiciones y conjunciones".
El Infomap-NLP incluye por defecto una lista de stop words, pero del inglés. Por lo tanto, esa lista se reemplazó por una lista de stop words para el español. En Internet hay muchos sitios que ponen a disposición de los navegantes listas de stop words para el español, por lo que pese a que el Infomap no las incluye no es difícil conseguir una. Para el trabajo se utilizó una lista de 327 stop words, construida combinando dos recopilaciones disponibles en Internet. Una de ellas es la que ofrece para la descarga en su sitio el equipo del projecto Snowball, el mismo que desarrolló el lematizador Libstemmer, ubicada en http://snowball.tartarus. org/algorithms/spanish/stop.txt. La otra se encuentra en la página del IR Multilingual Resources de la Universidad de Neuchatel, y puede ser descargada desde el siguiente enlace:http://members.unine.ch/jacques.savoy/clef/spanishSmart.txt. Finalmente, a la lista de stop words se le dio el mismo tratamiento que al corpus de entrenamiento, con el fin de mantener la correspondencia entre ambos: se eliminaron las tildes de las palabras, se lematizaron y se reemplazaron las eñes por la secuencia nnn.
Una vez realizado lo anterior, recién se construyó el modelo en el Infomap, a partir del corpus de entrenamiento. Para esto simplemente bastó con crear un directorio dentro del computador y, a través de comandos ingresados en la Terminal, definirlo como directorio de trabajo para la aplicación. Luego simplemente se le indicó al Infomap la ruta al archivo que contenía el corpus de entrenamiento para que el programa construyera automáticamente el modelo que define el espacio semántico a partir de la recopilación de noticias realizada.
3.2.2. Desarrollo del script
Para el desarrollo del script se utilizó el intérprete de órdenes bash. Se eligió éste por la potencia que posee y, además, porque trabaja con los mismos comandos que la Terminal de Linux, lo que facilita su empleo. En el computador de trabajo no hubo necesidad de instalar dicho intérprete, pues viene incluido por defecto en la distribución Ubuntu.
En la descripción del proceso de construcción del script, por motivos de espacio y de claridad, se realizará una explicación más general, prescindiendo de muchos aspectos de corte más técnico.
Previamente, como ya fue expuesto, es bueno recordar que para predecir coherencia el Análisis Semántico Latente necesita comparar dos unidades textuales vecinas que pueden ser palabras, oraciones, párrafos o textos completos. En este caso, se utilizó como unidad a comparar el párrafo, porque al tratarse de noticias, la tendencia del periodismo actual, sobre todo por el influjo de Internet, es a utilizar párrafos cada vez más cortos (Franco, 2008). Sin embargo, aunque no se expondrá acá, se construyó en el trabajo un script que segmentaba el texto en oraciones, utilizando el punto seguido como marca para realizar la segmentación automática. Las pruebas realizadas llevaron a determinar que la tendencia del periodismo de utilizar párrafos cortos producía distorsiones en los resultados al emplear el script que segmenta en oraciones; incluso, dentro del corpus de entrenamiento hay muchos textos en que no se utiliza el punto seguido.
El script requiere que la noticia que se desee procesar esté ubicada en un archivo de texto plano con el nombre texto_entrada, que debe situarse dentro del mismo directorio en que está elscript. Luego, utilizando el comando Sed para el tratamiento de cadenas de texto, se escribieron las órdenes para que el script elimine las tildes de las vocales, las comas, los dos puntos, los punto y coma, los signos de interrogación y exclamación, los paréntesis, las comillas dobles y simples, y el signo peso. A continuación el script reemplaza los espacios en blanco por saltos de línea, con el fin de construir la lista de palabras que requiere el lematizador. Luego reemplaza todos los puntos por saltos de línea con el fin de dejar el espacio en blanco que indique dónde finaliza cada oración.
En este punto se necesitaba marcar los espacios en blanco de alguna forma, con el fin de que éstos no se confundieran con los que se generarían en un paso posterior del script. Para ello se recurrió a reemplazarlos con la cadena de texto ststs, que se utilizó como comodín de marcado, ya que no existe ninguna similar en la estructura silábica del español.
Una vez realizado lo anterior, el script llama al lematizador y éste realiza su tarea sobre el texto. Hay que indicar que entre la lista de palabras se encontrará con la secuencia ststs, pero la dejará intacta porque no la reconoce como perteneciente al español.
A continuación el script, nuevamente usando el comando Sed, convierte todos los saltos de líneas en espacios en blanco. Con esto el texto queda convertido en un único párrafo, que tiene intercalada entre sus palabras la cadena marcadora ststs. Luego reemplaza todas las eñes por la secuencia nnn y la cadena ststs es reemplazada por un salto de línea, con lo que el texto ya limpio y lematizado queda segmentado según lo requerido.
En este punto, utilizando una vez más Sed, al archivo de texto de salida se le agregan las órdenes necesarias para convertirlo en un nuevo script –al que llamaremos script secundario–, independiente del que ahora se describe; al inicio de cada línea del texto ya segmentado se añaden los comandos necesarios para su procesamiento en el Infomap-NLP, y al final de cada línea se agrega el texto que da la orden para que los valores que conforman el vector resultante los guarde en un archivo llamado vector1. Finalmente, el script principal le otorga permisos de ejecución al script secundario, para que éste pueda operar como tal y ordena su ejecución. Con esto se obtiene como resultado un archivo llamado vectores_division_puntos que contiene los valores que conforman los vectores que representan a cada párrafo del texto en el espacio semántico construido a partir del corpus de entrenamiento.
Por último, el script calcula el coseno entre las unidades textuales adyacentes que conforman el texto procesado en el prototipo. Para ello, y sin entrar a definir conceptos matemáticos en forma profunda, hay que tener claro que para cada par de vectores adyacentes (A,B) se calcula el coseno entre ellos de la siguiente forma:
Lo anterior significa que el coseno del ángulo formado por dos vectores es igual al producto escalar entre los vectores dividido por el producto de sus módulos. También se puede representar de la siguiente forma:
Por último, una vez calculado el producto escalar de los vectores y el producto de los módulos de éstos, simplemente hay que dividir el primer valor obtenido por el segundo. Este resultado indicará el grado de coherencia que hay entre las dos unidades textuales. Y, como ya se señaló, para calcular el grado de coherencia de un texto completo debe realizarse la operación descrita para cada par de vectores que representen a unidades textuales adyacentes y, finalmente, calcular el promedio de los valores obtenidos. Este resultado será el grado de coherencia de dicho texto medido mediante Análisis Semántico Latente. Para realizar esta tarea el script utiliza el intérprete de bc, que es un lenguaje de programación utilizado para realizar operaciones de cálculo numérico desde una línea de comandos.
Finalmente el script arroja un archivo llamado salida_coherencia que contiene el título del texto procesado y los cosenos de cada una de las unidades textuales comparadas y el promedio de todos estos cosenos.
3.2.3. Evaluación de coherencia en los textos de prueba
El prototipo fue testeado procesando diversos textos extraídos desde los mismos medios de prensa desde los que se conformó el corpus de entrenamiento. Se efectuaron pruebas diversas, entre las que se incluyeron manipular la coherencia de textos, crear textos sin sentido uniendo párrafos extraídos desde diferentes noticias (cuya única relación era pertenecer al dominio en que se enfocó el trabajo) e, incluso, se compararon textos que presentaban la misma noticia, pero extraídas de medios de prensa diferentes (para ello se trató a cada noticia como una única unidad textual). El prototipo superó todas estas pruebas y respondió de acuerdo a lo esperado. Una vez cumplida esta etapa, se prosiguió al siguiente paso de la investigación, que consistió en comparar los resultados de la evaluación del prototipo con la efectuada por humanos.
Para realizar la experiencia se trabajó con seis textos extraídos desde los mismos medios periodísticos ya mencionados y se utilizó una muestra no probabilística de ocho evaluadores humanos. Cuatro de ellos fueron periodistas especializados en la producción de textos escritos y con experiencia en la redacción de noticias dentro del dominio denominado Periodismo Policial. Los otros cuatro sujetos fueron profesores de español, con estudios de postgrado en lingüística, en curso o finalizados. Esto con el fin de cubrir, por una parte, la experiencia en la producción de textos en el dominio citado (periodistas); y, por otro lado, tener la opinión de profesionales expertos en lingüística, ciencia en la que se estudia el fenómeno de la coherencia (profesores de español con estudios en lingüística).
Con el fin de apoyar la tarea de los jueces humanos se creó un instrumento de medición que los guiara al evaluar la coherencia textual. Debido a que, como señala Álvarez (1995), no existe unanimidad entre los autores respecto a la extensión de los conceptos de coherencia cohesión, se optó por una solución que se podría describir como mixta: atender a las marcas de cohesión/coherencia en la superficie del texto y, también, a la percepción del fenómeno de la coherencia por el lector de un texto. Para ello se tomó como base el modelo propuesto por Álvarez (1995), que señala que los términos cohesión coherencia aluden a la buena formación textual y que dicho autor desglosa en los fenómenos de recurrencia, progresión conexión.
En el instrumento se tomaron tres fenómenos pertenecientes a la recurrencia que son utilizados con frecuencia en los textos periodísticos: anáfora, sustitución léxica correferencia sintagmática (se prescindió de la catáfora, porque no aparecía en los textos seleccionados para la experiencia). También se utilizó la progresión, específicamente la progresión con tema continuo, que es la habitual en un texto periodístico. Por otro lado, en el instrumento también se incluyó una pregunta en que se consulta al sujeto por su percepción de la coherencia del texto, basada esta percepción exclusivamente en su experiencia personal ya sea como lector o redactor de noticias.
Para responder a las preguntas planteadas se le indicó a los sujetos que emplearan una escala de 1 a 7, con el objeto de facilitarles la respuesta, pues dicha escala es un referente que se supone arraigado en el imaginario colectivo. Además, debido al carácter técnico de conceptos como anáforasustitución léxicacorreferencia sintagmática yprogresión, se decidió incluir en el instrumento, previo a los textos a analizar, una breve explicación de los mencionados conceptos, con el fin de facilitar a los periodistas la identificación de los fenómenos a que aludían las preguntas. Esto, porque se consideró posible que en su formación como profesionales, no conocieran dichos fenómenos por su nombre técnico. Por otra parte, esto no significa un esfuerzo de comprensión demasiado grande para los individuos, pues los cuatro fenómenos se encuentran incluidos dentro de las competencias en producción de textos que un periodista debe desarrollar durante su formación de pre-grado; pero al ser considerados dentro de un conjunto de competencias, cabía la posibilidad de que no los manejaran por el nombre que se les da en lingüística

No hay comentarios:

Publicar un comentario