Sie sind auf Seite 1von 47

WEBERT TOMAZ

ALGORITMOS CLSSICOS DE BUSCA EM TEXTO E SUA


APLICAO AO ENSINO A DISTNCIA: ESTUDO E AVALIAO

Monografia de Graduao apresentada ao Departamento de Cincia da Computao da Universidade


Federal de Lavras como parte das exigncias da Disciplina Projeto Orientado para obteno do ttulo de
Bacharel em Cincia da Computao

Orientador
Prof. Andr Luiz Zambalde

LAVRAS
MINAS GERAIS BRASIL
2001

WEBERT TOMAZ

ALGORITMOS CLSSICOS DE BUSCA EM TEXTO E SUA


APLICAO AO ENSINO A DISTNCIA: ESTUDO E AVALIAO

Monografia de Graduao apresentada ao Departamento de Cincia da Computao da Universidade


Federal de Lavras como parte das exigncias da Disciplina Projeto Orientado para obteno do ttulo de
Bacharel em Cincia da Computao

APROVADA em 26 de junho de 2001

___________________________
Prof. Jones Oliveira de Albuquerque

______________________
Prof. Andr Luiz Zambalde
(Orientador)

LAVRAS
MINAS GERAIS BRASIL

ii

DEDICATRIA

Pelos esforos empreendidos


pelas noites de sono mal dormidas,
dedico a mim mesmo
o presente trabalho.
Webert Tomaz

iii

RESUMO

Impulsionado pelo crescimento da internet, o ensino a distncia cria


novas oportunidades e novos padres para a disseminao do conhecimento.
Diante dessa realidade necessrio a utilizao de ferramentas capazes de
automatizar processos repetitivos, principalmente aqueles presentes na
converso dos textos de contedo, fundamentais em qualquer curso. A
converso em geral realizada da seguinte forma: parte-se do modo texto para o
modo html. O formato html introduz nos textos a capacidade de navegao entre
seus tpicos. Para que ocorra a navegao preciso que cada palavra seja
previamente marcada como uma ncora e ligada ao seu destino.
proposta, nesse trabalho, a criao de uma ferramenta de auxlio
gerao do glossrio de termos tcnicos viabilizando as devidas ligaes entre o
texto e seu significado. A ferramenta buscar no texto as palavras que sero
marcadas e ligadas ao glossrio. Um breve estudo a cerca de algoritmos de busca
em texto apresentado para que se possa avaliar os benefcios introduzidos por
cada algoritmo. A busca em texto parte importante de muitos problemas que
incluem editores de texto, recuperao de dados e manipulao de smbolos.
Existem vrios estudos sobre algoritmos de busca em texto e sua eficincia do
tamanho m da palavra, do tamanho n do texto e do alfabeto utilizado, assim cada
algoritmo possui um desempenho diferente para cada tipo de texto. Tambm so
introduzidos os conceitos de ndice e indexao por serem parte importante do
estudo de recuperao de informao, quando se trabalha com grandes volumes
de dados.

SUMRIO
1. Introduo .........................................................................................................5
2. Referencial Terico...........................................................................................6
2.1. O Ensino a Distncia .................................................................................6
2.1.1. Introduo ..........................................................................................6
2.1.2. Mecanismos de comunicao aplicados Educao a Distncia.......7
2.1.3. Importncia da Educao a Distncia ................................................8
2.1.4. Educao a Distncia atravs da Internet...........................................8
2.1.5. Os recursos de comunicao disponveis na Internet.......................10
2.1.5.1. Comunicao sncrona..............................................................11
2.1.5.2. Comunicao assncrona...........................................................12
2.2. Recuperao de Informao ....................................................................15
2.3. Algoritmos de Busca em Texto ...............................................................17
2.3.1. Introduo ........................................................................................17
2.3.2. Estudo Terico .................................................................................17
2.3.2.1. Notao e Terminologias ..........................................................19
2.3.2.2. O algoritmo string-matching Fora-Bruta ................................19
2.3.2.3. O algoritmo Rabin-Karp ...........................................................21
2.3.2.5. O algoritmo Knuth-Morris-Pratt...............................................23
2.3.2.6. O algoritmo Boyer-Moore ........................................................25
A heurstica do mau-caracter.............................................................26
A heurstica do bom sufixo................................................................28
3. Definio do problema....................................................................................30
4. Metodologia....................................................................................................33
5. Resultados e Discues...................................................................................35
5.1. O gerador de glossrio.............................................................................35
5.2. Testes algoritmicos..................................................................................39
5.3. Gerao de ncoras..................................................................................39
5.4. Consideraes finais................................................................................40
Referncias Bibliogrficas..................................................................................41
Apndice A: Recuperao Aproximada de Informao em Textos Comprimidos
e Indexados .........................................................................................................43

LISTA DE FIGURAS
Figura 1: Mecanismos de comunicao aplicados Educao a Distncia..........7
Figura 2: Servios de comunicao na Internet disponveis para EAD ..............10
Figura 3: O problema da busca em texto. O exemplo encontra todas as
ocorrncias do padro P = abaa no texto T = abcabaabcabac. O padro
aparece somente uma vez no texto, na posio s = 3. ..........................18
Figura 4: passos do algoritmo fora-bruta para um padro P=aab e um texto
T=acaabc. Em cada passo as linhas verticais conectam as
correspondncias e as linhas quebradas as no correspondncias. Um
ocorrncia do padro encontrada em s = 3, mostrada em (c). ...........20
Figura 5: Um autmato finito com conjunto de estados Q = {0, 1}, estado inicial
q0 = 0, e alfabeto de estrada = {a, b}. (a) representao tabular da
funo de transio . (b) diagrama dos estados de transio
equivalente............................................................................................22
Figura 6: A funo prefixo . Em (a) casamos 5 caracteres do padro na posio
s. Em (b) passamos para a posio s+2, pois j sabemos que a posio
s+1 invlida. Em (c) deduzimos que aba o maior prefixo que
tambm sufixo do padro...................................................................24
Figura 7: Os casos da heurstica do mau-carater. (a) O mau-caracter h no ocorre
no padro e o padro pode avanar 11 posies at passar pelo maucaracter. (b) A ocorrncia mais a direita do mau-caracter no padro est
na posio k < j, ento o padro avana j k caracteres. Dado j = 10 e k
= 6 para o mau-caracter i, o padro avana 4 posies. (c) A ocorrncia
mais a direita do mau-caracter est na posio K > j. Neste caso, j = 10
e k = 12 para o mau-caracter e. A heurstica do mau-caracter prope um
avano de posio negativo, que ignorado. .......................................28
Figura 8: Exemplo de uma pgina html contendo termos tcnicos. ...................31
Figura 9: Exemplo de palavras a serem colocadas no glossrio. ........................31
Figura 10: Exemplo de um glossrio. .................................................................31
Figura 11: Exemplo de um texto onde todas as ocorrncias das palavras tcnicas
foram ligadas ao seu significado na pgina do glossrio......................32
Figura 12: Esquema de funcionamento da ferramenta........................................33

Figura 13: Exemplo de um arquivo texto contendo as palavras a serem includas


pela ferramenta no glossrio.................................................................33
Figura 14: Arquivo glossario.html criado pela ferramenta .................................34
Figura 15: Quadro comparativo dos tempos mdios dos algoritmos de Forabruta, KMP e funo nativa da linguagem. ..........................................39

1. Introduo
Com o advento da computao o ato de escrever sofreu grandes
alteraes. Antigamente para se editar um livro eram necessrias vrias horas de
trabalho para se conseguir a forma desejada e a impresso de um livro era um
processo repetitivo e demorado. As novas tecnologias eliminaram parte do
tempo e dos trabalhos repetitivos o que provocou o aumento da velocidade com
que a informao trafega.
Para a editorao de texto existem, hoje, timas ferramentas, mas
quando se lida com a internet estas ferramentas, em geral, deixam a desejar pois
no conseguem tirar proveito mximo das facilidades trazidas pela utilizao da
navegao, sem algum comprometimento ao documento.
Em especial, o crescimento da internet fez surgir uma nova modalidade
de ensino a distncia mais interativa do que as formas usuais, onde os alunos
dificilmente se comunicavam com o professor. E quando tratamos de cursos via
internet precisamos automatizar ao mximo as tarefas para acelerar o processo
de disseminao de conhecimento.
Para acelerar tarefas, em computao, o mais comum substituir as
tarefas manuais por rotinas que as implemente. Neste trabalho, proposta a
automatizao da criao de glossrios, quando da gerao de contedo para
cursos de EAD via internet, por considerar este um dos passos mais repetitivos
encontrados.

