Filtro de SPAM

31
Apresentação rápida... Apresentação rápida... Campograndense, 23 anos; Campograndense, 23 anos; Acadêmico do último semestre em Ciência da Acadêmico do último semestre em Ciência da Computação / UFMS; Computação / UFMS; Este projeto é parte do meu trabalho final de Este projeto é parte do meu trabalho final de graduação, na área de IA sob orientação do Drº graduação, na área de IA sob orientação do Drº Edson Takashi; Edson Takashi; Trabalho com PHP há pouco mais de 5 anos; Trabalho com PHP há pouco mais de 5 anos; Participo do PHPMS, PHPBC, diversas listas e Participo do PHPMS, PHPBC, diversas listas e grupos de discussão; grupos de discussão;

Transcript of Filtro de SPAM

Page 1: Filtro de SPAM

Apresentação rápida...Apresentação rápida...

Campograndense, 23 anos;Campograndense, 23 anos; Acadêmico do último semestre em Ciência da Acadêmico do último semestre em Ciência da

Computação / UFMS;Computação / UFMS; Este projeto é parte do meu trabalho final de Este projeto é parte do meu trabalho final de

graduação, na área de IA sob orientação do Drº graduação, na área de IA sob orientação do Drº Edson Takashi;Edson Takashi;

Trabalho com PHP há pouco mais de 5 anos;Trabalho com PHP há pouco mais de 5 anos; Participo do PHPMS, PHPBC, diversas listas e Participo do PHPMS, PHPBC, diversas listas e

grupos de discussão;grupos de discussão;

Page 2: Filtro de SPAM

O que vem por aí...O que vem por aí...

SPAM ainda é um problema?SPAM ainda é um problema? Quais as soluções existentes?Quais as soluções existentes? Por que mais uma?Por que mais uma? Como funciona um filtro de SPAM?Como funciona um filtro de SPAM? Apresentando o projeto!Apresentando o projeto! O que esperar dele?O que esperar dele?

Page 3: Filtro de SPAM

Começando pra valerComeçando pra valer

SPAM ainda é um problema?SPAM ainda é um problema?

Page 4: Filtro de SPAM

SPAM ainda é um problema?SPAM ainda é um problema?

Infelizmente, SIM!Infelizmente, SIM!

Page 5: Filtro de SPAM

SPAM é um problemaSPAM é um problema

Estima-se que aproximadamente 95% do Estima-se que aproximadamente 95% do conteúdo na internet se trata de SPAM.conteúdo na internet se trata de SPAM.

Page 6: Filtro de SPAM

Só lembrando...Só lembrando...

SPAM é todo tipo de conteúdo não solicitadoSPAM é todo tipo de conteúdo não solicitado

Page 7: Filtro de SPAM

SPAM é um problemaSPAM é um problema

Todos os dias horas de trabalho são gastos Todos os dias horas de trabalho são gastos limpando caixa de e-mail, comentários em blogs e limpando caixa de e-mail, comentários em blogs e portais, postagens em fóruns etc;portais, postagens em fóruns etc;

O envio de SPAM consome banda, processamento O envio de SPAM consome banda, processamento e armazenamento. Isso custo caro;e armazenamento. Isso custo caro;

Page 8: Filtro de SPAM

Soluções existentesSoluções existentes

Existem várias soluções no mercado para tentar Existem várias soluções no mercado para tentar diminuir esses custos;diminuir esses custos;

PROBLEMAPROBLEMA: a maioria é voltado para SPAM em e-: a maioria é voltado para SPAM em e-mails, não em portais, blogs e fóruns;mails, não em portais, blogs e fóruns;

Mas existem soluções para estes casos também:Mas existem soluções para estes casos também: CAPTCHACAPTCHA

Page 9: Filtro de SPAM

O'RLY?O'RLY?

Page 10: Filtro de SPAM

Soluções existentesSoluções existentes

CAPTCHA's deveriam barrar bots, não pessoas;CAPTCHA's deveriam barrar bots, não pessoas; Mais soluções...Mais soluções...

AKISMET® e similares:AKISMET® e similares: Excelente alternativa, muito eficiente na maioria Excelente alternativa, muito eficiente na maioria

dos casos, mas tem limitações...dos casos, mas tem limitações...

Page 11: Filtro de SPAM

AKISMET® e similaresAKISMET® e similares

