Filtro de SPAM

735 views
653 views

Published on

Apresentação de um filtro de SPAM voltado a fóruns e blogs, implementado em PHP.

Apresentada no Latinoware 2010

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
735
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Filtro de SPAM

  1. 1. Apresentação rápida...Apresentação rápida...  Campograndense, 23 anos;Campograndense, 23 anos;  Acadêmico do último semestre em Ciência daAcadêmico do último semestre em Ciência da Computação / UFMS;Computação / UFMS;  Este projeto é parte do meu trabalho final deEste 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 eParticipo do PHPMS, PHPBC, diversas listas e grupos de discussão;grupos de discussão;
  2. 2. 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?
  3. 3. Começando pra valerComeçando pra valer SPAM ainda é um problema?SPAM ainda é um problema?
  4. 4. SPAM ainda é um problema?SPAM ainda é um problema? Infelizmente, SIM!Infelizmente, SIM!
  5. 5. SPAM é um problemaSPAM é um problema Estima-se que aproximadamente 95% doEstima-se que aproximadamente 95% do conteúdo na internet se trata de SPAM.conteúdo na internet se trata de SPAM.
  6. 6. Só lembrando...Só lembrando... SPAM é todo tipo de conteúdo não solicitadoSPAM é todo tipo de conteúdo não solicitado
  7. 7. SPAM é um problemaSPAM é um problema  Todos os dias horas de trabalho são gastosTodos os dias horas de trabalho são gastos limpando caixa de e-mail, comentários em blogs elimpando 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, processamentoO envio de SPAM consome banda, processamento e armazenamento. Isso custo caro;e armazenamento. Isso custo caro;
  8. 8. Soluções existentesSoluções existentes  Existem várias soluções no mercado para tentarExistem 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
  9. 9. O'RLY?O'RLY?
  10. 10. 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 maioriaExcelente alternativa, muito eficiente na maioria dos casos, mas tem limitações...dos casos, mas tem limitações...
  11. 11. 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
  12. 12. 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 osGrande portal com alta interatividade com os internautas precisa moderar as mensagens. Ainternautas precisa moderar as mensagens. A ligação de rede entre oligação de rede entre o datacenterdatacenter do portal e dodo portal e do webservicewebservice do classificador é um gargalo;do classificador é um gargalo;  SouSou expertexpert em inteligência artificial e gostaria deem inteligência artificial e gostaria de corrigir problemas no classificador, tornando-o maiscorrigir problemas no classificador, tornando-o mais eficiente;eficiente;  A política do governo não permite adoção deA política do governo não permite adoção de software proprietário.software proprietário.
  13. 13. Mas como funciona um filtro?Mas como funciona um filtro?  Existem várias formas de implementar um filtroExistem 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áquinaUm 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 classificarA partir de exemplos, ele “aprende” a classificar algum conteúdo, gerando um modelo matemáticoalgum conteúdo, gerando um modelo matemático para isso.para isso.
  14. 14. Exemplo práticoExemplo prático retânguloretângulo círculocírculo
  15. 15. Exemplo práticoExemplo prático retângulo círculo VerdeVerde 4 lados4 lados 4 pontas4 pontas Altura 2 cmAltura 2 cm Azul turquesaAzul turquesa 0 lados0 lados ∞∞ pontaspontas Altura 2 cmAltura 2 cm
  16. 16. Exemplo práticoExemplo prático ??????
  17. 17. 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 VerdeVerde 0 lados0 lados ∞∞ pontaspontas Altura 2 cmAltura 2 cm
  18. 18. 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 dePossui 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 hospedagemPode ser instalado em servidores de hospedagem padrãopadrão  Aprendizagem distribuídaAprendizagem distribuída  Diferentes instalaçõesDiferentes instalações podempodem sincronizar suassincronizar suas bases de conhecimentobases de conhecimento
  19. 19. 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 linguagempermitindo fácil interação com qualquer linguagem de programaçãode programação
  20. 20. Fluxo padrão de um comentário...Fluxo padrão de um comentário...
  21. 21. Apresentando o projetoApresentando o projeto  DoisDois webservicewebservice  ClassificaçãoClassificação  Avalia mensagens (Avalia mensagens (checkcheck))  Corrigi classificação (Corrigi classificação (is-hamis-ham ee 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)
  22. 22. Exemplo de uso com CakePHPExemplo de uso com CakePHP
  23. 23. Qual a resposta da chamada?Qual a resposta da chamada? {"class":1,"p":2.268811433715e+19}
  24. 24. 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 deA base do classificador é seu conjunto de exemplos;exemplos;  Diferentes conjuntos podem manter-seDiferentes conjuntos podem manter-se sincronizados;sincronizados;
  25. 25. Como é armazenar o classificador?Como é armazenar o classificador?
  26. 26. Persistência através de serializaçãoPersistência através de serialização
  27. 27. 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
  28. 28. 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 eCada entrada possui um UUID e timestamptimestamp dede criaçãocriação  As duas informações permite a troca de dadosAs duas informações permite a troca de dados diferentes entre as duas partesdiferentes entre as duas partes
  29. 29. 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 pluginplugin para Wordpress em brevepara Wordpress em breve  Plugin para consumir oPlugin para consumir o webservicewebservice em CakePHPem CakePHP também será liberado em brevetambém será liberado em breve  A eficiência depende do treinamento feito com oA 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...  OutrosOutros pluginsplugins e bibliotecas devem ser lançadase bibliotecas devem ser lançadas conforme interesse da comunidadeconforme interesse da comunidade
  30. 30. 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!
  31. 31. Contato...Contato...  Apresentação:Apresentação: http://goo.gl/agpZOhttp://goo.gl/agpZO  Email:Email: cauan@radig.com.brcauan@radig.com.br  Blog:Blog: http://cauancabral.nethttp://cauancabral.net  Github:Github: http://github.com/CauanCabralhttp://github.com/CauanCabral  Gtalk:Gtalk: cauanc@gmail.comcauanc@gmail.com  Twitter:Twitter: @CauanCabral@CauanCabral  IRC @ Freenode:IRC @ Freenode: CauanCabralCauanCabral  http://linkedin.com/in/cauancabralhttp://linkedin.com/in/cauancabral

×