2. Referencial Terico
2.1. O Ensino a Distncia
2.1.1. Introduo
No ano de 1881, nos Estados Unidos, William Rainey Harper, primeiro
reitor e fundador da Universidade de Chicago, ofereceu, com sucesso, um curso
de Hebraico por correspondncia. Em 1889, o Queens College, do Canad, deu
incio a uma srie de cursos a distncia, sempre registrando grande procura pelos
mesmos, devido principalmente, a seu baixo custo e s grandes distncias que
separavam os centros urbanos daquele pas[EDUCAO, 2001].
O termo, Educao a Distncia, pressupe uma modalidade de ensino
aplicada com a distncia fsica entre alunos e professores. Mas nem sempre se
pensou assim, o conceito associado separao fsica s comeou a ser utilizado
a partir de 1977.
Em [EDUCAO, 2001] diversos autores caracterizam o conceito
central de Educao a Distncia atravs das definies:

 


- afirmam que "a caracterstica bsica da Educao

a Distncia o estabelecimento de uma comunicao de dupla via, na


medida em que professor e aluno no se encontram juntos na mesma sala".



!"#

- os elementos fundamentais dos conceitos de Educao a

Distncia so: "Separao fsica entre professor e aluno, que o distingue do


presencial; (...) utilizao de meios tcnicos de comunicao, usualmente
impressos, para unir o professor ao aluno e transmitir os contedos
educativos; previso de uma comunicao-dilogo, e da possibilidade de
iniciativas de dupla via; possibilidade de encontros ocasionais com
propsitos didticos e de socializao; e participao de uma forma
industrializada de educao".

Entende-se, de todos estes conceitos, que a Educao a Distncia


caracteriza-se pela no existncia da presena de alunos e professores no mesmo
espao fsico, e pode ser viabilizada atravs de diversas maneiras, bastando
apenas existir alguma forma de comunicao entre os mesmos.
2.1.2. Mecanismos de comunicao aplicados Educao a Distncia
A implementao da Educao a Distncia foi consagrada pelo chamado
curso por correspondncia, ainda muito usado na atualidade.
medida que novas tecnologias de comunicao surgiram, praticamente
todas foram utilizadas na implementao da Educao a Distncia. Isso
aconteceu com o rdio, a televiso, o videocassete, e mais recentemente com a
Internet, como ilustrado na figura 1.

Figura 1: Mecanismos de comunicao aplicados Educao a Distncia


Segundo Ferreira [FERREIRA, 2000], em seu artigo A viabilidade da
Internet no Ensino a Distncia, o ensino por correspondncia esttico e
geralmente trata-se da simples transferncia de informao, onde a nica
participao do educador na elaborao do contedo que enviado ao aluno.
No rdio e na televiso, por outro lado, existe uma participao muito ativa do
educador, que se apresenta de forma dinmica, passando diretamente seus
conhecimentos ao aluno. Mas o aluno tem uma participao muitas vezes de
mero espectador.

A Internet oferece tecnologias de comunicao que permitem grande


interatividade. Pode-se classificar a Internet como uma mediadora entre as
outras tecnologias mais populares de Educao a Distncia (o correio e a
televiso, por exemplo), permitindo participao ativa tanto de alunos quanto de
educadores.
2.1.3. Importncia da Educao a Distncia
No se pode pensar na Educao a Distncia como um concorrente do
tradicional ensino presencial, nem tampouco classific-la como a melhor soluo
para os problemas de acesso a educao em nosso pas (no Brasil 74 milhes de
trabalhadores possuem menos de quatro anos de estudo e cerca de 20% da
populao so analfabetos [IBGE, 2001]). A Educao a Distncia sim uma
alternativa e, algumas vezes, um complemento que viabiliza a disseminao do
ensino, mesmo quando a distncia fsica interpe-se como barreira.
Valer-se de formas alternativas de ensinar, que despertem o gosto pela
pesquisa, pelo uso adequado das informaes, pela canalizao do saber em prol
da melhoria da qualidade de vida um direito do cidado apoiado pela LDB Lei de Diretrizes e Bases da Educao (Lei 9.394 de 20/12/96) em seu Art. 80, e
do Decreto 2.492 de 10/02/98 que regulamenta o referido artigo de Lei
[EDUCAO, 2001].
2.1.4. Educao a Distncia atravs da Internet
A Internet uma poderosa mdia de comunicao, que permite um grau
de interatividade muito grande com o usurio.
A facilidade de transmisso da informao outro ponto positivo da
Internet, que possibilita a transferncia de textos, imagens e sons com relativa
velocidade e a baixo custo, j que a internet dispensa os custos das mdias
tradicionais (livros, revistas, fitas k-7 e/ou VHS, etc).

A concentrao de grandes quantidades de informaes sobre os mais


variados assuntos tambm uma vantagem para o aluno que, alm do material
oferecido atravs do site de EAD, est separado apenas por alguns cliques do
mouse de toda informao sobre o assunto que esteja publicado na Internet.
Marcelo Ferreira [FERREIRA, 2000] salienta que nos pases
desenvolvidos, como os Estados Unidos, o acesso a Internet uma realidade
para a maioria da populao. Nas escolas americanas, as crianas do ensino
bsico j utilizam a Internet como principal fonte de pesquisa para seus trabalhos
escolares. As universidades e empresas, a muito tempo oferecem os mais
variados servios a seus alunos e clientes atravs da rede mundial.
Dados retirados de um estudo de 1996, chamado Technology Strategies
for Higher Education mostram que a China sozinha produz mais de 100.000
graduados por ano atravs de EAD, sendo que mais da metade dos 92.000
engenheiros formados adquiriram seus ttulos por Educao a Distncia
[CASTRO, 2001].
No Brasil, a popularizao da Educao a Distncia atravs da Internet,
depende da popularizao da prpria Internet, que ainda esbarra em problemas
econmicos, falta de investimentos na rea de educao e nos problemas gerados
pela falta de legislao especifica quando se trata do assunto Internet. Mas
existem perspectivas de mudanas.
No campo da educao, o governo brasileiro, apesar de ainda no
investir o que considerado o mnimo necessrio, tem se preocupado com esta
questo, criando novos currculos de ensino e novas normas que assegurem
educao de qualidade no pas [EDUCAO, 2001].
A Educao a Distncia via Internet no Brasil j uma realidade.
Existem diversas instituies que oferecem os mais variados cursos atravs da
rede. Mesmo no tendo a popularidade dos pases do primeiro mundo, pode-se
encontrar na Internet brasileira instituies oferecendo educao virtual, como

UNIVIR - Universidade Virtual (www.univir.br), UNIREDE - Universidade


Virtual Pblica do Brasil (www.unirede.br), NEAD/UFPR - Ncleo de
Educao a Distncia (www.nead.ufpr.br), UVB - Universidade Virtual
Brasileira (www.uvb.com.br), @groescola - destinado a cursos agropecurios
com sede na Universidade Federal de Lavras (www.agroescola.com.br), entre
outras.
2.1.5. Os recursos de comunicao disponveis na Internet
A Internet teve um desenvolvimento relmpago na ltima dcada,
passou de um canal quase exclusivo de disseminao de conhecimentos
acadmicos para um meio de comunicao de massa e uma alternativa de
distribuio de informao que, a cada dia, conquista novos usurios. Os
recursos para comunicao disponveis na Internet podem ser classificados
conforme o tipo de comunicao, que pode ser sncrona ou assncrona com
ilustrado na figura 2. A seguir exemplificamos alguns desses mtodos de
comunicao.

Figura 2: Servios de comunicao na Internet disponveis para EAD

10

2.1.5.1. Comunicao sncrona


