miércoles, 18 de marzo de 2009

Fase local

Hoy 18 de marzo he presentado a AVBOT en las Jornadas de Software Libre y Conocimiento Abierto de la UCA, como participante en el Concurso Universitario de Software Libre. Para mi sorpresa he resultado ganador. Hay que decir mucho a favor de los otros proyectos presentados, en concreto de Libgann y Free padel. Aunténticas virguerías.

viernes, 6 de marzo de 2009

Logros alcanzados

Se detallan a continuación algunos de los logros alcanzados:
  • Más de 5000 horas de trabajo.
  • Funcionamiento ininterrumpido comprobado durante más de 7 días (del 26 de noviembre al 2 de diciembre). Lo que dice mucho de su estabilidad.
  • Más de 200 mil ediciones hasta la fecha. En torno a la mitad de ellas han sido reparaciones a páginas, el resto avisos a usuarios.
  • Tasa de acierto del 99,5% según datos de diciembre de 2008. Primero fue mejorado con las puntuaciones, posteriormente con los contrapesos.
  • Ningún bloqueo por malfuncionamiento.
Algunos de los usuarios de Wikipedia también han expresado su satisfacción con el trabajo del bot. También pasó la autorización para poder ejecutarse con 19 votos a favor y 0 en contra. Un signo de que la comunidad quiere que el bot continue trabajando lo constrituye la página de sugerencias, desde donde se pueden pedir nuevas funcionalidades para el programa.

Dificultades superadas

En un principio el programa analizaba una edición tras otra, de forma secuencial. Este sistema era bastante lento, pues había que esperar a que se terminara de comprobar una edición para saltar a la siguiente y en Wikipedia en español el ritmo de modicaciones a veces superaba al ritmo de análisis. Para evitar esto se introdujo el uso de hilos, mediante la librería thread. Con esta solución, cada vez que llegan los datos de un cambio, se llama a la función de análisis. Si llegan varias modificaciones a la vez, no se espera a que termine una para empezar con la siguiente, ya que son independientes.

Otro aspecto relevante es el precompilado de expresiones. Cada vez que era analizada una edición, había que pasar la lista de expresiones (varios cientos de ellas) sobre un texto que en algunas ocasiones era bastante extenso. Este proceso requería los siguientes pasos:
  1. Leer la expresión regular.
  2. Compilar la expresión regular.
  3. Pasar la expresión regular compilada al texto objetivo.
  4. Volver al paso 1 con la siguiente expresión.
Se puede evitar la compilación continua de una misma expresión si guardamos el resultado de dicha compilación. Por ello, se implentó una mejora en el cargador de expresiones, que en vez de guardar sólamente la expresión en cruda, guarda su compilación. La mejora fue drástica. De tener que compilar entorno a 600 expresiones por cada página analizada, lo que hacía que el proceso de análisis consumiera unos 10 segundos, se pasó a menos de una milésima de segundo por análisis. Denitivamente esta fue una mejora crucial en el programa.

miércoles, 4 de marzo de 2009

Proyecto Fin de Carrera

Hoy miércoles 4 de marzo presenté a AVBOT como Proyecto Fin de Carrera. El nombre completo es "Detector y corrector automático de ediciones maliciosas en Wikipedia".
Calificación: Matrícula de honor.

domingo, 22 de febrero de 2009

Alcance

Se trata de un proyecto innovador, surge de la necesidad de controlar las ingentes cantidades de información que vuelcan miles de usuarios alrededor del mundo en un proyecto colaborativo como Wikipedia. Wikipedia pertenece a la denominada Web 2.0, una nueva concepción de la World Wide Web en la que los usuarios ya no son meros consumidores de datos que los webmasters cuelgan en Internet, sino que ellos mismos juegan el papel de productores/consumidores de esa información.

Esto conlleva una serie de ventajas y desventajas. Por un lado el potencial de producción crece exponencialmente, ya que cualquier persona con un navegador web puede modicar los contenidos y mejorarlos. Por otro lado la cantidad de errores bienintencionados o de mala fe también crece.

