AGRUPAMENTO ÓTIMO DE INFORMAÇÕES NÃO-ESTRUTURADAS IMPLEMENTADO EM UM GERENCIADOR DE BANCO DE DADOS RELACIONAL. Renan Cavalcanti Filgueiras de Souza

August 21, 2019 | Author: Daniel Madeira Rijo | Category: N/A
Share Embed Donate


Short Description

1 AGRUPAMENTO ÓTIMO DE INFORMAÇÕES NÃO-ESTRUTURADAS IMPLEMENTADO EM UM GERENCIADOR DE BANCO ...

Description

AGRUPAMENTO ÓTIMO DE INFORMAÇÕES NÃO-ESTRUTURADAS IMPLEMENTADO EM UM GERENCIADOR DE BANCO DE DADOS RELACIONAL

Renan Cavalcanti Filgueiras de Souza

DISSERTAÇÃO SUBMETIDA AO CORPO DOCENTE DA COORDENAÇÃO DOS PROGRAMAS DE PÓS-GRADUAÇÃO DE ENGENHARIA DA UNIVERSIDADE FEDERAL

DO

RIO

DE

JANEIRO

COMO

PARTE

DOS

REQUISITOS

NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIAS EM ENGENHARIA CIVIL.

Aprovada por: ________________________________________________ Prof. Nelson Francisco Favilla Ebecken, D.Sc.

________________________________________________ Prof. Alexandre Gonçalves Evsukoff, Dr.

________________________________________________ Prof. Claudio Luiz Curotto, D.Sc.

RIO DE JANEIRO, RJ - BRASIL AGOSTO DE 2007

SOUZA, RENAN CAVALCANTI FILGUEIRAS DE Agrupamento

Ótimo

de

Informações Não-

Estruturadas Implementado em um Gerenciador de Banco de Dados Relacional [Rio de Janeiro] 2007 IX, 75 p. 29,7 cm (COPPE/UFRJ, M. Sc., Engenharia Civil, 2007) Dissertação - Universidade Federal do Rio de Janeiro, COPPE 1. Text mining 2. Clustering 3. Banco de dados I. COPPE/UFRJ II. Título (série)

ii

Agradecimentos A Deus, em primeiro lugar. Minha família, em especial meu pai, Tadeu, pelo incentivo nos momentos difíceis, pelos conselhos, que sempre levo muito a sério e pelo exemplo profissional e moral, que nunca me faltaram dentro de casa. Exemplos esses que me fazem a cada dia mais tentar ser um homem melhor para deixá-lo sempre orgulhoso.

Meu irmão Denis pelos risos e momentos agradáveis durante o almoço.

Minha irmã Suyan pela amizade e sinceridade no dia a dia.

Minha namorada, Rosemery, pelos momentos de apoio e conforto quando necessitei.

Meu orientador e amigo, Prof. Nelson Francisco Favilla Ebecken pelo companheirismo, norteamento e incentivo.

Aos amigos Ângelo, Daniel, Egna, Gilberto, Graziella, Guilherme, Moreira, Rogério e Valeria, que fazem do meu dia-a-dia de trabalho mais feliz.

Meus amigos, pelo companheirismo e entendimento nos momentos em que me fiz ausente para a conclusão desta pesquisa.

Aos Srs. Bogdan Crivat e Jamie MacLennan, do time de desenvolvimento do SQL Server 2005 da Microsoft, pelas dúvidas prontamente tiradas online.

A todos os envolvidos na Rede de Tecnologias Convergentes.

Ao CNPq, pela viabilização financeira desta pesquisa. iii

Resumo da Dissertação apresentada à COPPE/UFRJ como parte dos requisitos necessários para a obtenção do grau de Mestre em Ciências (M.Sc.)

AGRUPAMENTO ÓTIMO DE INFORMAÇÕES NÃO-ESTRUTURADAS IMPLEMENTADO EM UM GERENCIADOR DE BANCO DE DADOS RELACIONAL

Renan Cavalcanti Filgueiras de Souza

Agosto/2007

Orientador: Nelson Francisco Favilla Ebecken

Programa: Engenharia Civil

O presente trabalho descreve uma aplicação de clustering de informações nãoestruturadas em um ambiente de e-ciência para a análise do conhecimento. A metodologia utilizada consiste de diversos passos e cada um é explicado. Os textos são comentários de especialistas de diversas áreas participantes da rede temática e o que se busca encontrar é a fusão de seus conhecimentos em clusters e a determinação da relevância de seus comentários. Foi importante também que a concepção dos clusters fosse integrada ao banco de dados relacional utilizado. Para tanto, uma série de métodos, tanto a nível técnico quanto a nível de data mining foram implementados e são detalhados nesta dissertação.