realizada em tempo real, os usurios devem estar ao mesmo tempo
conectados na Internet, possibilitando a criao de espaos (salas) virtuais para o
encontro de alunos e tutores, onde ocorrero debates dos diversos assuntos
relacionados com o curso em si. Desta categoria fazem parte os seguintes
servios:
IRC (Internet Relay Chat)
um sistema que permite aos usurios da Internet se comunicarem em
tempo real, tambm conhecido simplesmente por chat. Existem diversos
softwares que viabilizam este tipo de comunicao pela Internet, sendo o mais
popular o ICQ 1, distribudo gratuitamente atravs da prpria Internet.
Estes softwares normalmente possibilitam no s o envio e recebimento
de mensagens mas tambm a transferncia de arquivos diversos (som, texto e
imagem). Tambm possvel implementar chats na Internet atravs da WWW
(World Wide Web), que possibilita a utilizao deste recurso sem que seja
necessria a instalao de softwares adicionais.
Na Educao a Distncia o ICQ usado para a conversao escrita
entre professores e alunos em tempo real, possibilitando esclarecimento de
dvidas, troca de idias e troca de materiais de estudo entre os participantes de
um mesmo curso. H necessidade de um agendamento prvio dos encontros, j
que os participantes devem estar conectados Internet ao mesmo tempo.
Videoconferncia e Audioconferncia
So sistemas de conferncia entre usurios em locais diferentes, usando
a infra-estrutura de uma rede de computadores para a transmisso de dados,
sinais de udio e vdeo.

ICQ (I seek you) marca registrada da Mirabilis Corporation


(www.mirabilis.com).

11

So as formas mais sofisticadas de comunicao, pois envolve


equipamentos especiais como cmeras de vdeo e microfones, permitindo uma
interatividade maior entre alunos e professores, que podem expressar melhor
suas idias, bem como, conhecer os integrantes do grupo de uma forma mais
pessoal.
Na Educao a Distncia, geralmente so usadas para ministrar aulas,
onde o professor est em uma sala-estdio e os alunos espalhados em salas com
recursos semelhantes. Assim, o aluno pode ver e/ou ouvir o professor, e viceversa, mesmo estes estando e em vrios lugares diferentes.
Estes so recursos muito utilizados em grandes companhias, no
treinamento simultneo de funcionrios localizados em locais diferentes.
2.1.5.2. Comunicao assncrona
Neste tipo de comunicao, o tempo flexvel e os alunos podem buscar as
informaes conforme suas disponibilidades. Fazem parte desta categoria:
E-mail (Eletronic Mail)
um recurso bastante semelhante ao sistema de correspondncia
convencional que proporciona o envio e recebimento de mensagens pelo
computador, onde cada usurio possui um endereo na Internet.
O e-mail permite que os alunos enviem questionamentos aos
professores, e estes podem respond-los tambm atravs de e-mail. Os
professores e administradores dos cursos a distncia podem utilizar o e-mail para
fazer comunicados gerais aos participantes dos cursos. O e-mail tambm
possibilita a transferncia de arquivos.
o recurso mais utilizado para a interao entre os participantes de
cursos via Internet.
Lista de discusso

12

um servio que permite intercmbio de mensagens entre vrios


usurios de uma rede de computador.
Funciona como uma extenso do correio eletrnico. As mensagens so
enviadas para um endereo nico da lista que, posteriormente, retransmitir as
mesmas a todos os usurios que nela se cadastraram.
Recurso tambm muito utilizado na EAD, cria um canal permanente
para alunos e professores comunicarem-se entre si.
FAQ (Frequently Asked Questions)
uma lista de perguntas e respostas relativas s dvidas mais comuns
sobre determinado assunto. Este conjunto de perguntas e respostas mais
freqentes organizado em uma pgina da Internet, com acesso livre, onde os
usurios podem consultar a qualquer momento.
O FAQ facilita a comunicao de uma maneira pr-ativa, antecipando as
respostas aos questionamentos mais comuns sobre um determinado tema do
curso, como tambm, antecipando informaes sobre o funcionamento e
estrutura do curso.
News
So grupos de discusso organizados por temas, onde os usurios tm
acesso a uma grande quantidade de informao. Servem como meio de
distribuio de notcias, semelhante s listas de discusso, com o diferencial de
que o usurio deve estar on-line no momento de ler as mensagens.
No muito comum o uso de News na Educao a Distncia, porm
permitem que alunos e professores tenham acesso a informaes atuais
relacionadas aos assuntos que esto sendo estudados, alm de poderem tambm
divulgar seus trabalhos, para que outras pessoas possam conhec-los.
Frum de discusso
uma ferramenta para grupos de discusso que, ao contrrio das listas
de discusso onde os usurios se comunicam atravs de e-mail, mantm uma

13

interface de comunicao na prpria pgina do curso na Internet. As mensagens


vo sendo acrescentadas automaticamente na prpria pgina, com livre acesso.
Uma mensagem includa no frum abre um espao de discusso, onde os
comentrios a respeito dessa primeira mensagem, feitos pelos outros usurios,
iro sendo armazenados abaixo da mesma, criando assim uma ligao
hierrquica entre as mensagens.
As contribuies ao frum, podem ser de qualquer pessoa interessada e
que tenha acesso pgina, no necessariamente que seja um aluno ou professor
do curso.
FTP (File Transfer Protocol)
O FTP, ou protocolo de transferncia de arquivos, utilizado tanto para
a transferncia de arquivos do curso para o aluno, por exemplo apostilas a serem
estudadas off-line; como tambm para a transferncia de arquivos do aluno para
o curso, como provas e trabalhos encaminhados para avaliao de aprendizagem.
Pginas Web (Site)
Este o recurso mais conhecido da Internet (WWW) e consiste em um
endereo de Internet (URL), com pginas estticas ou dinmicas, contendo os
mais variados tipos de informao que podem ser acessadas por qualquer pessoa
conectada rede.
As pginas Web so a expresso mais comum de distribuio de
informaes. Nos cursos a distncia so usadas como portais de entrada e como
via de acesso aos outros recursos utilizados no curso. Podem ainda,
disponibilizar informaes aos alunos e professores e tambm a outras pessoas
interessadas em participar do curso.
desta forma de disseminao da informao, pginas web, que o
presente trabalho trata.

14

2.2. Recuperao de Informao


Recuperao de informao (RI) [ZIVIANE, 2001] o processo de
recuperar itens de informao armazenados em um meio que possa ser acessado
por computador. Um item de informao geralmente constitudo de textos (tais
como documentos diversos, pginas Web, livros, etc.), embora possa conter
outros tipos de dados tais como fotografias, grficos e figuras. RI lida com
representao, armazenamento, organizao e acesso a itens de informao.
Representao e organizao dos itens de informao devem prover ao usurio
acesso facilitado informao de seu interesse.
A rea de RI cresceu muito em importncia com a introduo da Web.
No entanto a Web introduziu, por si mesma, uma srie de problemas. De fato,
encontrar informao til na Web freqentemente uma tarefa tediosa e difcil.
A maior dificuldade a ausncia de um modelo de dados claramente definido.
Isto implica que a semntica e a estrutura dos dados freqentemente mal
definida e de baixa qualidade. Tais dificuldades tm atrado a ateno para a rea
de RI e suas tcnicas como solues promissoras.
O principal objetivo dos pesquisadores ligados a Recuperao de
Informao estudar algoritmos e estruturas de dados para construir sistemas de
RI. Um sistema de RI localiza documentos a partir das necessidades de
informao colocadas pelo usurio, atravs de uma consulta formal. Entretanto,
a caracterizao da necessidade de informao do usurio um problema no
trivial. Em sistemas reais, essa necessidade de informao deve primeiro ser
traduzida em termos de um conjunto de palavras-chaves que so ento usadas na
formulao de uma consulta. Dada a consulta do usurio, o maior objetivo de
um sistema de RI obter informao que til ou relevante para o usurio. A
nfase na recuperao de informao e no, na simples, recuperao de dados.
Os objetivos especficos da RI investigar o projeto e implementao de
tcnicas e ferramentas que possibilitem o desenvolvimento de sistemas de

15

informao dotados de tcnicas eficientes de indexao, tcnicas eficazes de


