PREGUNTAS FRECUENTES SOBRE PLAN PARA EL SPAM


¿Este código esta disponible en cualquier lugar?

No; está escrito en Arc, que en sí no ha sido liberado todavía.

¿Hay algún filtro Bayesiano para Outlook?

Sé de nueve hasta la fecha: Spammunition, SpamBayes, Spam Bully, InboxShield, Junk-Out, Outclass, Disruptor OL, SpamTiger y JunkChief.

¿Hay algo que pueda proteger el servidor de mi empresa?

El mejor filtro Bayesiano comercial a nivel de servidor es probablemente Death2Spam. SpamProbe, uno de los mejores filtros Bayesianos de código abierto, también se puede ejecutar en el servidor.

La mayoría de los filtros comerciales de spam a nivel de servidor están todavía basados en normas. Pero empiezan a aparecer algunos que utilizan filtrado Bayesiano. Probablemente la manera de encontrarlos es buscarlos en Google.

La pregunta que hay que hacer al vendedor es, ¿el filtro aprende a reconocer spam basado en el spam y correo no-spam que recibimos? Si no aprende, no es Bayesiano.

¿Tiene Arc/Lisp alguna ventaja para escribir este tipo de software?

El tipo symbol de Lisp es útil manipulando bases de datos de palabras, ya que te permite comprobar la igualdad con sólo comparar los punteros. (Si te encuentras utilizando sumas de verificación para identificar palabras, son símbolos que se supone deberías estar usando.) Prolog, Erlang, y Ruby también soportan los símbolos. Igual Python, hasta cierto punto, aunque no creo que tenga alguna sintaxis para ellos todavía.

En términos más generales, Lisp fue diseñado para el prototipado rápido, y esta aplicación implicaba mucho de eso. Probablemente pasé el 95% del tiempo de desarrollo escribiendo expresiones en el nivel superior, probando diversos algoritmos ajustados a correos electrónicos individuales.

¿Te importa si escribo filtros basados en este algoritmo?

Por supuesto que no. No pretendo haber inventado nada nuevo aqui. La clasificación bayesiana de texto es un campo viejo y establecido. Si hay algo nuevo en este artículo (por lo menos, era una novedad para mí) es que una simple variante de esto sea tan eficaz filtrando spam.

Así que por todos los medios escribe filtros de spam. Es un hack muy gratificante. Si terminas creando algo que otras personas puedan usar, házmelo saber y hago un enlace al mismo.

No sé Lisp; ¿puedes explicarme el algoritmo?

Esta expresado en notación matemática en Hackers & Painters.

¿Podría utilizar el filtrado Bayesiano para hacer filtros de contenidos Web?

Nunca lo he intentado, pero sí, creo que funcionaría bien.

¿Filtrará este algoritmo el 99,5% de mi spam sin falsos positivos?

Filtra el 99,5% de mi spam. Obtengo resultados similares para la otra colección de spam que he probado hasta el momento. (No pude medir los falsos positivos, porque sólo tenia los spams).

Me preocupa un poco que mi correo electrónico pudiera ser especialmente fácil de filtrar. Gran parte de mi correo no deseado proviene de "opt-in" spammers como Qves y Virtumundo, y eso es muy fácil de detectar. Además, mi propio correo está lleno de referencias a la programación que hacen que sea fácil distinguirlo del correo no deseado (aunque, irónicamente, no de la "programación" en sí misma, que a menudo sucede en spams de venta de antenas parabólicas).

Así que si tratas de aplicar este filtro para ti, te agradecería si pudieras hacerme saber que tan bien te funciona. Mi corazonada es que funcionara de manera muy efectiva para casi todos, pero sería reconfortante escuchar las cifras.

¿Podrían los spammers engañar a los filtros bayesianos llenando sus spams con palabras al azar?

Tendrían que deshacerse de las palabras malas, así como agregar neutrales. Sólo las quince palabras más interesantes contribuyen a la probabilidad, y las palabras neutrales como "cebolla", no importa cuántas haya de ellas, no pueden competir con la incriminatoria "viagra" para la significación estadística.

