
La imagen es un captcha de Craigslist que pide al usuario que entre la palabra “labia” (vulva en ingles), Ryan Bonell lo puso en flickr hace ya bastante.
Cuando uno entra en una empresa nueva es normal que quiera solucionar cosas que desde fuera se ven mas claro. Viene con aire fresco y aprovecha la incercia inicial para meterle mano a lo que pueda antes de que surjan proyectos que tienen que estar teminados para ayer. A mi me ocurrio con los captchas, esas letrillas jodidas de leer que uno tiene que meter en un formulario para darse de alta en un servicio o en nuestro caso, al poner cualquier tipo de anuncio.
Parte del problema que tuve es que Craigslist usaba un diccionario de palabras prefijadas que mostraba con ciertas modificaciones (un numero o un intercambio de caracteres en el medio) y esas palabras se habian convertido con el tiempo en comidilla de San Francisco por semejanzas foneticas o directas con palabras cachondas, por lo que queriamos seguir conservando el modelo. El problema es que haciendo un pequenyo calculo mental uno se daba cuenta que la base de datos de palabras que usabamos, unidos a la frecuencia y tipo de modificaciones solo daba unos cuantos miles de posibles combinaciones de captchas a presentar presentandosele un facil desafio estadistico a los spammers. Lo solucione cambiando a un generador de palabras usando una gramatica generativa (una serie de reglas S->aSa con una condicion externa de parada (por longitud)) que asemejaba mucho a la manera en que las palabras en ingles estan hechas. Con pocas lineas de codigo consegui que mirando una muestra aleatoria de 10.000 palabras en mi gramatica y en ingles no notara diferencia estadistica en como las palabras estaban generadas, es decir: las palabras parecian ingles aunque no lo fueran (en mi tiempo libre escribi varias gramaticas para el resto de idiomas europeos y japones, ya que es un tema que me apasiona). El problema es que con los millones de postings que tenemos al dia es estadisticamente normal que alguna de las palabras que los usuarios tienen que teclear sean insultos, tacos, cagadasentumadre y similares y ya ha habido unas cuantas veces que mas de un usuario se ha molestado bastante por tener que teclear UWHORE para poner un anuncio. La semana pasada mientras chateaba con cierta señorita de Madrid me llego un email de un profesor de una escuela catolica de algun flyover state (Kansas, creo) que al ensegnar a su clase de informatica de chicos de 16 agnos como se usa Craigslist le salio algo como FUCKU en el captcha, con el subsecuente cachondeo de los chavales, por lo que el tio se puso hecho un cristo y amenazaba con abrir el septimo sello para que no entraramos en el reino de los cielos cuando sea la nueva venida de jesucristo la semana que viene o algo asi. Generalmente no solemos tomarnos estas amenazas en serio y ese tipo de mails rulan y terminan impresos colgados en una pared de los horrores que tenemos al lado del baño. Pero sabiendo lo colgados que estan ciertos elementos por estos lares y sabiendo que un sistema generativo tampoco da la entropia necesaria para solventar el problema, decidi desconectar la gramatica y simplemente poner letras al azar. El fin de una era anuncie en el canal de IRC, el azar hara que sigan saliendo barrabasadas pero a un ritmo mucho menor del que seria deseable…
El problema de los captcha es simplemente una molestia para los spammers. El problema lo han resuelto hace bastante tiempo a base de contratar granjas de trabajo mal pagado o copiando el captcha en paginas porno para pedirle al usuario que lo solucione si quiere ver la “siguiente imagen gratuita”
Luis von Ahm (el cual tiene una estupenda charla en computacion humana) dedujo que al dia mas o menos se resuelven unos 60 millones de captchas (es una cifra muy muy conservadora, ojo). Asumiendo que cada captcha tarda unos 10 segundos en resolverse, esto nos ha unas 160.000 horas / hombre por dia (es decir, unos 19 anyos) de trabajo humano diario para solucionar el problema. Si pudieramos invertir parte de ese tiempo en la resolucion de un problema que necesite intervencion humana tendriamos una increible maquina pensante, una especie de inteligencia artificial artificial dedicada a lo que queramos. Aprovechando estas ideas, la universidad de Carnegie Mellon ha presentado reCaptcha, un sistema que usa palabras provenientes de escaneos de libros antiguos que no pueden ser identificadas por los OCR actuales como claves de entrada. La palabra se envia a varios usuarios diferentes y se muestra junto a una palabra ya reconocida por verificacion. El conjunto de palabras que los usuarios vayan resolviendo ayuda en el proceso de identificacion y escaneo de manuscritos. El sistema tiene un API y varias librerias para PHP, Wordpress, y Mediawiki entre otros. Actualmente Carnegie Mellon esta usando este esfuerzo colaborativo para escanear documentos que seran donados a Internet Archive y puesto a disposicion publica (publica de verdad, con GPL) desde sus servidores. La idea puede facilmente ampliarse para resolucion de otros problemas que las maquinas no esten acostumbradas a hacer, como reconocimiento de patrones en imagenes, o busqueda de personas perdidas en mapas, tal y como se hizo para buscar a Grey usando Amazon Mechanical Turk. Un ejemplo de OCR distribuido sin usar captchas lo tenemos en PGDP, parte de Gutemberg Project. reCaptcha soluciona ademas el problema de tener que crearnos captchas para cada servicio que necesitemos y es casi el primer servicio publico de estas caracteristicas.
Pero el problema es el de siempre. Mientras me emocionaba comentandolo con gente en el jabber alguien me dijo “para que? google ya lo esta haciendo”. Puede parecer que lo que pretende este sistema se parece al proyecto de la empresa que mejor aprovecha la energia del mundo. Pero los resultados del escaneo de google (si es que algun dia dejan de ser humo) estaran servidos desde sus maquinas, censurados en China y a mercer del mejor postor y todo eso con el beneplacito de los usuarios y los gritos publicos de jolgorio trompeta en mano de quien piensa que Google es como su equipo de futbol, que tiene que ganar a toda costa. Como vuestros morning singers os recuerdan casi a diario, el escaneo estara integrado con el googlePhone, el googleDrive, el googleBrowser (link del 2001), el googleTraductor y el sistema operativo inmaginario de la señorita Pepis. Todos juntos. No se si me entienden. Google, Yahoo!, Microsoft son empresas que en parte han basado su modelo de negocio en la restriccion de los derechos de los usuarios (o la tortura directa, en el caso Chino). Una solucion tan elegante, innovadora y sobre todo publica (ya puedes consultar los textos desde que se termine el escaneo y hacer con ellos lo que te plazca) simplemente no puede ponerse a la altura de las ambiciones de controlar el flujo de informacion mundial por parte de una muntinacional americana. Pensar que tienen razon y que lo de google sera una tecnologia liberadora es como pensar que Linux tiene la guerra perdida o que la SGAE tiene todo el derecho a seguir hostigandonos. Y casi que por ahi no paso.
El sistema que usa reCaptcha para digitalizar libros es muy parecido a los sistemas de computacion parasita que ha estudiado Barabasi (padre de la teoria moderna de redes) en los ultimos anyos y que usan unas propiedades de los calculos de CRC de los distintos protocolos que usamos en Internet. Sin enrollarme mucho solo decir que es enviar las posibles soluciones a un problema matematico como headers tcp a diversos servidores en Internet junto con la formula que pretendemos calcular y ver cual de ellos NO responde que se ha producido un error de calculo (aceptando la respuesta como valida). El problema de la computacion parasita es que, por ahora, las implementaciones que existen necesitan procesar mas informacion que la que se pide que se calcule (es una reaccion endotermica, casi)
Por cierto, como bonus, un estupendo modelo de captcha que te pide identificar quien esta mas bueno/buena usando el API de hotornot.com y Flickr tiene un estupendo grupo con captchas cachondos.