ordenao de documentos por ordem de relevncia para o usurio, e interfaces
que auxiliem o usurio a formular consultas, em especial, para a WWW.
O estudo da Recuperao de Informao compreende reas de indexao
(arquivos invertidos e listas invertidas, compresso de textos, compresso de
listas invertidas, arquivos de assinaturas, tipos de ndices), consultas (consultas
lgicas, consultas ordenadas por ordem de relevncia, estruturas de acesso ao
vocabulrio, busca seqencial no vocabulrio, busca exata e aproximada),
sistemas paralelos e distribudos para RI (gerao paralela de ndices, consulta
em bases de dados distribudas, arquiteturas MIMD) e a busca na Web,
propriamente dita, (exploso de informao, mquinas de busca, diretrios,
linguagens de consulta, meta-ferramentas de busca, sistemas especializados de
busca).
Embora os dados possam ser armazenados de diversas maneiras, textos
continuam sendo a principal forma de troca de informao. Por exemplo, na
Literatura e na Lingstica os dados so armazenados em uma vasta coleo de
escritos e dicionrios. Na Cincia da Computao, grande quantidade de dados
so armazenados em arquivos de textos seqenciais. Em Biologia Molecular,
molculas biolgicas podem ser aproximadas por seqncias textuais de
nucleotdeos e aminocidos. Diante da grande importncia dos arquivos textuais
interessante o estudo de algoritmos eficientes para manipul-los. Em
particular, os algoritmos de busca em textos.
Algoritmos de busca de padres so relevantes em trs aspectos
diferentes: so componentes bsicos utilizados na implementao de comandos
existentes em muitos sistemas operacionais; enfatizam mtodos de programao
que servem de paradigma em outros campos da Computao; desempenham
papel importante na Cincia da Computao fornecendo solues para
problemas desafiadores da RI.

16

2.3. Algoritmos de Busca em Texto


2.3.1. Introduo
Encontrar todas as ocorrncias de um padro em um texto [CORMEN,
et al, 2001] um problema que surge freqentemente em programas editores de
texto. Tipicamente, o texto um documento que esta sendo editado, e o padro
procurado uma palavra em particular fornecida pelo usurio. Algoritmos
eficientes para este problema podem ajudar imensamente o programa de edio
de texto. Algoritmos String-matching (casamento de padres) tambm so
usados, por exemplo, para procurar padres particulares, seqncias que indicam
determinada caracterstica, em seqncias de DNA.
O problema, aparentemente simples, vem sendo estudado desde a
dcada de 70. Vrios algoritmos foram propostos ao longo das dcadas de 70, 80
e 90, e o problema ainda, hoje, objeto de pesquisa. Alguns desses algoritmos
encontram-se implementados em aplicaes de busca em sistemas operacionais,
editores de texto, software de manipulao de imagens e de cadeias biolgicas.
Vrias das solues propostas so sustentadas em resultados da Teoria
dos Autmatos. Nessa rea so estudadas propriedades combinatrias de
palavras e formalismos para a manipulao de palavras. Em particular, h o
formalismo de autmato finito, que serve de base para vrios algoritmos de
busca de padro. Esse formalismo originou-se de estudos biolgicos de redes de
neurnios e circuitos de chaveamento. Atualmente, utilizado, por exemplo, no
desenvolvimento de compiladores, editores de texto e sistemas de manipulao
de arquivos.
2.3.2. Estudo Terico
A formalizao do problema string-matching ou casamento de padres
ou, ainda como freqentemente chamado, busca em texto dada a seguir:

17

Assuma que o texto um vetor T[1..n] de tamanho n e que o padro


um vetor P[1..m] de tamanho m. Assuma que os elementos de P e T so
caracteres pertencentes a um alfabeto finito . Por exemplo podemos ter
={0,1} ou ={a, b, c..., z}. Os caracteres dos vetores P e T so,
freqentemente, chamados strings de caracteres.
Diz-se que o padro P ocorre com s deslocamentos no texto T, ou que o
padro P ocorre na posio s+1 no texto T, se 0 s n-m e T[s+1..s+m] =
P[1..m] (isto , se T[s+j] = P[j], para 1 j m). Se P ocorre com s
deslocamentos em T, chama-se s de um deslocamento vlido, caso contrrio dizse que s um deslocamento invlido. O problema da busca em texto encontrar
todas as posies em que o padro P ocorre em um dado texto T. A figura 3
ilustra esta definio.

Figura 3: O problema da busca em texto. O exemplo encontra todas as


ocorrncias do padro P = abaa no texto T = abcabaabcabac. O padro
aparece somente uma vez no texto, na posio s = 3.
Existem diversos algoritmos de busca em texto. Alguns so melhores
quando tratam classes especiais de textos e alfabetos, como o caso de
seqncias de DNA onde ={C, G, A, T}, outros conseguem melhores
resultados quando tratam textos formados por alfabetos maiores, como o caso
da lngua portuguesa. Atente para o caso mais comum onde os textos podem
conter letras, nmeros, acentuao e caracteres especiais.
De modo geral os estudos [CORMEN, et al, 2001] demonstram que o
algoritmo string-matching mais simples conhecido como algoritmo fora-bruta
possui para o pior caso complexidade de tempo O((n-m+1)m). O algoritmo
Rabin e Karp tambm tem complexidade de tempo O((n-m+1)m) para o pior
caso, mas trabalha muito melhor na prtica. Um outro algoritmo mais eficiente

18

com complexidade de tempo O(n+m||) comea o processamento pela


construo de um autmato finito especialmente desenvolvido para procurar
pela ocorrncia do padro P no texto. Um similar, mas muito mais hbil, o
algoritmo Knuth-Morris-Pratt (ou simplesmente KMP) com complexidade de
tempo O(n+m). E finalmente o algoritmo de Boyer e Moore com seu pior caso
com complexidade de tempo igual ao algoritmo Rabin-karp.
2.3.2.1. Notao e Terminologias
A seguir apresentaremos algumas notaes comumente usadas no estudo
de algoritmos de busca em texto.
Denotaremos por * o conjunto de todas as palavras de tamanho finito
formadas usando os caracteres do alfabeto . A palavra de tamanho zero,

 
   
  m pertence a *. O tamanho da palavra x

denotada por |x|. A concatenao de duas palavras x e y, denotada por xy, tem
tamanho |x|+|y| e consiste dos caracteres de x seguidos pelos caracteres de y.
A palavra w prefixo da palavra x, quando w x e x = wy para alguma
palavra y *. Note que se w x, ento |w| |x|. Similarmente, uma palavra
sufixo de uma palavra x, quando w x e x = yw para alguma palavra y *.

Isto significa que w x e |w| |x    !    ambos sufixo e prefixo de
todas as palavras.
2.3.2.2. O algoritmo string-matching Fora-Bruta

O algoritmo fora-bruta encontra todas as posies vlidas usando um


loop que checa a condio P[1..m] = T[s+1..s-m] para cada n-m+1 possveis
valores de s.
Algoritmo-string-matching-fora-bruta
1 n tamanho[T]
2 m tamanho[P]

19

3 para s 0 at n-m faa


4
se P[1..m] = T[s+1..s+m]
5
ento imprima O padro ocorre na posio s

O procedimento do algoritmo fora-bruta pode ser interpretado


graficamente como um vetor contendo o padro procurando pela posio em que
todos os seus caracteres correspondem aos caracteres do texto (figura 4). O loop
comeando na linha 3 considera a possibilidade de cada posio do texto ser a
posio inicial em que ocorre o casamento do padro com o texto. O teste na
linha 4 determina se a posio valida ou no. Neste teste ficou implcito o loop
para checar a correspondncia entre as posies dos caracteres do padro com o
do texto ou indicar sua falha. A linha 5 imprime cada posio valida de s.
O procedimento do algoritmo fora-bruta gasta tempo O((n-m+1)m) no
pior caso. Por exemplo, considere um texto formado pela palavra an ( uma
palavra formado por n as) e o padro am. Para cada uma das n-m+1 possveis
posies de s, o loop implcito na linha 4 para comparar os caracteres
correspondentes deve ser executado m vezes para validar a posio. O pior caso
rodando no tempo O((n-m+1)m), O(n2) se m = [n/2].

Figura 4: passos do algoritmo fora-bruta para um padro P=aab e um texto


T=acaabc. Em cada passo as linhas verticais conectam as
correspondncias e as linhas quebradas as no correspondncias. Um
ocorrncia do padro encontrada em s = 3, mostrada em (c).
Como visto o algoritmo de busca em texto usando fora-bruta no uma
soluo tima para o problema. H algoritmos que rodam no seu pior caso

20

usando O(n+m). O algoritmo fora-bruta ineficiente porque as informaes