É Open-Source ? NÃOÉ Open-Source ? NÃO Pode instalar junto a sua aplicação ? NÃOPode instalar junto a sua aplicação ? NÃO Pode usar em página pessoal ? DEPENDEPode usar em página pessoal ? DEPENDE Pode usar na página da empresa? PAGANDOPode usar na página da empresa? PAGANDO

Page 12: Filtro de SPAM

Por que mais uma então?Por que mais uma então?

Suprir as lacunas deixadas pelas outras soluçõesSuprir as lacunas deixadas pelas outras soluções Atender melhor cenários como:Atender melhor cenários como:

Grande portal com alta interatividade com os Grande portal com alta interatividade com os internautas precisa moderar as mensagens. A internautas precisa moderar as mensagens. A ligação de rede entre o ligação de rede entre o datacenterdatacenter do portal e do do portal e do webservicewebservice do classificador é um gargalo; do classificador é um gargalo;

Sou Sou expertexpert em inteligência artificial e gostaria de em inteligência artificial e gostaria de corrigir problemas no classificador, tornando-o mais corrigir problemas no classificador, tornando-o mais eficiente;eficiente;

A política do governo não permite adoção de A política do governo não permite adoção de software proprietário.software proprietário.

Page 13: Filtro de SPAM

Mas como funciona um filtro?Mas como funciona um filtro?

Existem várias formas de implementar um filtro Existem várias formas de implementar um filtro (lista negra, lista branca, lista de regras, (lista negra, lista branca, lista de regras, probabilidade, inteligência artificial etc);probabilidade, inteligência artificial etc);

Como é feito na prática: Como é feito na prática: Naïve BayesNaïve Bayes O que é isso?O que é isso?

Um algorítimo de aprendizado de máquina Um algorítimo de aprendizado de máquina baseado em um teorema probabilístico (???)baseado em um teorema probabilístico (???)

A partir de exemplos, ele “aprende” a classificar A partir de exemplos, ele “aprende” a classificar algum conteúdo, gerando um modelo matemático algum conteúdo, gerando um modelo matemático para isso.para isso.

Page 14: Filtro de SPAM

Exemplo práticoExemplo prático

retângulo retângulo círculo círculo

Page 15: Filtro de SPAM

Exemplo práticoExemplo prático

retângulo círculo

VerdeVerde4 lados4 lados4 pontas4 pontasAltura 2 cmAltura 2 cm

Azul turquesaAzul turquesa0 lados0 lados∞∞ pontaspontasAltura 2 cmAltura 2 cm

Page 16: Filtro de SPAM

Exemplo práticoExemplo prático

??????

Page 17: Filtro de SPAM

Exemplo práticoExemplo prático

Tem mais característica de círculo que de retânguloTem mais característica de círculo que de retângulo

VerdeVerde0 lados0 lados∞∞ pontaspontasAltura 2 cmAltura 2 cm

Page 18: Filtro de SPAM

Apresentando o projetoApresentando o projeto

Nome: Filtro de Spam (não batizado ainda)Nome: Filtro de Spam (não batizado ainda) Características:Características:

Software livre – licença MITSoftware livre – licença MIT Possui dois algorítimos de aprendizado de Possui dois algorítimos de aprendizado de

máquina implementados: Naïve Bayes e PAmáquina implementados: Naïve Bayes e PA Implementado em PHPImplementado em PHP Pode ser instalado em servidores de hospedagem Pode ser instalado em servidores de hospedagem

padrãopadrão Aprendizagem distribuídaAprendizagem distribuída

Diferentes instalações Diferentes instalações podempodem sincronizar suas sincronizar suas bases de conhecimentobases de conhecimento

Page 19: Filtro de SPAM

Apresentando o projetoApresentando o projeto

Mais sobre a implementação...Mais sobre a implementação... Algorítimos implementados em PHP 5Algorítimos implementados em PHP 5 Webservice implementado com CakePHP 1.3Webservice implementado com CakePHP 1.3 Testado com banco de dados MySQL 5.1Testado com banco de dados MySQL 5.1 Código disponível via Github (endereço depois)Código disponível via Github (endereço depois) Webservice baseado na arquitetura REST, Webservice baseado na arquitetura REST,

permitindo fácil interação com qualquer linguagem permitindo fácil interação com qualquer linguagem de programaçãode programação

Page 20: Filtro de SPAM

