miércoles, 2 de noviembre de 2011

Premio al mejor artículo publicado en 2010 en la revista Novática

El miércoles 26 de octubre de 2011 recogí en Madrid en el Aula Magna de la Universidad Pontificia Comillas el Premio al mejor artículo publicado en 2010 en la revista Novática por mi artículo «AVBOT: Detección y corrección de vandalismos en Wikipedia». ¡Muchas gracias a todos!

En la foto aparecen, de izquierda a derecha: Joaquín Ayuso de Paúl (fundador de Tuenti.com); Mariano Ventosa Rodríguez (Director de la Escuela de Ingeniería ICAI-Comillas); Emilio José Rodriguez Posada (ganador de la V Edición del Premio Novática); Rafael Fernández Calvo (Presidente del Consejo Editorial de Novática); Llorenç Pagés Casas (Director de Novática).

Puedes leer el artículo aquí


sábado, 8 de mayo de 2010

La poca creatividad de los vándalos

Hace unos días generé una tabla teniendo en cuenta las reversiones realizadas por AVBOT durante 63 días entre el 20 de febrero y 3 de mayo de 2010 (algunos de los cuales estuvo inactivo por mantenimiento).

En este periodo, AVBOT intervino 29157 veces. Las 560 expresiones regulares que aparecen se dispararon al menos una vez en ese intervalo, y en total se activaron 39435 veces.

La más frecuente es p+[^a-z0-9]{,3}u+[^a-z0-9]{,3}t+[^a-z0-9]{,3}[ao]+[^a-z0-9]{,3}s* (puta y derivados) con un 8,2%. El 50% de los vandalismos revertidos por AVBOT queda cubierto con las 19 primeras expresiones regulares. El 75% con las 56 primeras. El 90% con las 149 primeras. El 95% con las 224 primeras. Y el 99% con las 375 primeras.

Como podeis comprobar, los vándalos no se caracterizan por tener una gran creatividad, de ahí que se dediquen a destruir en vez de a mejorar lo existente.

sábado, 3 de abril de 2010

Optimización y expansión a otros proyectos

Durante las últimas semanas he estado haciendo algunas optimizaciones en el código de AVBOT que han permitido que se reduzca el tiempo que tarda en reparar los vandalismos. Antes tardaba una media de cinco segundos, habiéndose reducido a tres en la versión actual (cálculos grosso modo, ya haré una gráfica). Ha sido posible, de nuevo, al empleo de hilos.

Además, AVBOT está siendo probado en la versión inglesa de Wikipedia, y hay un usuario interesado en llevarlo a Wikipedia en portugués. Por todo ello, estoy haciendo algunos avances en cuanto a la versatilidad del código. Pero aun no está internacionalizado, ¡eso será más adelante!

Más información sobre todo esto en sucesivas entradas.

jueves, 11 de marzo de 2010

AVBOT in English


AVBOT is an anti-vandalism bot for Wikipedia projects (although it would be useful for all MediaWiki sites).

Its main developer is emijrp, a veteran user of Spanish Wikipedia. This project is in an advanced status, and it is used in Spanish Wikipedia under the nickname AVBOT with great results. You can see it running 24/7 or some of its clones. It has reverted more than 250,000 vandalisms.

You can download the source code from Google Code, it is published under GPL v3 license. It uses the pywikipediabot and python-irclib libraries.

domingo, 14 de febrero de 2010

AVBOT ha alcanzado las 500.000 ediciones

Hace pocos días AVBOT alcanzó las 500.000 ediciones. Como siempre, la mitad han sido reversiones de vandalismos y la otra mitad avisos a usuarios. Ha pasado casi un año desde el concurso, y AVBOT sigue trabajando sin descanso las 24 horas del día.

Me gustaría incorporarle algunas mejoras, pero eso será cuando disponga de algo más de tiempo.

Actualización: Para ser justos, diré que ayer calculé el número exacto de intervenciones de AVBOT (reversiones de vandalismos, blanqueos y ediciones de prueba) y salió 197.000. Así que no llega a los 250.000 como dije, pero va de camino ;).

Actualización 2: Hoy, 18 de marzo de 2010, AVBOT ha superado a CEM-bot (ver diff), el bot de correcciones ortográficas, colocándose en el segundo puesto, sólo por detrás de "Muro Bot".

lunes, 11 de mayo de 2009

Premio Nacional al "Mejor proyecto comunitario"

Finalmente se celebró la fase final del III Concurso de Software Libre, y AVBOT ha tenido el honor de recibir el Premio Nacional al "Mejor proyecto comunitario" de esta edición.

Los premiados y algunos pingüinos

La relación completa de premiados ha sido la siguiente:
  • Mejor proyecto de innovación
    • Primer premio: eOPSOA de David Castellanos Serrano de la Universidad de Castilla la Mancha
    • Finalista: Cool Imaging de Luis Antonio González Jaime y Ricardo Juan Palma Durán de la Universidad de Granada
  • Mejor proyecto de ocio y educación
    • Primer premio: Tucan de Jose Francisco Lupion González, Francisco Salido Ruiz y Jose Manuel Cordero Rodríguez de la Universidad de Málaga
    • Finalista: Geco de Daniel García Moreno de la Universidad de Sevilla
  • Mejor proyecto comunitario
    • Primer premio: AVBOT de Emilio José Rodríguez Posada de la Universidad de Cádiz
    • Finalista: The Digital Coach de Andoni Morales Alastruey de la Universidad Politécnica de Madrid