geradas para uma posio de s so totalmente ignoradas para outro valor de s. As
informaes geradas para uma posio de s podem ser muito teis. Por exemplo,
se tivessemos P = aaab e encontrssemos s = 0 vlido, ento nenhuma das
posies 1, 2 ou 3 so vlidas pois T[4] = b. Os demais algoritmos de busca em
texto fazem uso desse tipo de informao.
2.3.2.3. O algoritmo Rabin-Karp
Rabin e Karp propuseram um algoritmo que funciona bem na prtica e
generaliza outros algoritmos para problemas relacionados com busca em duas
dimenses. O pior caso do algoritmo Rabin-Karp tem complexidade de tempo
O((n-m+1)m), mas tem um bom caso mdio O(n+m).
Este algoritmo usa noes da teoria elementar dos nmeros para isso
assumimos que = {0, 1, 2, .., 9} e que cada caracter um digito decimal.
Assuma que cada caracter um digito em notao radix-d (ver [CORMEN, et al,
2001] seo 33.1), onde d = ||. Podemos ento representar uma palavra de k
caracteres como um nmero decimal de tamanho k.
O algoritmo que segue ilustra o funcionamento do algoritmo Rabin-Karp
com texto de entrada T, padro P, o radix d (que em geral ||) e um primo q
para uso.
Algoritmo string-matching-Rabin-Karp(T,P,d,q)
1 n tamanho[T]
2 m tamanho[P]
3 h dm-1 mod q
4 p 0
5 to 0
6 para i 0 at m faa
7
p (dp + P[i]) mod q
8
to (dto + T[i]) mod q
9 para s 0 at n-m faa
10
se p = ts ento

21

11
12
13
14

se P[1..m] = T[s+1..s+m]
ento padro ocorre na posio s
se s<n-m
ento ts+1 (d(ts T[s+1]h) + T[s+m-1]) mod q

Figura 5: Um autmato finito com conjunto de estados Q = {0, 1}, estado inicial
q0 = 0, e alfabeto de estrada = {a, b}. (a) representao tabular da
funo de transio . (b) diagrama dos estados de transio
equivalente.
A funo de um autmato finito M, chamada funo do estado final, de
* para Q tal que (w) o estado final de M aps processar a palavra w. Isto ,
M aceita uma palavra w se, e somente se, (w) A. A funo definida pela
relao recursiva () = q0, (wa) = ((w),a) para w *, a .
H um autmato string-matching para cada padro; este autmato deve
ser construdo para o padro em um pr-processamento antes de ser usado no
algoritmo de busca.
Para exemplificar o funcionamento do algoritmo baseado em autmato
finito, apresentaremos um programa simples e eficiente para simulao de um
autmato em busca de um padro P de tamanho m em um texto T[1..n]. Para um
autmato de busca de em padro de tamanho m, o conjunto de estados Q {0, 1,
.., m}, o estado inicial 0 e o estado aceito o estado m.
Algoritmo-de-busca-com-autmato-finito
1 n tamanho[T]
2 q 0
3 para i 1 at n faa
4
q (q,T[i])
5
se q = m
6
ento s i-m

22

imprima Padro ocorre na posio s

Na linha 4 computada as transies e na linha 5 q = m se, e somente


se, encontrou-se o padro P no texto T.
O loop simples do algoritmo usando autmato finito implica que est
rodando no tempo do tamanho n do texto, isto O(n). Este tempo no inclui o
tempo requerido para computar a funo de transio . O tempo gasto para
computar a funo de transio de O(m3||) e o tempo total gasto pelo
algoritmo de busca usando autmato finito O(n+m||).
2.3.2.5. O algoritmo Knuth-Morris-Pratt
O algoritmo apresentado por Knuth, Morris e Pratt trabalha em tempo
linear. Seu algoritmo realiza sua computao em tempo O(n+m) pois evita o
computao da funo de transio , e faz a busca do padro usando uma
funo auxiliar [1..m] que pr-computa o padro em tempo O(m).
A funo prefixo usada no algoritmo KMP para o padro extrai
informaes sobre seu prprio padro. A funo prefixo trabalha da seguinte
forma: dado um padro P = ababaca e um texto T = bacbabababcbab podemos
notar que com s = 4 os primeiros q = 5 caracteres casam. Se usarmos nosso
conhecimento sobre estes 5 caracteres, podemos deduzir que a posio s+1 (6)
invlida, mas que a posio s+2 (7) consistente com o que sabemos sobre o
texto e uma posio potencialmente vlida. A informao para esta deduo
pode ser pr-computada comparando-se o padro com ele mesmo. Neste caso,
vemos que o maior prefixo de P = [ababaca] que tambm um sufixo de P5 P3.
Dado que q caracteres tem casado sucessivamente com a posio s, a prxima
potecial posio s = s + (q - [q]). Veja a figura 6.

23

Figura 6: A funo prefixo . Em (a) casamos 5 caracteres do padro na posio


s. Em (b) passamos para a posio s+2, pois j sabemos que a posio
s+1 invlida. Em (c) deduzimos que aba o maior prefixo que
tambm sufixo do padro.
Segue a formalizao da pr-computao.
Dado um padro P[1..m], a funo prefixo para o padro P a funo :
{1, 2, .., m} {0, 1, .., m-1} tal que [q] = max{k : k<q e Pk Pq}.
Isto , [q] o maior prefixo de P que um sufixo de Pq.
O algoritmo KMP dado abaixo para um algoritmo usando busca com
autmato finito. O algoritmo KMP chama a funo auxiliar compute-funopefixo para computar .
1 n tamanho[T]
2 m tamanho[P]
3 compute-funo-prefixo(P)
4 q 0
5 para i 1 at n faa
6
enquanto q>0 e P[q+1]T[i] faa
7
q [q]
8
se P[q+1]=T[i]
9
ento q q+1
10
se q=m
11
ento imprima O padro ocorre na posio i-m

24

q [q]

12

compute-funo-prefixo(P)
1 m tamanho[P]
2 [1] 1
3 k 0
4 para q 2 at m faca
5
enquanto k>0 e P[k+1]P[q] faca
6
k [k]
7
if P[k+1]=P[q]
8
ento k k+1
9
[q] k
10 retorne

O algoritmo KMP tem complexidade de tempo O(m+n). A funo


prefixo toma tempo O(m), usando o valor de q como uma funo potencial
mostra-se que o algoritmo KMP toma tempo O(n) no melhor caso.
Comparando-se ao algoritmo usando autmato finito, se usarmos no
lugar de reduzimos o tempo de pr-processamento do padro de O(m||) para
O(m), enquanto mantemos o tempo limite de busca em O(m+n).
2.3.2.6. O algoritmo Boyer-Moore
Se o padro P relativamente grande e o alfabeto rasoavelmente
grande, como acontece na maioria dos textos comuns, ento o algoritmo
proposto por Robert S. Boyer e J. Strother Moore considerado o algoritmo
mais eficiente.
O algoritmo essencialmente o mesmo algoritmo fora-bruta realizando
sua comparaes da direita para a esquerda, mas com duas novas variveis que
so usadas para calcular o novo deslocamento.
1
2
3
4
5

n
m

tamanho[T]
tamanho[P]
funo-ultima-ocorrncia(P,m, )
funo-bom-sufixo(P, m)
0

25

6 equanto s n-m faa


7
j m
8
enquanto j>0 e P[j]=T[s+1] faa
9
j j-1
10
se j=0
11
ento imprima O padro ocorre na posio s
12
s s + [0]
13
seno s s + max([j], j-[T[s+j]])

O algoritmo de Boyer-Moore incorpora duas novas heursticas


conhecidas como heurstica do mau-caracter e heurstica do bom-sufixo. Elas
operam independentemente e em paralelo. O algoritmo incrementa s na linha 13
com o maior deslocamento, sendo que a heurstica do mau-caracter prope
incrementar s com j-[T[s+j]] e a heurstica do bom sufixo prope o incremento
de s com [j].
A heurstica do mau-caracter
Quando no h um casamento entre os caracteres, a heurstica do mau
caracter usa informaes sobre onde o mau-caracter do texto T[s+j] ocorre no
padro para propor uma nova posio. No melhor caso, no h casamento na
primeira comparao (P[m]T[s+m]) e mau-caracter no ocorre no padro.
Nesnte caso ns podemos incrementar a posio s por m, dando o maior
incremento possvel s+m. Se o melhor caso ocorre repetidamente, o algoritmo
Boyer-Moore examina somente uma frao 1/m do texto. Este melhor caso
ilustra o poder do casamento da direita para a esquerda ao invs de da esquerda
para a direita.
Em geral a heurstica do mau-caracter trabalha da seguinte forma.
Suponha que encontramos um no casamento: P[j]T[s+j], onde 1 j m. Ns
tomamos o maior ndice k, 1 k m, tal que T[s+j]=P[k], se algum k existe.
Caso contrrio tomamos k = 0. Consideramos trs casos:
k = 0: o mau-caracter T[s+j] no ocorre no padro, ento incrementamos s
com j sem perder nenhuma posio vlida;

