O documento apresenta um projeto de filtro de spam desenvolvido por um estudante de ciência da computação. O filtro usa aprendizado de máquina para classificar mensagens como spam ou não spam e pode ser instalado em diferentes sites para compartilhar e melhorar o modelo de classificação.
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?
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.
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.
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)
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?
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!