Además de los premios en metálico, los premiados se llevan una subscripción a la revista Linux Magazine y a la revista Novática.

Quisiera agradecer a la organización, participantes y patrocinadores, todo el esfuerzo llevado a cabo para sacar adelante esta nueva edición del concurso.

¡Muchas gracias a todos!

viernes, 24 de abril de 2009

Buscando nuevos patrones

Ahora que el robot es bastante estable, me estoy centrando en mejorar la lista de expresiones. Ya llevo más de 700 introducidas. Para ello estoy generando unas listas con los vandalismos detectados por humanos, para que me den ideas para nuevas expresiones regulares.

Un ejemplo de estas listas es: Usuario:AVBOT/Reversiones humanas/2009/04/23

domingo, 19 de abril de 2009

Clones de AVBOT

Ya son varios los usuarios de Wikipedia en español que han decidido instalarse un clon de AVBOT en sus máquinas, para ejecutarlo, y que en caso de que el servidor desde el que corro mi versión del robot esté fuera de servicio, sus clones sirvan de copia de respaldo y protejan a Wikipedia.

Esto conduce a realizar una serie de mejoras, pues la ejecución a la par de varios clones puede llevar a errores (avisos duplicados por ejemplo), aunque este extremo ya parece estar solucionado con los últimos parches que he aplicado.

Ahora queda realizar algunas pequeñas mejoras más para que los clones no se entorpezcan, y Wikipedia en español sea una barrera infranqueable para los vándalos. ¡Que ya lo es!

miércoles, 8 de abril de 2009

La sociología del vandalismo

Una de las ventajas de estar realizando el programa sobre un proyecto tan grande y tan dinámico como Wikipedia, y a la vez tan trasparente, es que tengo acceso a ingentes cantidades de datos derivados de la ejecución diaria del robot.

Entre las gráficas más expresivas que he generado se encuentra la siguiente:

Vandalismos por día durante el año 2008

En ella se observan los vandalismos que se realizaron durante casi todo el año 2008. Se observan dos grandes caidas. La primera entorno a los meses de junio-julio-agosto, y la segunda ocupa diciembre de 2008 y enero de 2009.

No cuesta imaginar el motivo de los descensos. En junio-julio-agosto la gente del hemisferio norte se va a la playa (en el hemisterio sur es invierno y coincide con algún mes de vacaciones de colegio) y deja de vandalizar, a finales de año todo el mundo está más ocupado con las fiestas y las vacaciones de Navidad.

Las constantes subidas y bajadas son las semanas. Los valles son los fines de semana (en los que la gente también deja en paz a Wikipedia), y los picos son los miércoles, que debe ser cuando están más aburridos en el trabajo, supongo.

Tengo algunas gráficas más. Las iré poniendo más adelante.

lunes, 6 de abril de 2009

IRC vs API

En la documentación anterior hemos comentado que el robot captura los cambios recientes en tiempo real a través de un canal de IRC. Esto no viene activado por defecto. El software MediaWiki permite habilitarlo en los ficheros de configuración, pero hay sitios web que utilizan MediaWiki y que por algún motivo no pueden o no desean usar un servidor de IRC para ello.

La solución pasa por implementar la opción de capturar los cambios recientes a través de la API de MediaWiki. Esto me mantendrá ocupado los próximos días.

miércoles, 1 de abril de 2009

Microsoft cerrará Encarta antes de fin de año

Microsoft ha anunciado que dejará de comercializar la enciclopedia Encarta en los próximos meses, quedando cerrada el 31 de octubre de 2009 (exceptuando Japón, cuyo cierre se producirá el 31 de diciembre).

Una parte del aviso deja entrever que es imposible competir contra otras formas de generar conocimiento que han conseguido gran popularidad en la red en los últimos años:

Why are these Encarta Web sites and software products being discontinued?
Encarta has been a popular product around the world for many years. However, the category of traditional encyclopedias and reference material has changed. People today seek and consume information in considerably different ways than in years past. As part of Microsoft’s goal to deliver the most effective and engaging resources for today’s consumer, it has made the decision to exit the Encarta business.

No son pocas las voces que proclaman a Wikipedia como victoriosa en esta batalla tácita por la difusión del conocimiento que se viene produciendo entre le enciclopedia libre y las enciclopedias de toda la vida. Por ejemplo, El País publica el siguiente titular "Microsoft se rinde ante la Wikipedia y cierra Encarta tras 16 años".

En la lista de correo de la Fundación Wikimedia han comentado la idea de solicitar la liberación de algunos contenidos de Encarta, para poder incorporarlos a Wikipedia.

Recordar que recientemente Google sacó un proyecto de generación de conocimiento llamado Knol, y que tampoco ha tenido mucho impacto.

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.