Estas aportaciones no deseadas son, la mayoría de las veces, detectables fácilmente para un humano o un ordenador, ya que lo modicado resalta sobre lo demás por contener expresiones malsonantes o texto sin sentido. En otras ocasiones esta tarea se hace más compleja para un computador por no poder ser descrito mediante un patrón sencillo.

Existen muchas personas comprometidas con Wikipedia, y la mayoría de ellos controlan de manera altruista y voluntaria que nadie destruya los contenidos de la enciclopedia. Este esfuerzo podría dedicarse a la mejora o creación de nuevos artículos, en vez de a vigilar constantemente si los cambios producidos por usuarios nuevos o anónimos son malintencionados. Esto sería un gran benecio para la comunidad. Para ello puede desarrollarse un programa que haga esta tarea, al menos con las ediciones claramente destructivas.

El producto de este proyecto tiene por nombre AVBOT. Es el acrónimo de "AntiVandal BOT" (en español: "BOT AntiVándalos"). Este programa analizará las ediciones que se realicen en Wikipedia en español para buscar contribuciones maliciosas y las revertirá. AVBOT no podrá sustituir nunca a una persona, pues la capacidad de comprensión humana a la hora de leer un texto sobrepasa con creces la que pueda tener un programa de ordenador, aunque sí será de gran ayuda para revertir esos vandalismos repetitivos y monótonos.

domingo, 15 de febrero de 2009

Objetivos

Se pretende crear un programa que proteja a Wikipedia en español (y por extensión a cualquier página web que utilice el software MediaWiki) de usuarios maliciosos que introduzcan modicaciones indeseadas. Para ello es necesario completar cada uno de los siguientes objetivos:
  1. Lectura de los cambios que se producen en los artículos en tiempo real.
  2. Análisis y valoración de cada uno de los cambios capturados en el "objetivo 1".
  3. Tomar las acciones oportunas: actuar si el cambio es malicioso o dejarlo pasar si no supone peligro.
  4. Mantener un log de las acciones realizadas para su depuración en caso de error.
Más adelante se hará una distinción entre modicaciones meramente maliciosas y ediciones de prueba. En cualquier caso, se trata de aportaciones que deben ser deshechas, pues no contribuyen a la mejora de Wikipedia.

martes, 10 de febrero de 2009

Manual de instalación y usuario

Ya están disponibles los manuales de instalación y usuario de AVBOT en formato PDF. El primer comenta los pasos necesarios para integrar pywikipediabot + irclib + AVBOT, y el segundo explica los comandos básicos de ejecución y algunos consejos.

viernes, 30 de enero de 2009

Actividad durante 2008 y AVBOT

En la gráfica se observan las reversiones que se produjeron en Wikipedia en español cada día de 2008. La línea celeste representa aquellas que fueron realizadas por usuarios anónimos, y es la que menos se eleva de todas. Esto es así porque los anónimos no suelen dedicarse al mantenimiento de Wikipedia. La línea azul marino corresponde a los bibliotecarios y es muy similar a la rosa, correspondiente a AVBOT (desde marzo es el único robot que se dedica a revertir).

¿No deberia AVBOT hacer todo el trabajo? ¿Es que el robot no es eficiente? Por desgracia no todas las ediciones inservibles son fácilmente indentificables por un robot. Muchísimas de las reversiones que realizan los usuarios registrados (línea amarilla) o los bibliotecarios (línea azul marino) son reparaciones a ediciones que contienen frases fuera de contexto, no neutrales, vandalismos muy especializados, errores de novatos, etc, las cuales no pueden ser ponderadas por un programa. Tratar que el bot repare esos casos llevaría a muchos falsos positivos y sería contraproducente.

Con anterioridad a marzo existía un programa (BOTpolicia) que hacía la misma función que AVBOT pero era menos eficiente (a penas alcanza las 200 reversiones/día). A partir de marzo y hasta fin de año se ve que AVBOT ha hecho casi 600 reversiones/día de media en los puntos más altos, aunque normalmente hace 300-400. Durante el periodo estival el número de vándalos desciende, por lo que el robot tiene menos trabajo. A mediados de agosto y a finales de octubre el robot estuvo parado por mantenimiento de ahí que caiga hasta cero (se observa que la línea amarilla crece vertiginosamente para paliar la ausencia del robot).

