SlideShare uma empresa Scribd logo
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;
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?
Começando pra valerComeçando pra valer
SPAM ainda é um problema?SPAM ainda é um problema?
SPAM ainda é um problema?SPAM ainda é um problema?
Infelizmente, SIM!Infelizmente, SIM!
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.
Só lembrando...Só lembrando...
SPAM é todo tipo de conteúdo não solicitadoSPAM é todo tipo de conteúdo não solicitado
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;
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
O'RLY?O'RLY?
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...
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
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.
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.
Exemplo práticoExemplo prático
retânguloretângulo círculocírculo
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
Exemplo práticoExemplo prático
??????
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
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
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
Fluxo padrão de um comentário...Fluxo padrão de um comentário...
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)
Exemplo de uso com CakePHPExemplo de uso com CakePHP
Qual a resposta da chamada?Qual a resposta da chamada?
{"class":1,"p":2.268811433715e+19}
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;
Como é armazenar o classificador?Como é armazenar o classificador?
Persistência através de serializaçãoPersistência através de serialização
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
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
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
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!
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

Mais conteúdo relacionado

Mais procurados

Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
Carlos Schults
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Paulino Michelazzo
 
Algoritmos com java script
Algoritmos com java scriptAlgoritmos com java script
Algoritmos com java script
Edigleysson Silva
 
Código limpo
Código limpoCódigo limpo
Código limpo
clauvane1708
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
Alexandre Machado
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmos
Sérgio Souza Costa
 
Software livre mitos e verdades
Software livre   mitos e verdadesSoftware livre   mitos e verdades
Software livre mitos e verdades
Fábio Emilio Costa
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Mario Guedes
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
thomasdacosta
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Mario Guedes
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
Bruno Rocha
 
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Joao Galdino Mello de Souza
 
Code Smells
Code SmellsCode Smells
Code Smells
Alan Willms
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
joaocarlobarros
 
Do legado ao DDD
Do legado ao DDDDo legado ao DDD
Do legado ao DDD
Leonn Leite
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
Sérgio Souza Costa
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
Rafael Paz
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
Osvaldo Santana Neto
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
mauricioszabo
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
Tiago
 

Mais procurados (20)

Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
Algoritmos com java script
Algoritmos com java scriptAlgoritmos com java script
Algoritmos com java script
 
Código limpo
Código limpoCódigo limpo
Código limpo
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmos
 
Software livre mitos e verdades
Software livre   mitos e verdadesSoftware livre   mitos e verdades
Software livre mitos e verdades
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
Do legado ao DDD
Do legado ao DDDDo legado ao DDD
Do legado ao DDD
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 

Destaque

CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2
Cauan Cabral
 
LabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQLLabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQL
Carlos Santos
 
PHP + Flex
PHP + FlexPHP + Flex
PHP + Flex
Cauan Cabral
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
Vinícius de Paula
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
Lucas Augusto Carvalho
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
Cauan Cabral
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
ux singapore
 

Destaque (7)

CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2
 
LabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQLLabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQL
 
PHP + Flex
PHP + FlexPHP + Flex
PHP + Flex
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
 

Semelhante a Filtro de SPAM

Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
Richard Barros
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
Kleber Silva
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ce
Luca Bastos
 
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
André Espeiorin
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
Paulino Michelazzo
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
José Alexandre Macedo
 
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Gilmar PSL
 
Projeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.S
Thoughtworks
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
Flávio Ribeiro
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
Alini Rebonatto
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
thiagobapt
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
Bruno Rocha
 
C4 Model
C4 ModelC4 Model
C4 Model
Cristiano Cunha
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
Luiz Junior
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
Leonardo "Hackin" Freire
 
5 Dicas para economizar no desenvolvimento do seu aplicativo
5 Dicas para economizar no desenvolvimento do seu aplicativo5 Dicas para economizar no desenvolvimento do seu aplicativo
5 Dicas para economizar no desenvolvimento do seu aplicativo
Kleber Carvalho
 
O Que E Software Livre
O Que E Software LivreO Que E Software Livre
O Que E Software Livre
Freedom DayMS
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
ricardophp
 
Carreira em Desenvolvimento de Software
Carreira em Desenvolvimento de SoftwareCarreira em Desenvolvimento de Software
Carreira em Desenvolvimento de Software
Flávio de Sousa
 
Palestra Unesp
Palestra UnespPalestra Unesp
Palestra Unesp
Renato Puccini
 

Semelhante a Filtro de SPAM (20)

Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ce
 
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
 
Projeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.S
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 
C4 Model
C4 ModelC4 Model
C4 Model
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
5 Dicas para economizar no desenvolvimento do seu aplicativo
5 Dicas para economizar no desenvolvimento do seu aplicativo5 Dicas para economizar no desenvolvimento do seu aplicativo
5 Dicas para economizar no desenvolvimento do seu aplicativo
 
O Que E Software Livre
O Que E Software LivreO Que E Software Livre
O Que E Software Livre
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Carreira em Desenvolvimento de Software
Carreira em Desenvolvimento de SoftwareCarreira em Desenvolvimento de Software
Carreira em Desenvolvimento de Software
 
Palestra Unesp
Palestra UnespPalestra Unesp
Palestra Unesp
 

Filtro de SPAM

  • 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. 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. Começando pra valerComeçando pra valer SPAM ainda é um problema?SPAM ainda é um problema?
  • 4. SPAM ainda é um problema?SPAM ainda é um problema? Infelizmente, SIM!Infelizmente, SIM!
  • 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. Só lembrando...Só lembrando... SPAM é todo tipo de conteúdo não solicitadoSPAM é todo tipo de conteúdo não solicitado
  • 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. 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
  • 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. 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. 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. 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.
  • 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
  • 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. 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. 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. Fluxo padrão de um comentário...Fluxo padrão de um comentário...
  • 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. Exemplo de uso com CakePHPExemplo de uso com CakePHP
  • 23. Qual a resposta da chamada?Qual a resposta da chamada? {"class":1,"p":2.268811433715e+19}
  • 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. Como é armazenar o classificador?Como é armazenar o classificador?
  • 26. Persistência através de serializaçãoPersistência através de serialização
  • 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. 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. 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. 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. 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