iv

Abstract of Dissertation presented to COPPE/UFRJ as a partial fulfillment of the requirements for the degree of Master of Science (M.Sc.)

OPTIMAL CLUSTERING OF NON-STRUCTURED INFORMATION IMPLEMENTED ON A RELATIONAL DATABASE MANAGER

Renan Cavalcanti Filgueiras de Souza

August/2007

Advisor: Nelson Francisco Favilla Ebecken

Department: Civil Engineering

This work presents a clustering application of non-structured information embedded in an environment of e-science for knowledge analysis. The used methodology consists of diverse steps and each one is detailed. The texts are comments of experts related to many areas of a thematic network and what the aim is to find the fusion of their knowledge in clusters and the determination of the relevance of their comments. It was also important that the conception of clusters was integrated to the used relational database. In such a way, various methods in the technical level and in the data mining level had been implemented and they are also commented in this work.

v

Sumário 1. Introdução ..................................................................................................................... 10 1.1. E-ciência .................................................................................................................... 2 1.2. A Rede de Tecnologias Convergentes ....................................................................... 3 2. Metodologia .................................................................................................................... 6 2.1. Arquitetura do processo ............................................................................................. 8 3. Descrição da tecnologia ................................................................................................ 10 3.1. SQL Server 2005...................................................................................................... 10 3.1.2 Plugin................................................................................................................... 11 3.1.2.1. Tratamento de excessões................................................................................ 12 3.2. J2EE ......................................................................................................................... 13 3.3. STL .......................................................................................................................... 13 3.4 DLL........................................................................................................................... 14 3.5. COM ........................................................................................................................ 15 3.6. ATL.......................................................................................................................... 16 4. Pré-processamento ........................................................................................................ 18 4.1. Remoção de caracteres indesejados ......................................................................... 20 4.2. Integração da caixa .................................................................................................. 20 4.3. Tokenização ............................................................................................................. 21 4.4. Remoção de termos alheios à linha portuguesa ....................................................... 22 4.5. Remoção de stopwords ............................................................................................ 22 4.6. Stemming ................................................................................................................. 23 4.6.1. Formato das regras do stemming ........................................................................ 27 4.7. Geração da BOW ..................................................................................................... 28 4.8. Armazenamento da BOW ........................................................................................ 31 5. Processamento............................................................................................................... 34 5.1. Clustering................................................................................................................. 34 5.1.1. Cálculo da distância inter-cluster ....................................................................... 35 5.1.1.1. Single-Link .................................................................................................... 36 5.1.1.2. Complete-Link ............................................................................................... 37 5.1.1.3. Average-Link ................................................................................................. 38 5.1.2. K-Means.............................................................................................................. 38 5.1.3. Métricas de distância........................................................................................... 40 5.1.3.1. Distância euclidiana ....................................................................................... 41 5.1.3.2. Coseno............................................................................................................ 41 5.1.3.3. Distância de Manhattan.................................................................................. 42 5.1.3.4. Aproximação minimax................................................................................... 42 5.2. Validação do número de clusters............................................................................. 42 5.2.1. Índice PBM ......................................................................................................... 43 5.3. O plugin PBM_K-Means ......................................................................................... 45 6. Pós-processamento........................................................................................................ 53

vi

7. Análise de resultados .................................................................................................... 57 8. Conclusão...................................................................................................................... 61 8.1 Trabalhos futuros ..................................................................................................... 61 Apêndice 1: Glossário de abreviaturas ............................................................................. 63 Apêndice 2: Comentários mais relevantes de cada cluster............................................... 65 Bibliografia ....................................................................................................................... 71

vii

Índice de figuras Figura 1. 1: As etapas do data mining................................................................................. 1 Figura 2. 1: Estágios da metodologia.................................................................................. 6 Figura 2. 2: Analise da convergência.................................................................................. 8 Figura 2. 3: Abstração das etapas da analise da convergência. .......................................... 9

Figura 3. 1: Tipos de acesso.............................................................................................. 20 Figura 3. 2: Arquitetura COM. ......................................................................................... 16

Figura 4. 1: Interface do programa de pré-processamento. .............................................. 18 Figura 4. 2: Tarefas do pré-processamento....................................................................... 19 Figura 4. 3: Fluxograma do Portuguese Stemming. ......................................................... 25

