FACULDADE DE TECNOLOGIA DE SÃO JOSÉ DOS CAMPOS LUCAS VINÍCIUS DOS SANTOS SILVA MINERAÇÃO DE DADOS EM SISTEMA DE RECOMENDAÇÃO DA WEB SÃO JOSÉ DOS CAMPOS 2011 ii LUCAS VINÍCIUS DOS SANTOS SILVA MINERAÇÃO DE DADOS EM SISTEMAS DE RECOMENDAÇÃO DA WEB Trabalho de Graduação apresentado à Faculdade de Tecnologia São José dos Campos, como parte dos requisitos necessários para a obtenção do título de Tecnólogo em Banco de Dados. Orientador: Me. Giuliano Araújo Bertoti SÃO JOSÉ DOS CAMPOS 2011 iii Dados Internacionais de Catalogação-na-Publicação (CIP) Divisão de Informação e Documentação SILVA, Lucas Vinicius dos Santos Mineração de Dados em Sistema de Recomendação da Web. São José dos Campos, 200X11. 100f. (número total de folhas do TG) Trabalho de Graduação – Curso de Tecnologia em Informática com Ênfase em Banco de Dados, FATEC de São José dos Campos: Professor Jessen Vidal, 2011. Orientador: Mestre, Giuliano Bertoti. 1. Mineração de Dados. 2. Mineração na Web. 3. Processamento de Linguagem Natural. 4. Sistemas de Recomendação. I. Faculdade de Tecnologia. FATEC de São José dos Campos: Professor Jessen Vidal. Divisão de Informação e Documentação. II. Mineração de dados em Sistema de Recomendação Web. REFERÊNCIA BIBLIOGRÁFICA – SILVA, Lucas Vinicius dos Santos. Mineração de dados em Sistema de Recomendação Web 2011. 100f. Trabalho de Graduação - FATEC de São José dos Campos: Professor Jessen Vidal. CESSÃO DE DIREITOS – NOME DO AUTOR: Lucas Vinicius dos Santos Silva TÍTULO DO TRABALHO: Mineração de dados em Sistema de Recomendação Web TIPO DO TRABALHO/ANO: Trabalho de Graduação / 2011. É concedida à FATEC de São José dos Campos: Professor Jessen Vidal permissão para reproduzir cópias deste Trabalho e para emprestar ou vender cópias somente para propósitos acadêmicos e científicos. O autor reserva outros direitos de publicação e nenhuma parte deste Trabalho pode ser reproduzida sem a autorização do autor. ____________________________________ Lucas Vinicius dos Santos Silva Rua Raul Seixas 45, Parque Industrial CEP 12235-673 – São José dos Campos – São Paulo 4 LUCAS VINÍCIUS DOS SANTOS SILVA MINERAÇÃO DE DADOS EM SISTEMAS DE RECOMENDAÇÃO DA WEB Trabalho de Graduação apresentado à Faculdade de Tecnologia São José dos Campos, como parte dos requisitos necessários para a obtenção do título de Tecnólogo em Banco de Dados. ___________________________________________________________________ Me. Juliana Forin Pasquini Martinez __________________________________________________________________ Dr. Silvia Bianchi __________________________________________________________________ Me. Giuliano da Silva Bertoti _____/_____/_____ DATA DA APROVAÇÃO 5 Dedico esse trabalho ao meu pai Ademir Antônio da Silva (in memorian). Um grande homem que me ensinou que não há limites quando há foco na vida. 6 AGRADECIMENTOS Agradeço em primeiro lugar a Deus, por ter me concedido uma nova oportunidade de realizar o sonho de cursar uma instituição de Ensino Superior, e por ter guiado meus passos sempre na direção certa, de encontro aos meus objetivos de vida. Aos meus pais, Maria de Fátima e Ademir Antônio (in memorian) por nunca deixarem de apoiar minhas escolhas. Aos meus irmãos, Natália Irina e Jordano Égon, pela paciência e compreensão pelos momentos de ausência enquanto desenvolvia este trabalho. Aos meus sogros, Luceni e Ideraldo, pelo incentivo constante e torcida pelo meu sucesso. A minha esposa, Fernanda, pela compreensão e apoio nos momentos mais difíceis. Ao orientador Giuliano Bertoti, pelas cobranças, incentivos, torcida e, principalmente, por acreditar no meu potencial. E a todos que contribuíram direta ou indiretamente para a conclusão e sucesso deste trabalho. O meu muito obrigado! 7 “Cada sonho que você deixa pra trás, é um pedaço do seu futuro que deixa de existir.” Steve Jobs 8 RESUMO A capacidade de produção e armazenamento de informação alcançou, já na primeira década do séc. XXI, o patamar de vários terabytes, até mesmo para computadores pessoais. Nas últimas décadas, devido a diversos fatores, a Web tem sido disponibilizada por um número cada vez maior de usuários, os quais acessam uma infinidade de recursos e informações, uma imensa massa de dados armazenados sob as mais diversas formas. Produto desta interação é o armazenamento e disponibilização de um material composto pela opinião e sentimento dos usuários, disponível nas redes sociais, sites pessoais, blogs, e sistemas de recomendação de lojas de comércio eletrônico. Neste campo, a mineração de dados surge como técnica na qual é possível extrair informações que serão úteis tanto para as empresas quanto para os clientes. Deste modo, este trabalho é baseado na busca de padrões lingüísticos em posts negativos com relação ao serviço de entrega do sistema de recomendação do comércio eletrônico da Amazon. Para isso, foi utilizada a biblioteca de processamento de linguagem natural Natural Language Toolkit (NLTK) em conjunto com a linguagem de programação Python. O objetivo foi desenvolver um protótipo de sistema capaz de rotular os posts como sendo negativos em relação ao serviço ou não. Com isso espera-se que seja possível aos sites de comércio eletrônico minimizar as perdas, tais como redução nas vendas decorrentes de problemas relacionados diretamente ao serviço e não à qualidade do produto, possibilitando aos clientes recomendações mais precisas e úteis de fato. Palavras-Chave: Mineração de Dados; Mineração na Web; Processamento de Linguagem Natural; Natural Language Toolkit; Sistemas de Recomendação. 9 ABSTRACT The capacity of production and storage of information has reached, already in the first decade of the century XXI, the level of several terabytes, even for personal computers. In recent decades, due to several factors, the web has been provided by an increasing number of users who access a multitude of resources and information, an immense mass of data stored in many different ways. Product of this interaction is the storage and availability of a material composite by users opinion and feeling, available in social networks, personal websites, blogs, and recommendation systems in e-commerce. In this field, data mining emerges as a technique which can extract information that will be useful both for companies and for customers. Thus, this work is based in search on linguistic patterns of negative posts about the service delivery in system recommendation of Amazon e-commerce. For this, we used a library of natural language processing, Natural Language Toolkit (NLTK) in with programming language Python. The objective was to develop a system able to label as negative posts regarding the service or not. This is expected to be able to e-commerce sites to minimize losses, such as a reduction in sales due to problems directly related to the service and not the quality of the product, enabling customers to more precise recommendations and useful indeed. Keywords: Data Mining; Web Mining; Natural language Processing; Natural Language Toolkit; Recommender Systems. 10 LISTA DE FIGURAS Figura 1 – Evolução de usuários da Web, no Brasil 01 Figura 2 – Linha contínua da Interpretação 07 Figura 3 – Equação representativa da definição de Conhecimento 08 Figura 4 – Equação que expressa a formação do novo conhecimento 08 Figura 5 – Categorias da Mineração de Dados na Web e respectivas áreas de interesse 11 Figura 6 – Processo de Mineração de Dados na Web 11 Figura 7 – Arquitetura de transformação do texto livre em forma intermediária 16 Figura 8 – Código para buscar um texto de uma url 19 Figura 9 – Método para realizar a tokenização de textos 20 Figura 10 – Código para abrir um arquivo de texto 20 Figura 11 – Processo de classificação supervisionada 21 Figura 12 – Código para categorização das palavras 23 Figura 13 – Site de comércio eletrônico Amazon.com 25 Figura 14 – Frequência da palavra-chave arrive nos posts coletados 51 Figura 15 – Frequência da palavra-chave late nos posts coletados 53 Figura 16 – Frequência da palavra-chave ship, shipping e shipment nos posts coletados 54 Figura 17 – Frequência da palavra-chave delay nos posts coletados 55 Figura 18 – Código em python para busca em informação estruturada 55 Figura 19 – Método para extração de informação 57 Figura 20 – Código para efetuar a tokenização 57 Figura 21 – Categorizador de um post 58 Figura 22 – Segmentação com rótulos, também conhecida como chuncking 60 Figura 23 – Exemplo de post com problemas na categorização 61 Figura 24 – Categorizador customizado 61 Figura 25 – Imports e variáveis do sistema de busca 62 Figura 26 – Código do método de busca de palavra padrão 63 Figura 27 – Método para gerar o contexto da palavra-chave 64 Figura 28 – Método para verificação e rotulação do post 64 Figura 29 – Método para categorização padrão do post 65 Figura 30 – Método para categorização customizada do post 65 11 LISTA DE TABELAS Tabela 1 – Categorização dos posts coletados do comércio eletrônico Amazon.com 27 Tabela 2 – Palavras mais freqüentes segundo critério estabelecido 50 Tabela 3 – Ocorrências da palavra-chave arrive nos posts coletados 52 Tabela 4 – Ocorrências da palavra-chave late nos posts e derivada nos posts coletados 53 Tabela 5 – Ocorrências das palavras-chave ship, shipping e shipment 54 Tabela 6 – Tabela tuplas empresa versus localização 56 Tabela 7 – Categorias com maior freqüência encontrada 59 Tabela 8 – Funções em Python para busca de padrões regulares 59 12 GLOSSÁRIO TERMO SIGNIFICADO NLTK Biblioteca para desenvolvimento de aplicações voltadas ao processamento de linguagem natural, em python. Python Linguagem de programação. Default Tagger Categorizador padrão, baseado no brown corpus, adiciona uma tag as palavras criando tuplas (palavra, categoria morfológica) Custom Tagger Categorizador customizado, criado para corrigir erros e limitações do categorizador padrão. Corpus / Corpora Conjunto de textos utilizado pelo Nltk utilizado como base para o PLN PLN Processamento de Linguagem Natural Post Postagem, mensagem escrita por usuários de sites eletrônicos. Uni-gram tagger MÉtodo que adicionar ao categorizador padrão taggs uma a uma Chunking Categorizador morfológica de frases também conhecido como segmentação com rótulos Token Palavra ou símbolo que possua significado Tokenizar Método que transforma um texto em uma lista de strings 13 SUMÁRIO 1. INTRODUÇÃO ....................................................................................................... 15 1.1. Motivação ................................................................................................................. 15 1.2. Objetivo geral ............................................................................................................ 17 1.3. Objetivos específicos ................................................................................................ 18 1.4. Metodologia .............................................................................................................. 18 1.5. Organização do trabalho ........................................................................................... 18 2. FUNDAMENTAÇÃO TEÓRICA ......................................................................... 20 2.1. Dado, Informação e Conhecimento: definições e conceitos ..................................... 21 2.2. Mineração de Dados ................................................................................................. 23 2.3. Mineração de Dados na Web . .................................................................................. 24 2.3.1. Categorias da Mineração na Web ............................................................................. 25 2.3.1.1. Mineração de Conteúdo ............................................................................................ 25 2.3.1.2. Mineração de Estrutura ............................................................................................. 26 2.3.1.3. Mineração de Uso ..................................................................................................... 27 2.4. Mineração de Textos ................................................................................................. 28 2.5. Processamento de Linguagem Natural ..................................................................... 30 2.5.1. Linguagem de Programação Python ......................................................................... 30 2.5.2. Natural Language Toolkit ......................................................................................... 31 2.5.2.1. Classificação Supervisionada .................................................................................... 33 2.5.2.2. Categorizando as palavras ......................................................................................... 34 3. MINERAÇÃO DE DADOS EM SISTEMA DE RECOMENDAÇÃO .............. 37 3.1. Sistemas de Recomendação ...................................................................................... 37 3.2. Implementação de um Minerador ............................................................................. 39 3.2.1. Coleta dos posts do Sistema de Recomendação da Amazon.com ............................ 39 3.2.2. Análise das palavras-chave ....................................................................................... 61 3.2.2.1. Palavra-chave arrive ................................................................................................. 63 14 3.2.2.2. Palavra-chave late e derivada later ........................................................................... 65 3.2.2.3. Palavra-chave ship e derivadas shipping e shipment ............................................... 66 3.2.2.4. Palavra-chave delay .................................................................................................. 68 3.2.3. Extração da informação ............................................................................................ 68 3.2.4. Implementação do Sistema ....................................................................................... 74 4. CONSIDERAÇÕES FINAIS ................................................................................. 79 4.1. Contribuições e Conclusões ...................................................................................... 79 4.1.1. Artigo publicado ....................................................................................................... 80 4.2. Trabalhos futuros ...................................................................................................... 81 5. REFERÊNCIAS ...................................................................................................... 82 6. ANEXO I....................................................................................................................83