26

k < j: a ocorrncia do mau-caracter no padro est a esquerda da posio j,


portanto j k > 0 e o padro deve ser movido j k caracteres para a direita
sem que o mau-caracter case novamente com algum caracter do padro.
Podemos incrementar s com j k sem perda de alguma posio vlida.
k < j: ento j k < 0, e a heurstica do mau-caracter prope que se
decremente s. Esta recomendao ser ignorada, j que a heurstica do bom
sufixo sempre propor incrementos positivos.
Chamaremos de funo da ultima ocorrncia para o padro a funo que
calcula a mau-caracter.
funo-ultima-ocorrncia
1 para cada caracter a faa
2
[a] = 0
3 para j 1 at m faa
4
[P[j]] j
5 retorne

O tempo de processamento da funo ultima-ocorrncia O(||+m).

27

Figura 7: Os casos da heurstica do mau-carater. (a) O mau-caracter h no ocorre


no padro e o padro pode avanar 11 posies at passar pelo maucaracter. (b) A ocorrncia mais a direita do mau-caracter no padro est
na posio k < j, ento o padro avana j k caracteres. Dado j = 10 e k
= 6 para o mau-caracter i, o padro avana 4 posies. (c) A ocorrncia
mais a direita do mau-caracter est na posio K > j. Neste caso, j = 10
e k = 12 para o mau-caracter e. A heurstica do mau-caracter prope um
avano de posio negativo, que ignorado.
A heurstica do bom sufixo
Seja a relao Q ~ R (Q similar a R) que significa que Q R ou R
Q. A relao simtrica: Q ~ R se, e somente se, R ~ Q.
Se encontrarmos P[j] T[s+j], onde j < m, ento a heurstica do bomsufixo nos diz que podemos avanar s por:
[j] = m max{k: 0 k m e P[j+1..m] ~ Pk}

28

Isto , [j] o menor valor que podemos avanar s e no casar nenhum


caracter do bom-sufixo T[s+j+1..s+m] no novo alinhamento do padro. A funo

bem definida para todo j, dado P[j+1..m] ~ P0 para todo j: a palavra vazia
similar a todas as palavras. Chamamos de funo bom-sufixo para o padro P.
A funo dada por:
[j] = m max({[m]} {m l + [l]: 1 l m e j = m [l] })
= min({m [m]} { l [l]: 1 l m e j = m [l] })
A prova matemtica para a expresso acima encontra-se em [CORMEN,
et al, 2001].
A funo que computa o bom-sufixo tem complexidade de tempo O(m)
e ilustrada abaixo.
funo-bom-sufixo
1 funo-prefixo(P)
2 P reverso(P)
3 funo-prefixo(P)
4 para j 0 at m faa
5
[j] m - [m]
6 para l 1 at m faa
7
j m - [l]
8
se [j] > l - [l]
9
ento [j] l - [l]
10 retorne

O pior caso para o algoritmo de Boyer-Moore O((n m + 1) m +||),


dado que a funo ltima-ocorrncia toma tempo O(m+||), a funo bomsufixo toma tempo O(m) e o algoritmo Boyer-Moore (como o Rabin-karp) gasta
tempo O(m) validando cada posio vlida s. Na prtica, entretanto, o algoritmo
Boyer-Moore freqentemente o melhor algoritmo.

29

3. Definio do problema
Suponha que um professor esteja preparando uma apostila para um curso
que ser fornecido via internet atravs de um portal qualquer. Quando finalizada
a preparao do material o professor se depara com a seguinte tarefa: criar um
glossrio de termos de forma que o aluno que estiver consultando o material
possa consultar o significado de determinados termos sempre que achar
necessrio e de uma forma rpida e intuitiva. Para resolver este problema, em
geral, o professor cria uma pgina chamada glossario.html e nela insere os
termos e seus significados. Mas quando termina esta ultima tarefa surge um
novo problema: ligar todos os termos que aparecem no texto ao seu respectivo
significado no glossrio. Esta ligao recebe o nome de ncora e a responsvel
pela insero da capacidade de navegao entre as pginas. A facilidade de
navegao entre pginas um das principais vantagens introduzidas pela web.
Para avaliarmos melhor este problema observe o seguinte exemplo.
Vamos criar uma pgina html contendo um texto, de preferncia com
alguns termos no usuais, podem ser palavras estrangeiras, nomes tcnicos,
abreviaturas, etc. Veja o exemplo da figura 8. Agora suponha que queiramos
selecionar as palavras da figura 9 para coloc-las no glossrio. Selecionados os
termos vamos montar o glossrio da maneira usual: insere-se o termo e seu
significado no glossrio, vide exemplo na figura 10, e em seguida procura-se no
texto cada ocorrncia do termo e ali criado uma ncora para o seu significado
no glossrio. Aps todo este processo ser realizado sobre o texto, este ficar com
a aparncia da figura 11.

30

Figura 8: Exemplo de uma pgina html contendo termos tcnicos.

Figura 9: Exemplo de palavras a serem colocadas no glossrio.

Figura 10: Exemplo de um glossrio.

31

Figura 11: Exemplo de um texto onde todas as ocorrncias das palavras tcnicas
foram ligadas ao seu significado na pgina do glossrio.
Este trabalho pode ser facilitado pelas ferramentas usuais que fazem a
substituio de palavras por outras, neste caso preciso substituir a palavra
desejada pela ncora correspondente. Mesmo com esta ajuda o trabalho ainda
repetitivo em especial se o glossrio for formado por muitos termos.

32

4. Metodologia
Para facilitar o trabalho de gerao de glossrios propomos a construo
de uma ferramenta que automatize o processo acima descrito. A ferramenta
uma aplicao prtica proveniente do estudo terico de algoritmos de busca em
texto, string-matching.
A ferramenta funciona de acordo com esquema apresentado na figura
12: so passados dois arquivos um arquivo html contendo o texto onde ser
feita a insero das ncoras, veja o exemplo da figura 8, e outro contendo a lista
de palavras que se deseja incluir no glossrio, este pode ser tanto um arquivo
texto ou um arquivo html. A figura 13 apresenta o exemplo de um arquivo texto
contendo as palavras a serem includas no glossrio. A ferramenta l as palavras
do segundo arquivo e cria uma pgina chamada glossario.html a partir do
contedo lido. Como mostrado na figura 14, o arquivo glossario.html possui a
lista de palavras e cada uma destas marcada como destino de uma ncora.

Figura 12: Esquema de funcionamento da ferramenta

Figura 13: Exemplo de um arquivo texto contendo as palavras a serem includas


pela ferramenta no glossrio

33

Figura 14: Arquivo glossario.html criado pela ferramenta


O glossrio gerado est pronto para receber os conceitos dos termos.
Poderia ter sido criado uma base de dados ou, ainda, uma busca numa base
disponvel na internet para a insero do significado dos termos. Veja que o
procedimento de insero de significados no foi automatizado, visto que este
foge ao nosso contexto.
Aps a gerao do glossrio realizada a busca de todas as ocorrncias
das palavras no arquivo texto e a sua substituio pelas ncoras que as ligam ao
seu significado no arquivo glossario.html. O arquivo depois de processado ficar
com a mesma aparncia mostrada na figura 11.
O processo apesar de aparentemente simples por vezes demorado e
enfadonho quando feito manualmente.
Para melhor entender os motivos da escolha de um bom algoritmo
faremos alguns testes com alguns dos algoritmos apresentados acima para
exemplificar as diferenas entre os algoritmos.
Os detalhes da implementao da ferramenta podem ser encontrados na
prxima seo desta monografia.

34