Tabela 4. 1: Exemplo ilustrativo....................................................................................... 31 Tabela 4. 2: Exemplo ilustrativo....................................................................................... 32 Tabela 4. 3: Frequencias zeradas descartadas................................................................... 33

Figura 5. 1: Clustering hierárquico nas abordagens aglomerativa e divisiva. .................. 36 Figura 5. 2:O funcionamento do algoritmo K-Means....................................................... 39 Figura 5. 3:Esquema de execução do algoritmo K-Means. .............................................. 40 Figura 5. 4: Criação do data source. ................................................................................. 45 Figura 5. 5: Criação do data source view.......................................................................... 46 Figura 5. 6: Escolha da técnica de mineração................................................................... 47 Figura 5. 7: Parâmetros do PBM_K-Means...................................................................... 48 Figura 5. 8: A estrutura de mineração criada.................................................................... 50 Figura 5. 9:Execução da estrutura com a técnica de mineração. ...................................... 51 Figura 5. 10: Fim da execução do algoritmo. ................................................................... 52

viii

Figura 6. 1: O programa de pós-processamento. .............................................................. 53 Figura 6. 2: Comentários do cluster selecionado. ............................................................. 53 Figura 6. 3: A relevância dos comentários dentro de seus clusters. ................................. 54 Figura 6. 4: Matriz de distâncias inter-cluster. ................................................................. 55 Figura 6. 5: Evolução do índice PBM............................................................................... 55

Figura 7. 1: O pré-processamento em execução. .............................................................. 57 Figura 7. 2: Registros criados pelo pré-processamento (Database Engine)..................... 58 Figura 7. 3: Evolução do índice PBM............................................................................... 59 Tabela 1: Os três comentários mais relevantes do cluster 1 (Hidrogênio). ...................... 65 Tabela 2: Os três comentários mais relevantes do cluster 2 (Biodiesel). ......................... 68

ix

1. Introdução Text mining (análise inteligente de textos, text data mining) é a tarefa de descobrir informações novas, anteriormente desconhecidas e pontecialmente úteis de dados nãoestruturados [1]. Text mining é relacionado ao data mining, brevemente exemplificado pela figura 1.1, que se propõe a extrair padrões úteis de dados estruturados normalmente armazenados em grandes repositórios de dados. Text mining é um campo multidisciplinar que inclui várias tarefas como categorização, clustering, sumarização, etc. [13].

Figura 1. 1: As etapas do data mining.

Por ser um meio conveniente de armazenamento, os textos trazem agregados uma significante quantidade de informação. De fato, algo em torno de 85% de toda a informação encontrada nas empresas é exclusivamente armazenada em algum tipo de

dado não-estruturado [50]. Estes dados podem vir de diversas fontes tais como livros, publicações em geral, e-mails, blogs, listas de discussão e fóruns via web, dentre muitas outras. O grande desafio de se trabalhar com este tipo de dado, os textos, está justamente na falta de uma estruturação, o que impossibilita a criação de analisadores sintáticos para obtenção das informações. Muitas vezes os textos encontram-se em formatos que possuem estruturas e podem ser lidos com muita facilidade (XML e RSS, HTML ou XHTML, CSV, etc.), contudo os dados (os textos em si) continuam não-estruturados, e na maioria dos casos, sem revisão gramatical. Por esta razão, é de grande valia um pré-processamento (tratamento ou preparação do dado) adequado para que se garanta passar os dados da melhor forma possível aos algoritmos de text mining propriamente ditos, que executarão a tarefa de descoberta de conhecimento. Ferramentas que auxiliem a interpretação dos resultados obtidos pela etapa de processamento também são de ampla importância. A esta etapa é dado o nome de pósprocessamento. Um sistema de pós-processamento deve ser capaz de receber os resultados da etapa anterior e possuir artifícios que capacitem o utilizador a tirar conclusões sobre os dados. No presente trabalho serão descritas ferramentas implementadas baseadas em uma metodologia específica. Os requisitos técnicos também serão detalhados nas sessões posteriores.

1.1. E-ciência A internet é uma ferramenta essencial para o intercâmbio de informações de todos os fins. Este intercâmbio é encorajado por diversas razões: em primeiro lugar por a web ser uma fonte de informações tão grande que praticamente qualquer tipo de conteúdo pode ser encontrado. Em segundo lugar, porque o acesso é relativamente barato e em terceiro lugar, pela inexistência de uma triagem central, então qualquer pessoa pode dar a sua contribuição de informação [39].

