UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO SapiSim Um módulo para identificação de coautorias nas produções científicas do SAPI por Luis Fernando Balsini Itajaí (SC), novembro de 2012 UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO SapiSim Um módulo para identificação de coautorias nas produções científicas do SAPI Área de Sistema de Informação por Luis Fernando Balsini Relatório apresentado à Banca Examinadora do Trabalho Técnico-científico de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: André Luís Alice Raabe, Dr Itajaí (SC), novembro de 2012 RESUMO Balsini, Luis Fernando. SapiSim. Um módulo para identificação de coautorias nas produções científicas do SAPI. Itajaí, 2012. 104. Trabalho Técnico-científico de Conclusão de Curso (Graduação em Ciência da Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2012. Este projeto tem como tema principal o desenvolvimento de um módulo de identificação de coautorias nas produções científicas do SAPI 2.0. O SAPI é um sistema que gerência o registro e a comprovação das produções científicas de uma instituição de ensino superior fornecendo informações qualificadas para os gestores. O desenvolvimento do módulo SapiSim é importante, pois o sistema SAPI apresenta redundâncias em relatórios de grupos. O módulo SapiSim trará maior confiança nos resultados obtidos em relatórios conjuntos dos escores dos docentes. As produções científicas são cadastradas no currículo Lattes e importadas para o SAPI. O currículo Lattes gerencia uma base de dados sobre pesquisadores. Ao cadastrar uma produção científica ocorre a inserção manual de atributos pelo docente, podendo ocorrer erros de digitação. Por este motivo uma mesma produção pode ter diferentes atributos o que dificulta com que sejam identificadas como sendo a mesma produção. Foi realizada uma análise de métodos e técnicas utilizadas em outros trabalhos onde se pode observar que as técnicas de tokenização, normalização e retirada de stopwords são fundamentais para este trabalho e também a métrica de similaridade textual, a distância de Levenshtein como sendo a melhor e mais confiável maneira de se determinar a similaridade entre duas produções. As técnicas propostas foram implementadas em uma versão de testes do sistema SAPI e foram conduzidos dois estudos de caso com docentes da UNIVALI. Os resultados ilustram a conclusão da ferramenta alcançando o seu objetivo, de encontrar a grande maioria das coautorias viabilizando a validade da abordagem e possibilitam que sua implantação como novo módulo do sistema SAPI seja concretizada em um futuro próximo. Palavras-chave: Tratamento de redundâncias. Tratamento da linguagem natural. Métrica de similaridade textual. ABSTRACT This project has as main theme the development of an identification module authorships scientific production in the SAPI 2.0. SAPI is a system that manages the registration and verification of the scientific production of a higher education institution providing quality information for managers. The module development is important because the system has redundancies in SAPI group reports. The module SapiSim bring greater confidence in the results obtained in joint reports of scores of teachers. The scientific products are registered in the Lattes curriculum and imported into the SAPI. Curriculum Lattes manages a database of researchers. When registering a scientific manual editing occurs by the teacher attributes, typographical errors may occur. For this reason the same production run may have different characteristics which makes them to be identified as being the same output. An analysis of methods and techniques used in other studies where one can observe that the techniques of tokenization, normalization and removal of stopwords are fundamental to this work and also the textual similarity metric, the Levenshtein distance as the best and most reliable way to determine the similarity between two productions. The proposed techniques were tested in the software and two case studies with UNIVALI researchers were conducted showed. The results illustrate the tool completes reaching your goal, to find the vast majority of coauthorships enabling the validity of the approach and enable their deployment as new SAPI module system is implemented in the near future. Keywords: Handling redundancies. Treatment of natural language. textual similarity metric LISTA DE TABELAS Tabela 1. Comparação de produções cientifica entre dois docentes. ....................................... 13 Tabela 2. Comparativo entre trabalhos pesquisados. ............................................................... 39 LISTA DE FIGURAS Figura 1. Diagrama de integração de tecnologias SmartClient ................................................ 21 Figura 2. Modelo de Dados do SAPI 2.0 .................................................................................. 23 Figura 3. Matriz Distância de Levenshtein ............................................................................... 32 Figura 4. Passo a passo Distância de Levenshtein.................................................................... 32 Figura 5 Diagrama de Classe – Pacote Controle. ..................................................................... 50 Figura 6 Diagrama de Classes – Pacote Tratador. .................................................................... 52 Figura 7 Diagrama de classe – Pacote Similaridade................................................................. 54 Figura 8 Diagrama de classe – Pacote Modelo......................................................................... 55 Figura 9 Diagrama de Classe – Pacote Acessa Banco.............................................................. 56 Figura 10. Tela do sistema SAPI 2.0 – TEL001. ...................................................................... 61 Figura 11. Tela do sistema SAPI 2.0 – TEL001. ...................................................................... 61 Figura 12. Tela do Módulo SapiSim – TEL002 ....................................................................... 62 Figura 13. Tela do Módulo SapiSim – TEL002. ...................................................................... 63 Figura 14. Tela do Módulo SapiSim – TEL003. ...................................................................... 64 Figura 15. Tela do Módulo SapiSim – TEL003. ...................................................................... 65 Figura 16. Tela do Módulo SapiSim – TEL003. ...................................................................... 65 Figura 17. Tela do Módulo SapiSim – TEL003. ...................................................................... 66 Figura 18. Tela do sistema SAPI 2.0 – TEL001 ....................................................................... 66 Figura 19. Tela do Módulo do SapiSim – TEL004. ................................................................. 67 Figura 20. Tela do Módulo SapiSim – TEL004. ...................................................................... 68 Figura 21. Tela do Módulo do SapiSim – TEL005. ................................................................. 69 Figura 22. Resultado do estudo de caso 1. ............................................................................... 73 Figura 23. Resultado do estudo de caso 2. ............................................................................... 76 Figura 24. Diagrama de classe – Controle................................................................................ 87 Figura 25. Diagrama de classe – Pacote Tratador. ................................................................... 90 Figura 26. Diagrama de classe – Pacote Similaridade.............................................................. 94 Figura 27. Diagrama de classe – Pacote Modelo...................................................................... 97 Figura 28. Diagrama de classe – Pacote Acessa Banco. .......................................................... 99 LISTA DE QUADROS Quadro 1.StopWords em português.......................................................................................... 26 Quadro 2. StopWords em inglês ............................................................................................... 27 Quadro 3. Algoritmo de Levenshtein em Java. ........................................................................ 84 Quadro 4. Algoritmo Cosine Similarity ................................................................................... 85 Quadro 5. Definição dos atributos da classe IdentificaCoautoria. ........................................... 88 Quadro 6. Descrição dos métodos da classe JPAIdentificaCoautoriaDAO. ............................ 89 Quadro 7. Descrição dos atributos da classe JPACommandDAO. .......................................... 89 Quadro 8. Descrição dos métodos da classe JPACommandDAO. ........................................... 89 Quadro 9. Descrição dos atributos da classe JPAStopWordsDAO .......................................... 90 Quadro 10. Descrição dos métodos da classe JPAStopWordsDAO ........................................ 91 Quadro 11. Descrição dos atributos da classe JPANormalizacaoDAO.................................... 91 Quadro 12. Descrição dos métodos da classe JPANormalizacaoDAO .................................... 91 Quadro 13. Descrição dos métodos da classe JPANormalizacaoEStopWordsTrabalhosEmEventosDAO.............................................. 92 Quadro 14. Descrição dos métodos da classe JPANormalizacaoEStopWordsProjetoDePesquisaDAO .................................................. 92 Quadro 15. Descrição dos métodos da classe JPANormalizacaoEStopWordsLivroDAO ....... 93 Quadro 16. Descrição dos métodos da classe JPANormalizacaoEStopWordsCapituloDeLivroDAO ..................................................... 93 Quadro 17. Descrição dos métodos da classe JPANormalizacaoEStopWordsBancaDAO ...... 93 Quadro 18. Descrição dos métodos da classe JPANormalizacaoEStopWordsArtigoPublicadoDAO...................................................... 94 Quadro 19. Descrição dos atributos da classe JPAFormulasSimilaridadeDAO ...................... 95 Quadro 20. Descrição dos métodos da classe JPAFormulasSimilaridadeDAO ....................... 96 Quadro 21. Descrição dos atributos da classe JPACalculoSimilaridadeDAO ......................... 96 Quadro 22. Descrição dos métodos da classe JPACalculoSimilaridadeDAO .......................... 96 Quadro 23. Descrição dos atributos da classe Copia ................................................................ 98 Quadro 24. Descrição dos métodos da classe Copia. ............................................................... 98 Quadro 25. Descrição dos métodos da classe JPAProducaoDAO. ........................................ 102 Quadro 26. Descrição dos atributos da classe Produção. ....................................................... 103 Quadro 27. Descrição dos métodos da classe Produção ......................................................... 104 Quadro 28. Descrição dos métodos da classe JPAAutomaticoMonitoriaDAO. ..................... 105 Quadro 29. Descrição dos atributos da classe AutMon. ......................................................... 105 Quadro 30 . Descrição dos métodos da classe AutMon. ........................................................ 106 Quadro 31. Algoritmo da Formula de Similaridade ............................................................... 109 Quadro 32. Algoritmo da Formula de Similaridade ............................................................... 110 LISTA DE EQUAÇÕES Equação 1 ................................................................................................................................. 12 Equação 2 ................................................................................................................................. 29 Equação 3 ................................................................................................................................. 30 Equação 4 ................................................................................................................................. 32 Equação 5 ................................................................................................................................. 33 Equação 6 ................................................................................................................................. 35 Equação 7 ................................................................................................................................. 44 Equação 8 ................................................................................................................................. 44 Equação 9 ................................................................................................................................. 44 Equação 10 ............................................................................................................................... 45 Equação 11 ............................................................................................................................... 45 Equação 12 ............................................................................................................................... 45 LISTA DE ABREVIATURAS E SIGLAS TTC UNIVALI SAPI CNPq XML GPL PUC-RS PLN UML RIA HTML GUI POJO DAO MVC CRUD HTTP API JSON KDT SGBD KDD MT RI URL WEB SRI Trabalho Técnico-científico de Conclusão de Curso Universidade do Vale do Itajaí Sistema de Avaliação de Produção Institucional Conselho Nacional de Desenvolvimento Científico e Tecnológico Extensible Markup Language General Public Licence Pontíficia Universidade do Rio Grande do Sul Processamento da Linguagem Natural Unified Modeling Language Rick Internet Application Hyper Text Markup Language Graphical User Interface Plain Old Java Objects Data Access Objects Model-View-Controller Create-Read-Update-Delete HyperText Transfer Protocol Application Programming Interface JavaScrip Objetc Notation Knowledge Discovered in Texts Sistema de Grenciamento de Banco de Dados Knowledge Discovered in Databases Mineração de Texto Recuperação de Informação Uniform Resource Locator World Wide Web Sistema de Recuperação de Informação SUMÁRIO 1 INTRODUÇÃO .................................................................................... 12 1.1 PROBLEMATIZAÇÃO .................................................................................. 13 1.1.1 Formulação do Problema ............................................................................. 13 1.1.2 Solução Proposta .......................................................................................... 14 1.2 OBJETIVOS ..................................................................................................... 15 1.2.1 Objetivo Geral .............................................................................................. 15 1.2.2 Objetivos Específicos .................................................................................... 15 1.3 METODOLOGIA ............................................................................................ 15 1.4 ESTRUTURA DO TRABALHO ..................................................................... 16 2 FUNDAMENTAÇÃO TEÓRICA ...................................................... 17 2.1 SISTEMA SAPI ................................................................................................ 17 2.1.1 Detalhamento da Versão 2.0 do SAPI ......................................................... 17 2.2 MINERAÇÃO DE TEXTO ............................................................................. 23 2.2.1 Processamento da Linguagem Natural (PLN) ............................................ 24 2.2.2 Retirada de StopWords................................................................................ 25 2.3 MODELOS DE RECUPERAÇÃO DE INFORMAÇÕES............................. 27 2.3.1 Modelo booleano........................................................................................... 28 2.3.2 Modelo da busca direta ................................................................................ 28 2.4 MEDIDAS BÁSICAS DE AVALIAÇÃO E EFICIÊNCIA DE SISTEMAS ............................................................................................................. 29 2.4.1 Recordação ................................................................................................... 29 2.4.2 Precisão ......................................................................................................... 30 2.5 MÉTRICAS DE SIMILARIDADE TEXTUAL ............................................. 30 2.5.1 Distancia de Levenshtein ............................................................................. 31 2.5.2 Distância do Cosseno .................................................................................... 32 2.6 BIBLIOTECA SIMMETRICS ........................................................................ 34 2.7 ANÁLISE DE TRABALHOS SIMILARES ................................................... 36 2.7.1 ScriptLattes .................................................................................................. 36 2.7.2 Análise de Redes de Colaboração entre Pesquisadores .............................. 37 2.7.3 Análise das Áreas de Interesse dos Pesquisadores ..................................... 37 2.7.4 Remoção de ambiguidade das autorias de objetos bibliográficos .............. 38 3 DESENVOLVIMENTO ...................................................................... 41 3.1 DESCRIÇÃO GERAL DO SAPISIM ............................................................. 41 3.2 REQUISITOS FUNCIONAIS ......................................................................... 41 3.3 REQUISITOS NÃO FUNCIONAIS................................................................ 41 3.4 REGRAS DE NEGÓCIO ................................................................................. 42 3.5 CÁLCULO DA SIMILARIDADE .................................................................. 43 3.5.1 Formula de Similaridade ................................... Erro! Indicador não definido. 3.6 DIAGRAMAS DE CLASSES .......................................................................... 46 3.6.1 Pacote Controle ............................................................................................ 50 3.6.2 Pacote Tratador ............................................................................................ 51 3.6.3 Pacote Similaridade...................................................................................... 53 3.6.4 Pacote Modelo .............................................................................................. 55 3.6.5 Pacote Acessa Banco .................................................................................... 55 3.7 CASO DE USO ................................................................................................. 57 3.7.1 UC03 Confirmar / Rejeitar produções científicas ...................................... 57 3.8 TELAS DO MÓDULO SAPISIM ................................................................... 60 4 RESULTADOS ..................................................................................... 70 4.1 ESTUDO DE CASO 1 ...................................................................................... 71 4.2 ESTUDO DE CASO 2 ...................................................................................... 75 4.3 CONSIDERAÇÕES SOBRE OS ESTUDOS DE CASOS ............................. 77 5 CONCLUSÕES .................................................................................... 78 APÊNDICE A. ALGORITMOS DE MÉTRICAS DE SIMILARIDADE ..................................................................................... 83 APÊNDICE B. DETALHAMENTO DE CLASSES ............................ 86 12 1 INTRODUÇÃO Este trabalho propõe a criação de um novo módulo para o sistema SAPI – Sistema de Avaliação da Produção Institucional. O SAPI gerência o registro e a comprovação das produções científicas de uma instituição de ensino superior fornecendo informações qualificadas para os gestores da instituição, poder tomar decisões acerca da produtividade de seus docentes. O desenvolvimento do Sistema SAPI foi iniciado na UNIVALI no ano de 2002 e segue em constante aprimoramento. O SAPI importa as produções dos docentes a partir dos currículos inseridos na Plataforma LATTES e também a partir de produções inseridas diretamente pelos docentes no sistema. A Plataforma Lattes é uma base de dados de currículos de pesquisadores e instituições, das áreas de Ciência e Tecnologia, atuando no Brasil. O sistema de currículos Lattes surgiu da necessidade do Conselho Nacional de Desenvolvimento Cientifico e Tecnológico (CNPq) de gerenciar uma base de dados sobre pesquisadores em C&T para credenciamento de orientadores no país. (PACIEVITCH, 2009). O SAPI avalia estas produções e gera um escore. Este escore é um valor numérico que representa os critérios de avaliação definidos pelos gestores da instituição (SAPI, 2011). Com o desenvolvimento de uma nova versão do sistema SAPI em 2011, a experiência pessoal do autor deste TTC, que atua como estagiário do sistema SAPI, permitiu identificar uma necessidade nesta versão referente a identificação de produções de docentes coautores. A coautoria é um aspecto importante de ser identificado, pois poderá aprimorar os resultados de análise de grupos de pesquisa e unidades institucionais (como cursos e centros) que possuam coautores frequentes. Por exemplo, um relatório da produtividade dos docentes de um curso sem considerar coautoria será a soma (união) de todas as produções destes. Ao considerar a coautoria excluem-se desta soma as produções idênticas, ou seja, as produções de docentes de um mesmo curso, que sejam coautoras serão retiradas desta soma, (intersecção entre eles) consequentemente não ocorrendo redundância conforme ilustra a Equação 1. Pcurso ( prodDocentes coautoria) Equação 1 Segundo Chalco e Junior, (2009), as produções acadêmicas são frequentemente desenvolvidas por pesquisadores que pertencem ao mesmo grupo ou pesquisadores de fora 13 do grupo, mas que colaboram com o mesmo. Por exemplo, uma produção do tipo, artigo completo em periódico às vezes pode possuir dois autores, caracterizando uma coautoria. Por exemplo, as produções são cadastradas no currículo Lattes (CNPq) pelo docente e capturada pelo SAPI por meio de um arquivo XML. As produções cadastradas possuem vários atributos, e muitos deles são digitados, como (titulo do evento, nome do evento, etc...). O currículo Lattes, até o ano de 2012, não apresentava nenhum tipo de suporte para identificar produções de coautoria, obrigando a realização do tratamento deste problema dentro do próprio SAPI. Com isso o problema que está sendo abordado neste TTC está em identificar a coautoria de produções presentes na base de dados do sistema SAPI 2.0 utilizando para isso a comparação dos atributos das produções dos currículos dos docentes. 1.1 PROBLEMATIZAÇÃO 1.1.1 Formulação do Problema Na versão do SAPI 1.0, é realizada a identificação de coautorias, mas ocorrem erros em sua identificação com resultados ainda distantes do ideal. Com o início do desenvolvimento do SAPI 2.0 em 2011 surgiu a oportunidade de se tratar as redundâncias entre produções coautoras de uma forma mais robusta. O problema de identificação de coautorias tem como principal dificuldade a comparação entre duas produções de dois docentes que ao inserirem-nas em seus currículos Lattes o fazem com pequenas diferenças na forma de digitação. Um exemplo está ilustrado na Tabela 1. Tabela 1. Comparação de produções cientifica entre dois docentes. Autor Título trabalho Nome Evento do do André Luis Alice Raabe Bipide: Ambiente de Desenvolvimento Integrado para Utilização dos Processadores BIP no Ensino de Programação XX Simpósio Brasileiro de Informática na Educação Cesar Albenes Zeferino Bipide: ambiente de desenvolvimento integrado para utilização dos processadore BIP no ensino de programação SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA EDUCAÇÃO - SBIE 2009, 20. Ao analisar a Tabela 1 verifica-se que ocorrer diferenças sutis de digitação, por exemplo, letras (maiúsculas e minúsculas), erros ortográficos (Processadores e processadore), a falta de símbolos e palavras (XX) ou sobra de palavras (- SBIE 2009, 20.). 14 Estas diferenças dificultam que as produções sejam identificadas como sendo a mesma produção, dependendo de uma abordagem que utilize a similaridade textual e não a exatidão. 1.1.2 Solução Proposta A solução proposta é desenvolver um módulo de identificação de coautorias de produções científicas presentes na base de dados do sistema SAPI 2.0, utilizando para isto, uma combinação de regras heurísticas e métricas de similaridade textual para identificar apenas casos de atributos idênticos entre produções, mas também caso de produções similares. Este problema já foi abordado no trabalho de Chalco e Junior, (2009), o qual detecta produções similares através da comparação entre todas as produções acadêmicas presentes em um conjunto de dados. As produções só são consideradas iguais, se a porcentagem de similaridade entre elas for maior que a porcentagem definida pela ferramenta. Ainda neste trabalho foi utilizada a similaridade entre dois strings baseando-se na distância de Levenshtein (1966), a qual é obtida através do numero mínimo de operações, inserções, eliminação ou substituição de caracteres necessários para transformar um texto em outro, ou seja, na comparação entre dois strings similares, usando a distância de Levenshtein (1966), sempre terá a strings que está analisando (mandante), e a strings analisada, então o algoritmo de Levenshtein (1966), analisará a strings analisada tendo a strings mandante como modelo, com o objetivo de descobrir caracteres que estejam faltando (inserções) ou que existe caracteres a mais (eliminação) ou até mesmo caracteres que só precisam ser substituídos (substituição) entre os dois strings com o objetivo da strings analisada seja transformada na strings mandante, que para no final seja retornado o número de operações realizadas que servirá para a realização de uma média que resultará na similaridade entre estes dois strings. Para a determinação da similaridade entre strings e redução do risco de erros na realização do cálculo da similaridade, foi utilizada a biblioteca SimMetrics. Esta biblioteca Java de licença livre GPL (Gereral Public License) implementa algoritmos de similaridade entre strings, utiliza métricas e resultados normalizados, para facilitar comparações entre os algoritmos. 15 1.2 OBJETIVOS 1.2.1 Objetivo Geral Desenvolver um módulo para o sistema SAPI 2.0 que identifique coautorias entre produções acadêmicas. 1.2.2 Objetivos Específicos Pesquisar e documentar conceitos relacionados à similaridade de atributos; Definir algoritmos de similaridade textual para comparação dos atributos; Definir heurísticas e regras para ponderar a similaridade entre os atributos das produções; Testar e avaliar o módulo SapiSim no Sistema de Avaliação de Produção Institucional (SAPI) da Universidade do Vale do Itajaí (UNIVALI). 1.3 METODOLOGIA A etapa inicial do TTC foi o levantamento bibliográfico a análise de trabalhos correlatos, buscando conhecer outras ferramentas com a finalidade similar que pudesse auxiliar na definição de soluções para o módulo SapiSim. Além disso, foi apresentado o SAPI e as tecnologias utilizadas em seu desenvolvimento como SmartClient, Hibernate e Padrões de Projetos. A segunda etapa foi à definição das heurísticas de similaridade que acabaram sendo definidas utilizando a notação de regras de negócio que foram apresentadas no capítulo 3. Em paralelo foram iniciados testes para apropriação das tecnologias utilizadas com o desenvolvimento de pequenas aplicações de acesso a banco de dados. A terceira etapa foi o estudo e implementação do módulo SapiSim integrado ao SAPI. O módulo foi desenvolvido usando um branch no ciclo de desenvolvimento do SAPI de forma que o código gerado pode ser integrado mais facilmente a versão do SAPI que se encontra em uso. 16 A quarta etapa foi à realização de dois estudos de caso com docentes típicos usuários do SAPI e que possuíam um bom número de coautorias. Para realização dos testes diversas necessidades e aprimoramentos foram identificados e implementados no módulo SapiSim. A quinta e última etapa foi à produção desta monografia integrando os resultados e redigindo as conclusões do trabalho. 1.4 ESTRUTURA DO TRABALHO Este documento está estruturado em cinco capítulos. O Capítulo 1, Introdução, apresenta o problema, solução e objetivos deste trabalho. No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão bibliográfica sobre: Sistema SAPI 2.0, Mineração de texto, Modelos de Recuperação de Informações, Medidas básicas de avaliação e eficiência de sistemas, Algoritmos de similaridade textual, Biblioteca SimMetrics, assim como uma análise de trabalhos similares. O Capítulo 3 apresenta o desenvolvimento detalhado do sistema que foi desenvolvido, incluindo sua especificação e a sua modelagem em UML. O capítulo também discute como foi implementado o módulo, apresentando a metodologia que foi utilizada no desenvolvimento. No Capítulo 4, apresentam-se os resultados das análises dos estudos de casos, onde são abordados os resultados finais, e para concluir no capítulo 5 são apresentadas as conclusões. O texto ainda inclui dois apêndices que complementam os diagramas de classes. 17 2 FUNDAMENTAÇÃO TEÓRICA Esta fundamentação teórica foi separada em seções que são as seguintes: 1. Sistema Sapi: Apresenta um detalhamento dos assuntos pertinentes para este trabalho; 2. Mineração de texto: Apresenta técnicas de manipulação e tratamento de texto; 3. Modelos de Recuperação de texto: Apresenta os modelos de recuperação de texto, mais pertinentes para este trabalho; 4. Medidas Básicas de Avaliação e Eficiência de Sistemas: Apresenta duas medidas, Precision e Recall. 5. Métrica de similaridade textual: Relata a métrica de similaridade textual definida e a descrição de seus algoritmos; 6. Biblioteca SimMetrics: Relata a biblioteca SimMetrics e seus métodos; e 7. Análise de Trabalhos similares: É feita a análise de trabalhos, que poderão ajudar este TTC, com suas técnicas, com seus erros e acertos. 2.1 SISTEMA SAPI SAPI – Sistema de Avaliação da Produção Institucional. O SAPI gerencia o registro e a comprovação das produções de uma instituição de ensino superior fornecendo informações qualificadas para os gestores de uma instituição poder tomar decisões acerca da produtividade de docentes. O SAPI importa as produções dos docentes a partir dos currículos inseridos na Plataforma LATTES e também a partir de produções inseridas diretamente pelos docentes no sistema. O SAPI avalia estas produções e gera um escore. Este escore é um valor numérico que representa os critérios de avaliação definidos pelos gestores da instituição (SAPI, 2011). Toda vez que novas produções são cadastradas no currículo Lattes (CNPq) pelo docente é feito um pedido de atualização de produção para o SAPI e realizada a captura das mesmas por meio de um arquivo XML. 2.1.1 Detalhamento da Versão 2.0 do SAPI Serão detalhados a seguir os seguintes aspectos: Relatórios disponíveis, tecnologias utilizadas, forma de armazenamento das produções e seus atributos. 18 2.1.1.1 Relatórios O SAPI possui uma gama de relatórios de produtividade das produções dos docentes, o qual é utilizado para tomadas de decisões administrativas. Os relatórios são utilizados para publicar os escores dos docentes de uma forma organizada e estruturada. Os relatórios são divididos em: (i) Produtividade Individual; (ii) Produtividade Conjunta; (iii) Produtividade de Curso; (iv) Produtividade de Setor. 1. Relatório de Produtividade Individual: Este relatório permite a visualização do escore de um docente, permitindo selecionar um único docente e visualizar a sua pontuação; 2. Relatório de Produtividade Conjunta: Este relatório permite a visualização de dois ou mais escores dos docentes e comparar as suas pontuações; 3. Relatório de Produtividade por Curso: Este relatório permite a visualização da pontuação dos cursos selecionados no sistema SAPI, permitindo comparar seus escores. A pontuação do curso é a soma da pontuação de todos os docentes lotados no curso; 4. Relatório de Produtividade por Departamento: Este relatório permite um ou mais departamentos/setores da instituição visualizar suas pontuações e compara-las. A pontuação do departamento/setor é a soma da pontuação de todos os docentes lotados no departamento/setor. 2.1.1.2 Tecnologias Utilizadas Serão apresentadas a seguir as tecnologias utilizadas no sistema SAPI 2.0 tais como: (i) SmartClient que é responsável por gerar a interface com o usuário do sistema SAPI 2.0; (ii) Framework Hibernate que é responsável por realizar a persistência de objetos JAVA na base de dados do sistema e (iii) Padrões de Projeto escritos em Java que foram utilizados para realizar a abstração da comunicação entre o SmartClient e o Hibernate; e por fim (iv) Integração das tecnologias do SAPI 2.0, que descreve sucintamente como elas se comunicam entre si mesmas. SmartClient A ferramenta SmartClient é uma Rich Internet Application (RIA), ou seja, uma permite construir aplicações Web com características e funcionalidades de software desktop, 19 transferindo todo o processamento da interface para o navegador da Internet e mantendo a maior parte dos dados no servidor da aplicação.(SMARTCLIENT, 2012). A ferramenta SmartClient realiza todas as suas funções e geração de Hyper Text Markup Language (HTML) no browser. Nenhuma geração de HTML ou função é manipulada pelo servidor. Uma vez carregada apenas os dados são transmitidos entre o navegador e o servidor. Ao minimizar a carga de recursos no servidor para atualização da GUI, essa arquitetura aumenta a capacidade de resposta e escalabilidade. Ao minimizar a quantidade de código no servidor, a arquitetura também melhore a estabilidade e a confiabilidade. (SMARTCLIENT, 2012). Hibernate O Hibernate facilita o armazenamento e recuperação de objetos de domínio Java através de mapeamento objeto/relacional. O Hibernate abstrai o domínio do problema através do desenvolvimento de padrões de projetos. (HIBERNATE, 2012) O Hibernate é uma coleção de projetos relacionados permitindo aos desenvolvedores utilizar modelos Plain Old Java Objects (POJO) estilo de domínio em suas aplicações de forma que se estendem muito além do mapeamento objeto/relacional. Atualmente o Hibernate já é utilizado no SAPI versão 2.0 com o principal objetivo de realizar a persistência de objetos Java na base de dados. Padrões de Projeto Um Padrão de Projeto de Software ou também conhecido pelo termo original em inglês, Design Pattern, descreve uma solução geral reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos. É uma descrição ou modelo de como resolver o problema, que pode ser usada em muitas situações diferentes. Os Padrões de Projeto normalmente definem as relações e interações entre as classes ou objetos, sem especificar os detalhes das classes ou objetos envolvidos, ou seja, os padrões de projeto realizam uma abstração do problema do qual o usuário deseja solucionar utilizando apenas informações pertinentes para a tarefa, por exemplo, se o usuário deseja visualizar a tela das suas produções, o sistema abstrairá o problema e passará apenas o nome da tela que mostrará as produções. Os padrões de projeto geralmente pertencem a camadas mais altas de abstração. (ALEXANDER, 1993). Um padrão de projeto deve ter as seguintes características: (i) Encapsulamento; (ii) Generalidade; (iii) Equilíbrio; (iv) Abstração; (v) Abertura; (vi) Combinatoriedade; (vii) 20 Nome; (viii) Exemplo; (ix) Contexto; (x) Problema; (xi) Solução. (ALEXANDER,1993). O SAPI 2.0 utiliza os seguintes padrões de projeto: (i) Singleton; (ii) DAO; (iii) MVC; (iv) Abstract Facture; (v) Lazy Initialization; (vi) Null Object. Integração das tecnologias usadas no SAPI 2.0 Através de uma ação do usuário é acionado um DataSources que fornece uma API independente de provedor de dados para SmartClient (componentes visuais), que permite realizar as 4 operações CRUD (Criar, recuperar, atualizar e excluir). Os detalhes de implementação, de como o DataSource recupera ou atualiza os dados é desconhecido para os componentes SmartClient, para efeito disso os DataSource eles podem ser substituídos sem afetar a interface do usuário. (ISOMORPHIC, 2012). Existem duas abordagens principais para realizar a integração de DataSource com a sua tecnologia. No lado servidor, recebe a requisição realizada pelo navegador em formato de objeto Java, então esta requisição é processada e retorna a resposta para o navegador em formato de objeto Java. (ISOMORPHIC, 2012). Relatando outras formas de integração do lado cliente é dada por um DataSource que recebe pedidos simples HTTP que o código do servidor recebe diretamente em Java e usa uma API Servlet para mandar as requisições. As respostas são devolvidas em formato XML ou JSON para gerar diretamente. As abordagens possíveis são resumidas no diagrama da Figura 1. 21 Figura 1. Diagrama de integração de tecnologias SmartClient Fonte: ISOMORPHIC (2012) Os caminhos 2, 3 e 4 são abordagens do lado do cliente, que não são utilizados pelo SAPI 2.0, o caminho 1 inclui todas as abordagens do lado do servidor de integração. (ISOMORPHIC, 2012). O usuário do SAPI 2.0 executa uma uma das quatro ações basicas na interface SmartClient, por exemplo, listar as produções de um docente, então é acionado o arquivo XML do DataSource que através do atributo serverConstructor, chama a classe que irá chamar os métodos do CRUD, por exemplo, método Fetch (listar). Através do objeto DSResponse é retornado a lista de produções de um docente que foram buscadas na base de dados, através do Custom DataSource, nela é implementada os métodos CRUD, então é retornado uma lista de objetos de produções do docente, estes objetos são transformados para uma string JSON, que vão ser recebidos pelo arquivo XML, que interpreta e trata estes dados e deixa-os no formato que a interface SmartClient possa lê-los e apresenta-los para o usuário. 2.1.1.3 Armazenamento das Produções e seus atributos Como o foco deste trabalho está na análise de coautoria das produções, serão detalhadas a seguir as partes do modelo de dados do SAPI 2.0 que se refere a estas informações. As produções do SAPI 2.0 são separadas em três tabelas: 22 1. Tabela Produção: São reunidas as características mais comuns da produção, ou seja, características que toda produção acadêmica terá, como ano da produção, data de criação, status e tipo de produção. Ha duas categorias para as produções no SAPI; 2. Tabela Produções Lattes e tabela Produções Não Lattes: As produções Lattes possuem atributos de produção, por exemplo, titulo, ano, âmbito, etc; 3. Tabela Atributo Produção: Guarda os atributos das Produções Lattes e Produções Não Lattes. Os atributos seguem uma estrutura de tabela organizacional hierárquica para os atributos das produções, para uma melhor análise e processamento; 4. Tabela Atributo Produção: É responsável por definir quais são os atributos dos tipos de produções que vão ser visíveis para uma determinada produção; 5. Tabela Atributo Tipo Produção: Ela é responsável por reunir as características mais comuns do atributo do tipo de produção, pois o nome do atributo é encontrado na tabela Atributo; 6. Tabela Tipo Produção: Pois ela define quais são os tipos de produções, possuindo um relacionamento com a tabela Produção demonstrando que para cada produção cadastrada existe um tipo de produção relacionada a ela; 7. Tabela Atributo Tipo Produção Prod: Que é uma tabela fraca de ligação que relaciona um atributo para cada tipo de produção; 8. Tabela Usuário: Os autores das produções cadastradas na tabela Produção são referenciados na tabela Usuário, ela reúne todas as informações pertinentes para um docente que realiza um relacionamento com a tabela Docente e juntamente com a tabela Docente Produção que juntas identificam as produções pertencentes para um determinado docente; 9. Tabela Grupo Usuário e tabela Grupo: Permite a criação de grupos de docente. 23 Figura 2. Modelo de Dados do SAPI 2.0 Fonte: SAPI versão 2.0 (2012). 2.2 MINERAÇÃO DE TEXTO Para Barion e Lago (2008, p. 01), mineração de textos também é conhecida como Descoberta de Conhecimento em Textos (Knowledge Discovered in Texts - KDT) refere-se ao processo de extração de informação útil (conhecimento) em documentos de textos não estruturados. Barion e Lago (2008, p. 02), ainda complementam dizendo que apesar da evolução dos Sistemas Gerenciadores de Banco de Dados (SGBD), os mesmos não possuem suporte para tomadas de decisões, tornando-se impossível a extração de conhecimento útil. Muitas técnicas foram desenvolvidas com o objetivo de auxiliar na extração de informação útil, implícitas nas bases de dados, dando origem á chamada Descoberta de Conhecimento em Banco de Dados (Knowledge Discovered in Databases - KDD). Seguno Aranha (2007, p. 01), numa visão geral um processo de mineração de textos contém quatro macros etapas: 1. Coleta: Tem por objetivo a coleta das informações que vão compor a base textual de trabalho. 24 2. Pré-processamento: É responsável por obter uma representação estruturada dos dados, geralmente no formato de uma tabela atributo-valor. Essa tabela atributo-valor que representa os documentos tem como característica principal valores dispersos dos dados e uma alta dimensionalidade. Essas características são inseparáveis de problemas relacionados ao processo de mineração de texto (MT), pois cada palavra presente nos documentos pode ser um possível elemento do conjunto de atributos dessa tabela atributo-valor. Após os documentos serem organizados em um formato adequado, é possível aplicar técnicas de extração de conhecimento utilizando sistemas de mineração de dados ou se os documentos estiverem organizados num formato de tabela atributo-valor, poderá ser aplicados métodos de recuperação da informação (RI). 3. Indexação: Método de recuperação da informação (RI), para aumentar o desempenho do processo de mineração de texto (MT). 4. Análise da informação: Descobrir padrões úteis e desconhecidos presentes nos documentos. A seguir serão apresentadas as seguintes seções: Sistemas de descoberta de conhecimento em textos e Processamento de linguagem natural (PLN). 2.2.1 Processamento da Linguagem Natural (PLN) “O Processamento de Linguagem Natural (PLN) é um campo da ciência que abrange um conjunto de métodos formais para analisar textos e gerar frases em um idioma humano”. (ARANHA, 2007, p.01). As duas técnicas de processamento da linguagem natural apresentadas a seguir: tokenização e normalização, são fundamentais para este trabalho, pois elas informam como poderá ser feita a manipulação e tratamento de textos para a resolução do problema. 2.2.1.1 Tokenização Para Aranha (2007, p.05), a tokenização é a primeira parte da etapa de préprocessamento de um texto. Nele, o texto é representado por uma sequência de caracteres agrupados em um primeiro nível, podendo ser interrompida por caracteres primitivos por exemplo, espaço em branco (“ ”), virgula (,), ponto (.), etc. Aranha (2007, p.05) relata que cada grupo de caractere definido no primeiro nível é chamado de token. A sequência desses grupos, por sua vez, é chamada de tokenstream. 25 Considerando uma nova análise, os grupos de caracteres já definidos na primeira parte, como os delimitadores se tornam tokens, o único caractere descartado é o espaço em branco. Vejamos um exemplo de tokenização, de como ficaria a disposição das palavras de uma frase, cada palavra ou caracter dentro de colchetes significa um token. É apresentada a seguinte frase : “O jogador, que está de camisa verde, marcou o gol da vitória”. “[O] [jogador] [,] [que] [está] [de] [camisa] [verde] [,] [marcou] [o] [gol] [da] [vitória] [.]”. (ARANHA, 2007, p.06). Segundo Aranha (2007, p.06), o resultado deste processo é uma sequencia de palavras intercaladas por espaço e algumas vezes por símbolos delimitadores. Apenas com esse processo de tokenização já é possível aplicar o processo de indexação para recuperação de informações. Dessa forma podemos separar as palavras de maior significado da frase e analisá-las, com isto podemos ter um ganho em desempenho não analisando palavras de pouco significado na frase. 2.2.1.2 Normalização Segundo Aranha (2007, p.06), é uma técnica para eliminar as diversas representações de um mesmo conceito. Por exemplo, a palavra “livro” e “livros” (plural), ou LIVRO e livro (maiúscula e minuscula), ou análise e ANALISE (maiúscula e minúscula e sem acento e com acento). O processo de normalização propõe que estas duas formas sejam agrupadas, indicando para a análise elas tenham o mesmo significado. A normalização é uma aproximação de conceitos, ou seja, os lexemas (sequencia de caracteres que pode conter qualquer caractere incluindo o espaço (“ ”). 2.2.2 Retirada de StopWords Wives (2002, p.52), cita que existem palavras presentes em um texto que é utilizado com objetivo de conectar as frases. Essas pertencem a classes de palavras cuja finalidade é auxiliar a estruturação da linguagem (conjunções, preposições, artigos, advérbios), não necessita ser incluídas na estrutura de um texto. Segundo Korfhage (1997 apud WIVES, 2002, p.53), Todas essas palavras, consideradas sem valor para a busca, devido a sua natureza frequênte ou semântica são denominadas palavras negativas (ou stopwords). Essas palavras dificilmente são utilizadas em uma consulta, pois sua indexação somente tornaria o índice maior do que o necessário. 26 Weber (2005), cita exemplos de palavras da língua portuguesa como artigos e preposições, por exemplo, “um”, ”uma”, “desde”, “de”, etc. As stoplists são listas de stopwords, e existem padrões para os principais idiomas, por exemplo, no Quadro 1 e Quadro 2. A à agora ainda alguém algum alguma algumas alguns ampla amplas amplo amplos ante antes da daquele daqueles fosse fossem grande grandes há isso isto já la la lá lhe muitas tenha ter teu teus ti todo ao aos após aquela aquelas aquele aqueles aquilo as até através cada coisa coisas com como contra contudo lhes lo mas me mesma mesmas mesmo mesmos meu meus minha minhas muita tido tinha tinham toda todas vir das de dela delas dele deles depois dessa dessas desse desses desta destas deste deste destes deve devem muito muitos na não nas nem nenhum nessa nessas nesta nestas ninguém no todos tu tua tuas tudo vos Quadro 1.StopWords em português Fonte: Stanley (2008) devendo dever deverá deverão deveria deveriam devia deviam disse disso disto dito diz dizem do dos e é nos nós nossa nossas nosso nossos num numa nunca o os ou outra últimas último últimos um última vós ela elas ele eles em enquanto entre era essa essas esse esses esta está estamos estão estas estava outras outro outros para pela pelas pelo pelos pequena pequenas pequeno pequenos per últimas último últimos um todavia vindo estavam estávamos este estes estou eu fazendo fazer feita feitas feito feitos foi for foram perante pode pôde podendo poder poderia poderiam podia podiam pois por porém porque posso pouca poucas uma umas uns vendo ver vez pouco poucos primeiro primeiros própria próprias próprio próprios quais qual quando quanto quantos que quem são se seja sejam sem sempre sendo será serão seu seus si sido só sob sobre sua suas talvez também tampouco te tem tendo 27 behind being below besides better between beyond both but by can certain could do does during each else enough even ever few for from further get going got great has have he her here high his how however i if in instead into is it its itself just later least less less let little many may maybe me might more most much must neither never new no non nor not nothing of off often old on once one only or other our out over perhaps put rather really set several she should since snot snt so some something sometimes soon still such t than that the their them then there therefore these they thing this those though three through till to together too toward towards two under up upon us very very was were what when where whether which while whole whose will with within without would yet you your Quadro 2. StopWords em inglês Fonte: Stanley (2008) 2.3 MODELOS DE RECUPERAÇÃO DE INFORMAÇÕES “Recuperação de informação é uma subárea da ciência da computação que estuda o armazenamento e recuperação automática de documentos, que são objetos de dados, geralmente textos.” (CARDOSO, 2005, p. 01). Um sistema de Recuperação de Informação pode ser também chamado de (SRI). Segundo Wives (2002), o texto é composto por palavras que são consideradas os atributos dos textos, e elas que distinguem um texto de outro. O casamento textual é feito por palavras, e com isso a verificação de texto relevante é feita a se retornar documentos semelhantes. 28 Segundo Chen (1994 apud WEBER, 2005), a comparação de palavras em documentos nem sempre retorna um grau de similaridade aceitável, recuperando assim objetos dos mais diversos conteúdos. A seguir é apresentado o modelo conceitual booleano de recuperação de informação. 2.3.1 Modelo booleano O modelo conceitual booleano segundo Rijsbergen (1979 apud WIVES, 2002, p.37), considera os documentos como sendo conjuntos de palavras e possui esse nome por manipular e descrever esses conjuntos através de conectivos de boole (and, or e not). As expressões booleanas unem descrevem intersecções e retiram partes de um conjunto. Por exemplo, segundo Wives (2002, p.38), em um sistema de comparação de palavras (elementos), o sistema analisa o texto (conjunto) em questão retornando um conjunto resultante. Assim o texto que possui interseção com o outro texto (mesmas palavras) é retornado. Wives (2002, p.38), cita que existe uma série de operadores que o sistema pode utilizar para definir sua análise. Os operadores mais comuns são o “and” (união), “or” (interseção) e o “not” (exclusão ou negação). Neste caso, o modelo pode ser compreendido de outra forma, onde o conjunto de textos relevantes à análise é o conjunto de textos que satisfaz as restrições especificadas na análise. Um problema do modelo booleano segundo Wives (2002, p.38) é ele não ser capaz de identificar a importância de um termo em um texto, ou seja, se um termo está presente em um documento ele é considerado muito importante. Porém, o fato de uma palavra constar em um documento não significa que ela seja significativamente importante para o texto. Wives (2002, p.38) ainda cita que palavras são utilizadas para ligar frases (conjunções) que não são relevantes para análise de texto, ao contrario existe palavras que dão sentido ao texto e que são extremamente importantes (palavras em títulos, por exemplo). O modelo booleano não leva em conta nenhum destes casos, considerando relevantes os textos que possuem as mesmas palavras. 2.3.2 Modelo da busca direta O modelo de busca direta é denominado modelo de busca de padrões e utiliza métodos de busca de termos ou expressões regulares para localizar palavras relevantes em um texto. A análise de comparação é realizada diretamente nos textos originais, em tempo de execução onde o resultado é a localização de todas as palavras relevantes. (WIVES, 2002) 29 Segundo (FRAKES, 1992 apud WIVES, 2002) esta técnica é chamada de string search e ela é usada em casos onde a quantidade de texto a ser analisado é pequena, segundo Wives (2002) não a necessidade de utilização de índices e etapas de normalização, mesmo tendo o tempo compensado nas análises de texto que se tornam mais rápidas. Ela é utilizada, por exemplo, em softwares que se possam localizar palavras ou expressões no texto. 2.4 MEDIDAS BÁSICAS DE AVALIAÇÃO E EFICIÊNCIA DE SISTEMAS A seguir serão apresentadas duas medidas de avaliação e eficiência de sistemas, precision e recordação. Aranha (2007), cita que precisão (precision) e recordação (recall), são as medidas básicas usadas na avaliação de eficiência de sistemas tanto para busca quanto para aprendizado. A busca do tipo precisão é usada quando se sabe exatamente o que quer. A busca do tipo recordação é usada quando não se sabe o que se quer e precisa-se fazer uma exploração, ou seja, retornar documentos relevantes e não relevantes para o problema, para então decidir que documentos são pertinentes e os não pertinentes. 2.4.1 Recordação Para Lancaster (1968 apud WIVES, 2002), recall (abrangência) mede a habilidade do sistema em recuperar os documentos, mais relevantes para o usuário. Ele mede a quantidade de itens relevantes, dentre os existentes na base de dados, que foram recuperados. Mas, o sistema ou usuário que esta avaliando o resultado deve saber quantos documentos relevantes a sua consulta existem na base de dados, esta informação pode ser conhecida estatisticamente. Equação 2 Segundo Wives (2002, p.72), Para que sistemas diferentes possam ser comparados deve-se adotar uma seleção especifica para testes e comparações, onde as classes de documentos são conhecidas a priori. Deste modo, identificam-se quantos documentos o sistema conseguiu recuperar para cada classe e quantos ele deveria ter recuperado. Assim a métrica pode ser aplicada. 30 2.4.2 Precisão Segundo Lancaster (1968 apud WIVES, 2002, p.72), Precision mede a habilidade do sistema em manter os documentos irrelevantes fora do resultado de uma consulta. O usuário indica quantos documentos recuperados são relevantes para ele e o SRI pode calcular a quantidade de documentos recuperados que são relevantes. Equação 3 Wives (2002), cita que a precisão indica o esforço que o usuário teria para analisar o resultado de uma determinada busca. Isso significa que, se 60% dos itens retornados fossem relevantes, o usuário teria desperdiçado 40% de seu esforço analisando itens não relevantes. Então, quanto maior a precisão, menor o esforço do usuário em analisar itens. “Portanto, a precisão pode ser utilizada nas iterações do usuário com o sistema para indicar o quanto ainda o usuário necessita iterar para conseguir filtrar os itens irrelevantes e retornar itens mais relevantes”. (DOYLE, 1975 apud WIVES, 2002, p.72). Segundo Aranha (2007, p.05), tecnicamente a busca Precisão tende a retornar poucos documentos e a busca Recordação a retornar muitos documentos. Um sistema de aprendizado orientado a precisão dificilmente comete erros, porém demora a aprender novos lexemas. Um sistema voltado à recordação tende a memorizar mais conhecimento com menos documentos, porém pode cometer mais erros. Aranha (2007, p.05), cita que na pratica, existe um contrapeso entre precisão e recordação. Ao maximizar a precisão perdesse recordação. Ao maximizar recordação perde-se precisão. Se retornarmos todos os documentos maximizamos a recordação e minimizamos precisão. Se recuperarmos só um documento, correto, maximizamos precisão e minimizamos recordação formando uma estreita visão da base. 2.5 MÉTRICAS DE SIMILARIDADE TEXTUAL Nesta etapa do trabalho será apresentada uma breve explicação das métricas de similaridade textuais mais relevantes para este TTC e suas principais características. São elas: (i) Distância de Levenshtein; (ii) Distância do Cosseno. As métricas de similaridade textual permite a comparação entre dois textos, definindo o grau de similaridade que definirá o quão similar é um texto do outro. 31 2.5.1 Distancia de Levenshtein Segundo Oliveira (2010) o algoritmo Levenshtein Distance foi criado pelo Cientista russo Vlademir Levenshtein em 1966. A distância de Levenshtein (1966) ou distância de edição é obtida através do numero mínimo de operações, ou seja, inserções, eliminação ou substituição de caracteres necessários para transformar um texto em outro. Oliveira (2010) ainda escreve que a partir da quantidade total de caracteres dos textos comparados é montada uma matriz (m, n), onde serão inseridos os custos de cada operação, geralmente, cada operação possui custo 1, ou seja, para cada operação executada há mais, será somado 1 no total de operações de edição. Ao final das comparações, a distância é dada pela ultima posição da matriz. A matriz pode ser preenchida a partir do canto superior esquerdo para o canto inferior direito. Cada salto horizontal significa uma inserção ou uma substituição, cada salto vertical significa uma exclusão e cada salto vertical significa uma equivalência. É apresentada na Figura 3, a matriz utilizada pelo algoritmo da Distância de Levenshtein, para exemplificar a transformação da palavra “levenshtein” em “meilenstein” e na Figura 4, é mostrado um passo a passo da transformação de uma palavra para outra. Para maiores informações é apresentado no APÊNDICE A, o algoritmo da Distância de Levenshtein. Legenda: "=" Equivalente; "o" Substituição; "+" Inserção; "-" Exclusão. 32 Figura 3. Matriz Distância de Levenshtein Fonte: Levenshtein.net (2012) Figura 4. Passo a passo Distância de Levenshtein Fonte: Levenshtein.net (2012) 2.5.2 Distância do Cosseno Similaridade cosseno é uma medida de similaridade entre dois vetores medindo o cosseno do ângulo entre eles. O cosseno de 0 é 1, e menos de 1 por qualquer outro ângulo, o valor mais baixo do cosseno é -1. O cosseno do ângulo entre dois vetores é determinado quando dois vetores são apontados na mesma direção. (GARCIA, 2006). Este é frequentemente usado para comparar documentos em mineração de textos . Além disso, é usado para medir a coesão no interior de grupos no domínio da extração de dados. O cosseno de dois vetores pode ser facilmente derivado, usando o produto da fórmula Euclidiana: (GARCIA, 2006). Equação 4 33 Dado dois vectores de atributos, A e B, onde a similaridade do cosseno, θ, é representado por um produto como: Equação 5 “Para normalizar o A • B que dividi pela distância euclidiana entre A e B, ou seja, A • B / (| A | | B |). Este raciocinio define o ângulo entre os vetores de cosseno, com valores entre 0 e 1.” (GARCIA, 2006). Garcia (2006), descreve as variaveis da Equação 6: Símbolo sigma significa "a soma"; Q é uma consulta; D é um documento relevante para Q; W são pesos. N como número de documentos em uma coleção; n como o número de documentos que contenham um termo de consulta. Equação 6 “Esta relação é utilizada como uma medida de semelhança entre quaisquer dois vetores que representam documentos, consultas, fragmentos ou a combinação destes.” (GARCIA, 2006). Para maiores informações no APÊNDICE A, consta o algoritmo da cosine similaryte que será feito uma breve explicação para melhor entendimento do leitor. O algoritmo da cosine similaryte mede a distância do cosseno entre dois textos, veja como segue o desenvolvimento do algoritmo: No algoritmo é passado por parametro dois textos a serem comparados; 34 Os textos são processados e transformados em tokens e guardados em uma estrutura de lista; Adiciona a lista de tokens em outra estrutura de dados chamado HashSet, que possui a abilidade de não repetir tokens dentro da estrutura; Guarda o tamanho do HashSet que possui a lista de tokens do primeiro texto avaliado. Repetece o processo do item 2 até o item 4. Depois de realizar o mesmo processo com o segundo texto, possui-se dois HashSet, duas variáveis guardando os tamanhos de cada HashSet. O próximo passo é descobrir o tamanho do HashSet resultante: Adicionando o segundo HashSet no primeiro HashSet, como uma das caracteristicas do HashSet é de não repetir objetos iguais, será retornado um HashSet resultante que nos dará o tamanho resultante entre os dois textos; Agora retira-se a quantidade dos termos em comum, atravez de uma fórmula matemática. Aplica-se a fórmula da cosine similaryte. 2.6 BIBLIOTECA SIMMETRICS Segundo Weber (2005, p.29), a bilbioteca SimMetrics é um projeto desenvolvido pelo grupo de processamento de linguagem natural do departamento de Ciência da Computação na Universidade de Sheffield, a biblioteca de código aberto com licença GPL(General Public License) pode ser encontrada no repositório sourceforge.net. Será apresentado alguns conceitos de métricas de similaridade presentes na biblioteca SimMetrics. 1. Hamming distance: “Define a diferença de bits entre palavras, ou seja, o numero de bits que devem ser alterados para que os dois textos se tornem idênticas. Esta técnica não esta incluída na biblioteca”; (WEBER, 2005, p.29). 2. Levenshtein Distance: “A distancia é calculado considerando o esforço mínimo de transformação de uma string por outra”; (WEBER, 2005, p.29). 3. Needleman-Wunch distance ou Sellers Algorithm: “É um algoritmo baseado no anterior, contudo sofrendo ajustes em variáveis”; (WEBER, 2005, p.29) 4. Smith-Waterman distance: Segundo Smith (1981), este algoritmo foi desenvolvido para identificar algoritmos ótimos de DNA e seqüências de proteínas; 35 5. Gotoh ou Smith-Waterman-Gotoh distance: É a implementação do algoritmo escrito por Smith Waterman e é encontrado na referência Gotoh (1981); 6. Block Distance ou L1 distance ou City Block distance: “Esta métrica é um cálculo baseado em vetores e dados pela formula”. (WEBER, 2005, p.30), apresentada na Equação 6: Equação 6 7. Monge Elkan distance: Este algoritmo amplia o algoritmo de Gotoh (1981), com mais campos de avaliação e possui uma complexidade de tempo quadrática. Melhor descrição sobre este algoritmo pode ser encontrado em Monge (1996). 8. Jaro distance metric: Especificações sobre esta métrica de distância de Jaro pode ser encontrada em Jaro (1989). 9. Jaro Winkler: Segundo Weber (2005) é uma modificação da métrica anterior; 10. Matching Coefficient: Weber (2005) cita que esta métrica trabalha com um vetor simples de termos; 11. Jaccard Similarity or Jaccard Coefficient or Tanimoto coefficient: “O algoritmo de Jaccard, utiliza o conjunto de palavras para avaliar a comparação de similaridade. Este algoritmo é utilizado para comparar similaridade de composições químicas”; (WEBER, 2005, p.30). 12. Overlap Coefficient: “Esta é uma métrica onde se um valor de X está contido em Y ou vise versa, a similaridade é um valor cheio”; (WEBER, 2005, p.31). 13. Euclidean distance or L2 distance: “Este utiliza o calculo “euclidiano” em vetores para definir as distancias entres os termos do vetor”; (WEBER, 2005, p.31). 14. Cosine similarity: Este algoritmo separa as strings em vetores, e compara os termos similares, para calcular a similaridade entre os vetores de termos. Melhor descrição sobre esta métrica, pode ser encontrado em Cosine similarity. 36 As métricas de Levenshtein e Cosine similarity apresentadas acima são relevantes para a realização deste trabalho, pois foram desenvolvidas para trabalha com conceitos de similaridade textual, o qual é o foco deste trabalho. 2.7 ANÁLISE DE TRABALHOS SIMILARES Foram realizadas pesquisas na Internet com o objetivo de encontrar módulos de sistemas similares ao proposto neste trabalho. A partir desta pesquisa foram encontrados quatro sistemas para a realização de uma comparação com o módulo proposto. São eles: (i) ScriptLattes; (ii) Análise de redes de colaboração entre pesquisadores; (iii) Análise das áreas de interesse dos pesquisadores; (iv) Remoção de ambiguidade das autorias de objetos bibliográficos. Os quatro sistemas analisados utilizam técnicas de tratamento de texto e métricas de similaridade, a partir disto realizam as análises e processamentos textuais em comparação com a base de dados, para identificar as produções similares ou resolver o problema proposto por cada trabalho. 2.7.1 ScriptLattes O principal trabalho encontrado é a ferramenta ScriptLattes (Chalco e Cesar Junior, 2009). O foco da ferramenta ScriptLattes consiste em utilizar o Currículo Lattes como base de dados para a geração de relatórios no formato HTML tratando as suas coautorias e similares, segundo Chalco e Cesar Junior (2009), permite a criação automática de grafos (redes) de coautoria entre os membros do grupo e um mapa de geolocalização dos membros e alunos (de pós-doutorado, doutorado e mestrado) com orientação concluída. As principais características da ferramenta para este trabalho é um módulo de tratamento de redundâncias que permite a detecção de produções acadêmicas iguais ou similares. Assim, dois ou mais membros são considerados coautores, se existe uma produção comum entre eles. Chalco e Cesar Junior (2009) citam para isso as produções similares são detectadas através de comparações entre todas as produções separadas por ano e tipo de produção (por ex., artigo publicado em periódico ou capitulo de livro), de tal forma produções com ano de publicação diferente não seja utilizada em nenhuma comparação, permitindo assim uma diminuição de tempo de processamento do módulo. Segundo Chalco e Cesar Junior (2009) o módulo de redundâncias da ferramenta ScriptLattes utiliza o método do casamento de atributos associados a cada cadastro de produções. Para a ferramenta duas publicações são consideradas iguais se a porcentagem de 37 similaridade entre os títulos for maior que a determinada pela ferramenta, no entanto os autores não explicitam qual a taxa de similaridade utilizada. A métrica de similaridade é obtida através da distancia de Levenshtein (1966) para determinar a distancia de uma cadeia de caracteres. A distancia de Levenshtein (1966) é calculada com base no numero mínimo de edições de caracteres para transformar um texto em outro. 2.7.2 Análise de Redes de Colaboração entre Pesquisadores O segundo sistema pesquisado é um sistema para análise de redes de pesquisa baseado na Plataforma Lattes. Foi desenvolvido como uma extensão da ferramenta ScriptLattes. Tem como atividade principal do projeto segundo Farias, Vargas e Borges (2011) a especificação e desenvolvimento de um componente de software capaz de extrair a produção científica do currículo Lattes do docente, analisar os dados capturados e visualizar graficamente as redes de colaboração entre pesquisadores, apresentando algumas melhorias em relação a ferramenta ScriptLattes por exemplo: (i) permitir ao usuário alterar a disposição dos vértices e arestas, (ii) listar as publicações em comum a dois pesquisadores, (iii) visualizar as múltiplas representações de cada publicação, (iv) avaliar a identificação de referencias bibliográficas duplicadas. A principal característica desta ferramenta para este TTC é o processo de análise dos dados extraídos do currículo Lattes dos docentes, é onde ocorre o tratamento das coautorias. Esta ferramenta utiliza o mesmo algoritmo do ScriptLattes e métrica de similaridade a distancia de Levenshtein (1966). 2.7.3 Análise das Áreas de Interesse dos Pesquisadores O terceiro trabalho pesquisado busca identificar áreas de atuação do pesquisador a partir da análise do currículo Lattes armazenando estas informações em um banco de dados. Segundo Ribeiro Junior, Borges, Lichtnow, Loh e Saldaña (2005) para isso, são aplicadas técnicas de recuperação de informação e descoberta de conhecimento textual, sobre o conteúdo armazenado em um documento XML. Ribeiro Junior, Borges, Lichtnow, Loh e Saldaña (2005) citam que o presente trabalho utiliza o modelo vetorial para representar internamente as áreas existentes em um conjunto de termos associados, sendo que para cada termo é dado um peso (valor numérico) que determina o grau de afinidade que um determinado termo possui com outro. 38 Conforme os autores, para verificar a afinidade de um documento em relação a um conceito é construído um vetor com os termos presentes no documento (são retiradas as stopwods – termos muito frequentes como preposições). Para cada termo do documento é gerado um valor mediante o cálculo da frequência relativa do termo (numero de vezes que o termo aparece no documento dividido pelo numero de termos presentes no documento). É então realizado o produto dos pesos dos termos que estão presentes no vetor do documento pelos pesos dos termos comuns existentes no vetor de uma área. A soma deste produto determina a similaridade do documento em relação aos conceitos presentes na ontologia (coleção de áreas de interesse) de domínio onde estão definidas as possíveis áreas de interesse. 2.7.4 Remoção de ambiguidade das autorias de objetos bibliográficos O quarto trabalho pesquisado apresenta uma estratégia que possibilita a identificação de várias formas de nomes de autores em repositórios de bibliotecas digitais. Segundo os autores, esta estratégia utiliza funções de casamento de padrão e técnicas de recuperação de informação, associadas a um algoritmo de agrupamento (clustering). O resultado é um arquivo de autoridade (Auld, 1982), na forma de um índice unificado, que tem a finalidade de manter a correspondência entre diferentes formas permissíveis de nomes de autores. Oliveira, Laender, Gonçalves (2005) citam que o arquivo de autoridade apresenta a forma mais representativa de nomes dos diferentes autores, para cada um deles, os objetos bibliográficos de sua autoria contidos no repositório. A partir de um índice unificado é possível identificar quais são as obras contidas no repositório de uma biblioteca digital de autoria de um mesmo autor independentemente da forma como o seu nome está registrado. Segundo Oliveira, Laender, Gonçalves (2005) a estratégia para a etapa de análise de dados consiste em uma função para casamento de padrões que comparam os nomes dos autores contidos no índice de autoria. Só serão considerados candidatos a representar um mesmo autor, casamentos entre dois nomes de autores que alcançarem um determinado limite arbitrário de similaridade, então o par é associado formando um grupo. Um nome de autor ou grupo também poderá ser comparado a outro grupo. Segundo os autores, os autores utilizam três funções para casamento de padrão: o casamento exato de padrão, que considera dois nomes como candidatos apenas se sua grafia for idêntica, a distância de edição (1966), na qual é contabilizado o número de edições de uma cadeia de caracteres comparada à outra cadeia de caracteres, e a comparação de fragmentos, 39 que compara individualmente, através de distância de edição, cada fragmento delimitado por espaço em branco nas cadeias de caracteres normalizadas, considerando também o casamento entre iniciais e nomes por extenso e ignorando a ordem em que os fragmentos aparecem nos nomes. Oliveira, Laender, Gonçalves, (2005) utilizaram técnicas derivadas da área de recuperação de informação para determinar o grau de similaridade entre títulos, veículos de publicação e coautores de trabalhos. Os autores definiram o casamento exato de padrão, quando há veículos de publicação disponíveis através de suas siglas, da mesma forma para informações adicionais como datas. Quando há disposição de informações escritas por extenso, utilizamos para a determinação do grau de similaridade os métodos: (i) medida do cosseno (Baeza-Yates & Ribeiro-Neto; 1999; Salton, 1988), (ii) coeficiente de Jaccard (Salton, 1988). Para coautores utilizaram a comparação por fragmentos. Será apresentado na Tabela 2, um comparativo entre os trabalhos pesquisados, serão comparados as técnicas de, comparação textual, recuperação de informação, também serão comparados as fontes de dados e métodos de tratamento textual utilizados nos trabalhos pesquisados. Tabela 2. Comparativo entre trabalhos pesquisados. ScripLattes Análise de Redes Colaboração entre Pesquisadores Análise das Areas de Interesse dos Pesquisadores Remoção de ambiguidade das Autorias de objetos Bibliográficos Distância de Levenshtein Currículo Lattes Limiar de Similaridade Recuperação de Informação Modelo Vetorial StopWords Clustering Casamento de Padrões Comparação entre Fragmentos X X X X X X X X X X X X X X X X X X Ao analisar estes trabalhos percebe-se que: (i) O currículo Lattes é utilizado como fonte de informações em diferentes trabalhos que extrai conhecimento através deste. (ii) A 40 distancia de Levenshtein é o algoritmo de similaridade mais usado entre os trabalhos pesquisados. (iii) O modelo espaço vetorial é útil para comparação de fragmentos de documentos, seu aproveitamento para comparação de atributos como títulos de trabalhos ou nomes de eventos. (iv) Foram apresentadas outras métricas de similaridade, mostrando uma visão mais ampla de algoritmos de similaridade que trabalham com informações textuais. 41 3 DESENVOLVIMENTO Esta etapa visa apresentar os requisitos funcionais do módulo SapiSim, os requisitos não funcionais e regras de negócio, também será apresentado as fórmulas de similaridade descrevem a forma utilizada para se obter coautoria. Foram desenvolvidos diagramas de classe da UML e diagramas de classe das Telas para uma melhor especificação do módulo. Com eles pode se ter uma melhor visão da disposição das classes e métodos e atributos. Um caso de uso foi desenvolvido descrevendo toda a sua tarefa e também são apresentadas as telas do módulo SapiSim que foram desenvolvidas para uma visão geral da interface e por fim será apresentado dois estudos de caso que apresentão uma análise dos resultados obtidos pelo algoritmo do módulo SapiSim. 3.1 DESCRIÇÃO GERAL DO SAPISIM O SapiSim é um módulo de processamento desenvolvido para o sistema SAPI 2.0 da UNIVALI, para identificar coautoria entre duas produções científicas acadêmicas. 3.2 REQUISITOS FUNCIONAIS A seguir são especificadas as tarefas que o módulo realizou, durante o seu desenvolvimento no TTC II. São elas: RF01 – O sistema deverá realizar a identificação automática e monitorada (ver RF3) de Coautoria nas produções científicas importadas do currículo lattes dos docentes; RF02 – O sistema deverá permitir ao usuário visualizar a lista de produções que foram identificadas automaticamente; RF3 – O sistema deverá permitir ao usuário confirmar ou rejeitar a lista de produções cuja Coautoria depende de sua intervenção (Identificação Monitorada). 3.3 REQUISITOS NÃO FUNCIONAIS Agora serão apresentadas as especificações de desenvolvimento do sistema do módulo, que foram utilizados, durante o seu desenvolvimento no TTC II. São elas: RNF01 - O módulo SapiSim somente poderá ser acessado pelo sistema SAPI 2.0. RNF02 - O módulo SapiSim deverá ser desenvolvido utilizando a linguagem de programação JAVA. 42 RNF03 - Usar paradigma orientação a objetos. RNF04 – Usar conceito RIA. RNF05 - O módulo SapiSim deverá ser desenvolvido com o framework HIBERNATE para persistência e recuperação de objetos JAVA na base de dados do SAPI 2.0. 3.4 REGRAS DE NEGÓCIO Agora serão especificadas as regras de funcionamento do módulo SapiSim, estas regras são muito importantes, pois são elas que definem, por exemplo, como foi inicializado o módulo ou como saber se a produção é coautora ou não e até mesmo de como foi realizado uma tarefa. São elas: RN 1 - A identificação da Coautoria das produções será realizada no momento que o docente importa seu currículo Lattes para o SAPI. RN 2 - Serão consideradas para análise apenas produções novas, ou seja, que estão sendo inseridas no SAPI no momento da importação. RN 3 - A identificação da Coautoria pode ser Automática ou Monitorada o Identificação Automática – O grau de similaridade entre os atributos de duas produções, atinge uma porcentagem pré-estabelecida (chamado de LIMITE SUPERIOR), criando uma associação definitiva entre as duas produções (limite será estipulado no TTC II). o Identificação Monitorada – O grau de similaridade entre os atributos de duas produções, atinge uma porcentagem pré-estabelecida entre os limites chamados de “LIMITE INFERIOR” e limite “LIMITE SUPERIOR”, criando uma associação a ser confirmada pelo ““USUÁRIO VALIDADOR””, entre as duas produções (limites que serão definidos no TTC II). RN 4 - O LIMITE INFERIOR e SUPERIOR são valores não fixos pré-estabelecidos pelo administrador do sistema SAPI. RN 5 - A FÓRMULA DE SIMILARIDADE compara duas produções depende do tipo da produção e está definida no tópico (3.4.1 Formula de Similaridade). RN 6 - Serão candidatas à análise de similaridade apenas produções dos tipos: Participação em Bancas, Projetos de Pesquisa, Artigos em Periódicos, Livros e Capítulos de livros e Artigos em Eventos. 43 RN 7 - As produções do próprio docente não serão candidatas à análise de similaridade. RN 8 - Para a identificação de Coautorias apenas serão candidatas produções do mesmo tipo, mesmo ano, já presentes na base do sistema SAPI 2.0. 3.5 CÁLCULO DA SIMILARIDADE Neste tópico será apresentado fórmulas para calcular a similaridade entre duas produções científica no módulo SapiSim. O cálculo da similaridade foi separado em tipos de produções: (i) Periódico; (ii) Evento; (iii) Capítulo de Livro; (iv) Livro; (v) Participação em Banca; e (vi) Projeto de Pesquisa. Cada tipo de produção possui os seus respectivos atributos, dos quais foi feita uma FÓRMULA DE SIMILARIDADE ponderada para determinar a similaridade entre duas produções. Foram desenvolvidas varias fórmulas de similaridade porque cada tipo de produção apresenta os principais atributos para a aplicação da fórmula de uma forma diferente, tanto nas informações quanto em número (quantidade) de atributos. Outro motivo que levou o desenvolvimento das formulas separadamente é poder ajustar os pesos dos atributos individualmente para cada tipo de produção não dependendo do outro, se houver uma mudança em seus pesos. Legenda: DL: Distancia de Levenstein. PN: Produção Nova. C: Produção Candidata. Explicando PN e C e DL: PN – Produção Nova – São as novas produções importadas do currículo lattes do docente; C – Produção Candidata – São as produções já importadas e cadastradas no banco de dados e que serão buscadas para serem comparadas com as novas; DL – Distância de Levenshtein (1966) – Métrica usada para determinar a similaridade entre duas produções. 44 A seguir será exibida uma lista de fórmulas de similaridade organizadas por tipo de produção com seus respectivos atributos. Periódico o Atributos Titulo; Nome do periódico; Fórmula. DL( PN n titulo , C n titulo ) * 0,6 SimPer ( PN n , C n ) 100 Equação 7 DL( PN n nomePeriod ico , C n nomePeriod ico ) * 0,4 ( strlen ( PN n titulo ) strlen ( PN n nomePeriod ico )) Evento o Atributos Título; Nome do Evento; Fórmula; DL( PN n titulo , C n titulo ) * 0,6 Equação 8 DL( PN n nomeEvento, C n nomeEvento) * 0,4 SimEven( PN n , C n ) 100 ( strlen ( PN n titulo ) strlen ( PN n nomeEvento)) Capitulo de livro o Atributos Título do Capítulo; Título do Livro; Editora; Fórmula. DL( PN n tituloCapí tulo , C n tituloCapí tulo ) * 0,6 DL( PN n títuloLivr o, C n títuloLivr o) * 0,2 SimCapL( PN n , C n ) 100 DL( PN n nomeEditor a, C n nomeEditor a) * 0,2 ( strlen ( PN n tituloCapí tulo ) strlen ( PN n títuloLivr o) strlen ( PN n nomeEditor a)) Equação 9 45 Livro o Atributos Título; Editora; Fórmula. DL( PN n titulo , C n titulo ) * 0,6 DL( PN n nomeEditor a, C n nomeEditor a) * 0,4 SimL( PN n , C n ) 100 ( strlen ( PN n titulo ) trlen ( PN n nomeEditor a)) Equação 10 Participação em Banca o Atributos Título do Trabalho; Nome do Aluno; Fórmula. DL( PN n tituloTrab alho, C n tituloTrab alho ) * 0,6 DL( PN n nomeAluno , C n nomeAluno ) * 0,4 SimBan ( PN n , C n ) 100 ( strlen ( PN n tituloTrab alho ) trlen ( PN n nomeAluno )) Equação 11 Projetos de Pesquisa o Atributos Nome do Projeto; Nome do Autor; Fórmula. DL( PN n nome Pr ojeto , C n nome Pr ojeto ) * 0,6 DL( PN n nomeAutor , C n nomeAutor ) * 0,4 SimPP ( PN n , C n ) 100 ( strlen ( PN n nome Pr ojeto ) trlen ( PN n nomeAutor )) Equação 12 3.6 ALGORITMO DE COMPARAÇÃO DE PRODUÇÕES Este algoritmo demonstra como foi feito a comparação entre duas produções no módulo SapiSim. O sistema possui uma lista de produções novas, ou seja, produções que o 46 docente acabou de importar do seu currículo Lattes para SAPI 2.0, então cada produção nova será comparada com uma lista de produções candidatas que serão buscadas na base de dados filtrando-as por tipo de produção e ano de produção. Continuando, cada produção candidata da lista será comparada com a produção nova em questão e tentar determinar uma coautoria com alguma(s) produções presentes na lista de produções candidatas. Depois de ter verificado toda a lista de produções candidatas e retornado para a lista de produções novas, pegasse a próxima produção nova e recomeça todo o processo, este processo será realizado até a lista de produções novas chegar ao fim. Esta seção apresenta o apêndice C, onde exibe um algoritmo em pseud. código onde descreve a ideia geral do algoritmo desenvolvido no módulo SapiSim. 3.7 UM CASO PASSO A PASSO ENTRE DUAS PRODUÇÕES Neste tópico será exibido um passo a passo de um caso de comparação entre produções, simulando a execução do módulo SapiSim, exibindo as produções antes de serem tratadas e o resultado do tratamento de texto realizado, as porcentagens de similaridade entre as produções, identificando ou não uma coautoria. Este passo à passo será realizado para um melhor entendimento do leitor ao processo aplicado ao módulo SapiSim e melhor entendimento aos tratamentos textuais, podendo ser visualizado os resultados obtidos em tempo real de execução. A seguir serão exibidas na Tabela 3 duas produções acadêmicas do tipo “Trabalho Em Eventos” ilustrando dois atributos da mesma, o atributo “Titulo do Trabalho” e o atributo “Nome do Evento”, com seus respectivos donos o docente André Raabe e o docente Cesar Zeferino. Tabela 3. Comparação de produções cientifica entre dois docentes. Autor Título trabalho Nome Evento do do André Luis Alice Raabe Bipide: Ambiente de Desenvolvimento Integrado para Utilização dos Processadores BIP no Ensino de Programação XX Simpósio Brasileiro de Informática na Educação Cesar Albenes Zeferino Bipide: ambiente de desenvolvimento integrado para utilização dos processadore BIP no ensino de programação SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA EDUCAÇÃO - SBIE 2009, 20. No módulo SapiSim sempre existe a produção que esta comparando e a produção que esta sendo comparada. A produção que esta comparando é a do docente André Raabe e a produção que esta sendo comparada é a do docente Cesar Zeferino. No algoritmo do SapiSim primeiro são tratadas todas as produções que estão comparando e depois todas as produções 47 que então sendo comparadas. Será realizado o tratamento da produção do docente Raabe, antes de serem tratadas elas possuem o seguinte formato: Titulo do trabalho: Bipide: Ambiente de Desenvolvimento Integrado para Utilização dos Processadores BIP no Ensino de Programação Nome do Evento: XX Simpósio Brasileiro de Informática na Educação Então o SapiSim irá realizar o tratamento textual proposto neste trabalho nos atributos citados, e o resultado do seu tratamento será este: Titulo do Trabalho: BIPIDE AMBIENTE DESENVOLVIMENTO INTEGRADO UTILIZACAO PROCESSADORES BIP ENSINO PROGRAMACAO Nome do Evento: XX SIMPOSIO BRASILEIRO INFORMATICA EDUCACAO Este tratamento será guardado em memória para posteriormente comparar-se com as “produções candidatas”. A produção do docente Raabe neste caso representa uma produção “mandante”, e a do docente Zeferino representa a produção “candidata”. A seguir será realizado o tratamento textual dos atributos da produção do docente Zeferino, antes de serem tratadas elas possuem o seguinte formato: Titulo do Trabalho: Bipide: ambiente de desenvolvimento integrado para utilização dos processadores BIP no ensino de programação Nome do Evento: SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA EDUCAÇÃO - SBIE 2009, 20. Então o SapiSim irá realizar o tratamento textual proposto neste trabalho nos atributos citados, e o resultado do seu tratamento será este: Titulo de Trabalho: BIPIDE AMBIENTE DESENVOLVIMENTO INTEGRADO UTILIZACAO PROCESSADORES BIP ENSINO PROGRAMACAO Nome do Evento: SIMPOSIO BRASILEIRO INFORMATICA EDUCACAO – SBIE 2009 20 48 Este processamento será guardado em memória para posteriormente ser comparado com uma produção “mandante”. O próximo passo no SapiSim é retirar a similaridade entre os atributos das duas produções tratadas e determinar se é coautoria ou não. Foi realizada a similaridade entre os atributos tratados de mesmo nome de cada um dos docentes, por exemplo, Titulo do Trabalho da produção do docente Raabe e o atributo Titulo do Trabalho da produção do docente Zeferino, ponderando o seu resultado com peso de 0.9. O resultado de similaridade é 90 %, ou seja, alcançou 100 % na comparação parcial dos atributos. A seguir será realizada a mesma similaridade entre atributos tratados Nome do Evento e ponderando com um peso de 0.1. O resultado da similaridade entre os atributos Nome do Evento é 6,7, ou seja, alcançou mais de 50% da similaridade o que significa um resultado bom. Os resultados até agora exibidos foram parciais entre atributos, então para termos um resultado final basta somarmos os resultados das similaridades dos atributos que é 96,7%, ou seja, a soma da similaridade entre os atributos tratados atingiu 96,7% identificando uma coautoria da modalidade automática. Neste passo a passo podem ser visualizados os atributos das produções antes de serem tratados e depois de serem tratados, observando que o tratamento realizado sobre o texto eliminou varias diferenças entre os atributos, que se não fossem tratadas certeza reduziria a similaridade total encontrada, e para um pior caso não identificando uma coautoria. 3.8 DIAGRAMAS DE CLASSES Os diagramas de classes foram separados em camadas de funcionalidades, este tipo de modelagem foi adotado para uma melhor organização do conteúdo a ser apresentado. O módulo possui três classes e duas interfaces que pertencem ao sistema SAPI 2.0, são elas: ProduçãoDAO; Produção; DAO; JPAProducaoDAO; JPADAO . 49 A classe Produção foi configurada como abstrata, é mostrada no diagrama com o nome da classe em itálico, a interface ProduçãoDAO estende a interface DAO que é do tipo genérico. O módulo SapiSim possui 14 classes que foram desenvolvidas, são elas: JPAIdentificaCoAutoriaDAO; JPANormalizaçãoDAO; JPAStopWordsDAO; Copia; JPAComandDAO; JPANormalizacaoEStopWordsBancaDAO; JPANormalizacaoEStopWordsCapituloDeLivroDAO; JPANormalizacaoEStopWordsLivroDAO; JPANormalizacaoEStopWordsProjetoDePesquisa; JPANormalizacaoEStopWordsArtigoPublicadoDAO; JPANormalizacaoEStopWordsTrabalhoEmEventoDAO; AutMon; JPAFormulasSimilaridadeDAO; JPACalculoSimilaridadeDAO; JPAAutomaticoMonitoriaDAO. E 5 interfaces que foram desenvolvidas, são elas: NormalizacaoEStopWordsDAO; CoAutoriaDAO; FormulasSimilaridadeDAO; CalculoSimilaridadeDAO; AutomaticoMonitoriaDAO. O módulo foi separado em quatro pacotes, no qual cada um exerce uma funcionalidade que contribuirá para o todo. Os pacotes são: Controle; Tratador; Similaridade; Modelo. 50 O próximo tópico abordará os conceitos das classes dos pacotes da modelagem do projeto do módulo SapiSim. 3.8.1 Pacote Controle O pacote apresenta duas classes e uma interface, responsáveis pelo controle do fluxo do algoritmo no módulo SapiSim, para a identificação de coautorias. O diagrama de classe desenvolvido para o pacote Controle pode ser visto na Figura 5. Figura 5 Diagrama de Classe – Pacote Controle. No diagrama são apresentadas duas classes e uma interface: 51 1. JPAIdentificaCoAutoriaDAO: Esta classe controla todo o fluxo do algoritmo, estabelecendo uma organização nas ações executadas para a identificação da Coautoria, é a principal classe do módulo. 2. JPACommandDAO: Esta classe possui um mapeamento das classes tratadoras, do pacote tratador chaveadas pelo código do tipo da produção, indicando a classe tratadora correta de acordo com o tipo da produção a ser tratada, ou seja, é ela que vai determinar qual classe será chamada de acordo com a identificação passada. 3. CoAutoriaDAO: Esta interface realiza o acesso aos métodos da classe JPAIdentificaCoAutoriaDAO. A descrição completa deste diagrama encontra-se no APÊNDICE B. 3.8.2 Pacote Tratador O pacote tratador foi criado com a finalidade de tratar os atributos das produções, ou seja, realizar a normalização textual e retirada de stopwords dos atributos. Tratamento que é fundamental para a identificação da Coautoria, pois ela elimina palavras ou símbolos que poderiam determinar alguma diferença na comparação dos títulos das produções. O diagrama de classe desenvolvido para o pacote Tratador pode ser visto na Figura 6. 52 Figura 6 Diagrama de Classes – Pacote Tratador. No diagrama são apresentadas oito classes e uma interface: 1. JPAStopWordsDAO: Esta classe tem a finalidade de retirar dos atributos da produção palavras de menor significado na frase, por exemplo, artigos, conjunções, preposições. Cabe avisar o leitor que esta classe possui os seus métodos e atributos declarados como STATIC; 2. JPANormalizaçãoDAO: Esta classe tem a finalidade de realizar a normalização dos atributos produção, por exemplo, palavras com letras minúsculas são normalizadas para o padrão maiúsculo, acentos são retirados, sinais de pontuação e caracteres especiais. Cabe avisar ao leitor que os métodos e atributos desta classe foram declarados como STATIC. 3. JPANormalizacaoEStopWordsTrabalhoEmEventoDAO: Esta classe tem a finalidade de organizar o fluxo das ações do algoritmo para o tratamento dos atributos da produção do tipo trabalho em evento, realizando chamadas aos métodos das classes JPAStopWordsDAO e JPANormalizaçãoDAO e salvar os novos atributos numa lista de objetos copia do pacote modelo. 4. JPANormalizacaoEStopWordsArtigoPublicadoDAO: Esta classe tem a finalidade de organizar o fluxo das ações do algoritmo para o tratamento dos atributos da produção do tipo artigo publicado, realizando chamadas aos métodos das classes JPAStopWordsDAO e JPANormalizaçãoDAO e salvar os novos atributos numa lista de objetos copia do pacote modelo. 5. JPANormalizacaoEStopWordsProjetoDePesquisaDAO: Esta classe tem a finalidade de organizar o fluxo das ações do algoritmo para o tratamento dos atributos da produção do tipo pesquisa de pesquisa, realizando chamadas aos métodos das classes JPAStopWordsDAO e JPANormalizaçãoDAO e salvar os novos atributos numa lista de objetos copia do pacote modelo. 6. JPANormalizacaoEStopWordsLivroDAO: Esta classe tem a finalidade de organizar o fluxo das ações do algoritmo para o tratamento dos atributos da produção do tipo livro, realizando chamadas aos métodos das classes JPAStopWordsDAO e JPANormalizaçãoDAO e salvar os novos atributos numa lista de objetos copia do pacote modelo. 7. JPANormalizacaoEStopWordsCapituloDeLivroDAO: Esta classe tem a finalidade de organizar o fluxo das ações do algoritmo para o tratamento dos atributos da produção 53 do tipo capitulo de livro, realizando chamadas aos métodos das classes JPAStopWordsDAO e JPANormalizaçãoDAO e salvar os novos atributos numa lista de objetos copia do pacote modelo. 8. JPANormalizacaoEStopWordsBancaDAO: Esta classe tem a finalidade de organizar o fluxo das ações do algoritmo para o tratamento dos atributos da produção do tipo participação em bancas de graduação, realizando chamadas aos métodos das classes JPAStopWordsDAO e JPANormalizaçãoDAO e salvar os novos atributos numa lista de objetos copia do pacote modelo. 9. NormalizacaoEStopWordsDAO: Esta interface é implementada por varias classes, e é ela que vai acessar a classe que a implementa, a qual foi solicitado o seu acessado. A descrição completa deste diagrama encontra-se no APÊNDICE B. 3.8.3 Pacote Similaridade O pacote similaridade foi criado para o desenvolvimento das fórmulas de similaridade para cada tipo de produção descritas na seção 3.5.1. Ele é usado para a realização dos cálculos de similaridade textual entre atributos de duas produções científicas. O diagrama de classe para o pacote Similaridade pode ser visto na Figura 7. 54 Figura 7 Diagrama de classe – Pacote Similaridade No diagrama são apresentadas duas classes e duas interfaces são elas: 1. JPAFormulasSimilaridadeDAO: Esta classe tem a finalidade de executar as fórmulas de similaridade para cada tipo de produção para a determinação da similaridade entre atributos de duas produções. 2. JPACalculoSimilaridadeDAO: Esta classe tem a finalidade de acessar os métodos da classe Levenstein da biblioteca SimMetrics. 3. FormulasSimilaridadeDAO: Esta interface é implementada pela classe JPAFormulasSimilaridadeDAO e tem a finalidade de acessar os métodos da classe que a implementa, somente com objetos do tipo FormulasSimilaridadeDAO. 55 4. CalculoSimilaridadeDAO: Esta interface é implementada pela classe JPACalculoSimilaridadeDAO e tem a finalidade de acessar os métodos da classe que a implementa, somente com objetos do tipo CalculoSimilaridadeDAO. 3.8.4 Pacote Modelo O pacote modelo surgiu com a necessidade de um processamento com melhor desempenho para a identificação das coautorias. A sua finalidade é realizar uma cópia dos atributos dos objetos produção, com o objetivo de desvincular o objeto ao acesso a DAO, para conseguir um melhor desempenho de processamento entre os atributos das produções. O diagrama de classe para o pacote Modelo pode ser visto na Figura 8. Figura 8 Diagrama de classe – Pacote Modelo No diagrama é apresentada a classe Copia: 1. Copia: Esta classe tem a finalidade de realizar uma copia dos atributos do objeto produção. 3.8.5 Pacote Acessa Banco 56 O pacote acessa banco foi criado para separar as funcionalidades de acesso ao banco de dados do resto da aplicação. Este pacote tem como objetivo principal tornar transparente o acesso ao banco de dados. O diagrama de classe desenvolvido para o pacote Acessa Banco pode ser visto na Figura 9. Figura 9 Diagrama de Classe – Pacote Acessa Banco. No diagrama são apresentadas cinco classes e três interfaces são elas: 1. AutomaticoMonitoriaDAO: Esta interface é implementada pela classe JPAAutomaticoMonitoriaDAO e tem como finalidade permitir o acesso aos seus métodos somente por objetos do tipo AutomaticoMonitoriaDAO. 2. ProduçãoDAO: Esta interface é implementada pela classe JPAProducaoDAO, e sua finalidade é que seus métodos sejam acessados por objetos do tipo ProducaoDAO. 3. DAO: Esta interface é do tipo genérico e tem como finalidade a auto adaptação ao tipo da entidade de relacionamento estabelecida nas extensões com interfaces DAO, por exemplo, producaoDAO extends DAO<Producao>. ou AutomaticoMonitoriaDAO extends DAO<AutMon>, além de conter o conjunto de métodos do CRUD. 4. Produção: Esta classe ou entidade de relacionamento é responsável em reproduzir uma tabela no banco de dados e conter os atributos das produções de todos os 57 docentes do sistema SAPI 2.0. Através dela é possível construir um objeto produção, e seus atributos poderão ser persistidos em banco, para a tabela que o objeto produção representa. 5. AutMon: Esta classe ou entidade de relacionamento é responsável em reproduzir uma tabela no banco de dados e conter os dados das produções identificadas automaticamente e manualmente, somente depois de ter passado por análise. Através dela é possível construir um objeto autmon, e seus atributos seriam persistidos em banco, para a tabela que o objeto representa. 6. JPAAutomaticoMonitoriaDAO: Esta classe tem a finalidade de realizar consultas ao banco de dados para a entidade relacional AutMon. 7. JPAProducaoDAO: Esta classe tem a finalidade de realizar consultas ao banco de dados para a entidade relacional Producao. 8. JPADAO: Esta classe tem a finalidade de conter a implementação do CRUD, ela é do tipo genérica (Figura 9, mostra comentário T) e se adapta a qualquer tipo de entidade relacional que seja passada através de uma extensão numa interface DAO. Exemplo mostrado no tópico 3. A descrição completa deste diagrama encontra-se no APÊNDICE B. 3.9 CASO DE USO Neste tópico será apresentado um caso de uso explicando como foi executa a tarefa de Confirmação ou Rejeição das produções acadêmicas monitoradas, através de cenários, e também serão apresentadas as telas do módulo SapiSim desenvolvidas durante o TTC II para uma melhor compreensão de como ficarão. 3.7.1 UC03 Confirmar / Rejeitar produções científicas Permite ao “USUÁRIO VALIDADOR” confirmar produções que poderão ser coautoras, ou rejeitar produções que não são coautoras (Figura 14). Além disso, o “USUÁRIO VALIDADOR” pode consultar a quantidade de produções pendentes (Figura 12), e consultar a quantidade de produções finalizadas (Figura 19) para um determinado ano e tipo de produção. 3.7.1.1 Requisitos Este é o requisito que define a tarefa Confirmar / Rejeitar produções científicas. 58 RF03 – O sistema deverá permitir ao usuário confirmar ou rejeitar a lista de produções cuja Coautoria depende de sua intervenção (Identificação Monitorada). 3.7.1.2 Constrainst Constrainst definem ações anteriores a execução da tarefa, a tarefa depende destas ações para ser executada, e ações posteriores a sua execução, geralmente são os resultados da tarefa. Pré-condição. O “USUÁRIO VALIDADOR” ter executado o módulo pelo menos uma vez; Pré-condição. As produções identificadas como Monitoradas já devem estar cadastradas; Pós-condição. Visualizar consulta atualizada dos registros (Figura 12 e Figura 19). 3.7.1.3 Cenários Nesta etapa, é apresentado um detalhamento do cenário. Realizando um passo a passo nas telas do módulo SapiSim, exemplificando a tarefa. (i) Consultar registros (Figura 19); e Produções Pendentes (Figura 12). Produções Pendentes {Figura 12} Será descrito os passo 7 e passo 8 a serem realizados para a confirmação ou rejeição da coautoria da produções identificadas como monitoradas, para cada passo é mostrado um cenário alternativo mostrando as ações necessárias para se realizar cada objetivo do cenário. “USUÁRIO VALIDADOR” clica no botão “Produções Pendentes” no sub menu na (Figura 11 ); O sistema apresenta a tela “Produções Pendentes” da (Figura 12), já mostrando os registros de produções monitoradas encontradas; O “USUÁRIO VALIDADOR” deve filtrar pelo tipo de produção desejado. (Figura 12); O “USUÁRIO VALIDADOR” pressiona o botão ‘+’ (Figura 13), para surgir às produções agrupadas para um determinado ano; O “USUÁRIO VALIDADOR” deve clicar em uma produção para abrir a próxima tela (Figura 14). 59 O sistema abrirá a tela da Figura 14 apresentando os detalhes da produção clicada na Figura 13 e os detalhes da “PRODUÇÃO CANDIDATA” a ser coautora da produção original. O “USUÁRIO VALIDADOR” poder confirma Coautoria; O “USUÁRIO VALIDADOR” pode rejeitar Coautoria; O “USUÁRIO VALIDADOR” pode fecha a tela (Figura 14); O sistema retorna para a (Figura 12). O “USUÁRIO VALIDADOR” fecha a tela (Figura 12) O sistema retorna para a (Figura 11) passo 1. Será mostrado o 1º cenário alternativo com uma sequência de passos para a sua realização. Cenário alternativo confirmar coautoria: O “USUÁRIO VALIDADOR” seleciona uma “PRODUÇÃO CANDIDATA” (Figura 14); O “USUÁRIO VALIDADOR” analisa os detalhes da produção original e da “PRODUÇÃO CANDIDATA”, e opta em confirmar Coautoria; O sistema processa a solicitação do “USUÁRIO VALIDADOR”; O sistema retorna para a (Figura 12) passo 2. Será mostrado o 2º cenário alternativo com uma sequência de passos para a sua realização. Cenário alternativo rejeitar coautoria: O “USUÁRIO VALIDADOR” seleciona uma “PRODUÇÃO CANDIDATA” (Figura 14); O “USUÁRIO VALIDADOR” analisa os detalhes da produção original e da “PRODUÇÃO CANDIDATA”, e opta em rejeitar Coautoria; O sistema processa a solicitação do “USUÁRIO VALIDADOR”; O sistema retorna para a (Figura 12) passo 2. Consultar Registros {Figura 19} “USUÁRIO VALIDADOR” clica no botão “Definir CoAutorias” no sub menu na (Figura 18); 60 O sistema apresenta a tela “Definir CoAutorias” da (Figura 19), já mostrando os registros de coautorias encontradas; O “USUÁRIO VALIDADOR” deve filtrar por ‘Monitoria’ e pelo tipo de produção correspondente a produção confirmada como coautora (Figura 19); O “USUÁRIO VALIDADOR” pressiona o botão ‘+’ (Figura 19), para surgir as produções agrupadas para um determinado ano; O “USUÁRIO VALIDADOR” deve clicar em uma produção para abrir a próxima tela (Figura 21). O sistema abrirá a tela da Figura 21 apresentando os detalhes da produção clicada na Figura 20 e os detalhes da produção coautora para visualizar os detalhes das duas produções confirmadas como produções monitoradas (Figura 21). 3.10 TELAS DO MÓDULO SAPISIM As telas desenvolvidas durante o TTC II serão acessadas pelo ““USUÁRIO VALIDADOR””, que é um funcionário do projeto SAPI que verifica a comprovação dos trabalhos acadêmicos. Nelas serão visualizadas as produções entituladas como “PRODUÇÕES MONITORADAS”, produções que estiverem entre o LIMITE INFERIOR, 75% e o LIMITE SUPERIOR, 87% de similaridade e necessitam da confirmação da coautoria ou a sua rejeição. O LIMITE INFERIOR e o limite SUPERIOR, foram definidos analisando préresultados obtidos com os primeiros testes e neles foi identificado que todas as comparações que atingiram similaridades de 87% eram coautorias consideradas automáticas e todas as comparações que atingiram abaixo de 75% eram comparações que poderiam ser descartadas. Para o “USUÁRIO VALIDADOR” poder acessa-las primeiro é preciso fazer login no sistema SAPI 2.0. Feito isso o “USUÁRIO VALIDADOR” deverá acessar um sub menu chamado “CoAutorias”, na Figura 10 é apresentado uma ilustração da tela TEL001. 61 . Figura 10. Tela do sistema SAPI 2.0 – TEL001. Então surgirão dois botões chamados Produções Pendentes e Definir CoAutoria, o “USUÁRIO VALIDADOR” acessará primeiramente o botão chamado Produções Pendentes. A Figura 11, é a continuação da Figura 10. Figura 11. Tela do sistema SAPI 2.0 – TEL001. 62 Na Figura 12, é exibida a tela “Produções Pendentes” que tem o objetivo de apresentar uma lista com todas as produções de um tipo identificadas como monitoradas, ou seja, as produções que tiveram similaridade entre 70% a 86%, e organizadas e agrupadas por ano. Na ilustração da Figura 12, existe um filtro por tipo de produção, ou seja, o “USUÁRIO VALIDADOR” poderá filtrar a lista por um tipo presente no filtro, trazendo apenas as produções monitoradas para o tipo de produção selecionado no filtro, agrupadas por ano. Então o “USUÁRIO VALIDADOR” deverá clicar no sinal de ‘+’ à esquerda da tela para um grupo de produções surgirem. Segue ilustração na Figura 13. Figura 12. Tela do Módulo SapiSim – TEL002 Na Figura 13, é apresentada a continuação da Figura 12, que mostra o surgimento das produções de um agrupamento por ano. Então o “USUÁRIO VALIDADOR” deverá clicar em uma referência de produção que surgiu, para poder acessar a próxima tela. 63 Figura 13. Tela do Módulo SapiSim – TEL002. Quando clicado uma produção acessa a ilustração da Figura 14. A tela da Figura 14 possui duas listas, a primeira que mostra os atributos da produção clicada na ilustração da Figura 13, e a segunda mostra produções candidatas a serem coautoras da produção original, ou seja, da produção que foi clicada na ilustração da Figura 13. O “USUÁRIO VALIDADOR” ainda poderá clicar na flecha à esquerda da “PRODUÇÃO CANDIDATA”, presente na lista de produções candidatas, para surgir os detalhes da “PRODUÇÃO CANDIDATA”. Esta ilustração será mostrada na Figura 15. A ilustração da Figura 14 tem como objetivo principal mostrar para o “USUÁRIO VALIDADOR” os detalhes da “PRODUÇÃO MANDANTE” e os detalhes da “PRODUÇÃO CANDIDATA”, dando-lhe uma visão completa sobre os atributos das produções avaliadas, podendo realizar uma análise completa dos dados e decidir sem restar dúvidas se as produções são coautoras ou não são coautoras. 64 Para o “USUÁRIO VALIDADOR” poder confirmar ou rejeitar a coautoria, ele deve clicar em alguma referência de produção da lista de produções candidatas e clicar no botão “Confirmar CoAutoria”, se foi identificado uma coautoria entre as produções em análise ou clicar no botão “Não Existe CoAutoria”, se foi identificado que entre as produções em análise não possui uma coautoria. Então a ação tomada será processada e atualizará a lista de produções candidatas, se a coautoria for confirmada então o registro será transferido para a tabela das produções identificadas automaticamente que deverá aparecer no relatório das produções identificadas automaticamente, se a coautoria não existir então o registro será deletado da tabela de produções monitoradas. Na Figura 16 é apresentada uma ilustração da tela com a lista de produções candidatas atualizada e na Figura 17 é mostrada uma ilustração da tela quando não houver mais produções candidatas a serem comparadas com a produção original. Figura 14. Tela do Módulo SapiSim – TEL003. 65 Figura 15. Tela do Módulo SapiSim – TEL003. Figura 16. Tela do Módulo SapiSim – TEL003. 66 Figura 17. Tela do Módulo SapiSim – TEL003. Nas telas a seguir pode-se visualizar a produção confirmada como coautoria e todas as produções identificadas como automáticas, ele deverá voltar a tela principal do sistema SAPI 2.0, acessar o sub menu CoAutorias e clicar no botão chamado “Definir CoAutorias” acessando a tela chamada “Definir CoAutorias” como é mostrado na Figura 18. Figura 18. Tela do sistema SAPI 2.0 – TEL001 67 A tela “Definir CoAutorias”, é exibida na ilustração da Figura 19, ela possui dois filtros e uma lista chamada “CoAutorias Finalizadas” que agrupa por ano as produções filtradas por (automática ou monitorada). O primeiro filtro chamado de “tipos de produções” é responsável por filtrar todas as produções da lista pelo tipo de produção selecionado no filtro. O segundo filtro chamado de “Tipos de CoAutorias” é responsável por filtrar somente as produções identificadas como “Automaticas” ou “Monitoradas”. Esta tela tem como objetivo principal mostrar um relatório para simples conferência das produções identificadas automaticamente e monitoradamente. O “USUÁRIO VALIDADOR” deverá clicar no sinal de ‘+’ à esquerda da Figura 19, onde surgirá as produções agrupadas para aquele ano, a Figura 20 ilustra esta situação. Figura 19. Tela do Módulo do SapiSim – TEL004. 68 Figura 20. Tela do Módulo SapiSim – TEL004. Clicando na referência da produção será aberta uma próxima tela que é exibida na Figura 21. A tela da Figura 21 apresenta os detalhes da produção clicada na Figura 20, identificada como “Produção Original” e uma lista chamada de “Produções CoAutoras” que são as produções coautoras da produção clicada na Figura 20. Clicando na flecha à esquerda da Figura 21, surgirá os detalhes da produção coautora. A tela da Figura 21 tem como objetivo apresentar os detalhes da produção original e os detalhes da produção coautora para simples conferência de atributos e constatar que realmente são coautoras. 69 Figura 21. Tela do Módulo do SapiSim – TEL005. 70 4 RESULTADOS Foram realizados estudos de casos com docentes que possuem produções de diferentes tipos contendo coautores. Os docentes foram selecionados pelos seguintes critérios: (i) possuírem uma boa produtividade; (ii) terem proximidade com o desenvolvimento do SAPI (importante para elucidar casos específicos); (iii) apresentarem um bom número de produções com coautorias; (iv) serem de áreas de atuação diferentes. Os docentes selecionados seguindo estes critérios foram: André Luís Alice Raabe, pesquisador de Computação e Educação, orientador deste trabalho e responsável pelo SAPI e Valdir Cechinel Filho, Pro-reitor de pesquisa, pesquisador dá área de Farmácia. Para cada um destes docentes foram definidos os sete coautores mais frequentes para realização deste estudo de caso. O currículo Lattes dos dois docentes e de cada um dos sete coautores (16 pessoas no total) foi então importado pelo SAPI 2.0 disparando assim o processo de identificação de coautorias. Os estudos de caso apresentados a seguir são análises dos resultados obtidos com a execução do processo de identificação de coautorias criado no TTC II, ou seja, são análises das produções identificadas automaticamente, monitoradamente e identificação das produções que poderiam ter sido identificadas, mas não foram e as respectivas causas. Para interpretação dos resultados de ambos os estudos de caso, são necessários definir os seguintes termos: Automáticas: Produções encontradas automaticamente, ou seja, similaridades apresentadas acima dos 86%. Monitoradas: Produções encontradas monitoradamente, ou seja, similaridades apresentadas entre 75% a 86%. Não Encontradas: São produções coautoras existentes nos currículos Lattes dos docentes, mas por falha no processo não foram encontradas. Não existe: São produções presentes no currículo Lattes do docente e que deveriam ter produções coautoras, mas não são encontradas por não existirem nos currículos 71 lattes de seus docentes coautores, ou seja, o docente coautor não a publicou no seu currículo lattes para serem baixadas pelo sistema SAPI 2.0. 4.1 ESTUDO DE CASO 1 O estudo de caso foi conduzido com o docente André Raabe. Foram escolhidos 7 (sete) docentes que tinham mais de um trabalho em coautoria com o docente André Raabe para que a análise fosse feita com estes. Os docentes são: (i) Anita Maria Rocha Fernandes; (ii) Cesar Albenes Zeferino; (iii) Rudimar Luis Scaranto Dazzi; (iv) Fabiane Barreto Vavassori Benitti; (v) Rafael de Santiago; (vi) Adriana Gomes Alves; (vii) Elieser Ademir de Jesus. Definido isto foi feito uma busca no SAPI 1.0, pelas produções do docente André Luís Alice Raabe filtradas pelos tipos de produções que o SAPI tratará coautorias. Nestas foram recuperadas as referências bibliográficas a fim de saber quem são os coautores de cada produção. Os dados foram tabulados no programa Excel, (das produções do docente André Raabe) para os tipos trabalhos considerados, contendo produções de todos os seus coautores (além dos sete escolhidos), então foram retiradas manualmente as produções com coautores não analisados, restando uma lista de produções somente dos docentes analisados. O total de produções resultante desta etapa foi 102 produções sendo: 36 trabalhos em eventos; 10 artigos em periódicos; 3 capítulos de livros; 48 bancas de trabalho de conclusão e 4 projetos de pesquisa. O próximo passo foi acessar a base de dados do módulo SapiSim, para buscar as produções encontradas monitoradamente, desta forma obtendo os títulos e autores das produções através do seu ID, desta forma foi possível saber qual produção de qual docente é candidata a coautoria de uma produção do docente Raabe. Após, os títulos das produções do docente Raabe eram copiados e pesquisado na lista de produções, assim que encontrado era feito uma marca na linha da produção para indicar que aquela produção com aquele docente foi encontrado como sendo ‘monitorada’ e marcava numa tabela um ponto para o docente encontrado para a categoria monitoria. 72 Após o término desta etapa, iniciou um processo parecido como o anterior. Buscaram-se as produções encontradas automaticamente na base de dados do módulo SapiSim, desta forma obtendo os títulos e autores das produções através do seu ID. Então o seu título era copiado e pesquisado na lista de produções, assim que encontrado o titulo da produção na lista, a sua referência bibliográfica era comparada ao resultado obtido na base de dados. Por exemplo, uma produção do docente Raabe do tipo ‘trabalho em evento’ presente na lista de produções, mostra em sua referência bibliográfica (exemplo mostrado acima) que a produção possui dois coautores o docente Santiago e Dazzi. Esta produção do docente Raabe foi encontrada como sendo automática, e para a mesma foi encontrada uma produção coautora do docente Santiago . Então foi feito uma busca na base de dados mostrando o relacionamento entre estas duas produções através de seus Ids e depois copiando o seu titulo e pesquisando na lista de produções, assim que encontrado, analisava-se a referência da produção da lista de produções verificando que a mesma possui dois coautores Santiago e Dazzi, mas na base de dados somente foi encontrado a produção do docente Santiago como coautora, então era marcado 1 (um) ponto para o Santiago para a categoria ‘automatica’ e era marcado 1 (um) ponto para o Dazzi na categoria ‘Não encontradas’ ou ‘Não Existe’. Ao analisar as produções encontradas ‘monitoradas’ e ‘automáticas’ presentes na base de dados do SapiSim, sobravam produções na lista de produções que não foram identificadas nem como sendo ‘monitoradas’ e nem como sendo ‘automáticas’, então foi feito uma busca no banco de dados pelo ano e código do coautor verificando se a produção do coautor presente na referência bibliográfica da produção do docente Raabe existia no currículo Lattes do docente coautor ou não existia no seu currículo Lattes do mesmo, se existia era marcado um ponto para o docente coautor na categoria ‘Não encontrada’, mas se não existia era marcado um ponto para o docente coautor na categoria ‘Não Existe’. A seguir será apresentada a figura de resultados do estudo de caso 1. Os resultados obtidos estão apresentados no quadro da Figura 22. O quadro apresenta o total de produções do docente Raabe que foram analisados, e ilustra para cada um dos sete coautores quantas produções foram identificadas. 73 Anit a M aria da Rocha Fernandes André Raabe Aut omát icas M onit oradas Trabalhos em event os Art igos em Periódicos 36 2 0 1 10 0 0 Livros Publicados 0 0 Capí t ulo de Livro Publicado Part icipação em Banca de Graduação Projet o de Pesquisa 3 Cesar Albenes Zef erino Não Não Exist e Encont radas Não Não exsit e Encont radas Aut omát icas M onit oradas 0 6 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 48 5 0 1 0 1 0 0 0 4 0 0 0 0 0 0 0 1 Fabiane Barret o Vavassori André Raabe Aut omát icas M onit oradas Trabalhos em event os Art igos em Periódicos 36 8 2 0 10 2 0 Livros Publicados 0 0 Capí t ulo de Livro Publicado Part icipação em Banca de Graduação Projet o de Pesquisa 3 Raf ael de Sant iago Não Não Exist e Encont radas Não Não Exist e Encont radas Aut omát icas M onit oradas 1 8 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 48 17 0 0 2 6 0 0 0 4 0 1 0 1 0 0 0 1 Adriana Gomes Alves André Raabe Aut omát icas M onit oradas Trabalhos em event os Art igos em Periódicos 36 5 0 1 10 0 0 Livros Publicados 0 0 0 Capí t ulo de Livro Publicado Part icipação em Banca de Graduação Projet o de Pesquisa 3 0 48 4 Elieser Ademir de Jesus Não Não Exist e Encont radas Não Encont radas Não Exist e Aut omát icas M onit oradas 0 5 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 1 0 3 0 0 0 1 0 0 0 0 0 0 2 Rudimar Luis Scarant o Dazzi André Raabe Aut omát ico M onit oradas Não Encont radas Não Exist e Trabalhos em event os Art igos em Periódicos 36 2 0 0 0 10 0 0 0 0 Livros Publicados 0 0 0 0 0 Capí t ulo de Livro Publicado Part icipação em Banca de Graduação Projet o de Pesquisa 3 1 0 0 0 48 18 0 0 2 4 1 0 0 1 Figura 22. Resultado do estudo de caso 1. A interpretação deste quadro pode ser feita da seguinte forma. Em cada linha da tabela é apresentado o total de produções de cada tipo que o docente Raabe possui em coautoria com colegas. Esta informação é repetida quatro vezes para facilitar comparação visual. Em cada coautor as produções do docente caem necessariamente em uma das quatro modalidades (Automática, Monitorada, Não encontrada, Não existe). 74 Por exemplo, O docente Raabe teve como a docente Fabiane Benitti 11 produções do tipo trabalhos em eventos. Destas, 8 foram identificadas de forma automática, duas de forma monitorada e uma não existe no lattes da coautora. Deve-se salientar que por existirem produções com mais de um coautor (entre os sete analisados) o total de trabalhos identificados somando todos os coautores pode ser superior aos trabalhos do docente Raabe. Desta forma, a coluna que indica problemas ou insuficiência do sistema é a coluna (não encontradas) as demais são situações que tem causas explicadas ou então que estão de acordo com o propósito do trabalho. A seguir será feito um levantamento dos principais pontos do estudo de caso 1. No total, apenas cinco produções não foram encontradas das 102 analisadas, ou seja um erro inferior a 5%, pois este trabalho não tem o objetivo de identificar todas as coautorias. Apenas 2 (dois) docentes dos 7 (sete) escolhidos apresentaram produções cuja coautoria não foi encontrada. A docente Anita Fernandes teve 3 produções não encontradas em 10, ou seja, o SapiSim encontrou 70% das coautorias. Já a docente Adriana Alves teve duas produções não encontradas de um total de 20, ou seja, em 90% das produções o SapiSim encontrou as coautorias. Na coautoria com o docente Cesar Zeferino o SapiSim encontrou 100% das produções dos tipos trabalho em evento e em periódico. Também encontrou 100% das bancas de Trabalho de graduação em conjunto com a docente Fabiane Benitti (as duas não encontradas não constavam no currículo da docente). Somando todas as produções do tipo artigo publicado em periódico o SapiSim não falhou em nenhuma coautoria, tendo 100% de acerto. Somando todas as produções tipo participação em banca o SapiSim falhou em apenas 3% para coautorias não encontradas. 75 4.2 ESTUDO DE CASO 2 O estudo de caso 2 foi conduzido com o docente Valdir Cechinel Filho. A estratégia adotada para desenvolver o estudo de caso 2 foi à mesma estratégia do estudo de caso 1. Os docentes principais coautores analisados foram: (i) Cristiani Burger; (ii) Alexandre Bella Cruz; (iii) Luciano Gonzaga Galvão; (iv) Rogério Corrêa; (v) Rivaldo Niero; (vi) Edneia Casagranda Bueno; (vii) Nara Lins Meira Quintão. O total de produções analisado foi 310 produções sendo: 186 trabalhos em eventos; 91 artigos em periódicos; 9 capítulos de livros; 16 bancas de trabalho de conclusão e 8 projetos de pesquisa. A seguir são apresentados os resultados do estudo de caso 2. 76 Crist iani Burger Valdir Cechinel Alexandre Bella Cruz Não Aut omat icas M onit oradas Não Exist e Encont radas Aut omat icas M onit oradas Não Encont radas Não Exist e Trabalho em Event os Art igo em Periodico 186 10 0 0 0 30 4 1 7 91 2 0 1 1 16 2 1 1 Livro 0 0 0 0 0 0 0 0 0 Capit ulo de Livro Part icipação em bancas Projet o de Pesquisa 9 0 0 0 0 1 0 0 0 16 2 0 0 0 5 0 1 0 8 0 0 0 0 0 0 0 1 Luciano Gonzaga Galvao Valdir Cechinel Rogerio Corrêa Não Aut omat icas M onit oradas Não Exist e Encont radas Aut omat icas M onit oradas Não Encont radas Não Exist e Trabalho em Event os Art igo em Periodico 186 0 0 0 4 32 4 0 16 91 0 0 0 1 26 1 5 1 Livro 0 0 0 0 0 0 0 0 0 Capit ulo de Livro Part icipação em bancas Projet o de Pesquisa 9 0 0 0 0 2 0 0 0 16 0 0 0 0 3 0 0 0 8 0 0 0 0 1 0 0 1 Edneia Casagranda Bueno Rivaldo Niero Valdir Cechinel Não Aut omat icas M onit oradas Não Exist e Encont radas Aut omat icas M onit orias Não Encont radas Não Exist e Trabalho em Event os Art igo em Periodico 186 50 4 0 13 6 4 0 0 91 28 7 4 1 1 0 1 0 Livro 0 0 0 0 0 0 0 0 0 Capit ulo de Livro Part icipação em bancas Projet o de Pesquisa 9 2 0 0 3 0 0 0 0 16 6 0 0 0 0 0 0 0 8 1 0 0 0 0 0 0 0 Nara Lins Quint ao Não Não Exist e Encont radas Valdir Cechinel Aut omat icas M onit orias Trabalho em Event os Art igo em Periodico 186 18 4 0 3 91 5 0 2 0 Livro 0 0 0 0 0 Capit ulo de Livro Part icipação em bancas Projet o de Pesquisa 9 0 0 1 0 16 0 0 0 0 8 2 0 0 1 Figura 23. Resultado do estudo de caso 2. Os principais pontos do estudo de caso 2 a serem salientados são: No total, apenas 17 produções não foram encontradas das 310 analisadas, ou seja, um erro inferior a 5,5%, pois este trabalho não tem o objetivo de identificar toda as coautorias, mas sim a grande maioria. 77 O docente Rivaldo Niero somando todas as produções constou 119 vezes sendo identificadas como não encontradas apenas 4 (quatro) produções, representando um erro de 3,3% do total de produções coautoras. O docente Rogério Corrêa somando todas as produções constou 92 vezes sendo identificadas como não encontradas 5 (cinco) produções, representando um erro de 5,4% do total de produções coautoras. O docente Alexandre Cruz somando todas as produções constou 70 vezes sendo identificadas como não encontradas 3 (três) produções, representando um erro de 4,2% do total de produções coautoras. Para a docente Cristiani Burger o SapiSim encontrou todas as produções coautoras. Tendo 0% de erro para o tipo trabalhos em eventos. Para o docente Alexandre Bella Cruz o SapiSim encontrou 30 produções sendo que 7 (sete) produções não foram encontradas por causa que as produções do docente não constavam em seu currículo Lattes, 4 (quatro) produções constaram como monitoradas e em somente 1 (uma) produção o SapiSim falhou. Tendo apenas 2,3% de erro. 4.3 CONSIDERAÇÕES SOBRE OS ESTUDOS DE CASOS Após análise dos dois estudos de caso alguns pontos comuns foram identificados que são salientados a seguir: A grande maioria das coautorias que não foram identificadas ocorreu por não existirem no currículo Lattes do correspondente coautor. Não significando uma falha do módulo SapiSim. Nos dois estudos de caso a identificação de coautorias na modalidade automática foi amplamente superior às demais modalidades; Durante a realização dos testes foram ajustados os limites inferior e superior da similaridade para ampliar a exatidão dos resultados. Os limite superior (ligado a para identificação automática) passou para 87% de similaridade (antes dos testes era 90%) 78 e o limite inferior (ligado a identificação monitorada) passou para 75% (antes era 70%). Em resumo os limites ficaram como segue: o Automática: similaridade >= 87% o Monitorada: similaridade >= 75% e similaridade < 87% O erro total na modalidade (produções não encontradas) dos dois estudos de caso foi de 22 produções, sendo o total de produções 412. Desta forma o erro foi de 5,34 % o que pode ser considerado um valor baixo. Duas causas identificadas que provocaram erros no SapiSim durante os testes de identificação de coautorias, (i) Ao analisar os atributos das produções comparadas, poderiam ser consideradas coautoras, mas foram excluídas pela regra do ISSN ou ISBN, que descartam comparações com ISSN e ISBN diferentes. (ii) O grau de similaridade entre as produções ficou abaixo do LIMITE SUPERIOR. 5 CONCLUSÕES Este trabalho buscou trazer melhorias para o sistema SAPI 2.0 da UNIVALI. O objetivo principal era a construção de um módulo para identificar coautorias entre produções acadêmicas. Este objetivo foi atendido como pode ser verificado no decorrer desta monografia, em especial nas ilustrações de telas (na seção 3.8) e dos resultados das análises dos estudos de casos (no capítulo 4) que demostram os resultados obtidos pela utilização do módulo. O módulo, denominado SapiSim, identificou coautorias no sistema SAPI 2.0, dando uma maior confiança nos resultados obtidos em relatórios dos escores dos docentes ao eliminar redundâncias geradas por estas coautorias. Os objetivos específicos foram todos alcançados. O objetivo (i) Pesquisar e documentar conceitos relacionados à similaridade de atributos foi obtido por meio da pesquisa de trabalhos correlatos e fundamentação teórica apresentados no capítulo 2. Os objetivos (ii) Definir algoritmos de similaridade textual para comparação dos atributos e (iii) Definir heurísticas e regras para ponderar a similaridade entre os atributos das produções foram alcançados e estão apresentados no capítulo 3 que detalha o desenvolvimento do módulo SapiSim contendo os algoritmos de similaridade e regras de negócio implementadas. 79 Já o objetivo (iv) Testar e avaliar o módulo SapiSim no Sistema de Avaliação de Produção Institucional (SAPI) da Universidade do Vale do Itajaí (UNIVALI) foi alcançado por meio da realização de dois estudos de caso de docentes típicos usuários do SAPI, conforme consta no capítulo 4. Não foi criada nenhuma tarefa adicional para o docente do sistema. Basta atualizar seus currículo no SAPI que o módulo SapiSim irá buscar as coautorias. Já a tarefa de identificação monitorada criar uma tarefa a mais para o “USUÁRIO VALIDADOR” do SAPI. Desta forma, esta tarefa foi organizada para que a identificação das produções possa ser realizada em partes, sendo segmentada por ano e/ou por tipo de produção. Desta forma caso exista uma necessidade específica de análise os esforços de identificação das coautorias monitoradas poderão ocorrer conforme a demanda. A principal dificuldade para desenvolvimento do módulo foi compreender e desenvolver utilizando o conjunto de tecnologias adotado no SAPI 2.0, ou seja, Smart Client e Hibernate. Esta dificuldade foi ultrapassada e pode-se considerar que o módulo produzido possui características adequadas a sua utilização como produto do sistema SAPI. Uma cópia de todo o código do desenvolvimento do módulo está no servidor do projeto SAPI, no entanto o módulo foi testado apenas em uma máquina local. Para implantação no SAPI duas tarefas encontram-se pendentes (que não eram escopo deste TCC): (i) Homologação da implementação pelos desenvolvedores do SAPI e (ii) Alteração da forma de cálculo do escore do SAPI considerar as produções com coautoria. O módulo SapiSim foi pioneiro na identificação de coautorias no Sistema SAPI, mas ainda há muito o que fazer, então o autor deixa algumas sugestões de trabalhos futuros. (i) Tornar o LIMITE SUPERIOR e LIMITE INFERIOR configuráveis, ou seja, ter a opção de modifica-lo conforme a necessidade do sistema. (ii) Avisar o docente de uma produção não cadastrada em seu currículo LATTES, para poder ser identificada uma coautoria. Analisando os resultados obtidos, pode-se afirmar que o SapiSim apresentou resultados satisfatórios viabilizando a tarefa de identificação de coautorias nas produções científicas do sistema SAPI 2.0. No entanto é importante admitir que os dois estudos de caso , ainda que conduzidos de forma rigorosa, não fornecem uma garantia plena de que novos ajustes nas regras e limites de similaridade sejam necessários ao ampliar-se o número de docentes. Como tem mostrado a história de desenvolvimento do SAPI, muitas situações só são passíveis de serem detectadas quando o universo de docentes com ampla diversidade de tipos de produção é contemplado. 80 Espera-se com este trabalho ter contribuído para melhoria de um produto que tornase cada vez mais um diferencial da UNIVALI e que tem boas perspectivas de futuro. 81 REFERÊNCIAS BIBLIOGRÁFICAS ALEXANDER, C.; An Introduction for Object-Oriented Designers. 2012. Disponível em: < http://g.oswego.edu/dl/ca/ca/ca.html > . Acessado em 20 abr. 2012. ARANHA, C. N.; Uma Abordagem de Pré-Processamento Automático para Mineração de Textos em Português: Sob o Enfoque da Inteligência Computacional. 2007. Tese - Pontifícia Universidade Católica do Rio de janeiro. Local: PUC-RJ. Data: 2007. BARION, E. C. N.; LAGO, D.; Mineração de Textos. Revista de Ciências Exatas e Tecnologia. São Paulo. Vol. (III). N. (III), p. (18). Dez. 2008. CARDOSO, O. N. P.; Recuperação de Informação. Universidade Federal de Lavras. Departamento de Ciência da Computação. Pag. inicial. 1, Pag. final. 6. 2005. CHALCO, J. P. M.; CESAR JUNIOR, R. M. ScriptLattes: an open-source knowledge extraction system from the Lattes platform. Journal of the Brazilian Computer Society. Local: Campinas. Vol. (15). N. (4), 15 dez, 2009. FARIAS, L. R.; VARGAS, A. P.; BORGES, E. N.; Um sistema para análise de redes de pesquisa baseado na Plataforma Lattes. Centro de Ciências Computacionais – Universidade Federal do Rio Grande (FURG). 2011 Disponível em: <http://www.eduardo.c3.furg.br/arquivos/download/erbd-pesquisa2012.pdf> . Acessado em: 20 mar. 2012. GARCIA, E.; Cosine Similarity and Term Weight Tutorial. In: An Information Retrieval Tutorial on Cosine Similarity Measures, Dot Products and Term Weight Calculations. Information Retrieval Tutorials. Série. 2. 2006. HIBERNATE. Visão geral Hibernate. 2010. Disponível em: <http://www.hibernate.org/ > . Acessado em : 23 abr. 2012. JARO, M. A.; Advances in Record-Linkage Methodology as Applied to Matching the 1985 Census of Tampa. 1989. Disponível <http://www.fcsm.gov/working-papers/mjaro.pdf>. Acessado em: 23 jun. 2012. em : JEAN, W. A.; OLIVEIRA, A. H. F.; LAENDER, M. A. G.; Remoção de ambiguidade das autorias de objetos bibliográficos. Departamento de Ciência da Computação - Universidade Federal de Minas Gerais. 2005. Disponível em: <http://www.google.com.br/url?sa=t&rct=j&q=remo%C3%A7%C3%A3o%20de%20ambig% C3%BCidades%20na%20identifica%C3%A7%C3%A3o%20de%20autoria%20de%20objetos %20bibliogr%C3%A1ficos%201&source=web&cd=1&ved=0CCQQFjAA&url=http%3A%2 F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.137.5843%26rep% 3Drep1%26type%3Dpdf&ei=VaaT6aaMMqItwfViKynBA&usg=AFQjCNGYqNCyJoA2UTDncnWfQCYu2RHCaw&cad=rj a > . Acessado em: 25 mar. 2012. LEVENSHTEIN. The Levensgtein-Algorithm. 2012. Disponível em: <http://www.levenshtein.net/index.html>. Acessado em : 27 jun. 2012. 82 MONGE, A. E.; ELKAN, C. P.; The field matching problem: Algorithms and applications. Department of Computer Science and Engineering. University of California, San Diego, La Jolla, California. Disponível em: <http://pdf.aminer.org/000/473/089/the_field_matching_problem_algorithms_and_application s.pdf>. Acessado em : 23 jun. 2012. PACIEVITCH, T.; Conselho Nacional de Desenvolvimento Científico e Tecnológico. 2009. Disponível em : <http://www.infoescola.com/ciencias/conselho-nacional-dedesenvolvimento-cientifico-e-tecnologico-cnpq/>. Acessado em : 02 jul. 2012. RAABE, A. L. A.; O que é o SAPI. 2011. Disponível <http://siaiacad17.univali.br/~sapi/index.html>. Acessado em: 09 fev. 2012. em: RIBEIRO JUNIOR, L. C.; BORGES, T.; LICHTNOW, D.; LOH, S.; SALDANÃ, R.; Identificação de Áreas de Interesse a partir da Extração de Informações de Currículos Lattes/XML. Escola de Informática – Universidade Católica de Pelotas (UCPel). 2005. Disponível em: <http://paginas.ucpel.tche.br/~loh/pdfs/erbd-2005.pdf >. Acessado em: 23 mar. 2012. ROSETTACODE. Levenshtein Distance. 2012. Disponível <http://rosettacode.org/wiki/Levenshtein_distance>. Acessado em : 20 mai. 2012. em : SMARTCLIENT. Client-Server Integration. 2010. Disponível em: <http://localhost:8080/isomorphic/system/reference/SmartClient_Reference.html#group..clien tServerIntegration> . Acessado em: 25 abr. 2012. SMARTCLIENT. Visão geral SmartClient. <http://www.smartclient.com >. Acessado em : 23 abr. 2012 2010. Disponível em: SMITH, T. F.; WATERMAN, M. S.; Identification of Common Molecular Subsequences. 1981. Disponível em : <http://www.cmb.usc.edu/papers/msw_papers/msw-042.pdf>. Acessado em : 23 jun. 2012. SOURCEFORGE. SimMetrics. UK Sheffield University. 2004. Disponivel <http://sourceforge.net/projects/simmetrics/files/>. Acessado em: 19 fev. 2012. em: STANLEY BLOG. Lista de StopWords nas línguas portuguesa, inglêsa e espanhola. 2008. Disponível em : <http://paginas.ucpel.tche.br/~loh/stoplists.zip>. Acessado em 23 de jun. de 2012. WEBER, M. H.; Uma API para criação de aplicações de recuperação de informação. Universidade do Vale do Itajaí. 2005. WIVES, L. K.; Tecnologias de Descoberta de Conhecimento em Textos Aplicadas à Inteligência Competitiva. 2002. Pag. 116, Tese - Universidade Federal do Rio Grande do Sul, Instituto de Informática, Programa de Pós-Graduação em Computação. Local: Porto Alegre. Data: jan. 2002. 83 APÊNDICE A. ALGORITMOS DE MÉTRICAS DE SIMILARIDADE 84 Serão apresentados dois algoritmos de métricas de similaridade já abordados neste documento, o algoritmo de Levenshtein (1966), e o algoritmo da Cosine Similarity. No Quadro 5, é mostrado o algoritmo de Levenshtein (1966) e no Quadro 6, é mostrado o algoritmo da Cosine Similarity. public class LevenshteinDistance { public static int computeDistance(String s1, String s2) { s1 = s1.toLowerCase(); s2 = s2.toLowerCase(); int[] costs = new int[s2.length() + 1]; for (int i = 0; i <= s1.length(); i++) { int lastValue = i; for (int j = 0; j <= s2.length(); j++) { if (i == 0) costs[j] = j; else { if (j > 0) { int newValue = costs[j - 1]; if (s1.charAt(i - 1) != s2.charAt(j - 1)) newValue = Math.min(Math.min(newValue, lastValue), costs[j]) + 1; costs[j - 1] = lastValue; lastValue = newValue; } } } if (i > 0) costs[s2.length()] = lastValue; } return costs[s2.length()]; } public static void printDistance(String s1, String s2) { System.out.println(s1 + "-->" + s2 + ": " + computeDistance(s1, s2)); } public static void main(String[] args) { printDistance("kitten", "sitting"); printDistance("rosettacode", "raisethysword"); printDistance(new StringBuilder("rosettacode").reverse().toString(), new StringBuilder("raisethysword").reverse().toString()); for (int i = 1; i < args.length; i += 2) printDistance(args[i - 1], args[i]); } } Quadro 3. Algoritmo de Levenshtein em Java. Fonte: ROSETTACODE (2012) 85 public float getSimilarity(final String string1, final String string2) { final ArrayList<String> str1Tokens = tokeniser.tokenizeToArrayList(string1); final ArrayList<String> str2Tokens = tokeniser.tokenizeToArrayList(string2); final Set<String> allTokens = new HashSet<String>(); allTokens.addAll(str1Tokens); final int termsInString1 = allTokens.size(); final Set<String> secondStringTokens = new HashSet<String>(); secondStringTokens.addAll(str2Tokens); final int termsInString2 = secondStringTokens.size(); //now combine the sets allTokens.addAll(secondStringTokens); final int commonTerms = (termsInString1 + termsInString2) - allTokens.size(); //return CosineSimilarity return (float) (commonTerms) / (float) (Math.pow((float) termsInString1, 0.5f) * Math.pow((float) termsInString2, 0.5f)); } Quadro 4. Algoritmo Cosine Similarity Fonte: SimMetrics (2006) 86 APÊNDICE B. DETALHAMENTO DE CLASSES 87 A. Modelagem UML A.1 Visão Lógica (Diagrama de Classe) A.1.1 Controle Figura 24. Diagrama de classe – Controle. JPAIdentificaCoAutoriaDAO Type: public Class Implements: CoAutoriaDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Controle Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Author: Luis Fernando Balsini. 88 Identifica CoAutoria Attributes Attribute Type listaProducoesDocent ePrincipal listaProducoesCandid atas AutomaticaMonitoria Depois copiaProducoesCandi datas copiaProducoesDoce ntes fabricaDAO valorsimilaridade Notes private : List<Object[]> Armazena as produções do docente principal Private : List<Object[]> Armazena as produções candidatas private : AutMon private : List<Copia> Objeto para chamar métodos AutomaticoMonitoriaDAO. Armazena objetos produções candidatas Copia. private : List<Copia> Private : FabricaDAO Private : double Armazena objetos produções docente Copia. Objeto para acessar classes DAOs Contem o valor da similaridade entre duas produções. Quadro 5. Definição dos atributos da classe IdentificaCoautoria. IdentificaCoAutoria Methods Method Type Notes public: void Executa módulo sapisim. public: void Inicia identificação de Coautoria. Public : Construtor da classe private : List<Object[] >. Retorna lista de array de object das produções do docente principal. CompararCoAutori a (); DisparaIdentificaca oCoAutoria (); JPAIdentificaCoaut oriaDAO(); getListaProducoesD ocentePrincipal(); setListaProducoesD ocentePrincipal(); getListaProducoesC andidatas(); private : void Private : List<Object[] > setListaProducoesC Private : andidatas(); void getValorSimilaridad Private : e(); double Set Private : ValorSimilaridade Void Seta na lista array de objects de produções do docente principal retornada do banco. Retorna lista de array de object das produções candidatas Seta na lista array de object de produções candidatas retornadas do banco. Retorna o valor final da similaridade entre duas produções. Seta na variável valorsimilaridade o resultado final da coautoria entre duas produções. 89 ClassificaResultado DaSimilaridade(); getCopiaProducoes Docente(); setCopiaProduções Docente(): getCopiaProducoes Candidatas(): setCopiaProducoes Candidatas(); Public : boolean Public : List<Copia> Public : Void Public : List<Copia> Public : void Classifica a ação tomada de acordo com o limiar de similaridade definido. Retorna uma lista de produções do docente principal do tipo copia. Seta na lista objeto do tipo copia de produções do docente principal. Retorna uma lista de produções candidatas do tipo copia. Seta na lista objetos do tipo copia de produções candidatas. Quadro 6. Descrição dos métodos da classe JPAIdentificaCoautoriaDAO. JPACommandDAO Type: public abstract Class Status: Proposed. Version 1.0. Phase 1.0. Package: Controle Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPACommandDAO Attributes Attribute Type MapeandoTipoDaPro ducao Notes Public : HashMap<String, NormalizacaoEStopWord sDAO> Executa um mapeamento das classes que implementam a interface NormalizacaoEEstopWordsDAO. Quadro 7. Descrição dos atributos da classe JPACommandDAO. JPACommandDAO Methods Method Type getObjetosClasses( String) public: NormalizacaoEStop WordsDAO JPACommandDAO public: Notes Retorna o objeto da classe especifica a ser chamada. Construtor da classe. Quadro 8. Descrição dos métodos da classe JPACommandDAO. . 90 A 1.2 Tratador Figura 25. Diagrama de classe – Pacote Tratador. JPAStopWordsDAO Type: public final Class Status: Proposed. Version 1.0. Phase 1.0. Package: Tratador Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Author: Luis Fernando Balsini JPAStopWordsDAO Attributes Attribute Type builder listaStopWords static : StringBuilder Static final : String[] Notes Buffer para armazenar a concatenação de strings. Lista de palavras stopWords. Quadro 9. Descrição dos atributos da classe JPAStopWordsDAO 91 JPAStopWordsDAO Methods Method Type JAPStopWords public: DAO(); getStringBuilder () static: StringBuilder Public static SeparaFraseEmToken final: s (String) String[] Public static RetiraStopWords(Stri final: String ng[]) Notes Construtor da classe. Retorna um buffer com strings comcatenados. Separa string passada por parâmetro em tokens. Remonta frase passada por parâmetro no array de string retirando as stopwords. Quadro 10. Descrição dos métodos da classe JPAStopWordsDAO JPANormalizacaoDAO Type: public final Class Status: Proposed. Version 1.0. Phase 1.0. Package: Tratador Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPANormalizacaoDAO Attributes Attribute Type listacaracteres static final : char[][] Notes Matriz de caracteres a serem normalizados nos títulos das produções. Quadro 11. Descrição dos atributos da classe JPANormalizacaoDAO JPANormalizacaoDAO Methods Method Type JPANormalizacaoD public: AO(); Normalizar(String); Public static final : String Notes construtor da classe É passado por parâmetro um texto não normalizado e retorna um texto normalizado. Quadro 12. Descrição dos métodos da classe JPANormalizacaoDAO JPANormalizacaoEStopWodsTrabalhosEmEventosDAO Type: public Class Implements: NormalizacaoEStopWordsDAO. 92 Status: Proposed. Version 1.0. Phase 1.0. Package: Tratador Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPANormalizacaoEStopWordsTrabalhosEmEventosDAO Methods Method Type Notes executaNormalizacaoEStopWords( List<.Object[]>,List<Copia>); public : void Método executa a normalizações e retira stopWords dos atributos das produções. Quadro 13. Descrição dos métodos da classe JPANormalizacaoEStopWordsTrabalhosEmEventosDAO JPANormalizacaoEStopWodsProjetoDePesquisaDAO Type: public Class Implements: NormalizacaoEStopWordsDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Tratador Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPANormalizacaoEStopWordsProjetoDePesquisaDAO Methods Method Type Notes executaNormalizacaoEStopWords( List<.Object[]>,List<Copia>); public : void Método executa a normalizações e retira stopWords dos atributos das produções. Quadro 14. Descrição dos métodos da classe JPANormalizacaoEStopWordsProjetoDePesquisaDAO JPANormalizacaoEStopWodsLivroDAO Type: public Class Implements: NormalizacaoEStopWordsDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Tratador Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPANormalizacaoEStopWordsLivroDAO Methods Method Type executaNormalizacaoEStopWords( List<.Object[]>,List<Copia>); public : void Notes Método executa a normalizações e retira stopWords dos atributos das produções. 93 Quadro 15. Descrição dos métodos da classe JPANormalizacaoEStopWordsLivroDAO JPANormalizacaoEStopWodsCapituloDeLivroDAO Type: public Class Implements: NormalizacaoEStopWordsDAO Status: Proposed. Version 1.0. Phase 1.0. Package: Tratador Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPANormalizacaoEStopWordsCapituloDeLivroDAO Methods Method Type Notes executaNormalizacaoEStopWords( List<.Object[]>,List<Copia>); public : void Método executa a normalizações e retira stopWords dos atributos das produções. Quadro 16. Descrição dos métodos da classe JPANormalizacaoEStopWordsCapituloDeLivroDAO JPANormalizacaoEStopWodsBancaDAO Type: public Class Implements: NormalizacaoEStopWordsDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Tratador Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPANormalizacaoEStopWordsBancaDAO Methods Method Type executaNormalizacaoEStopWords( List<.Object[]>,List<Copia>); public : void Notes Método executa a normalizações e retira stopWords dos atributos das produções. Quadro 17. Descrição dos métodos da classe JPANormalizacaoEStopWordsBancaDAO JPANormalizacaoEStopWodsArtigoPublicadoDAO Type: Status: Package: public Class Implements: NormalizacaoEStopWordsDAO. Proposed. Version 1.0. Phase 1.0. Tratador 94 Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPANormalizacaoEStopWordsArtigoPublcadoDAO Methods Method Type Notes executaNormalizacaoEStopWords( List<.Object[]>,List<Copia>); public : void Quadro 18. Descrição dos métodos da classe JPANormalizacaoEStopWordsArtigoPublicadoDAO A 1.3 Pacote Similaridade Figura 26. Diagrama de classe – Pacote Similaridade. Método executa a normalizações e retira stopWords dos atributos das produções. 95 JPAFormulasSimilaridadeDAO Type: public Class Implements: FormulasSimilaridadeDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Similaridade Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPAFormulasSimilaridadeDAO Attributes Attributes Type valorsimilaridade private : double Notes Guarda a valor da similaridade entre duas produções. Quadro 19. Descrição dos atributos da classe JPAFormulasSimilaridadeDAO JPAFormulasSimilaridadeDAO Methods Method Type getValorSimilaridade setValorSimilaridade JPAFormulasSimilaridadeDAO SimBan(String, String, String, String) public : double Public : Void Public double SimCapL(String, String, String, Public : String, String, String) double SimEven(String, String, String, String) Public : Double SimL(String, String, String, String) SimPeriodico(String, String, String, String) Public : Double Public : Double Notes Retorna valor da similaridade entre duas produções. Seta na variável a similaridade entre duas produções. Construtor da classe. Retorna a valor da similaridade entre duas produções do tipo participação em banca. Retorna o valor da similaridade entre duas produções do tipo capitulo de livro Retorna o valor da similaridade entre duas produções do tipo trabalho em evento. Retorna o valor da similaridade entre duas produções do tipo livro. Retorna o valor da similaridade entre duas produções do tipo artigo em periódico. 96 SimPP(String, String) Public : Double Retorna o valor da similaridade entre duas produções do tipo projeto em pesquisa. Quadro 20. Descrição dos métodos da classe JPAFormulasSimilaridadeDAO JPACalculoSimilaridadeDAO Type: public Class Implements: CalculoSimilaridadeDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Similaridade Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPACalculoSimilaridadeDAO Attributes Attributes Type levenstein private : Levenshtein Notes Objeto para acessar os métodos da classes Levenshtein da biblioteca simmetrics. Quadro 21. Descrição dos atributos da classe JPACalculoSimilaridadeDAO JPACalculoSimilaridadeDAO Method Method Type getLevenshtein(); public : Levenshtein Notes Metodo retorna um objeto do tipo Levenshtein. Quadro 22. Descrição dos métodos da classe JPACalculoSimilaridadeDAO 97 A 1.4 Pacote Modelo Figura 27. Diagrama de classe – Pacote Modelo. Copia Type: public Class Status: Proposed. Version 1.0. Phase 1.0. Package: Modelo Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. Copia Attributes 98 Attributes Type ano Editora private : int Private : String Private : long Private : long Private : long Private : String Private : String Private : String idDocente idProducao idTipoproducao issn Nome Titulo Notes Quadro 23. Descrição dos atributos da classe Copia Copia Method Method Copia Copia(long,long,long,int,String, String, String, String) getTitulo(); setTitulo(String); getNome(); setNome(String); getIssn(); setIssn(String); getAno(); setAno(int); getIdTipoproducao() setIdTipoProducao(long); getEditora(); setEditora(String); getidProducao(); setidProducao(long) getIdDocente(); setIdDocente(long); Type Notes Public public Construtor da classe. Construtor da classe para instanciar os objetos copia na lista copia. Public : Stirng Public : void Public : String Public : void Public : String Public : void Public : int Public : void Public : long Public : void Public : Stirng Public : void Public : long Public : void Public : long Public : void Quadro 24. Descrição dos métodos da classe Copia. 99 .A 1.5 Acessa Banco Figura 28. Diagrama de classe – Pacote Acessa Banco. JPAProducaoDAO Type: public Class Implements : ProducaoDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Acessa Banco Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Author: Luis Fernando Balsini JPAProducaoDAO Method Method Type Notes 100 listaProducoesDoDoc enteSapiSim(); listaproducoesDoMes moTipoEAno(long,C opia) listaProducoesMonito radas(long); listaTodasProducoes PorTipoProducao(lon g,long) JPAProducaoDAO Public : List<Producao>. Public : List<Object[]> Retorna uma lista de produções do tipo produção. Public : List<Producao> Public : List<Object[]> Retorna uma lista de com todas as produções identificadas como monitoradas. Retorna uma lista de array de object com todas as produções de um tipo de producao e que seja do mesmo docente. Construtor da classe. listarProducoesDocen tePeloTipoProducao( Docente,TipoProduca o); contarProducoesDoce nteNoTipoProducao( Docente,TipoProduca o); listarProducoesRefer entesItemEscoreDoce nte(Docente,Escoreit em,Map,escoreReal); Public : List<Producao>. listarProducoesNaoC omprovadas(Docente ); listarTodasProducoes (Docente); Public : List<Producao> listarProducoesComp rovadas(Docente); Public : List<Producao>; contarProducoesDoD ocenteEmVerificacao (Docente,List<Filtros >,List<Ordenacao>,l ong,long); Public : long listarProducoesDoDo centeEmVerificacao( Docente,List<Filtros >,List<Ordenacao>,l ong,long); Public : List<Producao>; Public : Public : int Public : List<Producao>; public: List<Producao>; Retorna uma lista de array de objetos, esta função é usada para a lista de produções candidatas. Param : docente [Docente - in] Param : tipoproducao [TipoProducao – in] Retorna uma lista de objetos de produções de um docente. Param : docente [Docente - in] Param : tipoproducao [TipoProducao – in] Retorna quantidade de produções que um docente possui. Param : docente [Docente – in] Param : item [EscoreItem - in] Param : filtros [Map : in] Param : decisão [boolean - in] Retorna uma lista de objetos de produção do docente, conforme os itens de escore. Param : docente [Docente - in] Retorna uma lista de objetos de produção não comprovadas para um docente. Param : docente [Docente - in] Retorna uma lista de objetos de produção de um docente. Param : docente [Docente - in] Retorna uma lista de objetos de produção comprovadas de um docente. Param : docente [Docente – in] Param : filtros [List<Filtros> - in] Param : ordenações [List<Ordenacao> - in] Param : registro inicial [long - in] Param : registro final : [long - in] Retorna a quantidade de produções de um docente que estejam em processo de comprovação. param : docente [Docente – in] param : filtros [List<Filtros> - in] param : ordenações [List<Ordenacao> - in] param : registro inicial [long - in] param : registro final : [long - in] Retorna uma lista de objetos de produção de um docente que estejam em processo de comprovação. 101 contarProducoesEmV Public : long erificacao(List<Filtro s>); listarProducoesEmVe Public : rificacao(List<Filtros List<Producao> >,List<Ordenacao>,l ong,long) buscarProducaoEmV erificacaoPeloCodigo (long); contarProducoesDoD ocente(Docente,List< Filtros>); Public : Producao Public : long listarProducoesDoDo Public ; cente(Docente,List<F List<Producao>; iltros>,List<Ordenaca o>,long,long); lerEx(long) contarProducoesDoD ocenteValidadas(Doc ente.Usuario,List<Fil tros>); listarProducoesDoDo centeValidadas(Doce nte,List<Filtros>,List <Ordenacao>,long,lo ng); Public : List<Object[]>; Public : long Public : List<Producao>; listarProducoesDocen Public : te(long); List<Producao>; listarProducoes(List< StatusProducao>); Public : List; listarProducoesDoDo centeComStatus(long ,List<StatusProducao >); Public : List; Param : filtros [List<Filtros> - in] Retorna quantidade de produções em processo de verificação de todos os docentes. Param : filtros [List<Filtros> - in] Param : ordenações [List<Ordenacao> - in] Param : registro inicial [long - in] Param : registro final : [long - in] Retorna uma lista de objetos de produção que estejam em processo de verificação de todos os docentes. Param : código [long - in] Retorna um objeto de produção de qualquer docente. Param : docente [Docente – in] Param : filtros [List<Filtros> - in] Retorna a quantidade de produções que um docente possui. param : docente [Docente – in] param : filtros [List<Filtros> - in] param : ordenações [List<Ordenacao> - in] param : registro inicial [long - in] param : registro final : [long - in] Retorna uma lista de objetos produção de um docente. Param : código [long – in] Retorna uma lista de objetos. Param : docente [Docente – in] Param : validador [Usuário – in] Param : filtros [List<Filtros> - in] Retorna a quantidade de produções do docente que estejam validadas. param : docente [Docente – in] param : filtros [List<Filtros> - in] param : ordenações [List<Ordenacao> - in] param : registro inicial [long - in] param : registro final : [long - in] Retorna uma lista de objetos produção do docente que estejam validadas. Param : id do docente [long - in] Retorna uma lista de objetos produção de um docente passando somente o seu código. Param : status [StatusProducao – in] Retorna uma lista de objetos de produção de todos os docentes, filtrando-os através do status passado por parâmetro. Param : id do docente [long – in] Param : status [StatusProducao – in] Retorna uma lista de objetos de produção de um docente, de forma que só retorne produções com status igual passado por parâmetro. 102 buscarPeloCodigoCo mprovante(long); Public : List; Param : código do comprovante [long – in]; Retorna uma lista de objetos de produção, de mesmo código do comprovante passado por parâmetro. Quadro 25. Descrição dos métodos da classe JPAProducaoDAO. Producao Type: public abstract Class Status: Proposed. Version 1.0. Phase 1.0. Package: Acessa Banco Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. Producao Attributes Attribute serialVersionUID TITULO_DO_PERI ODICO_OU_REVIS TA id ano Titulo Datainclusao status comprovante tipoProducao autores atributos monitoria Type private static final : long public final static : String; private : Long; private : int; private : String; Private : Date; private : StatusProducao private : Comprovante; private : TipoProducao; private : List<Docente> private : List<AtributoP roducao>; List<Producao > Notes È utilizado para verificar se a produção é ou não um periódico. 103 Quadro 26. Descrição dos atributos da classe Produção. Producao Methods Method Type Notes Producao(); public: construtor da classe Produção getMonitoria() Public : List<Produca o> Public : void Retorna um lista de produções monitoradas relacionada a uma produção. public: int public: long Retorna ano da produção. Retorna o código da produção. getTitulo(); public: String Retorna o título da produção. getDataInclusão(); public: Date Retorna a data de inclusão da produção no SAPI 2.0. getStatus(); Retorna o status da produção. setId(int); public: Statusproduca o public : Comprovante public : TipoProducao public : List<Atributo Producao>; public : List<Docente >; public : Docente; public : void public : void setTitulo(String); Public : void setDatainclusao(Da te); Public : void setMonitoria(List< Producao>) getAno(); getId(); getComprovante(); getTipoProducao(); getAtributos(); getAutores(); getAutorPrincipal() ; setAno(int); Retorna objeto da classe Comprovante. Retorna objeto da classe TipoProducao. Retorna uma lista de objetos da classe Atributo Produção. Retorna uma lista de objetos da classe Docente Retorna dados de um Docente em objeto da classe Docente. Param : ano [int - in] Edita o atributo ano. Param : id [int - in] Edita o atributo id. Param : titulo [String – in] Edita o atributo titulo. Param : dataInclusao [Date – in] Edita o atributo dataInclusao. 104 setStatus(StatusPro ducao); setComprovante(Co mprovante); setTipoProducao(Ti poProducao); setAtributos(List<A tributoProducao>); setAutores(List<Do cnete>); getReferenciaBiblio grafica(); montareferenciaaut or(Docente); Public : void buscarAtributo(Stri ng); Public : AtributoProd ucao; Public : boolean; Public : boolean; Public : int ehPeriodico(); equals(); hashCode(); Public : void Public : void Public : void Public : void Public : String; Private : String; Param : status [StatusProducao - in] Edita o objeto status. Param : comprovante [Comprovante – in] Edita o objeto comprovante. Param : tipoProducao [TipoProducao – in] Edita o objeto tipoProducao. Param : atributos [AtributoProducao – in] Edita o objeto atributos. Param : autores [Docente – in] Edita o objeto autores. Retorna a referência da produção. Param : autor [Docente – in] É usada dentro do método getReferenciaBibliográfica(), e monta a referência de acordo com um modelo padrão. Param : nomeAtributo [String – in] Retorna atributo dinamicamente. É usado dentro do método ehPeriodico(); Verifica se produção é ou não periódico. Sobrescreve método equals do java. Realiza um mapeamento de atributos das produções. Quadro 27. Descrição dos métodos da classe Produção JPAAutomaticoMonitoriaDAO Type: public abstract Class Implements : AutomaticoMonitoriaDAO. Status: Proposed. Version 1.0. Phase 1.0. Package: Acessa Banco Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. JPAAutomaticoMonitoriaDAO Methods Method Type Notes JPAAutomaticoMo nitoriaDAO CriaObjetoAutMon (Producao, Producao, Long, int, long); getDataTime(); Public Construtor da classe. Public : AutMon Constroi um objeto AutMon com os parametros passados e retorna-o. Public : Stirng Retorna a data do sistema formatada. 105 listaproducoesRelat orioSapiSimAutom aticas listaProducoesSubR elatorioSapiSim(lon g) listaProducoesRelat orioSapiSimAux listaProducoesRelat orioSapiSimMonito radas listaProducoesRelat orioSapiSimMonito radasAux Public : List<Long> Retorna uma lista com os IDS das produções identificadas como automáticas. Public : List<AutMon > Public : List<AutMon > Public : List<Long> Retorna uma lista das produções coautoras relacionadas a produções principal. Retorna lista com os ids das produções confirmadas como sendo coautoras Public : List<AutMon > Quadro 28. Descrição dos métodos da classe JPAAutomaticoMonitoriaDAO. AutMon Type: public abstract Class Status: Proposed. Version 1.0. Phase 1.0. Package: Acessa Banco Details: Created on 06/06/2012 17:16:29. Modified on 06/06/2012 17:16:30. Autor : Luis Fernando Balsini. AutMon Attributes Attributes SerialVersionUID Id objectProducaoAut or objectproducaoCoa utor datainclusaoObject Type Notes Private static final : long Private : long Private : long Private : long Objetodocente Private : String Private : long Valor Private : int Idtipoproducao Private : long Quadro 29. Descrição dos atributos da classe AutMon. 106 AutMon Method Method Type getId() Public : Long setId(long) Public : void getObjectProducao Autor(); setObjectProducao Autor(long) getObjectProducao CoAutor setobjectProducaoC oAutor(long) getDataInclusaoObj ect() setDataInclusaoObj ect(String) getObjectDocente() ; setObjectDocente(L ong) getValor(); Public : long setValor(int) Public : void Notes Public :void Public : long Public : void Public : String Public : void Public : Long Public : void Public : int getidTipoProducao( Public : Long ) setidTipoProducao( Public : void long) Quadro 30 . Descrição dos métodos da classe AutMon. 107 APÊNDICE C. ALGORITMO DE COMPARAÇÃO DE PRODUÇÕES 108 Será abordado neste apêndice um algoritmo em pseudo código para comparação das produções acadêmicas com finalidade de identificar coautorias. O algoritmo também determina qual modalidade (automáticas, monitoras ou nenhuma delas) a comparação entre produções corrente pertencerá. 109 Recupera lista de produções novas (PN) Para cada produção (PNn) Recupera lista de produções do mesmo tipo e ano (C) Para cada produção candidata (Cn) Se (Cn .tipo == periódico) Se (Cn.ISSN != PNn.ISSN) retorna (pega próxima Cn) senao Se (simPer( PN n , C n ) > 87) retorna (Identifica Automática) senao Se (70 < simPer( PN n , C n ) < 86) retorna (Identificação Monitorada) senao Se (simPer( PN n , C n ) < 70) Retorna (pega próxima Cn) Se (Cn. tipo == Evento) Se(Cn. ISBN != PNn. ISBN) return (pega próxima Cn) senao Se (simEven( PN n , C n ) > 87) retorna (Identifica Automática) senão Se(70 < simEven( PN n , C n ) < 86) retorna (Identificação Monitorada) senao Se (simEven ( PN n , C n ) < 70) Retorna (pega próxima Cn) Se(Cn. tipo == Capítulo de Livro) Se(Cn. ISBN != PNn. ISBN) retorna (pega próxima Cn) senao Se(simCapL( PN n , C n ) > 87) retorna (Identifica Automática) senão Se(70 < simCapL( PN n , C n ) < 86) retorna (Identificação Monitorada) senao Se (simCapL ( PN n , C n ) < 70) Retorna (pega próxima Cn) Quadro 31. Algoritmo da Formula de Similaridade 110 Fim Se(Cn. tipo == Livro) Se(Cn. ISBN != PNn. ISBN) retorna (pega próxima Cn) senao Se(simL( PN n , C n ) > 87) retorna (Identificação Automática) senão Se(70 < simL( PN n , C n ) < 86) retorna (Identificação Monitorada) senao Se (simL ( PN n , C n ) < 70) Retorna (pega próxima Cn) Se(Cn. tipo == Participação em Banca) Se(simBan( PN n , C n ) > 87) retorna (Identificação Automática) senão Se(70 < simBan( PN n , C n ) < 86) retorna (Identificação Monitorada) senao Se (simBan ( PN n , C n ) < 70) Retorna (pega próxima Cn) Se(Cn. tipo == Projeto de Pesquisa) Se(simPP( PN n , C n ) > 87) retorna (Identificação Automática) senão Se(70 < simPP( PN n , C n ) < 86) retorna (Identificação Monitorada) senao Se (simPP ( PN n , C n ) < 70) Retorna (pega próxima Cn) Fim Fim Quadro 32. Algoritmo da Formula de Similaridade