Pré-processamento textual para a extração de informação em bases de patentes Bruno Silva Sette, Claudia Aparecida Martins Instituto de Computação – Universidade Federal de Mato Grosso (UFMT) Av. Fernando Corrêa da Costa, nº 2367 – Bairro Boa Esperança – Cuiabá – MT – Brasil [email protected], [email protected] Abstract. Patents are records of technological innovations stored in datasets. It is necessary an efficient method to search and analyze the information presents in the patents. This article describes a methodology that propose to collect, preprocess, extract and analyze of textual data relating to patents, from Periscope system. Several patents are recovered using a specific algorithms from patents site. In this work is showed the collection and preprocessing of patents. A preprocessing is realized for patterning of terms and reducing the number of characters. The results of preprocessing based on ten patents showed that the number of characters was reduced drastically. Resumo. Patentes são registros de inovações tecnológicas armazenadas em banco de dados. É necessário um método eficaz para a busca tanto de informações, visando o processo de depósito de novas patentes, quanto para análise de conhecimento relevante de padrões, pois, apesar das patentes estarem disponíveis livremente na web, nem sempre o conhecimento intrínseco presente é aproveitado. Este artigo descreve uma metodologia proposta para a coleta, pré-processamento, extração de padrões e análise de dados textuais referente a documentos de patentes, relacionadas ao projeto Periscope. Várias patentes são recuperadas usando algoritmos específicos em um site de patentes. Um pré-processamento é realizado para padronização dos termos e redução do número de caracteres. O resultado do pré-processamento de dez patentes mostram que o número de caracteres são reduzidos drasticamente. 1. Introdução Descoberta de conhecimento em base de dados (Knowledge Discovery in Datasets KDD) é um processo para obtenção de informações relevantes e úteis na tomada de decisões. No cenário atual, com a globalização da Internet e o acesso à informação, o conhecimento torna-se um fator de vantagem competitiva e, portanto, uma moeda valiosa a ser adquirida na área de gestão estratégica de uma empresa [Ferreira et al. 2009]. Considerando o campo de inovações tecnológicas, no qual as patentes são registradas em banco de dados, é necessário um método eficaz para a busca tanto de informações, visando o processo de depósito de novas patentes, quanto para análise de conhecimento relevante de padrões, pois, apesar das patentes estarem disponíveis livremente na web, nem sempre o conhecimento intrínseco presente é aproveitado [Porter 1985]. No entanto, as patentes são armazenadas em formato textual e analisar dados não estruturados, como textos, é uma tarefa complexa que exige uma metodologia adequada, principalmente relacionada com o pré-processamento, comparada a dados estruturados. E como cerca de 80% de informações contidas nas organizações estão contidas em documentos textuais, métodos como o de Mineração de Textos (Text Mining) são aplicados em diversos contextos e finalidades [Mitchel 2015]. Mineração de Textos é considerada, por muitos autores, como uma etapa do processo de Descoberta de Conhecimento em Textos (Knowledge Discovery from Text – KDT) e utiliza técnicas de análise e extração de padrões a partir de textos e frases [Passos 2006]. Consiste na aplicação de algoritmos computacionais a fim de buscar informações implícitas nos respectivos dados (textos) que, normalmente, não poderiam ser obtidas de forma tradicional [Morais 2007; Wives 1999]. As principais contribuições nesse processo estão relacionadas à busca de informações específicas em documentos, a análise qualitativa e quantitativa de grandes volumes de textos, e a melhor compreensão do conteúdo disponível em documentos textuais [Passos, 2006]. Considerando esse contexto, este trabalho apresenta uma metodologia computacional para ser aplicada nas etapas iniciais de busca e obtenção de informações e conhecimento em bases de patentes, metodologia essa baseada nos métodos de Mineração de Textos. É descrito sua etapa inicial, com a coleta de dados, até a etapa de tratamento e pré-processamento dos dados. É um trabalho em desenvolvimento que faz parte de um projeto maior desenvolvido num sistema multiplataforma, denominado Periscope. Neste sistema, os dados contidos nas patentes podem ser tratados pelo usuário para corrigir nomes de depositantes e inventores que, por vezes, são indexados de diferentes formas ou até mesmo com erros de grafia, nas bases de patente. Também é possível incluir informações não disponíveis nas bases nas quais os documentos foram extraídos, como por exemplo, a natureza jurídica dos depositantes. Nesse trabalho, são apresentados as duas primeiras etapas do projeto e seus resultados, ou seja, como foi realizada a coleta de dados e o pré-processamento das patentes recuperadas. O trabalho está organizado em seções. Na Seção 2 é apresentada a metodologia utilizada nas etapas um e dois do projeto maior. Na Seção 3 é descrita, também, cada etapa da metodologia e os resultados obtidos com o pré-processamento. Na Seção 4 são apresentadas as conclusões. 2. Metodologia aplicada em patentes O processo de Mineração de Textos consiste de várias etapas e envolve desde a coleta dos dados textuais, pré-processamento, indexação, mineração até a análise dos resultados, como mostrado na Figura 1 [Morais 2007]. A Coleta é a etapa que responsável pela busca de dados, ou seja, os dados de interesse a serem recuperados. O Pré-processamento é a etapa de tratamento e limpeza dos dados coletados na etapa anterior. A etapa de Indexação consiste na aplicação de algoritmos para recuperar, em textos, documentos relevantes a uma query, sem precisar examinar o documento inteiro. A etapa de Mineração consiste na aplicação de algoritmos computacionais para extrair informações e padrões, a fim de obter conhecimentos implícitos nos dados recuperados. Por fim, a Análise, ou pósprocessamento, é a etapa que visa identificar e validar a veracidade nas informações recuperadas pelo sistema [Mitchel 2015; Passos 2006]. Devido ao escopo amplo do projeto e por ter iniciado recentemente, para este trabalho, foram realizadas as duas primeiras etapas do processo de mineração de textos, da seguinte forma: Figura 1. Etapas de um processo de Mineração de Textos [Morais 2007] 1. Coleta: os dados utilizados são textos de patentes coletados entre o mês de março e julho de 2016, que estão disponíveis na página web United States Patent and Trademark Office 1 - USPTO. Para a obtenção destes dados, e o armazenamento dos mesmos, foi necessário a utilização de um mecanismo de busca e recuperação de dados em ambientes web, como um crawler. Crawler é um programa de computador desenvolvido para navegar pela Internet buscando informações e/ou coletando dados. Na teoria, é o procedimento de coletar dados por meio de qualquer meio que não seja um programa interagindo com uma API (Application programming interface). Normalmente, isso é feito implementando um programa que consulte um servidor web automaticamente, solicitando dados na forma de HTML (HyperText Markup Language, que significa Linguagem de Marcação de Hipertexto) ou outros arquivos. Diversas linguagens possuem bibliotecas prontas para o desenvolvimento de crawlers. Aqui, foi utilizada a biblioteca Beautfulsoup, pela facilidade da implementação e as funções desenvolvidas especialmente para as técnicas de coleta de dados, disponível na linguagem Python [Mitchel 2015]. 2. Pré-processamento: o objetivo desta etapa é a eliminação de dados irrelevantes e a padronização de termos utilizando algoritmos específicos, de modo que, a etapa de recuperação de informação tenha uma melhor performance. Palavras (strings) como preposições, artigos, tags do HTML, entre outras, são pouco relevantes para o contexto do domínio de recuperação da informação visto que, geralmente, têm pouco significado na análise semântica dos textos, por serem comuns em todos os textos de uma mesma língua. Textos obtidos na web usando o s crawlers são carregados desses termos (palavras) irrelevantes considerando que são intrínsecas à qualquer texto e, portanto, não discriminam o domínio. É importante que essas palavras sejam eliminadas para não sobrecarregarem o processo e/ou para não interferirem na análise das informações. Diversas linguagens dão suporte para essa etapa de pré-processamento em dados textuais. Neste trabalho foi escolhida a biblioteca Natural Language Toolkit - NLTK, da linguagem Python, por possuir ferramentas adequadas para esta etapa do processo [Bird and Klein and Loper 2010]. O pré-processamento foi dividido em quatro (sub)etapas: Case Folding, Remoção de tags HTML, Tokenização e Remoção de Stopwords, especificadas na Sessão 3. A seguir, são apresentados resultados preliminares das primeiras etapas, com 1 http://www.uspto.gov ilustração de dez documentos. 3. Resultado do Pré-processamento O mecanismo de pesquisa padrão do site USPTO é o “Quick Search” (pesquisa rápida). O usuário pode selecionar alguns termos básicos para a busca e, em seguida, obter os resultados relevantes, de acordo com os algoritmos utilizados pelo sistema de busca. O crawler utiliza os mesmos algoritmos de busca presentes no site para obter e gerar o resultado preliminar de patentes. Até o momento, já foram recuperadas e preprocessadas 577.411 patentes do site USPTO, depositadas entre o mês de março e julho de 2016. Para ilustrar os resultados do pré-processamento, considere dez patentes (textos) recuperados da USPTO. Os textos, ou patentes, obtidos são armazenados em arquivos, do tipo JSON (JavaScript Object Notation), que é um formato leve de arquivo para intercâmbio de dados computacionais, contendo a descrição geral da patente e o código da mesma, além da página contendo o corpo da patente. Como mencionado, os textos recuperados possuem características que não discriminam o domínio, tais como: caracteres irrelevantes para as análises e recuperação de informações, com tags HTML e uma quantidade significativamente grande de caracteres ou termos (Figura 2). 500000 Quantidade 400000 300000 200000 100000 0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Patente Figura 2: Quantidade de caracteres por patente Considerando essas dez patentes, que variam de 50K a 450K 2 caracteres, o préprocessamento consiste em padronizar termos, remover palavras irrelevantes, tags e caracteres especiais. A seguir são apresentadas as quatro etapas no pré-processamento dos textos. 3.1. Case Folding É o processo de converter todos os caracteres de um documento para o mesmo padrão, como letras em caixa alta para baixa, maiúsculas para minúsculas, etc. Nesta etapa não houve alterações na quantidade de caracteres. 3.2. Remoção de tags HTML O crawler retorna documento em formato HTML carregado de tags e outros símbolos que são parte da estrutura desse tipo de arquivo. Portanto, é necessário a remoção desses ruídos. Na Figura 3 é mostrada a quantidade de caracteres de cada patente após a remoção de tags. 2 Variação média em quantidade de caracteres de cada documento. Quantidade 450000 400000 350000 300000 250000 200000 150000 100000 50000 0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Patente Figura 3: Quantidade de caracteres por patente sem as tags É interessante observar que a patente P3 reduziu em mais de 50K caracteres (450.000 para menos de 400.000). 3.3. Tokenização Essa etapa consiste em transformar o texto em apenas um conjunto de palavras (tokens) de forma limpa, eliminando caracteres inválidos e espaços eventualmente presentes no texto. Geralmente, os textos são carregados de caracteres especiais, como: ~, !, @, etc. Além disso, a simples eliminação dos espaços diminui consideravelmente a quantidade de caracteres presentes na patente. O texto passa a ser tratado como uma “lista”, o que gera um ganho significativo no processamento desses dados e será útil para gerar uma tabela de valores, para as etapas posteriores. Na Figura 4 é mostrada a quantidade de caracteres de cada patente após a tokenização. 350000 300000 Quantidade 250000 200000 150000 100000 50000 0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Patente Figura 4: Quantidade de caracteres por patente após tokenização É interessante observar que a patente P3 reduziu drasticamente o número de caracteres, para menos de 350K, como mostrado na Figura 4. 3.4. Remoção de Stopwords Palavras irrelevantes em um processo de recuperação de informação devem ser eliminadas. Nesta etapa, uma lista contendo palavras a serem descartadas é utilizada Stoplist. São palavras que não possuem conteúdo semântico significativo para o contexto em que elas existes, e portanto, irrelevantes para a análise discriminante de textos. Palavras tais como: (em inglês) “i”, “me”, “my”, “myself”, “we”, “our”, não fornecem nenhuma informação discriminativa na expressão do conteúdo dos textos [Saton and Mcgill 1983]. Aqui, a remoção das stopwords foi realizada utilizando a biblioteca NLTK (Natural Language Toolkit) disponível na linguagem Python. Essa biblioteca já possui diversas stoplists em diversos idiomas. Novamente, a patente P3 reduziu o número de caracteres de aproximadamente 350K para pouco mais de 250K, como mostrado na Figura 5. 300000 Quantidade 250000 200000 150000 100000 50000 0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Patente Figura 5: Quantidade de caracteres por patente sem stopwords 3.5. Análise comparativa do pré-processamento das patentes Após todas as etapas, é possível analisar comparativamente os resultados obtidos na redução de caracteres em cada etapa realizada, como mostrados na Tabela 1 e na Figura 6, no qual Redução (%) é a porcentagem de caracteres excluídos em todo o processo.É interessante observar que o documento que teve o menor número de caracteres reduzidos foi a P1 e o maior número foi a patente P10. Está sendo analisada essa relação entre o número inicial de caracteres e o número final, após a redução. Tabela 1. Resumo dos caracteres das patentes Inicial P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 312044 57272 462160 100713 121146 96285 73908 119004 133557 114852 Quantidade Patente Sem HTML Tokens 288784 40724 385622 85629 95964 80592 59440 96243 118809 67521 244784 34032 327603 72430 80249 67946 50373 81577 99954 56801 Stopwords Redução (%) 195675 17593 253708 53658 55042 49535 34179 54195 69312 33159 37,29% 69,28% 45,10% 46,72% 54,57% 48,55% 53,75% 54,46% 48,10% 71,13% 500000 450000 400000 350000 300000 250000 200000 150000 100000 50000 0 Inicial Sem HTML Tokenizado Stopwords P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Patente Figura 6: Comparação da quantidade de caracteres das patentes É possível verificar na Tabela 1, com o exemplo da P5 que teve uma redução ao final do processamento de 54,57% de caracteres, como mostrado também na Figura 6. É interessante observar na Figura 6 que a curva que representa o comportamento na redução de caracteres em todas as patentes foram similares. Observa-se que, o número de caracteres é reduzido drasticamente após o préprocessamento. Mesmo após essa redução de caracteres, a dimensionalidade ainda é significativa, o que pode garantir a integridades dos dados por um lado, mas ainda é um problema na geração de uma tabela, para processamento na etapa de mineração. Assim, técnicas de redução de dimensionalidade estão sendo selecionadas para aplicação nos dados para, posteriormente, gerar um conjunto de palavras relevantes a serem submetidos às próximas etapas. 4. Conclusões A busca de informações em patentes é uma importante tarefa para o depósito de novas patentes no banco e para a busca de padrões nesses dados. A aplicação de algoritmos de mineração de dados a textos é complexa devido a natureza não estruturada (textual) dos dados. Além disso, essa tarefa não é trivial devido ao grande volume de patentes e as diversas formas de dizer a mesma coisa com palavras semelhantes. Assim, é importante e necessário mecanismos automáticos para auxiliar na recuperação de informação nesses dados de patentes. Neste trabalho é proposta uma metodologia baseada nas etapas de um processo de KDT. Inicialmente, são apresentadas as etapas para coletar e realizar o préprocessamento de patentes relacionados ao sistema Periscope. Já foram coletadas e processadas mais de quinhentas mil patentes do site USPTO. Para ilustrar as etapas desenvolvidas, são apresentadas o pré-processamento de dez documentos de patentes, no qual é possível verificar uma drástica redução no número de caracteres. Após essas etapas concluídas, o ganho referente a quantidade de caracteres desconsiderados no corpo das patentes pode ser considerada alta. As principais dificuldades encontradas no processo surgem da própria natureza dos dados analisados, como sua dimensionalidade, e na coleta dos mesmos, sendo necessário o desenvolvimento de métodos específicos para a coleta de formatos específicos. Os dados estão sendo processados para que possam ser reduzidos ainda mais a dimensionalidade das palavras, pela busca de palavras mais relevantes para o contexto e, também, serem transformados em uma tabela com os atributos (palavras) e respectivos valores, utilizando várias medidas e informações relacionadas ao contexto, para serem submetidos às etapas posteriores, como indexação, mineração, análise e integração ao Periscope. Referências Bird, Seven and Klein, Ewan and Loper Edward. (2010), “Natural Language Processing with Python”, 1th edition, O'Reilly. Ferreira, A., A., and Guimarães, E., R., and Contador, J., C., (2009) “Patente como instrumento competitivo e como fonte de informação tecnológica” in Gest. Prod., São Carlos, v. 16, n. 2, p. 209-221. Mitchel, Ryan. (2015), “Web Scraping with Python - Collecting Data from the Modern Web”, 1th edition, O'Reilly. Morais, Edison A., M. (2007), “Contextualização de Documentos em Domínios Representados por Ontologias Utilizando Mineração de Textos”, Dissertação de Mestrado UFG. Passos, E. and Aranha, C. (2006), “A Tecnologia de Mineração de Textos” - RESIRevista Elerônica de Sistemas de Informação, Nº2. Porter, M. E. (1985) “Vantagem competitiva: criando e sustentando um desempenho superior”. 7 ed. Rio de Janeiro: Campus. Saton, G. and Mcgill, M. J. (1983), “Introduction to Modern Information Retrieval.” John Wiley and Sons, New York. Wives, L. (2002), “Tecnologias de descoberta de conhecimento em textos aplicadas à inteligência competitiva”. Exame de Qualificação EQ-069, PPGC-UFRGS. Wives, L. (1999), “Um Estudo sobre Agrupamento de Documentos Textuais em Processamento de Informações não Estruturadas Usando Técnicas de Stopwords”. Disertação de Mestrado, PPGC/UFRGS, Porto Alegre (Brasil).