Mineração de Textos Profa. Flavia Cristina Bernardini Informação a ser minerada Formato da informação ◦ ASCII, MLs, DBs, KBs Assunto da informação ◦ Visitas na Web, dados de vendas, estatísticas de esportes Localização da informação ◦ Internet, Intranet, computador pessoal, servidor... Fontes de dados para Mineração a partir de dados completamente estruturados (BD) ◦ Mineração de dados, Mineração de visita na Web (SOBRE a Web) a partir de dados semi-estruturados (HTML, XML, SGML) ◦ Mineração de páginas da Web (NA web) a partir de dados não estruturados (ASCII) ◦ Mineração de Textos Mineração de Textos Objetivo: ◦ O objetivo da Mineração de Textos é o processamento de informação textual, extraindo índices numéricos significativos a partir do texto, para tornar essa informação acessível para a mineração de dados Análogo à Mineração de Dados ◦ Descobre relacionamentos em dados Diferente da Mineração de Dados ◦ Trabalha com informações armazenadas numa coleção de dados não estruturados (textos) Mineração de Textos Aplicações típicas: ◦ Classificação de e-mails por tópicos esporte, economia, “spam e-mail”, etc Cada tópico é visto como um rótulo ◦ Busca de referências em uma coleção de artigos, motores de busca ◦ Análise de questões abertas em questionários Processos de aprendizado ◦ Cada documento é representado por uma linha (registro, instância ou tupla) de uma tabela – extração de características dos textos ◦ Tipos de processo Classificação Supervisionada Classificação Não-Supervisionada Mineração de Textos Classificação: ◦f:wL w é um vetor de atributos (palavras) L é um rótulo (label) ◦ O problema é transformado em um processo de classificação clássico Transformação de Documentos em Vetores Numéricos word1 word2 word3 word4 word5 ... wordN label 0 1 0 1 0 ... 1 1 1 0 1 0 0 ... 0 0 1 0 0 1 1 ... 0 1 0 1 0 0 1 ... 1 0 1 0 0 1 0 ... 1 1 0 1 0 0 1 ... 0 1 0 0 1 1 0 ... 0 0 0 0 1 0 1 ... 0 1 Transformação de Documentos em Vetores Numéricos Dicionário ou Bag of Words ◦ Palavras relevantes que podem estar presentes em um documento word1, word3, word6, ..., wordN Dado um dicionário e um documento, o documento é transformado num vetor de números ◦ Forma mais simples: vetor de 1s e 0s – representa a presença ou ausência de palavras individuais Geração de Vetores 3 passos: 1. Tokenização 2. Limpeza 3. Stemização Contagem dos termos e cálculo da frequência 1. Tokenização Decomposição do documento em cada termo que o compõe Delimitadores utilizados para tokenização: espaço em branco entre termos, quebras de linhas, tabulações, e alguns caracteres especiais 2. Limpeza Remoção das stopwords ◦ Uma lista de stopwords é uma lista de termos não representativos para um documento ◦ Geralmente composta por: preposições, artigos, advérbios, números, pronomes e pontuação Verificação da existência de sinônimos (e antônimos) de cada termo em relação a um dicionário do domínio (ou da língua) em questão 3. Stemização Método para redução de um termo ao seu radical, removendo desinências, afixos e vogais temáticas Termos derivados de um mesmo radical devem ser contabilizados como um único termo Se ao final do processo a quantidade de stems for grande, os vetores tendem a ser esparsos Representação dos Documentos Iniciando com um conjunto de n documentos e t termos, é possível modelar cada documento como um vetor v no espaço t-dimensional Cálculo do número de ocorrências de cada termo num documento para cálculo das frequências ◦ Conjunto dos termos considerados definidos após a stemização – Bag-of-words ◦ Problema da Bag-of-words: ◦ John is quicker than Mary e Mary is quicker than John tem os mesmos conjuntos de palavras, porém com significados distintos – perda da informação Diferentes representações podem ser geradas Representação Binária Cada documento por um vetor Cada posição do vetor recebe 1 caso o termo esteja presente no documento Antony Brutus Caesar Calpumia Cleopatra mercy worser Antony and Cleopatra 1 1 1 0 1 1 1 Julius Cesar 1 1 1 1 0 0 0 The Tempest 0 0 0 0 0 1 1 Hamlet 0 1 1 0 0 1 1 Otello 0 0 1 0 0 1 1 Macbeth 1 0 1 0 0 1 0 Representação por Frequência Absoluta – TF Cada documento por um vetor Cada posição do vetor recebe o número de vezes que o termo ocorre no documento Problema: Um documento com 10 ocorrências de um termo é mais relevante quem somente uma ocorrência do termo. Antony Brutus Caesar Calpumia Cleopatra mercy worser Antony and Cleopatra 157 4 232 0 57 2 2 Julius Cesar 73 157 227 10 0 0 0 The Tempest 0 0 0 0 0 3 1 Hamlet 0 1 2 0 0 5 1 Otello 0 0 1 0 0 5 1 Macbeth 1 0 1 0 0 1 0 Cálculo da frequência com logterm 1 + log(10 𝑡𝑓𝑡𝑑 ) se 𝑡𝑓𝑡𝑑 > 0 𝑤𝑡𝑑 = 0 caso contrário TF → log-TF: ◦ ◦ ◦ ◦ ◦ ◦ 0→0 1→1 2 → 1.3 10 → 2 1000 → 4 ... Frequência de Termos na coleção Termos raros são mais informativos que termos muito frequentes ◦ Lista de stopwords – remoção de termos frequentes Considere um termo que é muito raro na coleção – aracnofobia ◦ Um documento contendo esse termo tem grandes chances de ser relevante para aracnofobia Considere um termo que é frequente na coleção ◦ Um documento contendo esse termo tem chance de ser relevante, mas não forte indicador de relevância Para termos muito frequentes, é desejável ter pesos positivos para esses termos, mas menores do que para termos raros ◦ Usa-se a frequência na coleção (DF) Cálculo da TF-IDF 𝑑𝑓𝑡 é a frequência do termo 𝑡 na coleção – o número de documentos que contém 𝑡 𝑖𝑑𝑓𝑡 = 𝑁 log 𝑑𝑓𝑡 𝒅𝒇𝒕 𝒊𝒅𝒇𝒕 1 6 animal 100 4 sunday 1.000 3 fly 10.000 2 under 100.000 1 1.000.000 0 calpumia the Cálculo da TF-IDF 𝑑𝑓𝑡 é a frequência do termo 𝑡 na coleção – o número de documentos que contém 𝑡 𝑁 log 𝑑𝑓𝑡 𝑖𝑑𝑓𝑡 = Qual palavra tem mais peso? Frequência na coleção (df) Frequência no documento (tf) insurance 10440 3997 try 10422 8760 Cálculo da TF-IDF 𝑑𝑓𝑡 é a frequência do termo 𝑡 na coleção – o número de documentos que contém 𝑡 𝑖𝑑𝑓𝑡 = Daí: 𝑤𝑡𝑑 𝑁 log 𝑑𝑓𝑡 𝑁 (1 + log(10 𝑡𝑓𝑡𝑑 )) ∗ log = 𝑑𝑓𝑡 0 se 𝑡𝑓𝑡𝑑 > 0 caso contrário Cálculo da TF-IDF 𝑤𝑡𝑑 Qual palavra tem mais peso? 𝑁 (1 + log(10 𝑡𝑓𝑡𝑑 )) ∗ log = 𝑑𝑓𝑡 0 se 𝑡𝑓𝑡𝑑 > 0 caso contrário Frequência na coleção (df) Frequência no documento (tf) 𝒘𝒕𝒅 para N=100.000 insurance 10440 3997 (1+3,6)*(0.98) = 4,508 try 10422 8760 (1+4,9)*(0.98) = 5,782 Cálculo da TF-IDF 𝑤𝑡𝑑 E nesse caso? 𝑁 (1 + log(10 𝑡𝑓𝑡𝑑 )) ∗ log = 𝑑𝑓𝑡 0 se 𝑡𝑓𝑡𝑑 > 0 caso contrário Frequência na coleção (df) Frequência no documento (tf) 𝒘𝒕𝒅 para N=100.000 insurance 1044 997 (1+3,9)*(1.98) = 9,702 try 10422 8760 (1+4,9)*(0.98) = 5,782 Cálculo da TF-IDF TF-IDF: Também chamado de: tf.idf, tf x idf Aumenta com o número de ocorrências dento de um documento Aumenta com a raridade do termo na coleção Representação por TF-IDF 1 2 3 4 5 6 7 Antôn io Bruto César Calpú rnio Cleóp atra perdã o traiçã o t1 Antônio e Cleópatra 5.3 1.2 8.6 0 2.9 1.5 2 t2 Júlio César 3.2 6.1 2.5 1.5 0 0 0 t3 A Tempestade 0 0 0 0 0 1.9 1 t4 Hamlet 0 1 1.5 0 0 0.1 4.2 t5 Otello 0 0 0.3 0 0 5.3 0.3 t6 Macbeth 0.4 0 0 0 0 0.9 1.9 Documentos como vetores Vetor |v|-dimensional Termos são eixo no espaço Documentos são pontos dos vetores neste espaço Alta dimensão: centenas/milhares de dimensões quando se aplica a uma grande coleção de texto Esparso – maioria das entradas é zero Identificando Documentos Similares Uso de medidas de similaridade ◦ Cosseno entre os vetores é uma métrica representativa Sejam 𝑡1 e 𝑡2 dois vetores de documentos cos 𝑡1 , 𝑡2 = 𝑡1 𝑡2 |𝑡1 ||𝑡2 | onde ◦ 𝑡1 𝑡2 = 𝑀 𝑖=1 𝑡1𝑖 𝑡2𝑖 e 𝑡 = 𝑡𝑡 M=7 Identificando Documentos Similares 1 2 3 4 5 Antô nio Bruto Césa r Calp úrnio Cleó patra 6 7 perdã traiçã o o t1 Antônio e Cleópatra 5.3 1.2 8.6 0 2.9 1.5 2 t2 Júlio César 3.2 6.1 2.5 1.5 0 0 0 ... cos 𝑡1 , 𝑡2 = 𝑀 𝑖=1 𝑡1𝑖 𝑡2𝑖 = 𝑡1 𝑡2 = |𝑡1 ||𝑡2 | 𝑀 𝑖=1 𝑡1𝑖 𝑡2𝑖 𝑡1 𝑡1 ∗ 𝑡2 𝑡2 = 45.8 10.9∗7.5 = 0.56 5.3 ∗ 3.2 + 1.2 ∗ 6.1 + 8.6 ∗ 2.5 + 0 ∗ 1.5 + 2.9 ∗ 0 + 1.5 ∗ 0 + 2 ∗ 0 = 45.8 𝑡1 𝑡1 = 5.3 ∗ 5.3 + 1.2 ∗ 1.2 + 8.6 ∗ 8.6 + 0 ∗ 0 + 2.9 ∗ 2.9 + 1.5 ∗ 1.5 + 2 ∗ 2 = 10.9 𝑡2 𝑡2 = 3.2 ∗ 3.2 + 6.1 ∗ 6.1 + 2.5 ∗ 2.5 + 1.5 ∗ 1.5 + 0 ∗ 0 + 0 ∗ 0 + 0 ∗ 0 = 7.5 Identificando Documentos Similares Antôn io Bruto César Calpú rnio Cleóp atra perdã o traiçã o t1 Antônio e Cleópatra 5.3 1.2 8.6 0 2.9 1.5 2 t2 Júlio César 3.2 6.1 2.5 1.5 0 0 0 t3 A Tempestade 0 0 0 0 0 1.9 1 t4 Hamlet 0 1 1.5 0 0 0.1 4.2 t5 Otello 0 0 0.3 0 0 5.3 0.3 t6 Macbeth 0.4 0 0 0 0 0.9 1.9 cos cos cos cos cos 𝑡1 , 𝑡2 𝑡1 , 𝑡3 𝑡1 , 𝑡4 𝑡1 , 𝑡5 𝑡1 , 𝑡6 = 0.56 = 0.21 = 0.46 = 0.19 = 0.31 cos cos cos cos 𝑡2 , 𝑡3 𝑡2 , 𝑡4 𝑡2 , 𝑡5 𝑡2 , 𝑡6 = 0.00 = 0.29 = 0.02 = 0.08 cos 𝑡3 , 𝑡4 = 0.45 cos 𝑡3 , 𝑡5 = 0.91 cos 𝑡3 , 𝑡6 = 0.79 cos 𝑡4 , 𝑡5 = 0.09 cos 𝑡4 , 𝑡6 = 0.82 cos 𝑡5 , 𝑡6 = 0.47