Para compensar por las palabras incriminatorias, los spammers necesitarían diluir sus correos electrónicos con palabras especialmente inocentes, es decir, aquellas que no son meramente neutrales, sino que a menudo ocurren de manera desproporcionada en el correo electrónico legítimo del usuario. Sin embargo, estas palabras (por ejemplo, los apodos de nuestros amigos, los términos que utilizas en tu trabajo) son diferentes para cada destinatario, y los spammers no tienen manera de saber cuales son.

Una vez que este software este disponible, ¿no podrían los spammers simplemente ajustar sus spams para superarlo?

No podrían, forzosamente, ajustar sus mensajes y decir todavía lo que querían decir. Por ejemplo, si quisieran enviarte a una dirección URL conocida a los filtros, encontrarían muy difícil ajustarlos para evitar eso.

En segundo lugar, ¿ajustarlos con que? Los filtros de cada usuario serán diferentes, y en especial las palabras inocentes variarán. Cuando mucho, los spammers podrán diluir sus mails con palabras meramente neutrales, y esas tenderán a no ser de mucha utilidad, ya que no estarán entre las quince más interesantes.

Si los spammers trataran de sacar la mayoría de palabras incriminatorias de sus mensajes, todos estos tendrían que usar eufemismos diferentes, porque si todos empezaran diciendo "adolescentes" en lugar de "jovenes" entonces "adolescentes" empezaría a tener una alta probabilidad de ser spam.

Por último, aunque los spammers trabajaran para sacar todas las palabras incriminatorias del cuerpo del mensaje, no sería suficiente, ya que en un spam típico muchas de las palabras incriminatorias están en los encabezados.

¿Qué pasaría si los spammers envían sus mensajes como imágenes?

Ya lo hacen a veces, y somos capaces de atraparlos. En realidad, dichos correos incluyen una gran cantidad de contenido incriminatorio. Los encabezados, para empezar, serán tan malos como siempre. Y recuerda que escaneamos html así como texto. En el cuerpo del mensaje probablemente habrá un vínculo, así como la imagen, ambos conteniendo urls, que probablemente puntuaran alto. "Href" y "img" tienen ambos probabilidades de spam que se acercan a las palabras pornográficas. Dentro de la url, la imagen tiene que tener algún tipo de nombre, y estos suelen estar lejos de ser al azar.

¿Puede tu programa lidiar con el truco del spam de insertar comentarios html en medio de las palabras?

Sí, ignoro los comentarios html hasta el nivel de escanear tokens, sin considerarlos siquiera como separadores.

Los spammers utilizan a veces etiquetas generadas al azar para romper tokens, ya que el software de renderización de html por lo general ignora las etiquetas sin sentido. Le permito a estas separar tokens, y funciona bien. Trozos rotos de palabras adquieren simplemente altas probabilidades de ser spam.

¿Sería este artículo dejado fuera por tus filtros?

No. Alguien me lo envió como prueba, y no lo fue. Aunque el artículo contiene muchas palabras de spam, también contiene una gran cantidad de palabras manifiestamente aún más inocentes (como "spammers" irónicamente, que se da en gran parte de mi correo electrónico real, y nunca en mi spam). Dado que sólo cuentan las palabras más interesantes, las palabras inocentes desplazaron a las palabras de spam en el ranking, y este correo terminó con la probabilidad mínima posible.

Eso tiene sentido, porque es más probable que un artículo que alguien escribe se asemeje al contenido de su propio correo electrónico de lo que se asemejaría al spam, incluso si el artículo es acerca del spam.

¿Qué tan bien puede tu software filtrar correo que trate de spam?

Este es un problema para cualquiera que trabaje en el filtrado de spam. En el caso extremo, si alguien de quien nunca has oído hablar te envía simplemente spam sin comentario adicional, será difícil de filtrar. En este caso, todo se reducirá al encabezado.

