Escolar Documentos
Profissional Documentos
Cultura Documentos
Cat, C i
Brasília – DF
2021
EDES GOMES DA COSTA
Brasília
2021
Dedico essa obra, primeiramente, a Deus por
me conduzir nos caminhos da graça; à minha
família, esposa e filhos, que aceitaram comigo
o desafio; a meu pai (in memoriam), mãe e ir-
mãos. A família é base fundamental sublime e
referência completa em minha vida.
AGRADECIMENTO
Muito obrigado!
RESUMO
A large amount of digital documents are produced every day and, for the most part,
are stored in an unstructured way. The immense amount of data generated represents
an opportunity and a challenge for companies, since data builds intelligent information,
streamlines decision making, optimizes access to information, and document organi-
zation. The digital transformation process is already a reality for public and private
institutions. The biggest challenge is to structurally produce an indexed base of the
information contained in these documents and create a digital collection capable of
accelerating and generating recovery of these data. This research aims to propose an
approach for semi-automatic indexing of a company's documents, through regular ex-
pressions and tokenization, allowing the identification and retrieval of relevant terms
and keywords, with the objective of retrieving the documents in a correct way. concise
and efficient, enabling the creation of a co-occurrence network of terms between these
documents. As a methodological tool, techniques for text treatment will be adopted,
and a survey of the main means of semi-automatic term extraction, according to the
needs of the proposed solution.
1. INTRODUÇÃO...................................................................................................................11
1.1 REVISÃO DE LITERATURA ......................................................................................16
1.1.1 Sistemas de gestão documental ................................................................19
1.1.2 Recuperação de documentos .....................................................................20
1.2 PROBLEMA DE PESQUISA ......................................................................................24
1.3 JUSTIFICATIVA............................................................................................................25
1.4 OBJETIVOS ..................................................................................................................27
1.4.1 Objetivo geral ..................................................................................................27
1.4.2 Objetivos específicos ....................................................................................27
2. REFERENCIAL TEÓRICO..............................................................................................28
2.1 SISTEMAS DE GESTÃO DOCUMENTAL ...............................................................28
2.2 PROCESSAMENTO DE TEXTOS ............................................................................34
2.2.1 Processamento de Linguagem Natural ....................................................34
2.2.2 Coocorrência em documentos....................................................................38
6. CONCLUSÃO ....................................................................................................................69
7. REFERÊNCIAS .................................................................................................................70
1 INTRODUÇÃO
Para direcionar a pesquisa sobre o estudo proposto, foi realizada uma revisão
de literatura sobre o assunto. A pesquisa foi realizada na base de dados acadêmicos
Scopus, considerada o maior banco de dados de citações e resumos, abrangendo
periódicos científicos, anais de conferências, livros e demais documentos em junho
19
1Trata-se de um software para construção e visualização de redes bibliométricas. Essas redes podem
incluir, por exemplo, periódicos, pesquisadores ou publicações individuais e podem ser construídas
com base em relações de citação, acoplamento bibliográf ico, cocitação, coautoria e coocorrência de
termos. (https://www.vosviewer.com)
2Pesquisa realizada em 12/07/2020.
3https://www.elsevier.com/solutions/scopus
20
Fonte: Elaborada pelo autor através do sof tware VOSViewer e utilizando um thesaurus com os termos
mais identif icados e suas coocorrência.
21
o GED veio evoluindo nas últimas décadas de modo que suas aplicações
incluíssem:
− A tecnologia de imagem latente que f ornece a f acilidade para substituir
eletronicamente um sistema de gerenciamento de documentos baseado
em papel;
− A tecnologia de multimídia que envolve a captação e a exposição de vários
tipos de dados, junto com a f acilidade para recuperar conteúdos de obje-
tos de documento em multimídia;
22
memória de longo prazo que capturam semânticas ocultas no texto por meio de de-
pendências de longa distância. Os resultados apresentam três conjuntos de dados de
documentos que mostram que o modelo proposto supera substancialmente as linhas
de base e as abordagens anteriores para extração de frases-chave.
Steyvers e Griffiths (2007) destacam, em alguns capítulos de seu livro que ilus-
tra a aplicação de um método estatístico como a análise semântica latente (Latent
Semantic Analysis – LSA), que grandes bancos de dados podem fornecer informações
sobre a cognição humana. A abordagem LSA faz três alegações: que informações
semânticas podem ser derivadas de uma matriz de coocorrência de documentos do
Word; que a redução de dimensionalidade é uma parte essencial dessa derivação; e
que palavras e documentos podem ser representados como pontos no espaço eucli-
diano. Sugerem uma abordagem consistente com as duas primeiras, mas diferente
na terceira, descrevendo uma classe de modelos estatísticos em que as propriedades
semânticas de palavras e documentos são expressas em termos de tópicos probabi-
lísticos.
Wang et al. (2016) apresentam um estudo sobre o problema da incorporação
de documentos vinculados para classificação e propõem uma estrutura de incorpora-
ção de documentos vinculados (Linked Document Embedding – LDE) que combina
informações de link e rótulo com informações de conteúdo para aprender representa-
ções de documentos para classificação. Resultados experimentais em conjuntos de
dados do mundo real demonstram a eficácia da estrutura proposta. Outros experimen-
tos são conduzidos para entender a importância das in formações de link e rótulo na
estrutura proposta LDE.
Blazquez (2018) desenvolveu uma arquitetura de Big Data que integra adequa-
damente a maioria das fontes não tradicionais de informações e métodos de análise
de dados a fim de fornecer um sistema projetado especificamente para prever com-
portamentos, tendências e mudanças sociais e econômicas. Legrand et al. (2020) pro-
põem o desenvolvimento de técnicas de processamento de linguagem natural (NPL)
para orientar especialistas em busca do conhecimento, tendo em vista que uma parte
significativa do conhecimento de ponta em farmacogenômica (PGx) está acumulada
em publicações científicas dificilmente reutilizáveis por seres humanos ou software.
Segundo Senthil e Dinakaran (2020), a tarefa mais desafiadora em qualquer
sistema de raciocínio moderno é a aquisição automática de informações a partir do
24
1.3 JUSTIFICATIVA
Para Feldman e Dagan (1995), “a mineração de texto pode ser descrita como a des-
coberta de conhecimento, pois ela fornece soluções para problemas comuns de ge-
renciamento de informações envolvendo a recuperação, análise de texto, extração de
informações, clustering, categorização, indexação e visualização dos dados.” As difi-
culdades com a compreensão automatizada de texto são causadas principalmente
por termos e frases ambíguos, dependência de entendimento do contexto e do conhe-
cimento de base. Documentos não-estruturados podem ser de fácil compreensão para
pessoas, porém, muito complexos para um computador. Para Imamura (2001), “a di-
ficuldade de analisar textos se deve ao fato de que eles são tipo de dados que pos-
suem uma estrutura interna limitada.” Para superar essa dificuldade, a mineração de
texto emprega um conjunto de algoritmos para converter texto em dados estruturados
e os métodos quantitativos usados para analisar esses dados. Califf (1998) sugeriu o
uso de algoritmos de machine learning para extrair informações de documentos de
texto e para a criação de bancos de dados facilmente pesquisáveis a partir das infor-
mações, tornando o texto mais acessível. Porém, o autor adverte: “o conhecimento
descoberto só é útil e informativo se for preciso”. Por conseguinte, é importante medir
a precisão dos dados – dados extraídos automaticamente podem conter ruídos, se
comparados a extrações manuais.
1.4 OBJETIVOS
2 REFERENCIAL TEÓRICO
ser armazenados e exclui aqueles que não são mais úteis, enquanto retém os docu-
mentos mais valiosos.
Captura
Recuperação Cl a ssificação
GED
Captura de documento
Classificação de documento
Indexação de documento
Armazenamento de documento
Recuperação de documento
− Som: fonologia;
− Estrutura: morfologia e sintaxe; e
− Significado: semântica e pragmática.
Expressões regulares
qualquer palavra, podem-se facilmente extrair, substituir e fazer várias outras opera-
ções de manipulação de textos usando expressões regulares. As expressões regula-
res estão presentes em praticamente todas as linguagens de programação populares.
Não será um exagero mencionar que, sem o conhecimento de expressões regulares,
não é possível realmente construir um sistema baseado em PLN. “Regex tem muitos
elementos e recursos importantes que ajudam a construir um sistema útil, solução de
expressões adequadas para extração ou manipulação de palavras” (NIWRATTI,
2019).
Tokenização
Stopwords
Stopwords são palavras em qualquer idioma que não acrescentam muito signi-
ficado a uma frase. Eles podem ser ignorados com segurança sem sacrificar o signifi-
cado da frase. Se temos uma tarefa de classificação de texto ou análise de sentimento,
devemos remover as palavras irrelevantes, uma vez que não fornecem nenhuma in-
formação ao nosso modelo, ou seja, manter as palavras indesejadas fora do nosso
corpus; mas, se temos a tarefa de tradução de idiomas, as stopwords são úteis, pois
devem ser traduzidas junto com outras palavras. Não existe uma regra rígida e rápida
sobre quando remover as stopwords. Alguns autores sugerem remover as stopwords
se a tarefa a ser executada for Indexação automática, classificação de idioma, filtra-
gem de spam, geração de legenda, geração de tag automática, análise de sentimento
ou algo que esteja relacionado à classificação de texto. Por outro lado, se a tarefa for
tradução automática, problemas de resposta a perguntas, resumo de texto, modela-
gem de linguagem, é mais adequado não remover as palavras irrelevantes, pois elas
são uma parte crucial desses aplicativos. (SAI TEJA, 2010)
N-gramas
fornecem uma base sólida necessária para gerenciar conteúdo onde ele é cri-
ado, onde e quando for necessário, podendo ser implantado na nuvem, no local
ou híbrido.
− Alfresco: É um dos softwares de gestão eletrônica de documentos mais popular
do mundo. Como uma plataforma de ECM, destaca-se como solução de auto-
matização dos processos documentais de uma empresa, reduzindo custos, fo-
mentando a colaboração e garantindo resiliência a todos os documentos forne-
cidos pelos colaboradores. Permite integração com suíte de documentos como
o LibreOffice ou outras, garantindo um aumento de produtividade. Construído em
tecnologia Java, é código aberto. Para o Alfresco, abrir significa um compromisso
com padrões abertos e transparência de produto – que governam por uma pla-
taforma robusta que pode ser o centro de conteúdo em qualquer organização
moderna. Arquitetonicamente, o Alfresco é separado em três camadas: dados,
serviços e apresentação. Cada camada é dimensionada individualmente, o que
permite grandes repositórios de conteúdo com centenas de milhões de objetos
gerenciados. A camada de dados consiste em um banco de dados e armazena-
mento de arquivos. O núcleo do Alfresco é o nível de serviço. Ele contém todas
as funcionalidades do ECM junto com recursos para integração e envio de do-
cumentos. O Alfresco fornece uma camada de apresentação chamada 'Share',
que é uma interface de usuário da web para gerenciamento de documentos e
colaboração. Junto com o Share, há também integrações com interfaces de usu-
ário de terceiros, como MS Office, Google Drive e aplicativos de e-mail (AL-
FRESCO, 2014).
− Documentium By EMC – é um software de Enterprise Content Management
(ECM) usado para armazenar conteúdo de uma empresa em repositórios segu-
ros. Junto com as unidades de armazenamento, também oferece facilidade de
uso para controlar e organizar todos os arquivos digitais, podendo editar, consul-
tar, compartilhar, utilizar ou recuperar facilmente qualquer informação importante
de qualquer lugar e a qualquer hora que desejar. Além disso, também ajuda a
tornar os documentos protegidos de fatores de risco externos e internos. O Do-
cumentum oferece uma abordagem holística de soluções ECM com funcionali-
dades essenciais que incluem gerenciamento de documentos, gerenciamento de
processos de negócio, gerenciamento de registros, gerenciamento de retenção,
46
4 ASPECTOS METODOLÓGICOS
Estabelecer Design de
requisitos alternativas
Avaliar o
Prototipar
design
4 Esta parte introdutória do capítulo tem como ref erência única o trabalho de Rogers, Sharp e Preece
(2013).
48
as tarefas se repetem até que a solução encontrada seja satisfatória. Além disso, elas
estão interligadas. Por exemplo, os protótipos podem auxiliar na avaliação de alterna-
tivas de design diferentes, inclusive reavaliando os requisitos. Além disso, as ativida-
des de Design Centrado no Usuário devem ser planejadas e integradas em todas as
fases do ciclo de vida do produto, ou seja, a concepção, análise, projeto, implementa-
ção, teste, manutenção e em produção.
5 PROPOSTA DE SOLUÇÃO
organização. Por essa razão, é um tipo de pesquisa utilizado pois permite fazer aná-
lises qualitativas sobre as informações de uma organização.
Conforme apresentado na Figura 7, em uma análise preliminar, os documentos
financeiros são os mais produzidos e armazenados nas empresas pesquisadas. A
partir dessas informações, propomos neste trabalho a extração automática de índices
já conhecidos como CNPJ, CFP, Datas e Valores, E-mails, Numerais (Número de No-
tas Fiscais, Número de documentos internos etc.), consequentemente, combinando-
os com o maior número de vezes em que esses índices são localizados em outros
documentos.
TIPOS DOCUMENTAIS
COMPROVANTE DE PAGAMENTOS 853.417
DOCUMENTOS PESSOAIS 762.473
NÃO CLASSIFICADOS 710.445
FICHA DE INSCRIÇÃO 564.152
NOTAS FISCAIS 492.753
PRONTUARIOS MÉDICOS 418.422
CONTRATOS 307.054
BOLETO BANCÁRIO 162.951
DIPLOMA 76.632
CONSULTAS 66.538
EXTRATO BANCARIOS 47.328
CERTIDÕES 45.001
PROPOSTAS 39.317
EXTRATO DE CARTAO 35.071
CONTRA-CHEQUE 32.549
PROCESSO JUDICIAL 25.252
DOSSIÊ ACADÊMICO 24.728
COPIA DO CHEQUE 23.015
CPF 18.979
DOCUMENTO DE IDENTIFICAÇÃO 16.394
COTAÇÕES 16.265
RECIBO DE PAGAMENTO 16.145
HISTORICO ESCOLAR 10.982
- 100.000 200.000 300.000 400.000 500.000 600.000 700.000 800.000 900.000
Metacaractere Significado
{n} Exatamente n ocorrências
{n,m} No mínimo n ocorrências e no máximo m
{n,} No mínimo n ocorrências
{,n} No máximo n ocorrências
? 0 ou 1 ocorrência; o mesmo que {,1}
+ 1 ou mais ocorrência; o mesmo que {1,}
* 0 ou mais ocorrência
«q»? Modera qualquer um dos quantif icadores acima (ver Gula × moderação)
56
Metacaractere Significado
^ Início do texto, ou de uma linha com o f lag re.MULTILINE
\A Início do texto
Fim do texto, ou de uma linha com o f lag re.MULTILINE; não captura o \n no f im
$
do texto ou da linha
\Z Fim do texto
Posição de borda, logo antes do início de uma palavra, ou logo depois do seu
\b
término; o mesmo que a posição entre \W e \w ou vice-versa
\B Posição de não-borda
Metacaractere Significado
def ine um grupo, para ef eito de aplicação de quantif icador, alternativa ou de
(...)
posterior extração ou reuso
...|... alternativa; casa a regex à direita ou à esquerda
\«n» recupera o texto casado no n-ésimo grupo
Como proposta de solução foi sugerido a arquitetura da solução de acordo com o fluxo
apresentado na Figura 8.
Figura 8 – Arquitetura da Solução
lher termos que representem um determinado documento requer uma análise do con-
texto, operação subjetiva difícil de ser automatizada. No entanto, pode-se criar um
conjunto de regras sequenciadas que possibilitam a extração automática de termos
de um conjunto de documentos e armazenando esses termos e seus relacionamentos
entre esses documentos a fim de criar uma base de dados para pesquisas.
Remoção de Stopwords
63
Essa fase envolve a eliminação de palavras que não devem ser consideradas
no contexto do documento. Algumas regras podem ser aplicadas aos documentos
como remoção de caracteres especiais, acentuação, pontuação, números e a retirada
de stopwords, segundo Saif et al. (2014). Normalmente, fazem parte desta lista as
preposições, pronomes, artigos, advérbios e outras classes de palavras auxiliares.
Além dessas, existem também palavras cuja frequência no conteúdo dos documentos
é muito alta. Palavras que aparecem em praticamente todos os documentos de uma
coleção não são capazes de discriminar documentos e não devem fazer parte dos
índices. As stopwords formam uma lista de palavras conhecida como stoplist. As pa-
lavras que compõem a stoplist dificilmente são utilizadas em uma consulta, além disso,
sua indexação somente tornaria o índice maior do que o necessário. No anexo I, é
apresentada uma stoplist utilizada neste projeto.
Normalização
Contrato → Contratos
Trabalhador → Trabalhadora
Degrau → Degraus
Amigo → Amigão
Ex.: f avorito, f avorita e f avoritos, amigo, amiga, amigão, gato, gata, gatos, gatas
64
SequenceMatcher
Tokenização
Uma política de gestão da informação pode ser definida como todos os processos
utilizados pela empresa para manter seus dados bem-organizados. Isso inclui rotinas de
68
Frequência do Termo
A seleção dos termos de um documento será feita por meio da junção dos ter-
mos extraídos, a partir das expressões regulares e dos principais termos extraídos
69
através da tokenização mais o cálculo dos termos mais frequentes. A forma mais sim-
ples de selecionar termos é considerar as frequências máxima e mínima de cada um
deles na coleção pela somatória do número de vezes em que o termo aparece no
documento. Esse conjunto de dados pode ser definido como a “minimização de um
documento”, pois reduz o documento a uma lista de números ou palavras, facilitando
seu armazenamento, localização e relacionamento com outros documentos com ter-
mos iguais, conforme mostrado na Figura 14. É apresentada uma nota fiscal e seus
termos identificados. Os termos 1, 2 e 3 foram extraídos a partir das expressões re-
gulares, mesmo tendo apenas uma ocorrência para cada. Esses termos foram seleci-
onados por se tratar de informações relevantes para o tipo de documento em questão.
Etapa 6 - Pós-Processamento
Por fim, a ideia do modelo é que possa ser integrado a sistemas de gestão de
informações já existentes, possibilitando a incorporação das estratégias para seleção
e armazenamento dos descritores dos documentos a fim de que auxilie na recupera-
ção dos documentos à medida que sejam identificados principais indicadores.
6 CONCLUSÃO
7 REFERÊNCIAS
AHO, A. V.; LAM, M. S.; SETHI, R., and ULLMAN, J. D. Compilers: Principles,
Techniques and Tools, Second Edition. Addison-Wesley Longman Publishing
Company, 2007
ALBISHRE, K.A; B, LI, Y.A; XU, Y.A, HUANG, W., Query-based unsupervised
learning for improving social media search, School of EECS, Queensland
University of Technology (QUT), Brisbane, Australia Al-Qura University, Makkah,
Saudi Arabia v. 23, p. 1791-1809, 2020.
BLAZQUEZ D.; DOMENECH J., Big Data sources and methods for social and
economic analyses, technological forecasting and social change, p. 99-113, 2018.
BULUSU, Sai Amrit - A thesis submitted to the faculty of The University of North
Carolina at Charlotte in partial fulfillment of the requirements for the degree of Master
of Science in Computer Science Charlotte 2018.
CHEN, C., CiteSpace II: Detecting and visualizing emerging trends and transient
patterns in scientific literature. Journal of the American Society for Information
Science and Technology, p. 359-377, 2006.
DIFFLIB – Module difflib – helpers for computing deltas between objects, Disponível
https://github.com/python/cpython/blob/master/Lib/difflib.py, Acesso em: out. de 2020.
GIL, A. C. Métodos e técnicas de pesquisa social. Ed. 6, São Paulo: Atlas, 2008.
HAN, J.; KAMBER, M.; PEI, J, Data Mining: Concepts and Techniques, 2012
HANSEN, M.; POMP A.; ERKI, K.; MEISEN, T. Data-Driven Recognition and
Extraction of PDF Document Elements, 2019
HARISPE S.; RANWEZ S.; JANAQI S. Montmain j. Semantic similarity from natural
language and ontology analysis, synthesis lectures on human language
technologies, 2015 ed. 8.
MARR, B. Data Strategy: How to Profit from a World of Big Data, Analytics and the
Internet of Things, 2017, p. 88.
MIKOLOV, T.; SUTSKEVER, I.; CHEN, K.; CORRADO, G.S.; DEAN, J., Distributed
representations of words and phrases and their compositionality advances in
neural, Information Processing systems, 2013 p. 3111-3119.
79
MLADENI D.; BRANK J., GROBELNIK M. Document Classification. In: Sammut C.,
Webb G.I. (eds) Encyclopedia of Machine Learning, 2011.
SAI Teja, Stop Words in NLP- All about stop words in Natural language
processing along with hands-on examples, 2010.
SAIF, H. et al. On stopwords, filtering and data sparsity for sentiment analysis,
2014.
80
SALTON, G.; WONG, A.; YANG, C.S. A vector space model for automatic indexing.
Commun. ACM, v. 18, n. 11, p. 613-620, 1975.
TANU V.; RENU, E Deepti Gaur - Tokenization and Filtering Process in RapidMiner
- International Journal of Applied Information Systems (IJAIS) – ISSN: 2249-0868
Foundation of Computer Science FCS, New York, USA Volume 7– No. 2, April 2014.
WANG S.; CHEN Z.; LIU B., Mining aspect-specific opinion using a holistic
lifelong topic model, 25th international world wide web conference, www, p. 167-176,
2016.
WANG, T.; LIU, F.; YAN, S. Learning class-informed exponential kernel for text
categorization. Journal of Computational and Theoretical Nanoscience, v. 13, n.
8, p. 5103-5110, 2016.
"a", "acerca", "adeus", "agora", "ainda", "alem", "algmas", "algo", "algumas", "alguns",
"ali", "além", "ambas", "ambos", "ano", "anos", "antes", "ao", "aonde", "aos", "apenas",
"apoio", "apontar", "apos", "após", "aquela", "aquelas", "aquele", "aqueles", "aqui",
"aquilo", "as", "assim", "através", "atrás", "até", "aí", "baixo", "bastante", "bem", "boa",
"boas", "bom", "bons", "breve", "cada", "caminho", "catorze", "cedo", "cento", "certa-
mente", "certeza", "cima", "cinco", "coisa", "com", "como", "comprido", "conhecido",
"conselho", "contra", "contudo", "corrente", "cuja", "cujas", "cujo", "cujos", "custa", "cá",
"da", "daquela", "daquelas", "daquele", "daqueles", "dar", "das", "de", "debaixo", "dela",
"delas", "dele", "deles", "demais", "dentro", "depois", "desde", "desligado", "dessa",
"dessas", "desse", "desses", "desta", "destas", "deste", "destes", "deve", "devem", "de-
verá", "dez", "dezanove", "dezesseis", "dezessete", "dezoito", "dia", "diante", "direita",
"dispoe", "dispoem", "diversa", "diversas", "diversos", "diz", "dizem", "dizer", "do",
"dois", "dos", "doze", "duas", "durante", "dá", "dão", "dúvida", "e", "ela", "elas", "ele",
"eles", "em", "embora", "enquanto", "entao", "entre", "então", "era", "eram", "essa", "es-
sas", "esse", "esses", "esta", "estado", "estamos", "estar", "estará", "estas", "estava",
"estavam", "este", "esteja", "estejam", "estejamos", "estes", "esteve", "estive", "estive-
mos", "estiver", "estivera", "estiveram", "estiverem", "estivermos", "estivesse", "esti-
vessem", "estiveste", "estivestes", "estivéramos", "estivéssemos", "estou", "está", "es-
tás", "estávamos", "estão", "eu", "exemplo", "falta", "fará", "favor", "faz", "fazeis", "fa-
zem", "fazemos", "fazer", "fazes", "fazia", "faço", "fez", "fim", "final", "foi", "fomos", "for",
"fora", "foram", "forem", "forma", "formos", "fosse", "fossem", "foste", "fostes", "fui", "fô-
ramos", "fôssemos", "geral", "grande", "grandes", "grupo", "ha", "haja", "hajam", "haja-
mos", "havemos", "havia", "hei", "hoje", "hora", "horas", "houve", "houvemos", "hou-
ver", "houvera", "houveram", "houverei", "houverem", "houveremos", "houveria", "hou-
veriam", "houvermos", "houverá", "houverão", "houveríamos", "houvesse", "houves-
sem", "houvéramos", "houvéssemos", "há", "hão", "iniciar", "inicio", "ir", "irá", "isso",
"ista", "iste", "isto", "já", "lado", "lhe", "lhes", "ligado", "local", "logo", "longe", "lugar",
"lá", "maior", "maioria", "maiorias", "mais", "mal", "mas", "me", "mediante", "meio", "me-
nor", "menos", "meses", "mesma", "mesmas", "mesmo", "mesmos", "meu", "meus",
"mil", "minha", "minhas", "momento", "muito", "muitos", "máximo", "mês", "na", "nada",
"nao", "naquela", "naquelas", "naquele", "naqueles", "nas", "nem", "nenhuma",
"nessa", "nessas", "nesse", "nesses", "nesta", "nestas", "neste", "nestes", "no", "noite",
"nome", "nos", "nossa", "nossas", "nosso", "nossos", "nova", "novas", "nove", "novo",
"novos", "num", "numa", "numas", "nunca", "nuns", "não", "nível", "nós", "número", "o",
"obra", "obrigada", "obrigado", "oitava", "oitavo", "oito", "onde", "ontem", "onze", "os",
"ou", "outra", "outras", "outro", "outros", "para", "parece", "parte", "partir", "paucas",
"pegar", "pela", "pelas", "pelo", "pelos", "perante", "perto", "pessoas", "pode", "podem",
"poder", "poderá", "podia", "pois", "ponto", "pontos", "por", "porque", "porquê", "por-
tanto", "posição", "possivelmente", "posso", "possível", "pouca", "pouco", "poucos",
"povo", "primeira", "primeiras", "primeiro", "primeiros", "promeiro", "propios", "proprio",
"própria", "próprias", "próprio", "próprios", "próxima", "próximas", "próximo", "próxi-
mos", "puderam", "pôde", "põe", "põem", "quais", "qual", "qualquer", "quando",
"quanto", "quarta", "quarto", "quatro", "que", "quem", "quer", "quereis", "querem", "que-
remas", "queres", "quero", "questão", "quieto", "quinta", "quinto", "quinze", "quáis",
"quê", "relação", "sabe", "sabem", "saber", "se", "segunda", "segundo", "sei", "seis",
"seja", "sejam", "sejamos", "sem", "sempre", "sendo", "ser", "serei", "seremos", "seria",
82
"seriam", "será", "serão", "seríamos", "sete", "seu", "seus", "sexta", "sexto", "sim", "sis-
tema", "sob", "sobre", "sois", "somente", "somos", "sou", "sua", "suas", "são", "sétima",
"sétimo", "só", "tal", "talvez", "tambem", "também", "tanta", "tantas", "tanto", "tarde",
"te", "tem", "temos", "tempo", "tendes", "tenha", "tenham", "tenhamos", "tenho", "tens",
"tentar", "tentaram", "tente", "tentei", "ter", "terceira", "terceiro", "terei", "teremos", "te-
ria", "teriam", "terá", "terão", "teríamos", "teu", "teus", "teve", "tinha", "tinham", "tipo",
"tive", "tivemos", "tiver", "tivera", "tiveram", "tiverem", "tivermos", "tivesse", "tivessem",
"tiveste", "tivestes", "tivéramos", "tivéssemos", "toda", "todas", "todo", "todos", "traba-
lhar", "trabalho", "treze", "três", "tu", "tua", "tuas", "tudo", "tão", "tém", "têm", "tínha-
mos", "um", "uma", "umas", "uns", "usa", "usar", "vai", "vais", "valor", "veja", "vem",
"vens", "ver", "verdade", "verdadeiro", "vez", "vezes", "viagem", "vindo", "vinte" , "você",
"vocês", "vos", "vossa", "vossas", "vosso", "vossos", "vários", "vão", "vêm", "vós",
"zero", "à", "às", "área", "é", "éramos", "és", "último"
83
using iTextSharp.text.pdf.parser;
using MongoDB.Driver;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
namespace ServicoIndexacao
{
public partial class ExtrairConteudos : ServiceBase
84
{
System.Timers.Timer timer;
public ExtrairConteudos()
{
InitializeComponent();
}
try
{
ExtrarTexto();
}
catch (Exception ex)
{
}
f inally
{
timer.Interval = 60 * 1000;
timer.Start();
}
}
pdf Rida.Close();
f si.Delete();
}
IMongoDatabase db = DBClient.GetDatabase(BancoDadosMongodb);
var collection = db.GetCollection<DTODocumento>("Documento");
collection.InsertOne(doc);
f si.Delete();
}
}
catch (Exception ex)
{
}
}
p.WaitForExit();
}
private static void doPython()
{
ScriptEngine engine = Python.CreateEngine();
engine.ExecuteFile(AppDomain.CurrentDomain.BaseDirectory + @"Processamento.py");
}
public class Indice
{
public string Tipo { get; set; }
public string Valor { get; set; }
public int Quantidade { get; set; }
}
import pandas as pd
import PyPDF2
import nltk
import re
87
class Indices:
def __init__(self,tipo,valor,quantidade):
self .Tipo = tipo
self .Valor = valor
self .Quantidade = quantidade
class Documento:
def __init__(self,documento):
self .Documento = documento
self .Indice=[]
class Expressao:
88
def Processar(Arquivo):
#Ler Arquivo
f = open (Arquivo, 'r', encoding='utf-8')
documentA = unidecode(f.read().lower())
f .close()
documento = Documento(Arquivo)
ListaExpressoesRegulares=[]
pattern = r'[0-9\b//.!-#(|\-:),;*]'
documentA = re.sub(pattern, '', documentA)
word_tokens = word_tokenize(documentA)
bagOf WordsA = []
f or w in word_tokens:
if len(w) < 3:
stop_words.append(w)
if w not in stop_words:
bagOf WordsA.append(w)
f or word in bagOfWordsA:
f or index, w2 in enumerate(bagOfWordsA):
if (word != w2):
if (word[0:3] == w2[0:3]):
vls = similar(word, w2)
if vls>0.8:
bagOf WordsA[index]=word
89
principaisUnigrama = Counter(unigrams_tst).most_common(50)
f or Indicaodres in principaisUnigrama:
idx = Indices("Texto",Indicaodres[0],Indicaodres[1])
documento.Indice.append(idx)
if __name__ == '__main__':
@page "/"
@using MongoDB.Driver;
@using IndexacaoAutomatica.Data;
@inject IJSRuntime JS;
<div>
<table class="table table-striped">
<thead>
<tr>
<th>
ID
</th>
<th>
Documento
</th>
<th>
Total Indexadores
</th>
<th>
</th>
</tr>
</thead>
<tbody>
@f oreach (DTODocumento doc in Localizados)
{
<tr>
91
<td>
@doc._id
</td>
<td>
@doc.Documento
</td>
<td>
@doc.Indice.Count()
</td>
<td>
<button class="btn btn-outline-primary" type="button" @onclick="() => Selecionar(doc)">
<span class="oi oi-magnifying-glass"></span>
</button>
</td>
</tr>
}
</tbody>
</table>
</div>
@code
{
public string CampoBusca { get; set; }
public int TotalLocalizados { get; set; }
List<DTODocumento> Localizados = new List<DTODocumento>();
List<Indice> ListaIndices = new List<Indice>();
}
public void ConsultarDocumentos()
{
Localizados = new List<DTODocumento>();
string StringConnecionMongo = "mongodb://localhost:27017";
string BancoDadosMongodb = "dbDocumentos";
//string connectionString = "mongodb://104.41.25.232:27017";
MongoClient DBClient = new MongoClient(StringConnecionMongo);
IMongoDatabase db = DBClient.GetDatabase(BancoDadosMongodb);
var collection = db.GetCollection<DTODocumento>("Documento");
namespace IndexacaoAutomatica.Data
{
public class Indice
93
{
public string Tipo { get; set; }
public string Valor { get; set; }
public int Quantidade { get; set; }
}