<$BlogRSDUrl$>

Pro·Log·[IR]

Programación Lógica y Recuperación de Información

«Algorithm = Logic + Control» Robert Kowalski (1979)

¡Importante! esta página hace uso de estilos recogidos en la especificación CSS2, no soportados por el navegador que está utilizando. Por favor, lea esta recomendación al respecto.

Archivo

Guardado por meses.

Enlaces

Los siguientes listados son una referencia a partir de la cual ampliar la búsqueda de sitios relacionados (i).

Bitácoras en castellano

Bitácoras en inglés

Directorios, metablogs

Programación lógica, Inteligencia Artificial, Recuperación de Información

Usabilidad, Arquitectura de la Información

Listas, foros, wikis

Matemáticas, ciencias

Miscelánea

Búsquedas

Búsqueda simple en varios de los motores más conocidos. Para mayor precisión, entrar en la página correspondiente e ir al apartado de búsqueda avanzada.

Búsqueda con Google
 

Búsqueda con Yahoo!
 

Búsqueda con AlltheWeb

Varios

Esta página traducida:

Traducción al catalán, internostrum; traducción al portugués, universia.

Reciba un aviso de nuevos comentarios (por Bloglet).


Agregue este sitio a su lector de "feeds" (sindicación mediante el sistema Atom).

Sobre este sitio

Espacio dedicado a la programación lógica y la recuperación de información, con una atención especial al lenguaje Prolog y otros lenguajes afines, pertenecientes al paradigma lógico y declarativo. También se tratará de hablar de estos temas desde la perspectiva de la Biblioteconomía y la Documentación.

En esta página

18.7.03

Spam, clasificación automática y algo de Lisp

Los excelentes comentarios publicados por Abraldes sobre técnicas de clasificación automática, basadas en procedimientos estadísticos, y su aplicación al filtrado de correo basura o "spam", me han animado a indagar un poco más sobre esta cuestión, y en el transcurso de estas "pesquisas" he encontrado bastantes referencias, algunas de las cuales me gustaría compartir con los lectores de estas líneas, pero sin pretender que tengan un carácter representativo de la cuestión.

Tras la lectura de un comentario publicado en minid.net, me enteré recientemente de que las últimas versiones de Mozilla incorporan en su gestor de correo un "filtro bayesiano" para la clasificación automática del "spam". Si bien sabía de la existencia de esta herramienta (no obstante, para las cuentas de correo susceptibles de recibir "spam" prefiero hacer uso del "webmail"; Yahoo por ejemplo incorpora una utilidad de filtrado, a cuya tecnología denomina "SpamGuard", que automáticamente almacena este tipo de mensajes en una carpeta aparte), desconocía que su funcionamiento estuviese basado en este mecanismo de clasificación, que gracias a los principios estadísticos en los que se fundamenta, permite generar un proceso de aprendizaje que se desarrolla con el uso continuado, a fin de mejorar su grado de eficacia o porcentaje de aciertos.

En Mozilla Spam Filtering, dentro del sitio del proyecto Mozilla, se explica su utilización, partiendo de la base de que es preciso un entrenamiento previo y, de forma paralela, la reclasificación manual de los casos fallidos, para que este mecanismo de filtrado funcione con fiabilidad. En la página se hace referencia al artículo de Paul Graham, "A Plan for Spam". Describe una serie de técnicas de filtrado, y esta mención viene a cuento de que el algoritmo de clasificación de Mozilla se basa en los procedimientos descritos.

This article describes the spam-filtering techniques used in the new spamproof web-based mail reader we're building to exercise Arc.

El artículo se complementa con otro, "Better Bayesian Filtering", en el que se desarrolla un algoritmo mejorado respecto del descrito en el primero. Ambos forman parte de un apartado en el que el autor recoge una serie de artículos y referencias cuya temática gira en torno al spam y su clasificación como tal, incluyendo entre otras referencias una lista de filtros anti spam. De modo más general encontramos, en otro apartado, una breve explicación de una ejemplificación del Teorema de Bayes (ver también la introducción de Kevin Murphy, "A brief introduction to Bayes' Rule", complemento de "A Brief Introduction to Graphical Models and Bayesian Networks").