Pero después de todo, si alguien puede enviarte spam con total impunidad, entonces, los spammers también podrían enviarte spam. Así que para estas situaciones, puede que tengamos que tener una contraseña especial que la gente pudiera incluir en el correo para que los filtros la atrapen, y también (yo tengo una ya) una papelera especial para metaspam de manera que no contribuya a las probabilidades.

Si hay un lado bueno de esto, es que si podemos crear filtros que funcionan aceptablemente bien para nosotros, funcionaran mejor para todos los demás.

¿Filtrará este software correo electrónico automático bueno, como recibos de ordenes y preguntas frecuentes de grupos de noticias?

En su mayoría no. Puede que este tipo de correo sea automatizado, pero el texto por lo general tiene un carácter muy diferente al spam.

Las únicas respuestas automáticas que tienden a ser filtradas son las que contienen una gran cantidad de publicidad adicional. En efecto, estos mensajes de correo electrónico consisten en una respuesta automática con spam añadido al final, por lo que no es de extrañar que los filtros los atrapen.

¿Querrán usar filtros el tipo de personas que responden al spam?

Creo que sí. Estoy suponiendo aquí, pero sospecho que la gente lo suficientemente inocente como para responder a un correo no deseado a menudo obtendran correo electrónico a través de servicios gratuitos como Yahoo Mail o Hotmail, o a través de grandes ISPs como AOL o Earthlink. Una vez que se corre la voz de que es posible filtrar la mayoría del spam, estarán obligados a ofrecer filtros eficaces.

Si los filtros capturan más spam, ¿simplemente no enviaran más los spammers para compensar?

Los spammers ya operan a plena capacidad.

¿Cuál es tu sentir acerca de las listas negras?

Como son utilizadas ahora por los proveedores de Internet, son equivalentes a filtros muy malos. Sin embargo, la información que proporcionan podría ser incorporada en el filtrado Bayesiano.

¿No asume la Regla de Bayes que los predictores son independientes?

Sí, estrictamente hablando sólo es válida suponiendo que la probabilidad de que, digamos, "sexo", se presente en un correo electrónico no está relacionada con la probabilidad de que "sexy" se dé en el mismo. Obviamente ese no es el caso.

Por otro lado, existe una larga tradición de violar este requisito. Cuando se hace esto se le llama un algoritmo "Bayesiano ingenuo" y en la práctica funciona bastante bien, al igual que en la práctica (si te mantienes alejado de las fronteras de la precisión) funciona bastante bien tratar los números en coma flotante, como si fueran reales.

¿Toma en cuenta este algoritmo la probabilidad a priori de que un correo electrónico sea spam?

No. Asume que es igual de probable que un correo electrónico sea spam o no. Por lo que la precisión podría ser ligeramente mejorada, teniendo en cuenta la proporción real de spam que recibe cada usuario. Si bien, tendrías que hacer esto por horas, debido a que la proporción varía mucho dependiendo de la hora del día que la probabilidad a priori en general no sirve para predecir.

¿Por qué consideras 15 palabras? ¿Qué tiene de especial el 15?

De hecho, en la última versión del filtro utilizo 20, porque marcar tokens por el contexto significa que el software ahora ve más tokens distintos por correo.

Casi todos los mensajes de spam suelen tener esa cantidad de palabras incriminatorias en ellos. Si nos fijamos en más que eso, comenzarás a incluir palabras neutras, que son ruido en el mejor de los casos. Sin embargo, deseas ver tantas palabras como puedas, porque correos electrónicos legítimos bien pueden contener dos o tres palabras con altas probabilidades de spam― si utilizaras sólo las 5 palabras principales, por ejemplo, comenzarias a obtener positivos falsos.

¿Funcionará para otros idiomas aparte del Inglés?

Siempre y cuando utilicen espacio en blanco para separar tokens, debería.






Traducido de Plan For Spam FAQ por Paul Graham.
Traducción: Armando Alvarez.