Esta troca de informações pode ser feita por meio da publicação em páginas web, gerenciada por meio de aplicativos, e muitas outras maneiras regidas por protocolos de comunicação bem definidos. O termo e-ciência foi introduzido por John Taylor. Taylor percebeu que diversas áreas da ciência estavam ficando cada vez mais próximas em modos de colaboração e interdisciplinariedade [8]. A prática da ciência já foi afetada dramaticamente pela tecnologia da informação, em especial pela internet [2]. Por esta razão, justifica-se a implementação e utilização de sistemas capazes de auxiliar a comunicação, troca de dados e conhecimento neste ambiente integrado. Para explorar estas grandes quantidades de dados científicos levantados por experimentos diversos, os cientistas necessitam do auxílio de máquinas de busca especializadas, ferramentas de data mining e modos de visualização de dados que possam ser usados para fazer levantar questionamentos e compreender respostas [10]. Desta maneira, a fim de atender estes requisitos, existem diversas metodologias para a prática da e-ciência baseadas em grids computacionais e fluxos de conhecimento.

1.2. A Rede de Tecnologias Convergentes A Rede de Tecnologias Convergentes (TECONV) é um sistema de e-ciência que nasceu com o intuito de identificar tecnologias inerentes a pesquisa de tecnologias de interesse da Petrobrás, mantenedora da Rede. Através de processos de text mining (clustering) dos comentários gerados pelos participantes, busca-se estabelecer a convergência do conhecimento dos especialistas. Os participantes da Rede de Tecnologias Convergentes são renomados pesquisadores de diversos centros de pesquisa do Brasil. Estes participantes interagem entre si através da publicação de artigos científicos da sua área, dentro dos temas estabelecidos pela Petrobrás e também comentando os artigos submetidos, gerando discussões.

Todo o processo é feito online em um sistema web de login remoto desenvolvido especialmente para este projeto. As figuras subsequentes ilustram as interfaces deste sistema. O sistema está hospedado no endereço eletrônico http://www.teconv.net, e requisita o uso de login e senha de acesso. Pelo sistema web também é possível ter acesso aos comentários por artigo. Existe também a possibilidade de acessar artigos de iterações passadas, visto que estas permanecem armazenadas. Deve-se ressaltar que os comentários são exportados em RSS e que todos os dados estão armazenados no SGBD Microsoft SQL Server 2005. Esta ferramenta disponibiliza procedimentos de mineração de dados e permite que o usuário acrescente novas funcionalidades através da implementação de plugins [4,5]. Podem-se destacar dois casos de uso fundamentais no sistema web da TECONV, como ilustram as descrições resumidas de caso de uso das figuras 1.2 e 1.3.

Nome Submeter Artigo Descrição Submeter artigo ao sistema para que este fique à disposição dos demais participantes Atores Especialista Pré-Condições Especialista estar logado ao sistema Figura 1. 2: Descrição resumida do caso de uso Submeter Artigo Nome Pontuar artigo Descrição Marcar um artigo como relevante ou irrelevante Atores Especialista Pré-Condições Especialista estar logado ao sistema. Figura 1. 3: Descrição resumida do caso de uso Pontuar Artigo.

O foco do presente trabalho está nestes comentários uma vez que é neles que a convergência será analisada através do text mining destes textos.

O objetivo da presente dissertação foi efetuar a implementação de ferramentas de text mining no portal TECONV para disponibilizar as facilidades de análise da convergência no próprio ambiente de banco de dados, onde os comentários estão armazenados. Este trabalho está organizado da seguinte maneira: No capítulo 2 serão descritas cada uma das etapas da metodologia aplicada na Rede de Tecnologias Convergentes. O capítulo 3 dissertará sobre a tecnologia adotada a nível de software, especificações

técnicas

em

geral,

e

algumas

particularidades

relevantes

ao

desenvolvimento. O capítulo 4 descreve o pré-processamento dos dados, passando detalhadamente por cada etapa e ilustrando os algoritmos mais importantes implementados neste estágio. No capítulo 5 o processamento e os métodos implementados serão descritos e os procedimentos algoritmicos inerentes serão detalhados. O capítulo 6 se refere ao pós-processamento, ilustrando com figuras as interfaces mais importantes do programa de pós-processamento e o seu funcionamento. No capítulo 7 são apresentados os resultados sob uma massa de dados representativa e a análise dos clusters propriamente ditos será apresentada. Para tanto, toda a parametrização utilizada será descrita e informações técnicas relevantes como o tempo de execução dos programas serão mostrados. No capítulo 8, é feita uma reflexão geral sobre os demais capítulos e a conclusão deste trabalho. Finalmente, no capítulo 9, serão apresentadas e sugestões de outras aplicações em potencial onde o sistema desenvolvido e a metodologia utilizada poderiam ser aplicados. Existem apêndices posteriores que explicam as abreviaturas amplamente utilizadas durante o texto e tabelas referentes ao resultado citadas no capítulo 7. A referência bibliográfica encontra-se ao final.