Los ejemplos del artículo están escritos en Common Lisp (sin embargo la aplicación descrita está desarrollada en Arc, un dialecto de Lisp escrito por el propio Graham), lo cual no es de extrañar, ya que Paul Graham tiene un interés especial por este lenguaje, como evidencia su producción al respecto. Ha escrito dos libros dedicados a este lenguaje, "On Lisp" y "ANSI Common Lisp". El primero se puede descargar libremente, a texto completo, en formato PDF y PostScript, y del segundo se pueden consultar los dos primeros capítulos. En ambos casos está disponible aparte el código fuente de los ejemplos explicados. Sobre esta temática, el lenguaje Lisp y sus variantes, este autor nos proporciona además una importante relación de enlaces que apuntan a las monografías de otros autores, así como una serie de artículos propios.

Sin abandonar el sitio de Paul Graham, no quiero dejar de mencionar las FAQs sobre Lisp, el dialecto Arc y el spam. Por otra parte, en el apartado "Articles" hay artículos sobre diferentes cuestiones, en todo caso muy centradas en los temas que acabo de mencionar y, de modo más genérico, con la programación y el diseño de lenguajes.

Una segunda mención sobre el tema que nos ocupa: el proyecto "BSF - Filtro Bayesiano de Spam". En palabras de sus responsables:

BSF en un proyecto de filtro bayesiano escrito en Perl, ideado con el objetivo de explorar técnicas sencillas pero poderosas de disminuir en forma automática el spam recibido, con un fuerte énfasis en minimizar el riesgo de falsos positivos (correo perdido).

Ver también el análisis del spam recibido que hace uno de los autores del proyecto.

No hay que perder de vista que el lenguaje Perl [1] [2] [3] [4] es muy utilizado en la creación de scripts y aplicaciones CGI [1] [2] [3] [4], y está especialmente indicado para manejar cadenas de caracteres en este contexto. Como nota adicional, señalar que Visual Prolog permite comunicar programas escritos en lenguaje Prolog con páginas HTML, mediante la interfaz CGI [1] [2].

Una advertencia: el enlace al resumen sobre el proyecto BSF es incorrecto, siendo esta la url válida del documento (formato PostScript). El programa se puede descargar en un archivo comprimido (utilizar por ejemplo WinRAR para descomprimirlo, si WinZip no soporta su formato), y la explicación de su funcionamiento la encontramos en el propio código fuente en forma de comentarios (ver también el archivo "Readme").

No veo que se trate, en este momento, de un proyecto muy consistente de cara al usuario final, pero la utilidad de esta referencia creo que está sobre todo en la oportunidad de poder analizar el código fuente del programa y ver como se ha puesto en práctica su funcionamiento, guiándose con la ayuda de los comentarios. No se trata de una utilidad directamente instalable, tal y como estamos acostumbrados los usuarios comunes de Windows. A mi particularmente me interesa analizar como está implementado el módulo de "tokenización" de cadenas de caracteres, ya que este es un aspecto esencial en el PLN y por extensión en los procesos de recuperación de información de carácter alfanumérico.

También existen interesantes aplicaciones para Linux: PopF es un filtro anti-spam para servidores POP3 escrito en Python por Christophe Delord. Al estar desarrollado con un lenguaje multiplataforma, debería funcionar igualmente bajo otros S.O. que lo soportan. En la página de PopF hay interesantes referencias, algunas ya mencionadas (e.g. "A Plan for Spam", Paul Graham), sobre el fundamento teórico de este software (inferencia bayesiana), así como ejemplos de la salida que proporciona su funcionamiento. Existe un foro de discusión especialmente dedicado a PopF.

A los usuarios de la distribución Debian, les resultará interesante saber que existe un paquete especial, spamprobe 0.8b-1, filtro bayesiano anti-spam escrito en C++.

[0] comentarios | # | lista |


Pro·Log·[IR],

Publicación: Blogger | Estadísticas: eXTReMe Tracking

Se recomienda ver este sitio con Mozilla 1+, Firefox 0.8+ ó Netscape 7+. Si no queda más remedio, con IE 6+. Si lo desea, comunique cualquier problema al respecto. También será bien recibida cualquier sugerencia sobre el contenido. La fuente de letra preferente es Georgia. Se prohibe la utilización del diseño de la página salvo autorización expresa del autor. Los contenidos escritos son de uso libre, siempre que se cite la fuente.