Fluxo padrão de um comentário...Fluxo padrão de um comentário...

Page 21: Filtro de SPAM

Apresentando o projetoApresentando o projeto

Dois Dois webservicewebservice ClassificaçãoClassificação

Avalia mensagens (Avalia mensagens (checkcheck)) Corrigi classificação (Corrigi classificação (is-hamis-ham e e is-spamis-spam))

SincronizaçãoSincronização Solicita atualização (Solicita atualização (request-updaterequest-update)) Envia novos dados (Envia novos dados (push-update)push-update)

Page 22: Filtro de SPAM

Exemplo de uso com CakePHPExemplo de uso com CakePHP

Page 23: Filtro de SPAM

Qual a resposta da chamada?Qual a resposta da chamada?

{"class":1,"p":2.268811433715e+19}

Page 24: Filtro de SPAM

Apresentando o projeto...Apresentando o projeto...

De onde vem o “distribuído” no nome?De onde vem o “distribuído” no nome? A base do classificador é seu conjunto de A base do classificador é seu conjunto de

exemplos;exemplos; Diferentes conjuntos podem manter-se Diferentes conjuntos podem manter-se

sincronizados;sincronizados;

Page 25: Filtro de SPAM

Como é armazenar o classificador?Como é armazenar o classificador?

Page 26: Filtro de SPAM

Persistência através de serializaçãoPersistência através de serialização

Page 27: Filtro de SPAM

Como é a base de conhecimento?Como é a base de conhecimento?

Os exemplos são o “conhecimento”Os exemplos são o “conhecimento” Cada exemplo precisa ser pré-processadoCada exemplo precisa ser pré-processado Armazena-se os exemplos já com o pré-Armazena-se os exemplos já com o pré-

processamentoprocessamento Dados são mantidos serializadosDados são mantidos serializados

Page 28: Filtro de SPAM

Como ocorre a sincronizaçãoComo ocorre a sincronização

Um host deve ter o endereço para o outroUm host deve ter o endereço para o outro AutenticaçãoAutenticação Cada entrada possui um UUID e Cada entrada possui um UUID e timestamptimestamp de de

criaçãocriação As duas informações permite a troca de dados As duas informações permite a troca de dados

diferentes entre as duas partesdiferentes entre as duas partes

Page 29: Filtro de SPAM

O que esperar...O que esperar...

Lançamento da versão final deve ocorrer até Lançamento da versão final deve ocorrer até DezembroDezembro

Lançamento deLançamento de plugin plugin para Wordpress em breve para Wordpress em breve Plugin para consumir o Plugin para consumir o webservicewebservice em CakePHP em CakePHP

também será liberado em brevetambém será liberado em breve A eficiência depende do treinamento feito com o A eficiência depende do treinamento feito com o

algorítimoalgorítimo Quanto mais usuários, maior a eficiência...Quanto mais usuários, maior a eficiência... Outros Outros pluginsplugins e bibliotecas devem ser lançadas e bibliotecas devem ser lançadas

conforme interesse da comunidadeconforme interesse da comunidade

Page 30: Filtro de SPAM

Me interessei...Me interessei...

Em usar:Em usar: Aguarde o lançamento da versão finalAguarde o lançamento da versão final Acompanhe o repositório no GitHub – Acompanhe o repositório no GitHub –

documentação está ládocumentação está lá Em contribuir:Em contribuir:

Faça um fork do repositórioFaça um fork do repositório Qualquer dúvida entre em contatoQualquer dúvida entre em contato

Em contribuir, mas não programo:Em contribuir, mas não programo: Entre em contato, ideias são sempre bem vindas.Entre em contato, ideias são sempre bem vindas.

O Open-Source agradece!O Open-Source agradece!

Page 31: Filtro de SPAM

Contato...Contato...

Apresentação: Apresentação: http://goo.gl/agpZOhttp://goo.gl/agpZO Email: Email: [email protected]@radig.com.br Blog: Blog: http://cauancabral.nethttp://cauancabral.net Github: Github: http://github.com/CauanCabralhttp://github.com/CauanCabral Gtalk: Gtalk: [email protected]@gmail.com Twitter: Twitter: @CauanCabral@CauanCabral IRC @ Freenode: IRC @ Freenode: CauanCabralCauanCabral http://linkedin.com/in/cauancabralhttp://linkedin.com/in/cauancabral