2. Metodologia A metodologia adotada para o funcionamento da rede é composta de cinco estágios, como ilustra a figura 2.1.

Figura 2. 1: Estágios da metodologia.

Como a figura 2.1 sugere, o processo é cíclico. Semanalmente cada um dos estágios é executado para que um novo ciclo tenha início. Os ítens subsequentes descrevem cada estágio da metologia: •

Priorização de temas: Os analistas da Petrobrás indicam temas de interesse

da companhia através do portal da rede. Este é o ponto de partida de uma nova iteração.



Prospecção de artigos científicos: os pesquisadores participantes da Rede

submetem ao portal artigos científicos (preferencialmente de terceiros) inerentes ao tema estabelecido no ítem anterior, dentro da sua área específica de conhecimento. Os pesquisadores também fazem uma votação em cada artigo, indicando se, na sua opinião, ele é relevante ou não ao tema estabelecido. Se o assunto do artigo fugir da área de conhecimento do votante ao ponto deste prefirir abster-se de votar, o participante possui a opção de abstenção do voto, que por sua vez, não é interpretado pelo sistema como simplesmente não votar. •

Identificação de oportunidades: esta etapa consiste na identificação dos

artigos mais interessantes do ponto de vista do comitê científico. Alguns dos artigos mais votados como relevantes na etapa passada serão selecionados por este comitê para as etapas posteriores. Os artigos que eventualmente não forem selecionados permanecerão no sistema e poderão ser consultados livremente. •

Fusão de fluxos de conhecimento: nesta etapa são submetidos comentários

sobre os artigos de maior relevância. Desta forma, os participantes poderão interagir entre si dando informações e opiniões, gerando debates e oferecendo soluções inovadoras inerentes ao assunto do artigo comentado. Os comentários deverão ser escritos em português, de forma clara e objetiva, o que facilitará a etapa seguinte. Quaisquer comentários podem também, opcionalmente, serem votados como relevantes ou não relevantes por qualquer um dos participantes. •

Análise da convergência: o intuito da etapa de análise da convergência é

encontrar clusters dentro do corpo de comentários utilizando as técnicas de text mining, sendo que estes comentários não se reportam necessariamente a um mesmo artigo, mas sim a um tema comum. Estes resultados são analisados pelo comitê científico da Petrobrás que poderá requerir um novo processamento ou refino dos comentários. Uma vez o comitê satisfeito com os resultados da iteração vigente, estes serão publicados no sistema web da Rede de Tecnologias

Convergentes e novos temas serão sugeridos para que tenha início um novo ciclo, como indicado na figura 2.2.

Tema Priorizado

Comentários

Artigos Submetidos

Comentários

Análise da Convergência

Comentários

Figura 2. 2: Analise da convergência.

Nota-se pela figura 2.2 que todos os comentários de todos os assuntos são levados à etapa de análise da convergência.

2.1. Arquitetura do processo A análise da convergência propriamente dita requer etapas de pré-processamento, processamento e pós-processamento. Estas etapas são de cunho técnico e podem funcionar como caixa-preta para a análise da convergência (análise dos clusters). Contudo, o entendimento algoritmico do processo é de grande valia para uma boa análise. Os capítulos posteriores explicarão cada uma das etapas e suas sub-etapas. De uma maneira mais abstrata, todo o procedimento ocorre como na figura 2.3.

SQL Server 2005 Pré-processamento

Plugin

Stopwords Stemming BOW

Análise da convergência

PBM K-Means

Visualização Avaliação

Figura 2. 3: Abstração das etapas da analise da convergência.

O processo como um todo pode ser representado pelos algoritmos e tarefas mais importantes. Na etapa de pré-processamento serão utilizadas técnicas de redução da dimensionalidade, como a retirada de stopwords e stemming. Na etapa de processamento o clustering será executado pelo algoritmo K-Means, auxiliado pelo índice PBM. Finalmente, na etapa de pós-processamento, os resultados poderão ser visualizados e analisados. Cada etapa e seus métodos são explicados detalhadamente nos itens subseqüentes.