5. Resultados e Discues
5.1. O gerador de glossrio
A seguir apresentaremos o cdigo dos algoritmos utilizados na
implementao da ferramenta de gerao automtica de glossrio bem como
comentrios a respeito dos mesmos.
Antes, porm, devem ser ressaltadas as ferramentas utilizadas para a
implementao: os algoritmos esto na linguagem PHP4 [PHP, 2001] que
muito similar a linguagem C/C++ ANSI, mas mais adequada para se trabalhar
com o padro de arquivos html alm de ser facilmente alterada para sua
utilizao remota, neste caso os arquivos devem ser transportados para algum
diretrio da mquina servidora de pginas porque a linguagem PHP roda na
mquina servidora e no na mquina cliente (como o caso do Java script), no
caso o servidor utilizado foi o Apache1 1.3 [APACHE, 2001] rodando na
plataforma Windows2 mas o algoritmo independente de plataforma. Para
fazer a copia dos arquivos para o servidor consulte a documentao do servidor
de pginas para maiores informaes. Os arquivos tm de possuir permisso de
leitura e escrita, caso no possua o algoritmo tentar alterar estas permisses,
caso no consiga o programa abortar com uma mensagem de erro.
Para executar o programa altere o nome dos arquivos do script
criarglossario.php e o execute o na linha de comando (php criarglossario.php )
ou crie uma pgina html com formulrio de onde ser chamado o script acima
com variveis contendo os nomes dos arquivos.
criarglossario.php
<?
$filename = "texto.html";
1

Apache marca registrada do Apache Group e distribudo sobre Licensa Publica


(www.apache.org)
2
Windows marca registrada da Microsoft Corporation (www.microsoft.com)

35

$filenamesub = "listadepalavras.txt";
include("function.php");
include("substring.php");
include("string.php");
$n = $j -1;
echo "Arquivos criados com sucesso.
newhtml$n.html para $filename";

Renomeie

arquivo

//Para substituir o arquivo automaticamente insira o cdigo


//delete($filename);
//copy ("newhtml$n",$filename);
?>

Note que o script chama outros scripts o primeiro function.php contm


as funes usadas pelos demais scripts, como a funo para abrir arquivos que
tenta alterar as permisses dos arquivos caso estes estejam sem permisso para
leitura e/ou escrita e as funes de busca em texto usadas nos testes.
Em seguida feita a chamada do script substring.php que faz o
processamento do arquivo que contm a lista de palavras e a construo do
arquivo glossario.html. Uma observao deve ser feita a respeito do arquivo que
contm a lista de palavras do glossrio: cada palavra deve estar em uma linha,
mas alteraes simples podem ser feitas de modo a usar algum separador. Por
exemplo o espao poderia ser utilizado mas isto restringiria o algoritmo a
palavras simples e quando nos referimos a palavras, entenda qualquer formao:
palavra simples, frase, siglas, palavras compostas separadas por espao, etc.
substring.php
<?
$filesizesub = filesize($filenamesub) - 1;
//extrao da string do arquivo
$fileopensub = openfile($filenamesub,"r+");
while ( !feof($fileopensub) ){
$filesemtagsub.=fgetss($fileopensub,$filesizesub);
}
fclose($fileopensub);
//criando arquivo temporrio
$fileopentmp=openfile("tmpgl","w+");

36

//escrevendo no arquivo temporrio


$write = fputs ($fileopentmp, $filesemtagsub);
fclose($fileopentmp);
//array com as palavras do glossrio.
$filesubs = file("tmpgl");
//script que cria o glossrio
include("glossario.php");
?>

No algoritmo acima includo em seu processamento um script a parte