Las constantes subidas y bajadas (dientes de sierra) corresponden a la diferencia de actividad durante la semana (los miércoles son los máximos y los fines de semana los mínimos).

lunes, 22 de diciembre de 2008

Documentación con Doxygen

Mi tutor de PFC me recomendó que generara la documentación del proyecto con Doxygen, que es software libre.

Es muy fácil de usar, en el caso de Python, se incluyen comentarios debajo de cada clase o método, y Doxygen recoge todos esos datos y genera unos ficheros HTML con toda la información. También es posible exportarlo a Latex.

En los próximos días seguiré documentando el código, y optimizándolo en la medida de mis posibilidades.

lunes, 15 de diciembre de 2008

Lista de exclusiones

Una de las cosas que quería implementar para aumentar la flexibilidad del robot era una lista de exclusiones. Con ella es posible gestionar de manera transparente aquellas páginas que no deben ser vigiladas por el programa, ya que suelen ser propicias a contener expresiones poco enciclopédicas, y que provocan falsos positivos.

El robot toma la lista de exclusiones instantes después de que alguien la modifique, ya que la mantiene bajo su control.

De esta forma se reducen los errores de actuación del programa, y no interfiere en páginas que no le atañen explícitamente.

miércoles, 26 de noviembre de 2008

Contestación de informes de error

AVBOT tiene una página en la que la gente puede avisar de posibles errores que esté cometiendo el programa a la hora de revertir vandalismos.

¿Cómo es esto posible? Cuando una persona edita un artículo y el bot le revierte, hay dos posibilidades:
  1. La persona ha vandalizado el artículo y el bot está actuando correctamente revirtiéndole.
  2. La persona ha hecho una aportación legítima y el bot se ha equivocado al revertirle.
Cada vez que el bot revierte una edición, deja un enlace en el resumen de edición, avisando de que es posible "darme un toque" y decirme que el bot ha errado.

De vez en cuando la gente hace clic y me pone al corriente. No es muy frecuente pues el bot tiene un alto porcentaje de acierto, pero de vez cuando AVBOT falla, como todo en este mundo. La página donde se envian estos informes es Usuario:AVBOT/Errores.

Justo ahora estaba revisando los informes de los últimos días. A grosso modo me llegan entre 2 y 4 informes al día, y muchos de ellos son falsos, pues los vándalos no tienen bastante con destrozar el artículo, sino que luego se permiten el lujo de decir que el bot está funcionando mal, ¡cuando es incierto!

En fin, hay gente para todo.

sábado, 15 de noviembre de 2008

Cambio en el formato del "RSS"

AVBOT captura los cambios recientes en los artículos a través de un canal de IRC en la red irc.wikimedia.org. Hoy 15 de noviembre en torno a las 2 de la madrugada (hora española), alguien de arriba cambió el formato de las líneas que se vierten en ese canal, provocando que AVBOT "se quedara ciego" y no viese ninguna edición. Lo único que percibía venía a través del registro combinado, cuyo formato por suerte no lo cambiaron.

Ya he arreglado la expresión regular que dejó de funcionar por el cambio inesperado, y AVBOT vuelve a comportarse con normalidad.

Expresión regular antes:
(?i)\[\[(?P<pageTitle>.*?)\]\] +(?P<nm>.*?) +http\://es\.wikipedia\.org/w/index\.php\?title\=.*?diff\=(?P<diff>\d+)\&oldid\=(?P<oldid>\d+) +\* +(?P<author>.*?) +\* +\(.*?\) +(?P<resume>.*)

Expresión regular después:
(?i)\[\[(?P<pageTitle>.*?)\]\] +(?P<nm>.*?) +http\://es\.wikipedia\.org/w/index\.php\?diff\=(?P<diff>\d+)\&oldid\=(?P<oldid>\d+) +\* +(?P<author>.*?) +\* +\(.*?\) +(?P<resume>.*)

Lo que sobraba está en rojo.

De todo esto me di cuenta porque hoy sólo estaba poniendo carteles de semiprotección, algo bastante extraño.

Debería avisar de alguna forma, no es la primera vez que cambian el formato del que se nutren no sólo mi bot, sino los de muchos otros programadores.

Presentación

Este será el blog oficial de AVBOT.