3. Descrição da tecnologia Nesta sessão são descritos os requisitos de software utilizados para a implementação dos sistemas de pré-processamento, processamento e pós-processamento. A sua utilização e escolha são justificados e a arquitetura de funcionamento mais relevantes das ferramentas são descritas. O detalhamento algorítmico de cada passo é apresentado nas sessões posteriores.

3.1. SQL Server 2005 Foi interessante ao projeto que o ambiente do banco de dados fosse integrado à tarefa de mineração de textos. Assim sendo, com a indicação dos especialistas interessados, foi utilizada a ferramenta SQL Server 2005, da Microsoft, que é um robusto ambiente de banco de dados bastante utilizado comercialmente. A ferramenta SQL Server 2005 acompanha diversas funcionalidades que auxiliam a análise de dados. O acesso no ambiente é baseado em COM, utilizando ADO/ADO.NET, inclusive com suporte OLE DB para cubos. Também é possível o acesso da máquina de banco de dados via ODBC. A figura 3.1 ilustra os tipos de acesso de diversos aplicativos hipotéticos ao SGBD. Apesar da ferramenta acompanhar um algoritmo integrado com suporte DMX para o clustering de dados [3] (Microsoft Clustering), este algoritmo não leva em conta a estimativa do número de clusters e a visualização do clustering para textos é inadequada. E como será explicado posteriormente, há limitações técnicas comuns a qualquer banco de dados relacional que farão com que os dados necessitem de reshape para que os cálculos sejam efetuados de forma adequada, impossibilitando o input dos dados no Microsoft Clustering.

Aplicativo

Aplicativo

ADO

ADO.NET

Aplicativo

Aplicativo

Aplicativo

ODBC

JDBC

OLE DB OLE DB 1

OLE DB 2

Tabelas relacionais

Cubo

Figura 3. 1: Tipos de acesso.

Contudo a ferramenta SQL Server desde a versão 2000 possibilita a integração de algoritmos implementando interfaces COM [5] para serem executados dentro do seu ambiente. Isso foi uma grande motivação para a utilização deste ambiente, porque desta forma foi possível desenvolver um plugin [4] (funcionalidade específica da versão 2005) específico para os interesses da rede integrado ao banco de dados, ficando assim o processamento encapsulado.

3.1.2 Plugin Para a implementação do plugin foi utilizado um sample distribuido gratuitamente pela Microsoft que acompanha os tutoriais de costumização. O sample implementa todo o shell do plugin, que trata da comunicação das interfaces COM necessárias para a integração com o SQL Server 2005. A adequação deste shell ao problema de clustering e, mais especificamente à implementação dos algoritmos adequados para esta tarefa, e também o reader necessário para ler cada caso foram implementados em linguagem C++. As interfaces

implementadas também tiveram que ser adequadas a um problema de clustering, visto que há interfaces COM específicas no SQL Server 2005 para cada tipo de tarefa de mineração. A Microsoft distribui samples tanto em C++ quanto em C#. Para a implementação do presente trabalho, foi utilizada a linguagem C++.

3.1.2.1. Tratamento de excessões O tratamento de excessões dentro do plugin deve ser feito de forma adequada, visto que erros tratados de forma incorreta ou simplesmente não tratados, não gerarão mensagens de erro amigáveis quando o algoritmo eventualmente divergir ao ser executado no SQL Server 2005. O não entendimento deste tipo de erro poderá comprometer o debug do plugin. O tratamento de excessões na arquitetura COM e nos containers STL baseiam-se em alguns macros e tipos específicos. Dentre os quais podem-se destacar: •

CHECK_STL_MEM: Deve ser chamado sempre que um vetor dinâmico é

instanciado. Serve para verificar se o espaço em memória requisitado foi alocado corretamente. •

HRESULT: A maioria dos métodos do shell retornam um HRESULT (inteiro

de 32 bits com sinal), utilizado para informar o estado em que o método terminou (sucesso, warnings, erros, etc). Na realidade, quase todos os métodos e interfaces de componentes COM retornam este tipo [11]. O tipo HRESULT pode assumir diversos valores: S_OK, S_FALSE, E_UNEXPECTED, E_ERROR, etc. Macros para tratamento de HRESULTs: diversos macros tratam e identificam a fatalidade ou não expressa por um HRESULT. Dentre eles estão: RETURN_ON_FAIL, SUCCEEDED, HRESULT_FROM_WIN32, etc.