que responsvel pela criao do arquivo glossario.html utilizando-se das
palavras extradas do arquivo que contm a lista de palavras. Pode-se querer
incluir as palavras do glossrio diretamente no fim da pgina de texto. Isto
aconselhvel quando o todo o texto se encontra numa nica pgina. Neste caso
no script que substitui a palavra pela ncora retire da ancora o nome do arquivo
do glossrio, no caso glossario.html .
glossario.php
<?
//criando o arquivo glossario.html
$fileopeng=openfile("glossario.html","w+");
//escrevendo no arquivo glossario.html
fputs ($fileopeng,"<html><title>Gloss&aacute;rio</title>");
for ($i=0 ; $i<(sizeof($filesubs)) ; $i++){
$write = fputs ($fileopeng, "<a NAME=\"$i\">
</a>$filesubs[$i]<br>");
}
fputs ($fileopeng,"</html>");
fclose($fileopeng);
?>

Abaixo apresentamos o script string.php responsvel pela busca das


palavras no arquivo de entrada e subseqente substituio pela devida ncora
para o termo no arquivo glossario.html.
string.php
<?
$substring = $filesubs;
$j = 0;
do{

37

$filesizestr = filesize($filename) - 1;
//extraindo a string do arquivo
$fileopenstr = openfile($filename,"r+");
$filetagstr ='';
while ( !feof($fileopenstr) ) {
$filetagstr .= fgets($fileopenstr,$filesizestr);
}
fclose($fileopenstr);
//o codigo abaixo realiza a busca
$newhtml = openfile("newhtml$j.html","w+");
$posicaostr = 0;
$busca = 1;
while ($busca != 0){
$novastring ='';
for ($i=$posicaostr ;$i<($filesizestr+1); $i++){
$novastring .= $filetagstr[$i];
}
//posio em que substring ocorre na string
$busca = strpos ($novastring, $substring[$j]);
if ($busca){
//sustituicao no arquivo html
for ($i=$posio ;$i<($posicao+$busca-1); $i++){
fputs ($newhtml, $novastring[$i]);
}
fputs ($newhtml, "<a href=\"glossario.html#$j\">
$substring[$j]</a>");
$posicaostr+=($busca-1+ strlen($substring[$j]));
}
else{
for ($i=$posicaostr;($i<$filesizestr);$i++){
fputs ($newhtml, $filetagstr[$i]);
}
}
}
fclose($newhtml);
$filename="newhtml$j.html";
$j++; //muda de palavra
}while ($j<sizeof($substring));
?>

38

5.2. Testes algoritmicos


Para demonstrar a utilizao dos algoritmos em textos da lngua
portuguesa, = 26, fizemos testes com o algoritmo fora-bruta, o algoritmo
KMP e com uma funo nativa da linguagem em alguns textos e para
exemplificar os resultados abaixo segue o resultado de dois destes testes.
Tempo mdio dos algoritmos de Fora-bruta, KMP e funo nativa da
linguagem.
Algoritmo

Tempo de processamento
Arquivo 1
Arquivo 2
Fora-bruta
1.085.973
1.446.689
KMP
653.954
1.072.588
Funo Nativa
720.347
923.084
Figura 15: Quadro comparativo dos tempos mdios dos algoritmos de Forabruta, KMP e funo nativa da linguagem.
Como se pode observar pelo tempo de processamento mostrado acima o
segundo arquivo e maior que o primeiro e note que o algoritmo KMP no
primeiro arquivo obteve tempo de processamento menor do que a funo nativa,
que provavelmente implementa o algoritmo Boyer-Moore visto que a maioria
das linguagens faz isto, mas no segundo arquivo obteve tempo maior, o que
confirma a teoria apresentada sobre os algoritmos: o algoritmo KMP tende a ser
pior quando no h prefixos e sufixos iguais no padro e o texto e formado por
um alfabeto grande, nestes casos o algoritmo KMP tende ao algoritmo forabruta.
5.3. Gerao de ncoras
As ncoras por introduzirem a capacidade de navegao nos
documentos podem ser consideradas uma das principais inovaes trazida pela
web, pois at ento os documentos eram muito estticos, ou seja, no
apresentavam muita mobilidade ao leitor.

39

Apesar de auxiliar a leitura e a busca de informao o processo de


gerao de ancoras para textos em html pode ser bastante repetitiva e trabalhosa,
mas existem ferramentas que podem nos auxiliar. Uma das ferramentas mais
usadas a ferramenta de substituio que vasculha todo o texto e substitui cada
termo por um ancora. A desvantagem deste mtodo : se o nmero de palavras
do glossrio for extenso camos no problema da repetio. Para isso foi proposta
e implementada uma ferramenta de gerao automtica de glossrio onde o
problema de repetio de processos foi totalmente eliminado.
5.4. Consideraes finais
O Ensino a Distncia atravs da Internet oferece grandes facilidades,
dentre as quais esto o custo reduzido para o aluno e a flexibilidade de tempo.
Destaca-se tambm a interatividade entre professor-aluno e aluno-aluno, o que
facilita a troca de experincias e proporciona um ambiente colaborativo mesmo
sem a presena fsica dos integrantes do grupo. Porm nem tudo so vantagens
no EAD via Internet. Esta modalidade exige disponibilidade de equipamentos e
tecnologias que esto distantes da maioria da populao brasileira.
Est claro que o Ensino a Distncia via internet tem inmeras vantagens
e desvantagens. Alm do problema citado acima, quando se trabalha com a
internet, h problemas relacionados com trabalhos repetitivos que foi o alvo
principal deste trabalho, o qual props a implementao de uma ferramenta de
auxlio gerao de glossrio por considerar este um dos trabalhos repetitivos
mais comuns na gerao de contedo para algum curso a distncia.
Na EAD via web existem pontos fortes e tambm pontos negativos a
serem considerados, mas de forma alguma se pode desprezar a disseminao de
informaes atravs de EAD via Internet, que pela sua prpria caracterstica
difusora de conhecimento, apresenta-se como o principal portal de acesso ao
mundo atual, pois acompanha a velocidade de seu progresso.

40

Referncias Bibliogrficas
[1]

EDUCAO a Distncia via Internet: uma introduo aos seus


recursos. Artigo submetido a revista de iniciao cientfica da
Sociedade Brasileira de Computao. Maio de 2001.

[2]

FERREIRA, M. "A viabilidade da utilizao da Internet como


ferramenta no Ensino a Distncia" Ensino a Distncia na Internet,
1998,
http://www.geocities.com/WallStreet/7939/index.html.
(17/08/2000).

[3]

IBGE (Rio de Janeiro, RJ). http://www.ibge.gov.br. (Junho, 2001).

[4]

LOBO NETO, F.J.S. "Educao a distncia: regulamentao, condies


de xito e perspectivas" 1998, http://www.intelecto.net/ead/lobo1.htm
(09/09/2000).

[5]

ZIVIANE, N. Pgina da disciplina Recuperao de Informao A.


UFMG, MG. Abril, 2001. http://www.dcc.ufmg.br (Abril, 2001).

[6]

CORMEN, T.; LEISERSON, C.; e RIVEST, R. 1997. Introduction To


Algoritms, em String-Matching, p. 853-885.

[7]

BRASIL. Governo Federal. Lei de Diretrizes e Bases da Educao


Nacional, Lei n 9394/96. Braslia: Governo Federal, 1996.

[8]

CASTRO, C.L. de. Desenvolvimento de um servidor de Avaliaes


Web para redes de Aprendizado. DCC-UFLA. Junho de 2001.
(Monografia Bacharelado em Cincia da Computao).

[9]

BAEZA-YATES, R.; RIBEIRO-NETO, B. Modern Information


Retrieval,
Addison-Wesley,
1999.
http://www.dcc.uchile.cl/Erbaeza/index.html. (Maio, 2001).

[10] CARVALHO, P.S. de; OLIVEIRA, D. de; GUARACY, A. et al. Um


Estudo Terico e Experimental em Algoritmos Clssicos de Busca em
Texto. INFOCOMP Revista de Computao da UFLA, Ano II V1,
Lavras, novembro de 2000.
[11] NEUBERT, M. S. Recuperao Aproximada de Informaes em Textos
Comprimidos e Indexados. DCC-UFMG. Dezembro de 2000.
(Dissertao Mestrado em Cincia da Computao).

41

[12] FISCHER, H.G. PHP Guia de Consulta Rpida. Novatec Editora Ltda.
2001. 128p.
[13] TOMAZ, W. Legislao de Informtica. Lavras, novembro de 2000.
Artigo apresentado na III Semana de Cincia da Computao da
Universidade Federal de Lavras.
[14] GASTON, H.; BAEZA-YATES, R. Handbook of Algorithms and Data
Structures. Gonnet Informatik, ETH Zrich. Dept. of Computer
Science,
Univ.
of
Chile.
http://www.dcc.uchile.cl/~rbaeza/handbook/hbook.html (Maio, 2001).
[15] SOUZA, R.N.P.M. de. Projeto de Iniciao Cientfica: Autmatos e
Algoritmos de Busca de Padres. DCC-USP. Dezembro de 2000.
http://www.linux.ime.usp.br/~rsouza/pmatching.html. (Abril, 2001).
(Monografia - Bacharelado em Cincia da Computao).
[16] SILVA, A.H.R.; AYALA-RINCNn, M. Departamento de Matemtica
Universidade
de
Braslia.
Abril,
2001.
http://www.mat.unb.br/~ayala/TCgroup/PatternMatching/kmpbm.html
. (Abril, 2001).
[17] PHP. Site oficial do projeto PHP. http://www.php.net e site oficial em
portugus http://www.br.php.net. Junho de 2001
[18] APACHE. Site oficial do servidor web Apache. http://www.apache.org.
Junho de 2001.

42

Apndice A: Recuperao Aproximada de Informao em Textos


Comprimidos e Indexados
O volume de dados armazenados na forma de textos tem acompanhado o
rpido crescimento das bibliotecas digitais modernas, como colees mdicas e
jurdicas, enciclopdias e a World Wide Web (WWW). Para se recuperar de
forma eficiente a informao armazenada nesse tipo de texto, vrias tcnicas
especializadas de indexao foram propostas na literatura. Entre elas encontramse as rvores PATRICIA, arranjos de sufixos, arranjos PAT, arquivos de
assinatura e arquivos invertidos, cada uma apresentando pontos fortes e fracos.
Entre tantas tcnicas, porm os arquivos invertidos tm sido
tradicionalmente a estrutura mais utilizada. Essa popularidade se deve ao seu
custo de construo (proporcional ao tamanho do texto) e a simplicidade de sua
estrutura. Alm disso, a tcnica de busca utilizada por arquivos invertidos
bastante rpida, pois se baseia no vocabulrio (conjunto de termos distintos da
coleo), que geralmente pode ser acomodado na memria principal.
Entretanto, apesar de sua estrutura simples, a construo de arquivos
invertidos para grandes colees textuais no uma tarefa trivial. As listas de
documentos podem ser muito longas e exceder a memria principal disponvel.
Torna-se, portanto, necessrio o uso de espao em disco para a indexao e o
projeto de algoritmos eficientes passa a ser mais complexo. O espao ocupado
pelo ndice pode ser bastante significativo (at 100% do tamanho do texto
original).
A tcnica de compresso pode ser aplicada a arquivos invertidos,
reduzindo significativamente o tamanho do ndice. A tcnica mais comum
ordenar os nmeros dos documentos de cada lista em ordem crescente e
substituir cada um pela diferena entre ele e seu antecessor. Essa nova seqncia
de valores pode ser eficientemente codificada atravs de mtodos que

43

representam nmeros pequenos por poucos bits. Para colees tpicas, o espao
ocupado pelo ndice invertido comprimido representa entre 6 e 10% do tamanho
do texto original.
ndices tambm podem ser usados para permitir uma busca mais rpida
de padres de caracteres diretamente dentro do texto, seja informando a posio
exata da ocorrncia ou o endereo do bloco de texto no qual ele ocorre. Nestes
casos, as listas invertidas no contm mais identificadores de documentos, mas
posies fsicas das ocorrncias do padro dentro do texto.
O grande porte dos bancos de dados textuais pode ainda representar,
juntamente com o ndice, um volume muito grande de informao. A
compresso do texto pode ser implementada como uma camada transparente
dentro de um sistema completo de recuperao de informao, possibilitando
tanto a reduo dos requisitos de espao como a diminuio dos tempos de
busca, em uma situao de duplo ganho.
Finalmente, um banco de dados com grandes volumes de texto apresenta
uma alta probabilidade de conter erros, seja por digitao incorreta, erros no
reconhecimento tico de caracteres ou ainda falhas de transmisso. Outra
possvel situao o desconhecimento da grafia exata do termo a ser procurado.
Outra situao ocorre devido s vrias flexes que uma palavra pode conter. Em
cenrios como esses, desejvel que o sistema se informao permita buscas
aproximadas, isto , que se recuperem padres com at certo nmero de erros
em relao ao termo pesquisado.
Um bom sistema de recuperao de informaes deve realizar a
indexao eficiente de grandes bases textuais, possibilitar a compresso tanto do
ndice como do prprio texto e a realizao de buscas em dois nveis (acesso
tanto aos ndices como partes do texto), alm do reconhecimento automtico de
alguns tipos de arquivos texto como HTML, PostScript, PDF, entre outros.

44

Das könnte Ihnen auch gefallen