Classificacao de Texto Projeto Spam Filter Ivan Gesteira Costa Filho Centro de Informatica UFPE Spam-Filter Aprendizagem de maquina para fazer um filtro de Spam. Tarefa: dado um email classificar como spam ou nao-spam Spam-Filter Como distinguir spam de nao spam? Categorizacao de Texto Criar uma base de dados Recolher emails e classificar-los como Spam ou Nao-Spam. Criar uma representacao vetorial do texto Tecnicas de processamento de texto (a seguir) Usar metodos de classificacao Arvores de inducao, Aprendizagem Bayesiana, … Preparação dos documentos Operações sobre o texto objetivo: criar a visão lógica do documento Criação da representação do documento Utilizando algum modelo de RI Doc original Visão Lógica Doc : www.filosofia.com Doc : www.filosofia.com “Se o desonesto soubesse a vantagem de ser honesto, ele seria honesto ao menos por desonestidade.” desonesto / soubesse / vantagem / honesto / seria / honesto / menos/desonestidade/ socrates Sócrates Representação Doc : www.filosofia.com honesto 2 desonesto 1 soubesse 1 vantagem 1 seria 1 menos 1 desonestidade 1 socrates 1 Operações sobre o texto Fases Análise léxica Eliminação de stopwords Artigos, pronomes, etc Operação de stemming Elimina dígitos, pontuação, etc Redução da palavra ao seu radical … Operações sobre o texto Análise léxica Entrada O texto original uma cadeia de caracteres Objetivo Converter o texto original em uma lista de palavras Identificando as palavras e frequencia que ocorrem no texto Procedimento padrão Utilizar espaços como sendo separadores de palavras Tratar pontuação, hífens, dígitos, letras maiúsculas e acentos. Cada caso pode requerer tratamentos diferenciados Operações sobre o texto Eliminação de stopwords Algumas palavras não são bons discriminadores Palavras muito freqüentas na base de documentos Palavras sem semântica associada artigos, preposições, conjunções, alguns advérbios e adjetivos Aqui também há exceções a considerar Em domínios específicos, podemos precisar manter algumas dessas palavras Redes de computadores Operações sobre o texto Stemming Problema variação de uma mesma palavra aparece nos documentos relevantes Ex., plural, gerúndio, verbos flexionados, aumentativo... Objetivo dessa operação: Substituir a palavra por seu radical (stem) Porção da palavra que resta após a remoção de prefixos e sufixos Possibilitar casamento parcial entre variações de uma mesma palavra Ex.: engenheiro, engenheira, engenharia, … Exemplo Stemming word stem quilo quilométricas quilométricos quilômetro quilômetros quilos química químicas químico químicos quimioterapia quimioterápicos quil quilométr quilométr quilômetr quilômetr quil químic químic químic químic quimioterap quimioteráp => Representação do Documento Dado um conjunto de documentos e palavras presentes. Cada documento (dj) é representado por termos da base associados a pesos d1 = k1 (w1), k2 (w2),..., kn (wn) Peso Importância da palavra para descrever o documento Quando o termo não aparece no documento, o peso associado é zero Cada modelo de recuperação define pesos de uma maneira diferente Representação de Documento Cálculo dos Pesos Peso = freqüência de ocorrência do termo no documento Doc original Operações de Texto Doc : www.filosofia.com Doc : www.filosofia.com “Se o desonesto soubesse a vantagem de ser honesto, ele seria honesto ao menos por desonestidade.” desonesto / soubesse / vantagem / honesto / seria / honesto / menos/desonestidade/ socrates Sócrates Representação Doc : www.filosofia.com honesto 2 desonesto 1 soubesse 1 vantagem 1 seria 1 menos 1 desonestidade 1 socrates 1 Modelo Espaço Vetorial Cálculo dos Pesos Método TF-IDF leva em consideração: Freqüência do termo no documento Term Frequency (TF) Quanto maior, mais relevante é o termo para descrever o documento Inverso da freqüência do termo entre os documentos da coleção Inverse Document Frequency (IDF) Termo que aparece em muitos documentos não é útil para distinguir relevância Peso associado ao termo tenta balancear esses dois fatores Modelo Espaço Vetorial Cálculo dos Pesos com TF-IDF dj: documento; ki:termo freqi,j: freqüência do termo ki no documento dj ni: número de documentos que contêm termo ki N: número total de documentos da base maxl freql,j : a freqüência do termo mais freqüente no documento freqi,j TF: tfi,j= maxl freql,j IDF: idfi= log N ni Freqüência (normalizada) do termo no documento Inverso da freqüência do termo nos documentos da base Modelo Espaço Vetorial Cálculo dos Pesos com TF-IDF wi,j = tfi,j x idfi Processamento de Texto e Representação Criar uma base de dados com + de 200 emails pelo menos 100 spans. Criar um parser em Java para criar representação de documentos Para fazer stop-word e stemming ver … http://www.cin.ufpe.br/~igcf/si/BrazilianStemmer.java Criar arquivo no formato Weka Palavras são atributos Vetor com TF-IDF são os exemplos Classificação Usar os metodos do Weka Árvore de Inducao (J48) e Bayesiano Ingenuo Realizar Validação-Cruzada 10-fold Arvores de indução explorar efeitos de algoritmos de poda na acurácia Análise das regras geradas Comparar resultado Naive x Árvores de Indução Projeto Entregar relatório e (bases de dados) com Representação dos documentos. Descrição da base de dados Experimentos Realizados Comparação da acurácia Naive X J48 Efeito de técnicas de poda no J48 Interpretação das Regras obtidas Prazo 14/06 antes da meia noite Apresentação 15/06