3.2. J2EE Também foi necessário criar um aplicativo para pré-processar os dados. Para tanto foi escolhida a distribuição J2EE [6]. Esta distribuição, além de gratuita, conta com a própria JVM pois inclui também a distribuição JRE, além da J2SDK e todas as funcionalidades do J2SE [6]. O uso de Java se justifica para a criação destes aplicativos pela facilidade de implementação de interface gráfica. Também é justificável pela portabilidade dos componentes e facilidade de implementação dos padrões de projeto e outras boas práticas de desenvolvimento. A linguagem possui características que organizam o fonte, fazendo da tarefa de manutenção mais simplificada. O IDE Eclipse [14] foi utilizado no desenvolvimento por ser uma ferramenta leve, porém robusta, e com a capacidade de integração de pacotes automaticamente, pacotes estes que foram amplamente utilizados no desenvolvimento dos programas de préprocessamento e pós-processamento. A ferramenta eclipse é gratuita.

3.3. STL A linguagem C++ possui apenas três estruturas de dados built-in: •

Arrays: estruturas n-dimensionais de tamanho fixo cujo acesso é feito pelo

índice ou por ponteiros. •

Classes e structs: estruturas de registros cujos campos são acessados pelo

nome. A STL é uma biblioteca, definida no ANSI C++, que se utiliza do conceito de templates do C++ para criar estruturas de dados de usos diversos. A biblioteca define containers e iterators para facilitar o acesso aos containers. O uso da STL justifica-se pela sua ampla utilização em aplicativos C++ [37, 40] e pela facilidade de utilização das estruturas de dados da biblioteca: strings (diferentes das C-strings (char*) de tamanho fixo), árvores balanceadas, vetores dinâmicos, listas, etc.

Grande parte dos ambientes mais conhecidos acompanham a biblioteca STL, como o Microsoft Visual C++, Borland C++ Builder, etc [37]. A biblioteca também pode ser carregada à parte na maioria dos ambientes C++.

3.4 DLL Existem diversas maneiras de se exportar uma funcionalidade para que ela seja utilizada sozinha ou em conjunto com outros programas. Uma forma bastante usual é a linkagem estática. A linkagem estática é muito simples: exportando a funcionalidade como sendo uma biblioteca tradicional, o programa principal que utiliza esta funcionalidade fará chamadas estáticas à biblioteca e terá acesso às suas rotinas e atributos [12]. Contudo, a linkagem estática possui suas desvantagens [12]: •

Redundância: caso diversos programas utilizem a biblioteca, cada programa

terá a sua própria cópia, o que resultará em desperdício de recursos. •

Alto acoplamento: caso uma nova versão da biblioteca seja disponibilizada,

seja para a inclusão de novas funcionalidades ou para correção de erros, o programa principal que a utiliza estaticamente terá de ser reconstruido com a nova versão da biblioteca. Esta dificuldade na manutenibilidade pode transformar-se em um sério problema no caso de sistemas de grande porte e uma dificuldade se a reconstrução se der a cargo do usuário.

Entretanto, existe também a possibilidade de se utilizar as bibliotecas de linkagem dinâmica, ou DLLs. Ao contrário da linkagem estática, a DLL é uma biblioteca que pode ser compartilhada por diversos aplicativos. Para isso basta que a DLL esteja devidamente registrada no sistema, que será o intermediador da chamada entre o aplicativo e a DLL em si.

DLLs são pedaços de fonte executáveis que aguardam uma chamada. Quando um cliente requisita a funcionalidade de uma DLL, ele pode carregá-la e ter acesso às suas rotinas em tempo de execução [12]. Isso é feito facilmente através das interfaces que cada DLL implementa e disponibiliza publicamente. Uma DLL é capaz de receber valores dinamicamente, processar arquivos, etc. Este não é um conceito novo: o Windows, por exemplo, já o utiliza desde suas primeiras versões. Existem, claro, diversos formatos para outros sistemas operacionais que também desempenham o papel de linkagem dinâmica.

3.5. COM COM é uma arquitetura de software desenvolvida pela Microsoft para a comunicação e interoperabilidade de aplicativos. Ela é a arquitetura por trás de serviços de mais alto nível, como o OLE. A comunicação COM se dá através da implementação e requisições a interfaces. Cada componente COM possui dados privados que não podem ser acessados por outros componentes, e também interfaces públicas com ponteiros para VLTBs acessíveis. Cada VLTB é composta de ponteiros para as rotinas implementadas naquela interface. Em COM, todas as interfaces têm como base a interface IUnknown (todas herdam de IUnknown) [7] e um componente pode implementar mais de uma interface. A figura 3.2 exemplifica:

Aplicativo

void funcao2(arg1,arg2…)

Componente COM

VLTB

Interface (Ponteiro para VLTB)

Área Privada

Ponteiro para Função 1 Ponteiro para Função 2 Ponteiro para Função 3 …

Figura 3. 2: Arquitetura COM.

Tipicamente, os componentes COM são exportados para DLLs, e dependendo do ambiente de desenvolvimento, a atualização do arquivo contruido (a DLL em si) bem como suas informações de registro ficam sob responsabilidade do próprio ambiente, facilitando em muito o trabalho, criando e excluindo automaticamente arquivos temporários e gerenciando quaisquer bibliotecas utilizadas.

3.6. ATL ATL é uma biblioteca C++ criada pela Microsoft cuja proposta é a rápida implementação de componentes COM. A biblioteca possui classes e macros que encapsulam grande parte da implementação dos componentes, fazendo desta tarefa mais simples e rápida. A cada nova interface criada, não é necessário simplesmente a implementação dos métodos específicos desta nova interface, mas também da interface IUnknown e de seus métodos. Além, é claro, de outras interfaces pré-definidas que o componente pode vir a utilizar. Com o uso de ATL estas tarefas tornam-se menos onerosas, visto que grande parte do trabalho é feita automaticamente pelo ambiente, deixando o desenvolvedor focado apenas no problema específico da aplicação que está construindo. A biblioteca possui classes pré-fabricadas de usos diversos como smart pointers, conversores de tipos, e também componentes que encapsulam estruturas de dados como árvores, arrays, etc.

4. Pré-processamento A etapa de pré-processamento consiste em um tratamento e armazenamento adequado dos dados. Esta etapa se caracteriza pela identificação dos termos dentro da coleção de documentos e também pela determinação da sua importância dentro do todo, para que só então tenha início a etapa de processamento deste dado. A figura 4.1 mostra a tela principal do programa de pré-processamento desenvolvido.

Figura 4. 1: Interface do programa de pré-processamento.

Como sugere a figura 4.1, o programa requer toda uma parametrização para que o pré-processamento seja executado com sucesso, desde parâmetros da connectionstring (parâmetros de acesso ao banco de dados) até parâmetros específicos de um problema de pré-processamento de textos como descartar radicais pequenos demais, ignorar palavras com letras fora do alfabeto, o tipo de ponderação para a geração da BOW, etc. Os ítens subsequentes explicam com detalhes cada uma das tarefas do pré-processamento.

Esta etapa de pré-processamento é muito custosa e requer a implementação de diversas tarefas a nível de documento e termo. Muitas vezes faz-se necessário executar esta etapa várias vezes, à medida que comportamentos indesejados são identificados e necessitam ser corrigidos. Desta forma, as listas utilizadas nesta etapa terão de ser atualizadas cada vez que algo indesejado ocorra a fim de que o pré-processamento seja refinado e preparado para tratar estes casos. Isto pode se caracterizar pela identificação de alguma nova stopword ou nome próprio, understemmings ou overstemmings, trechos com erros de digitação, substrings específicas de outro idioma, etc. Visto que com isso todo o esquema do cálculo das frequencias dos demais termos fica inconsistente, os mesmos acabam necessitando de recálculo, ou seja: todo o processo terá que ser realizado novamente. Com o passar do tempo e a constante atualização das listas, o processo vai tornando-se cada vez menos dispendioso, uma vez que, dentro do contexto específico dos textos submetidos ao pré-processamento, grande parte dos casos vai sendo prevista. As tarefas de pré-processamento são ilustradas na figura 4.2, enumeradas e descritas nos ítens subsequentes:

Remoção de caracteres indesejados

Integração da caixa

Armazenamento da BOW

Geração da BOW

Tokenização

Remoção de termos alheios à língua portuguesa

Stemming

Remoção de stopwords

Figura 4. 2: Tarefas do pré-processamento.

4.1. Remoção de caracteres indesejados Em um texto existem sinais de pontuação que são indesejados dentro de uma análise. Podem também existir palavras com símbolos desconhecidos por erros de digitação, ou simplesmente caracteres esparsos sem significado semântico. É comum ainda a existência de caracteres matemáticos (“%”, “+”, “
View more...

Comments

Copyright � 2017 SILO Inc.