UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA – UEFS

Propaganda
UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA – UEFS
BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO
EDSON DOS SANTOS ARAÚJO
Uso de Algoritmos de Otimização e Inteligência Artificial no Desenvolvimento de
um Motor de Busca com Contextualização em Redes Sociais na WWW
FEIRA DE SANTANA
2012
EDSON DOS SANTOS ARAÚJO
Uso de Algoritmos de Otimização e Inteligência Artificial no Desenvolvimento de
um Motor de Busca com Contextualização em Redes Sociais na WWW
Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em
Engenharia de Computação da UEFS, como requisito parcial para a
obtenção do grau de Bacharel em Engenharia de Computação.
Orientador: professor mestre Thiago D’Martin Maia
Departamento de ciências exatas
Universidade Estadual de Feira de Santana
FEIRA DE SANTANA
2012
Dedico a todos que contribuíram com minha caminhada até aqui, de forma especial à minha
família, principalmente a minha mãe Elizabeth Fernandes dos Santos e a meu pai José Cardoso
Araújo, que tanto fizeram e fazem, e aos meus amigos, principalmente ao Professor Thiago Maia,
que acompanhou e ajudou em todas as etapas da minha graduação.
RESUMO
Sistemas que tem como objetivo armazenar e compartilhar informações entre
usuários do mesmo, como Motores de Busca e Redes Sociais, podem ser
impedidos por problemas de contextualização de informações, sendo que cada
indivíduo que utiliza o sistema é único, necessitando de respostas precisas e
relevantes.
Observando tal necessidade, o objetivo deste trabalho foi a implementação de
um Motor de Busca com teor semântico, além da utilização de algoritmos de
Otimização na tentativa de melhorar os relacionamentos de usuários de Redes
Sociais na Internet. Estratégias como Web Crawler, indexador, e spider
atrelados a um banco de dados são aplicadas para desenvolvimento do Motor
de Busca. Para tratarmos os relacionamentos entre usuários, foi feita a implementação do Motor
de Busca e foram usados algoritmos de Otimização (heurísticas e meta-heurísticas). Além disso,
chegou-se a estudar o uso de Redes Neurais Artificiais (RNAs), com o intuito de aumentar a
eficiência da busca realizada pelo Motor de Busca. Para utilizar algoritmos de Otimização
necessita-se de uma função-objetivo para guiá-los na busca da melhor solução contextualizada.
Neste trabalho, foram utilizados exemplos do Problema de Designação Quadrática (Quadratic
Assignment Problem, QAP) para teste dos algoritmos de Otimização.
Palavras-chave: Motor de Busca. Redes Sociais. Algoritmos de Otimização. Meta-heurísticas.
Problema de Designação Quadrática.
ABSTRACT
Computational systems that aims to store and share information between its
users, as Search Engines and Social Networks, by example, can be hindered
by problems of background information, each individual system’s user being
unique, requiring the most accurate and relevant answers. Noting this needs,
the objective
here
content, besides
improve the
was to
the
use
implement
a Search
Engine
of Optimization algorithms in
relationships of
users of
Social
with semantic
an
Networks
attempt to
on
the
Internet. Strategies such as Web Crawler and spider linked to a database are
applied
to development
between users, has been
of
the Search
made the
Optimization algorithms were
Engine. To treat the
implementation of Search
relationships
Engine and
used (heuristics
and metaheuristics). Furthermore, was studied the use of Artificial Neural
Networks (ANNs), in order to increase the efficiency of the search conducted by
the Search Engine. To use Optimization algorithms is needed an objectivefunction to guide them in finding the best solution in context. In this work, we
used
examples of
the Quadratic Assignment Problem (QAP) for
testing of Optimization algorithms.
Keywords: Search Engine. Social Networks. Optimization Algorithms. Meta-heuristics. QAP.
LISTA DE FIGURAS
LISTA DE TABELAS
SUMÁRIO
9
1 INTRODUÇÃO
Em principio, no uso da Internet por uma massa de usuários de escala planetária,
para representar o acesso a sites por esses usuários utilizou-se o termo Web 1.0. Com o
avanço da Internet, seguiu-se o termo Web 2.0 que denota a Internet como uma
plataforma, em que usuários podem se comunicar através de Redes Sociais e blogs,
entreter-se com arquivos multimídia, como vídeos, e, principalmente, procurar por
informações com sites de busca.
O próximo passo no desenvolvimento do uso da Internet é a chamada Web 3.0,
também chamada de Web semântica, pois apresenta a contextualização das informações
disponíveis na rede mundial. É nesse contexto que está a ênfase deste projeto de
Trabalho de Conclusão de Curso. Com o emergente crescimento do uso de Redes
Sociais na rede mundial, e da quantidade de dados e informações disponíveis inclusive
em sites de busca, deparamo-nos com problemas com grande quantidade de informação
relativamente desprezível e até inútil, e indesejadas ligações entre usuários de Redes
Sociais sem contextualização social real, resultadas de buscas que não correspondem ao
que efetivamente se está pesquisando.
Por exemplo, suponha-se uma pesquisa na rede mundial sobre o tópico
‘neurônios’, em que uma resposta esperada seriam sites sobre Redes Neurais Artificiais
(RNAs), sendo que no entanto o que se obtenha sejam informações sobre redes neurais
humanas (RECUERO, 2009).
As Redes Sociais existiam muitos anos antes da criação da Internet, com suas
formas de relacionamento e seus paradigmas socioculturais, sendo tais paradigmas
utilizados para estabelecer normas em todo agrupamento de pessoas que pudesse ser
chamado de Rede Social. Utilizando esses paradigmas, e lições obtidas no uso dos
mesmos, empresas seguem metodologias para se criar o melhor relacionamento possível
entre indivíduos, melhorando assim o desempenho dos funcionários. Em tais
metodologias podem ser utilizados algoritmos de Otimização para encontrar o melhor
relacionamento entre funcionários (OLIVEIRA, 2009).
A obtenção da solução ótima para os problemas de Otimização combinatória
pode ser teoricamente feita pela enumeração de cada possibilidade de solução, e
posterior análise de custo das mesmas. Porém, dependendo das características do
problema, o conjunto de soluções possíveis comumente é tão grande, que se torna
10
impossível avaliar cada um de seus elementos em tempo aceitável. Este é o caso dos
problemas NP-difíceis [Garey e Johnson, 1979]. Tal classe é composta de problemas
para os quais é improvável a existência de um algoritmo determinístico e eficiente que
os resolva exatamente. Como alternativa, utilizam-se Algoritmos Genéticos (AGs)
(HOLLAND, 1975) e outras meta-heurísticas que obtêm uma solução boa, em um
tempo computacional razoável.
Como nas Redes Sociais existe uma replicação imensurável de dados e
informações, pode-se utilizar tais algoritmos citados para rastrear informações para
usuários das redes, tentando-se, por exemplo, encontrar os melhores relacionamentos e
as melhores informações sob algum critério que não se desvie dos paradigmas culturais
de determinada Rede Social. Esses mesmos algoritmos podem ser utilizados para
otimizar as buscas realizadas no Motor de Busca, atentando para estratégias de
aprendizagem, podendo-se contextualizar as buscas em relação aos usuários. Essa
contextualização pode ser realizada utilizando-se parâmetros pessoais dos usuários,
como localização (cidade, estado, país), emprego, gosto em esportes, lazer etc., pois tais
dados são disponibilizados nos perfis dos usuários nas Redes Sociais.
Algoritmos de Inteligência Artificial (IA) serão utilizados para melhorar o
desempenho do cruzamento de usuários e informações das Redes Sociais e sites de
buscas. O principal algoritmo de IA utilizado será o PCM (Perceptron de múltiplas
camadas), também chamado de algoritmo de backpropagation. Tal algoritmo é
composto por RNAs, que simulam neurônios humanos e suas ligações sinápticas
(Haykin, 2001).
O trabalho está dividido em introdução, fundamentação teórica, em que serão
abordados conceitos sobre o assunto, embasando o leito para a apresentação das
funcionalidades do sistema, no tópico métodos e materiais. O tópico resultados traz os
aqueles obtidos no decorrer do projeto, e a conclusão aborda as dificuldades
encontradas, as soluções e as possíveis melhorias do sistema.
1.1 OBJETIVO
O objetivo principal deste projeto é o desenvolvimento de um Motor de Busca
contextualizado, utilizando especificações de usuários de Redes Sociais para coletar
informações e prover a sugestão de melhores relacionamentos entre estes membros de
Redes Sociais.
11
Observando a dificuldade em encontrar Redes Sociais disponíveis para coleta
das informações de seus usuários, um dos objetivos específicos é criar um sistema
básico com algumas páginas Web, na tentativa de simular uma Rede Social.
Outros tópicos secundários para implementação e análise são algoritmos de IA
para utilizar como estratégias de aprendizagem, na tentativa de encontrar um padrão
para as buscas de usuários específicos. Também a criação de funções especificas do
projeto, como estratégias para indexação, ranking de páginas e função-objetivo para
guiar os algoritmos de Otimização.
12
2 FUNDAMENTAÇÃO TEÓRICA
A seguir são apresentados tópicos referentes a Algoritmos de Otimização e ao
Problema de Designação Quadrática (QAP), sendo que se utilizaram exemplos do QAP
para testar os algoritmos de Otimização. Em seguida são apresentados tópicos referentes
à implementação de um Motor de Busca.
2.1 RECUPERAÇÃO DA INFORMAÇÃO
A Recuperação da Informação, termo estabelecido por Calvin Moores em 1950,
é baseada em diversas subáreas do conhecimento em Informática, partindo da interseção
da Ciência da Informação com a Ciência da Computação, a Estatística e outras subáreas.
Um processo de Recuperação da Informação consiste em analisar os documentos
armazenados em um sistema e devolver os links referentes ao assunto pesquisado pelo
usuário.
Uma área correlata à Recuperação da Informação é conhecida como Mineração
de Dados, que pode ser descrita como o processo de análise de conjuntos de dados com
o objetivo de encontrar padrões em dados que representem informações úteis e não
triviais, relacionadas ou não. Para tanto, utilizam-se métodos matemáticos, sendo estes
heurísticos ou exatos. A Mineração de Dados é parte de um processo maior e mais
abrangente, a saber, o de descoberta de conhecimento em Bancos de Dados (PITONI,
2002).
Em (AMO, 2002) encontramos uma descrição mais funcional, a qual divide a
Mineração de Dados em sete etapas (Figura 1), que são:
•
Limpeza de dados: etapa em que são eliminados ruídos e dados
inconsistentes;
•
Integração de dados: etapa em que diferentes fontes de dados podem ser
combinadas produzindo um único repositório de dados;
•
Seleção: etapa em que são selecionados os atributos que interessam ao
usuário;
•
Transformação dos dados: etapa em que os dados são normatizados em
um formato apropriado para a aplicação de algoritmos de mineração;
13
•
Mineração: etapa essencial do processo, consistindo na aplicação de
técnicas inteligentes a fim de se extraírem padrões de interesse;
•
Avaliação ou Pré-processamento: etapa em que são identificados os
padrões interessantes de acordo com critério(s) do usuário;
•
Visualização dos resultados: etapa em que são utilizadas técnicas de
representação de conhecimento a fim de apresentar ao usuário o
conhecimento minerado.
Figura : Etapas da Mineração de Dados.
Fonte: Amo (2002).
2.2 FERRAMENTAS DE BUSCA WEB
Com o crescimento do número de páginas Web, surge a necessidade da criação
de algum sistema que auxiliasse o usuário na tarefa de pesquisar informação nos
conteúdos disponíveis na Internet. Para atender a essa demanda, foram desenvolvidas
diversas ferramentas com o propósito de tornar menos complexo o processo de busca.
Elas se classificam em três tipos: Diretórios, Motores de Busca e Meta-motores
(CENDÓN, 2001).
2.2.1 Diretórios
Os diretórios foram a primeira solução proposta para organizar e localizar os
recursos da Web, introduzidos quando o conteúdo da Web ainda era pequeno o suficiente
14
para permitir que houvesse coleta de dados de forma não automática. Os diretórios
organizam os sites que compõem sua base de dados em categorias, as quais podem
conter subcategorias, ou seja, os sites são organizados hierarquicamente por assuntos, o
que permite ao usuário localizar informações, navegando, progressivamente, nas
subcategorias.
A grande deficiência no mero uso de Diretórios é a seleção de sites coletados,
que era realizada por pessoas. Observando-se o aumento do número de sites para a
escala de centenas de milhões e mais, tal tarefa tornou-se inviável, assim como a criação
de subdiretórios para a imensa gama de especificidades de assuntos abordados.
2.2.2 Motor de Busca
Ao contrário do que ocorre no simples uso de Diretórios selecionados “a olhos e
mão”, os Motores de Busca não pré-organizam hierarquicamente as páginas que
coletam. Ocorrendo uma quantidade menor de seleções de páginas Web, visando a
aumentar a abrangência de suas bases de dados e a coletar o maior número de páginas
Web, com da utilização de um software chamado robô. Como suas bases de dados são
extremamente grandes, podendo alcançar centenas de milhões de páginas, permite-se ao
usuário localizar os itens desejados mediante buscas por palavras-chave, ou, às vezes, a
busca em linguagem natural.
Os Motores de Busca surgiram quando o número de recursos na Web adquiriu
proporções tais que impedia a coleta por meio manual e a busca apenas pela navegação.
O primeiro dos Motores de Busca baseados em robôs foi o Web Crawler, proposto em
abril de 1994 (COELHO, AZEVEDO, 2008).
O funcionamento básico do Web Crawler consiste em varrer as páginas Web,
capturando dados de cada página e armazenando-os em sua base de dados. O Web
Crawler contém uma lista de links chamada Seeds, sendo que cada link dessa lista é
utilizado para visitar uma página Web. Quando ocorre uma visita, a página é capturada,
ou seja, são armazenados dados seus na base de dados do Web Crawler e todos os links
encontrados na página capturada são armazenados na Seeds para futuras visitas. A
Figura 2 ilustra o funcionamento de um Web Crawler.
15
Figura : Esquema de funcionamento de um Web Crawler.
Fonte: Amaral (2011).
Então se pode observar que com apenas uma visita a uma página Web, pode-se
varrer uma parte maior da própria Web, pois a lista Seeds é sempre realimentada com
links encontrados nas páginas, links que levam inclusive a páginas inéditas na varredura
em questão.
2.2.2.1 Indexador
O indexador é utilizado para armazenar as páginas no banco de dados do Motor
de Busca, sendo que, quando um robô visita uma página, existe a necessidade de se
armazenar tal página seguindo determinados critérios.
O indexador obtém informações das páginas e cria uma relação semântica entre
essas páginas, na tentativa de contextualizar as páginas, armazenando páginas com
relações semânticas na mesma localização (SHKAPENYUK, SUEL, 2003).
Esse armazenamento, levando em consideração a relação semântica, é utilizado
quando ocorre uma busca de página pelo usuário, e a resposta do sistema para esse
usuário serão as páginas que têm relação com o assunto pesquisado.
O modelo de indexação utilizado neste projeto é a indexação automática,
segundo (Santos, 2009), um sucinto conceito de tal tópico:
“Sendo a indexação a representação de um documento ou das
perguntas feitas pelos usuários, no ato de busca, por meio de
linguagens naturais ou uma linguagem documentária, a indexação
automática seria a execução deste processo por meio de
programas ou algoritmos de computador que “varrem” o
16
documento (ou registro de documentos) e realizam a
representação do conteúdo sem a intervenção do
documento.”
A indexação automática pode ser dividida em três possibilidades fundamentais,
que são:
•
Indexação assistida por computador durante o armazenamento: sistema que
auxilia o processo de armazenamento dos termos de indexação extraídos pelo
indexador na etapa de análise conceitual. São facilitadores do processo de
indexação, uma vez que proporcionam, por meio de janelas de ajuda, notas
explicativas sobre os termos e seus relacionamentos e, às vezes, acesso a
documentos já indexados, para solução de dúvidas;
•
Indexação semi-automática: sistema que indexa automaticamente o documento
e, se necessário, permite a edição e a validação dos termos pelo
documentalista;
•
Indexação automática: sistema sem nenhuma validação por parte do
documentalista; os termos de indexação são armazenados diretamente como
descritores do documento.
Razões para se utilizar indexação automática:
No artigo “Lenguaje natural e indización automatizada”, escrito por Méndez
Rodrigues e Moreira González e encontrado em Santos, 2009, são identificados quatro
fatores que solidificam a utilização da indexação automática:
•
O alto custo da indexação humana, em termos de tempo, suscitou a ideia de
explorar de maneira eficaz, em um tempo reduzido, o volume constantemente
crescente de informações. Essa questão motivou estudos para se comparar a
indexação humana e a indexação automática;
•
O aumento exponencial da quantidade de informação eletrônica e a
proliferação de textos completos;
•
A Gestão Eletrônica de Documentos (GED) e a informatização dos processos
documentais;
17
•
A automatização de processos cognitivos, e a pesquisa crescente e os avanços
em Processamento de Linguagens Natural (PLN). A automatização de
processos cognitivos permite o surgimento de sistemas inteligentes, que
aliados ao PLN podem lidar com a atividade de indexação. Porém, os autores
alertam para complexidade da linguagem natural e afirmam que um sistema
não pode lidar globalmente com a mesma, sendo capaz apenas de reconhecer
cadeias de caracteres.
Observando-se as vantagens citadas acima e notando o grande volume de dados e
informações contidos na Internet, pode-se considerar a necessidade e a importância de
uma boa estratégia de indexação de documentos, ou páginas da Web, para Motores de
Busca. No entanto, a dificuldade encontrada na indexação de páginas Web está na sua
independência, tanto na estrutura, quanto na exposição.
Novas páginas Web são lançadas na Internet com uma alta frequência,
independente de assunto e idioma. Portanto a maneira mais encontrada de descobrir
conteúdo em páginas Web é analisando seus metadados, que descrevem as informações
contidas na página, como as tags que são usadas para qualificar partes da página, como
autor, título, palavras-chave, entre outras. Com tais tags podemos encontrar uma
contextualização do assunto abordado na página.
O método utilizado para armazenar as páginas, neste projeto, foi o uso da
linguagem descritora Extensible Markup Language (XML), criando um arquivo xml
para cada página, contendo o link, o título e as palavras-chave. Esta abordagem foi
utilizada visando a reduzir a quantidade de espaço utilizado no banco de dados, pois se
armazenássemos a página inteira, utilizaríamos muito mais espaço, já que uma página
tem um tamanho, em média, de 125Kb, enquanto um arquivo xml tem o tamanho de
4Kb.
XML é uma linguagem de marcação de dados, que provê um formato para
descrever dados semiestruturados. Isso facilita declarações mais precisas do conteúdo e
resultados mais significativos na utilização de XML em múltiplas plataformas. É um
padrão para a formatação de dados, ou seja, uma maneira de organizar informações. Tal
organização é compreensível tanto para computadores quanto para humanos (DUARTE,
2010). O uso de XML traz alguns benefícios, como buscas mais eficientes, por sua
organização, e o desenvolvimento de aplicações flexíveis para Web.
18
2.2.2.2 Ranking de Páginas Web
Com a grande quantidade de páginas Web armazenada pelos Motores de Busca
e, a quantidade de resultados que podem ser apresentados ao usuário, tem-se a
necessidade de ordenar os resultados, na tentativa de prover páginas ordenadas para
melhorar o acesso do usuário às mesmas.
Assim surgem as estratégias de Ranking de páginas, observando que Rankings
existem não somente para páginas Web. As estratégias de Ranking organizam os
resultados, colocando em ordem sequencial as páginas, sendo que todos os Motores de
Busca (de sites como Yahoo, Google e Bing) organizam seus resultados segundo
estratégias de ordenação de resultados.
Uma das estratégias mais famosas para criar um Ranking de páginas Web,
usando teoria de grafos, é PageRank, um algoritmo iterativo que designa um peso
numérico para cada nó com o propósito de estimar sua importância no grafo. O
algoritmo foi projetado por Brin e Page em 1998 (BENEVENUTO et al., 2011) para
ordenar resultados de busca do protótipo de Motor de Busca da Google. A característica
fundamental do PageRank é considerar o critério de popularidade de uma página, tendo
as páginas que mais são apontadas por outras páginas, um maior grau de popularidade,
sendo assim as primeiras no topo da lista de resultados de uma busca.
A equação seguinte representa matematicamente o critério da PageRank:
onde i é um nó, S(i) é o conjunto de páginas que apontam para i, Nv é denominado o
número de arestas que saem do nó v, e o parâmetro d é um fator que pode ter valor entre
0 e 1 (BENEVENUTO et al., 2011).
2.2.3 Meta-motores
Para obterem-se resultados melhores em uma pesquisa de páginas na Web, é
recomendável que se utilize várias ferramentas, já que há pouca superposição na
informação recuperada por motores diferentes.
19
Para melhorar esse processo, foram criados os Meta-motores, que permitem a
execução de uma mesma busca em mais de uma ferramenta (motores ou diretórios),
exibindo todos os resultados encontrados em uma só lista.
2.2.4 Armazenamento de Dados
O volume de informações disponíveis atualmente na World Wide Web (WWW) e
a perspectiva de seu aumento como exponencial são muitíssimo expressivos, ademais se
levado em consideração o nível das tecnologias de comunicação e armazenamento de
dados. Com essa perspectiva de crescimento, surge o problema de armazenamento, e de
controle de fluxo de informações, com a tendência a se modificarem paradigmas de
gerenciamento de dados.
Segundo Yamaoka (2003), em 2000 foi estimado que a Web continha cerca de
2,5 bilhões de documentos na Web visível com crescimento de 7,5 milhões de
documentos ao dia, e que a Web oculta¹ era cerca de 500 vezes maior. Observado que a
expressão Web oculta refere-se ao conteúdo que os atuais mecanismos de busca têm
dificuldades de recuperar e indexar.
Em dezembro de 2001, os maiores sistemas de busca informaram os seguintes
números em relação ao tamanho de suas bases:
Figura : Bases de dados.
Fonte: Yamaoka (2003).
20
Observando tal cenário, analisamos a melhor maneira para armazenar as páginas
Web e suas informações. No entanto, observa-se a necessidade de armazenar apenas o
titulo da página, as palavras-chave e o endereço da página, pois assim reduzimos a
quantidade de informações referentes à página Web, podendo-se armazenar as mesmas
em documentos, como os dos tipos xml ou de documentos não estruturados.
Um documento não estruturado refere-se a arquivos de texto, os quais não
seguem nenhuma ordem primária de armazenamento como a XML. Em contrapartida, a
liberdade proporcionada pelo tipo não estruturado é maior, como a de armazenar várias
páginas no mesmo documento, utilizando cada linha para armazenar as informações de
cada página Web.
2.2.4.1 Estruturas de Dados
Estruturas de dados são estratégias utilizadas para prover um armazenamento
organizado de dados, proporcionando uma maior eficiência no momento da pesquisa.
Existem destas vários tipos, como Listas, Filas, Pilhas, Árvores, entre outras. Neste
trabalho utilizamos principalmente duas estruturas de dados, árvore binária de busca e
tabela de hashing.
A árvore é uma das estruturas de dados mais utilizadas e úteis. A estrutura em
árvore é uma estrutura hierárquica, na qual um segmento é o principal e dele se derivam
todos os demais. Esse mesmo desenho se repete nos segmentos derivados, e a
semelhança que existe com uma árvore tradicional ocorre quando se compara esse
segmento básico ao tronco de uma árvore, os demais aos galhos, até que finalmente se
chega às folhas.
A tabela de hashing é uma estrutura que utiliza índices para armazenar e acessar
seus dados, sendo que, para melhor entendimento, precisa-se definir o que seja o espaço
de chaves e o de índices. Denomina-se S(k), espaço de chaves, ao conjunto de todos os
valores possíveis que a chave K possa assumir. Por exemplo, se uma chave é a placa de
um carro, qual o seu espaço de chaves? Resposta = são 3 letras e 4 números, ou seja, 26
x 26 x 26 x 10 x 10 x 10 x 10 = 175.000.000 de possibilidades.
S(i), espaço de índices, é o conjunto de todos os valores que o índice possa
assumir. Por conta do uso da função de hashing, esta técnica também é conhecida como
“transformação de chaves”. Como o universo de chaves é muito maior do que o de
índices, claramente a função tende a mapear diversas chaves em um mesmo índice.
21
A utilização de árvores e tabelas de hashing neste trabalho se deu pela
velocidade de acesso a cada estrutura, tendo as mesmas, respectivamente, custos de
O(log n) e O(n), observando que O(n) refere-se ao pior caso da tabela de hashing, na
busca, sendo o ideal O(1) (KANTEK, 2007).
2.2.5 Algoritmos de Aprendizagem
Algoritmos de aprendizagem são utilizados na tentativa de ensinar algum padrão
à máquina. Um dos algoritmos mais utilizados para aprendizagem de máquina é a Rede
Neural Artificial (RNA), que é uma técnica de IA que tenta simular em máquinas o
funcionamento do cérebro humano. Estruturalmente as RNAs são conhecidas por
modelos conexionistas, e se assemelham à rede neural biológica pela composição de
seus neurônios e pela conexão entre eles (TONSIG, 2000).
As RNAs são compostas por nós que recebem informações e as transferem
mediante conexões entre as camadas, definidas como camada de entrada, intermediária
e de saída, como ilustrado na Figura 4.
Figura : Rede Neural e suas camadas.
Fonte: Tonsig (2000).
A propriedade mais importante das RNAs é a habilidade de aprender e com isso
melhorar seu desempenho. Isso é realizado por meio de um processo iterativo de ajustes
dos seus pesos, o treinamento. O aprendizado ocorre quando a RNA atinge uma solução
generalizada para uma classe de problemas.
22
Haykin (2001) descreve uma RNA como um processador maciço e
paralelamente distribuído, constituído de unidades de processamento simples, que tem a
propensão natural para armazenar conhecimento experimental e torná-lo disponível para
uso. As RNAs se assemelham ao cérebro em dois aspectos: o conhecimento é adquirido
pela rede, por meio de um processo de aprendizagem, e as forças de conexão entre os
neurônios, os pesos sinápticos, são utilizados para armazenar o conhecimento.
Uma RNA é implementada com base nas características do problema a ser
investigado, sendo esta treinada a partir de uma base de casos, de modo que a mesma
seja capaz de generalizar situações futuras (SCHWALBERT, 2007).
2.3 REDES SOCIAIS
As Redes Sociais podem ser definidas como um sistema de nós e elos,
representando um conjunto de participantes autônomos, unidos por ideias, valores ou
interesses compartilhados. Há uma valorização das relações, em detrimento das
estruturas hierárquicas. As primeiras tentativas de análise de Redes Sociais se deram na
década de 30 com o desenvolvimento da sociedade e seus pequenos subconjuntos
sociais (OLIVEIRA, 2009).
A sociometria é a representação métrica das relações interpessoais dentro de um
grupo social, visando a identificar as características dos vínculos interpessoais entre os
seus membros, bem como seu modo de funcionamento e sua organização psicossocial.
Por meio dela, torna-se possível discernir padrões de atração, repulsa e indiferença entre
indivíduos que compõem um determinado grupo.
Pelos motivos apresentados, podemos observar a possibilidade de tratarmos tais
relacionamentos entre usuários com um grafo, como na Figura 5, verificando suas
afinidades e localização. Observamos, pela grande quantidade de usuários de Redes
Sociais, o tamanho e quantidade de relações possíveis em tal grafo, e com isso podemos
definir esse relacionamento como um problema NP (polinomial não determinístico). Por
isso, neste trabalho, utilizaremos algoritmos de Otimização Combinatória para sugerir
tais relacionamentos da melhor maneira.
23
Figura : Exemplo de Sociograma.
Fonte: (Oliveira, 2009).
Antes de utilizarmos um algoritmo específico, testamos algumas heurísticas e
meta-heurísticas com exemplos do QAP, retirados do site QAPLib (de QAP Library).
Experimentos com Redes Sociais datam da década de 1960, com o experimento
de Milgram, em que estudou o grau de separação entre as pessoas. Ele enviou
aleatoriamente uma quantidade de cartas a várias pessoas, solicitando que as
repassassem a outra pessoa específica. Se não conhecessem a pessoa específica, as
pessoas teriam a possibilidade de enviar para pessoas mais próximas à pessoa
específica.
Milgram descobriu que, das cartas que chegaram a seu destinatário final (pessoa
específica), a maioria havia passado apenas por um pequeno número de pessoas. Isso
sugeria que todas estariam separadas por uma pequena distância, pertencente a um
espaço próprio, denominado de mundo pequeno. O resultado deste estudo é chamado de
“Principio dos seis graus de separação”, em que se pretende provar que cada pessoa está
conectada a qualquer outro na rede com um número máximo de seis pessoas
intermediárias (BENEVENUTO et al., 2011).
No entanto Milgram tratava as Redes Sociais como redes aleatórias, nas quais as
relações entre os nós sofreriam um critério randômico de relacionamento, sendo que, no
entanto, Barabási demonstrou que as Redes Sociais não carregam um critério de
relacionamento aleatório e sim uma ordem de estruturação em rede. Tal ordem refere-se
ao fato de que “pessoas mais populares ficam mais populares”, ou seja, de que para nós
com maior quantidade de conexão (nós com graus elevados), maior a possibilidade de
ter mais conexões. Com tal análise, cria-se a premissa de que as Redes não teriam um
grau igualitário para os nós, resultando em que cada nó poderia ter uma quantidade
diferente de relacionamentos. É essa premissa que seguimos ao utilizar algoritmos de
Otimização Combinatória para encontrar e sugerir as melhores ligações entre usuários
de Redes Sociais (FREITAS, 2008).
24
2.3.1 Otimização Combinatória, Ótimos global e local
A Otimização Combinatória é o processo de encontrar e comparar soluções
factíveis até que nenhuma solução melhor possa ser encontrada. Essas soluções podem
ser boas ou ruins em termos de um objetivo (COELHO, 2006).
Uma grande variedade de problemas da indústria, tais como os de economia,
logística etc., apresentam uma decisão NP-Completa associada, cuja versão de
Otimização é NP-Difícil e, por isso, é considerada de impossível resolução em tempo
polinomial.
A versão de Otimização de um problema NP-Difícil apresenta uma função e um
conjunto de requisitos, ambos relacionados às variáveis de decisão, que dão valor a uma
solução específica. A função pode ser minimizada ou maximizada, sendo chamada de
função-objetivo. A melhor solução para um exemplo do problema, ou seja, seu ótimo
global, é o menor ou maior valor possível para a função, desde que o valor atribuído às
variáveis não viole nenhuma restrição. Em alguns casos, chega-se a valores cuja
alteração discreta não conduz a resultados melhores, mas que podem não ser
equivalentes ao ótimo global: essas soluções são chamadas de ótimos locais.
2.3.2 Problema de Designação Quadrática – QAP
O QAP consiste em encontrar o posicionamento ótimo em casos de designação
de instalações a localidades predefinidas, levando-se em conta as distâncias entre as
localidades e os níveis de interação entre as instalações. Uma motivação adicional para
a pesquisa e o desenvolvimento de técnicas para a resolução do QAP é o fato de que
este problema faz parte da classe NP-Difícil (MAIA, 2002).
Uma formulação para o QAP é uma bijeção f entre os vértices de dois grafos A e B
com n vértices, de forma que se minimize ou maximize o custo total:
n n
C( v ) = ∑ ∑ a b
ij v(i) v( j)
i =1j =1
v ∈ V( n )
25
Sendo:
n - número de instalações ou localidades;
V(n) - conjunto de todas as permutações de {1, 2, ..., n};
a(aij) - uma matriz n × n, em que aij representa o fluxo de materiais da instalação
i para a j;
b(bkl) - uma matriz n × n, em que bkl representa a distância entre as localidades k
e l;
C(v) – custo do subconjunto v do conjunto V.
Uma interpretação para este problema é que cada vértice de A é uma localidade,
e o valor da aresta entre uma localidade i e uma localidade j é a distância entre estas.
Cada vértice de B é um recurso, que é inerente a alguma instalação. Para cada par x e y
de recursos, existe um valor de fluxo de recurso associado (CORRÊA, 2007).
A seguir é apresentado um exemplo simples do QAP. São 5 localidades, 3 instalações e
3 fluxos de insumos entre as mesmas (Figura 6):
3
1
A
B
C
2
m
4
5
Instalações
n
Localidades
distância
fluxo
fluxo de maior peso
Figura : Um exemplo do QAP.
m ≤n
26
Uma solução factível para o exemplo da Figura 6 pode ser vista a seguir.
C
A
B
4
5
Note-se que o fato das instalações A, B e C terem sido posicionadas nas
localidades 1, 2 e 3, respectivamente, é apenas uma coincidência. Outra solução factível
seria aquela onde manteríamos as instalações A e C nas mesmas localidades, e
posicionaríamos a instalação B na localidade 5, como representado a seguir.
C
A
2
4
B
Esta solução tem um valor maior na função-objetivo, já que a localidade 5
apresenta custos maiores do que aqueles referentes à localidade 2, em relação às outras
duas. Essa segunda solução é então considerada pior que a primeira.
27
2.3.3 Heurísticas
Uma heurística é um conjunto de regras e métodos que conduzem à descoberta,
à inversão e à resolução de problemas, fornecendo, em geral, soluções satisfatórias, em
um período de tempo razoável (MAIA, 2002; COELHO, 2006).
A maioria das heurísticas é utilizada para resolução de problemas para os quais é
necessário diminuir o custo computacional, tais como problemas que demandam
respostas diárias.
Um algoritmo de Busca Local (Figura 7) estabelece, para cada solução, uma
vizinhança composta por um conjunto de soluções com características próximas. Dada
uma solução referencial, uma das formas de implementar um algoritmo de Busca Local
é percorrer a vizinhança dessa solução em busca de outra com valor mais satisfatório.
Se tal solução vizinha for encontrada, torna-se essa a solução referencial e o algoritmo
continua. Caso contrário, a solução referencial corrente é considerada um ótimo local
em relação à vizinhança considerada (MAs Homepage, 2010).
Figura : Algoritmo de Busca Local.
Fonte: MAs Homepage (2010).
28
2.3.4 Meta-heurísticas
Uma Meta-heurística é uma estratégia de busca de Ótimo global em problemas
de Otimização Combinatória, que utiliza uma Heurística para guiar outra Heurística.
Pode-se citar, como exemplo, um algoritmo que a cada iteração procure primeiro
melhorar ostensivamente a solução atual, levando em conta sua vizinhança, e, depois,
tente melhorá-la novamente em relação a outras regiões do espaço de busca.
Neste trabalho foram implementadas e avaliadas algumas Meta-heurísticas,
sendo que se implementaram e avaliaram uma Busca Tabu (BT) e um Simulated
Annealing (SA).
29
3 MATERIAIS E MÉTODOS
Nesta etapa o funcionamento do Motor de Busca e do sistema de relacionamento
de usuários será abordado. Exibindo o funcionamento dos algoritmos de Varredura da
Web (spider), indexação e pesquisa, referentes ao Motor de Busca, além das Metaheurísticas e função-objetivo, relacionadas ao sistema de relacionamento.
3.1 MOTOR DE BUSCA
O Motor de Busca ou Web Crawler é composto por um buscador de páginas na
Web, utilizado para pesquisar links entre as páginas (spider) e salvar as mesmas, um
indexador para armazenar tais páginas, e uma interface para permitir ao usuário a
pesquisa nas bases de dados do Motor de Busca. Na mesma etapa ainda utilizaremos um
algoritmo de IA para melhorar a contextualização das pesquisas realizadas pelo usuário.
3.1.1 Buscar páginas (spider)
A expressão “varrendo a Internet” está relacionada ao fato de que o spider
acessa páginas que estão disponíveis na Internet, capturando links de outras páginas que
possam ser acessadas e assim criando uma teia entre as páginas, daí o nome spider.
O ideal para o funcionamento de um spider é se estabelecer uma conexão de alta
disponibilidade com a Internet e um conjunto de servidores para armazenamento de
dados. Seu funcionamento básico é receber um link de uma fila de links, referente a
determinada página da Internet, e acessar essa página armazenando a mesma em seu
banco de dados. Nas informações contidas na página, podemos encontrar links para
outras páginas, sendo que os mesmos são inseridos na fila de links do Motor de Busca,
assim proporcionando ao spider continuar varrendo a Internet.
Para criar um spider utilizamos as bibliotecas java.io, java.net e java.util, para
receber dados, conectar à Internet e filtrar informações da página, respectivamente. O
spider recebe um link válido, como http://www.google.com, conecta-se a essa página, lê
todas as informações da página e captura da mesma página somente o título, as
palavras-chave e os links ali encontrados. Os links válidos encontrados na página
acessada são enviados para a fila de links, aumentando assim o tamanho da fila de links
e consequentemente o número de páginas que serão acessadas pelo spider.
30
Para determinar quando um link é válido utilizamos um filtro de páginas Web,
sendo que esse filtro recebe um link, conecta à respectiva página, se a conexão foi
estabelecida e a página existe, então o link é validado. No entanto, se não houver
conexão ou se tal conexão leva a uma página que não possa ser armazenada, por
conduta de privacidade ou irrelevância de conteúdo, então tal link é considerado
inválido e não é enviado para a fila. A Figura 8 (b) exibe o diagrama de atividade do
spider, ilustrando seu funcionamento.
Figura : (a) Funcionamento da pesquisa, (b) Funcionamento do spider.
Fonte: Próprio Autor.
31
Logo após a captura das informações da página (Link da página acessada, título
e palavras-chave), é criado um documento com essas informações, e tal documento é
enviado para a classe Indexar que o armazena no diretório ideal para tal página,
observando que os diretórios são contextualizados. Na Próxima seção será tratado o
funcionamento do indexador.
3.1.2 Indexar
Um dos quesitos fundamentais para um Motor de Busca funcionar é o indexador.
Ponto-chave dos Motores de Busca da Web, o indexador é utilizado para armazenar
informações obtidas nas páginas acessadas. Nenhuma empresa revela seus algoritmos
de indexação, pois esse é o ponto que diferencia uma empresa da outra, sendo que as
mesmas podem utilizar diferentes tipos de indexação de documentos, levando em
consideração objetivos específicos.
Neste projeto houve a necessidade de contextualizar informações, criar uma
relação de contexto para cada página no momento da indexação, e é este um dos pontos
fundamentais do Motor de Busca implementado neste projeto. Para armazenarmos as
páginas temos que criar um contexto semântico para cada uma. Devido à necessidade
criou-se um analisador semântico para tratar a contextualização das páginas.
O analisador tem o seguinte funcionamento: quando o motor recebe as
informações referentes a uma página, compara o título e as palavras-chave desta página
com um conjunto de palavras pré-estabelecidas que fazem alusão a determinado
assunto, por exemplo, uma página que tem como título "Medicina Humana" e contém
entre suas palavras-chave, palavras como "medicina", "cuidado" ou "saúde", entre
outras, essa página será contextualizada como uma página da área de saúde.
Em caso de falha na contextualização do analisador, por não encontrar nenhuma
relação entre o título e as palavras-chave com as palavras pré-estabelecidas, utiliza-se o
contexto da página em que se obteve o link da página atual, por exemplo, na página do
exemplo anterior, "Medicina Humana", o spider encontrou links e, acessando esses
links, encontrou-se uma página que não tem relevância semântica que a
contextualizasse, mas, sabendo-se que a mesma foi extraída a partir da página
"Medicina Humana", que tem como contexto a área de saúde, então contextualiza-se a
página derivada no mesmo contexto da página "Medicina Humana".
32
Tal estratégia pode ser utilizada pelo fato de que páginas de determinado assunto
sempre se relacionam com outras páginas de mesmo assunto, salvo quando essa relação
se refere a uma propaganda.
A estratégia de indexação, utilizando somente link, título e palavras-chave, tem
como objetivo reduzir o tempo de indexação, reduzindo a quantidade de comparações,
observando que o algoritmo utiliza uma estratégia de Força Bruta, cotejando essas
informações com um conjunto de palavras pré-estabelecidas encontrado no apêndice A.
3.1.2.1 Estrutura de Armazenamento
Para armazenarmos as páginas usamos alguns diretórios, como pode ser visto na
Figura 9 (a). Esses diretórios são nomeados com as possíveis áreas de atuação
profissional de um usuário, sendo Saúde, Agricultura, Tecnologia, Direito, Artes,
Esporte, Humanas e Ciências. Cada diretório contém suas palavras-chave, e as mesmas
são comparadas com as informações de cada página na tentativa de criar um contexto.
Dentro de cada diretório existe uma estrutura em forma de árvore, Figura 9 (b).
Essa estrutura foi criada levando-se em consideração a ordenação alfabética pela
primeira letra da principal palavra do título da página, e o armazenamento em forma de
árvore foi utilizado para aumentar a velocidade de pesquisa e armazenamento das
páginas.
Dentro de cada nó da árvore existe uma tabela de hashing, Figura 9 (c). Essa
tabela armazena vários arquivos de texto que contêm as páginas indexadas, e esses
arquivos são referentes a cada chave da tabela de hashing, observando que cada chave
refere-se a um arquivo. A estrutura da tabela de hashing foi utilizada pela sua
velocidade no momento da leitura e armazenamento de determinado arquivo,
observando a utilização de uma chave para acessar um exato local da tabela. A Figura 8
mostra a estrutura de armazenamento das páginas Web.
33
Figura : Estrutura de Armazenamento.
Fonte: Próprio Autor.
3.1.2.2 Funcionamento da Indexação
Depois que se contextualiza a página e já se conhece qual o seu diretório, resta
saber qual seu local na árvore e consequentemente qual seu local na tabela de hashing.
Para isso se utilizou um algoritmo de indexação com a principal palavra do título da
página.
As etapas são:
•
Receber o titulo da página;
•
Retirar as palavras ou letras indesejadas, as StopWords, que são um conjunto de
palavras que não carregam um sentindo final, como os artigos e as preposições,
como no título, “A medicina do homem”, o artigo “A” e a preposição “do” são
retiradas, restando apenas “medicina homem”, nessa ordem;
•
É recuperada a letra inicial da primeira palavra que restou da frase: como no
exemplo anterior, “medicina homem”, recupera-se a letra “m”, que corresponde
à palavra “medicina”;
•
Com essa letra, conhece-se em qual local da árvore haverá inserção;
•
Conhecendo o nó exato da árvore, acessa-se a tabela de hashing do respectivo
nó, sendo que, para acessar a posição da tabela, necessita-se conhecer a chave.
Utiliza-se uma função de hashing para encontrar a respectiva chave, no entanto
foi necessário utilizar uma função de soma ASCII, que recebe a primeira
34
palavra do título, como “medicina” no exemplo anterior, encontrando um valor
ASCII que é enviando para a função de hashing;
•
Quando encontrada a posição de hashing, retorna-se uma string com o nome do
arquivo ou, se tal arquivo não existe, um novo arquivo é criado na posição vazia
do hashing;
•
Nesse arquivo serão armazenadas as informações da página, sendo que cada
linha do arquivo refere-se a uma página.
A função de soma ASCII foi criada para realizar a soma de ASCII de uma
palavra, levando em consideração a posição de cada caractere. O funcionamento da
função é receber a palavra e somar os dois primeiros ASCII, referentes às duas
primeiras letras da palavra, e em seguida subtrair pela terceira letra, sendo que esse
mesmo processo é repetido até o fim da palavra.
Pode-se observar na palavra “JAVA” que, se apenas for realizada uma soma dos
ASCII, qualquer anagrama formado pelas letras desta palavra terá o mesmo resultado,
como em “AVAJ”. Utilizando a função de soma ASCII, um anagrama com essa letras
terá um resultado diferente, pois J + A – V + A = 118 é diferente de A + V – A + J =
160. Essa função foi criada para que diferentes palavras não gerem a mesma posição da
tabela de hashing, acontecendo essa colisão somente quando a palavra for a mesma.
Essa estrutura foi criada para obter uma melhor divisão entre assuntos
específicos de cada página e não carregar um grande conjunto de páginas em somente
uma estrutura de armazenamento.
Com tal divisão podem-se capturar várias páginas que tenham um título
iniciando com a mesma palavra e mesmo sentido, e colocar essa página no mesmo
arquivo. Assim não sobrecarregamos um único arquivo com uma grande quantidade de
páginas que podem ser anexadas, mesmo capturando somente título, palavras-chave e
link. Por exemplo, pode-se ter no mesmo arquivo, correspondente à área de Tecnologia,
as páginas O Mundo Java e O Mundo da Web, observando que a palavra inicial do
título das duas é "Mundo". Essa abordagem é possível pelo fato de que a chave da
tabela de hashing é criada utilizando a palavra inicial do link, como no exemplo
anterior, "Mundo".
3.1.2.3 Armazenamento
35
Uma estratégia de armazenamento avaliada foi utilizar XML. Em tal estratégia
criou-se um arquivo XML para cada página indexada, sendo que com isso muitos
arquivos teriam que ser criados para armazenar tantas páginas, mesmo utilizando as
estruturas de armazenamento anteriores com árvore e tabela de hashing. Essa grande
quantidade de arquivos poderia proporcionar uma baixa velocidade no momento da
pesquisa.
Na outra estratégia, utilizando arquivos não estruturados, armazenamos várias
páginas no mesmo arquivo, e com essa estratégia só é realizada uma leitura de arquivo,
pois no mesmo várias páginas são armazenadas, como pode ser visto na Figura 10.
Figura : Arquivo de Armazenamento.
Fonte: Próprio Autor.
3.1.3 Pesquisa
A pesquisa é o segundo ponto fundamental de um Motor de Busca, pois em tal
funcionalidade o motor usa todo seu potencial. Quando se utiliza um Motor de Busca,
como ocorre com Google, Yahoo, Bing, entre outras, passamos somente uma palavra ou
frase que necessitamos pesquisar, através de uma interface, então o sistema recupera
esse conjunto de caracteres e retorna um conjunto de resultados ordenados. Essa
ordenação é criada levando em consideração algum critério próprio do motor, como a
Google que, por exemplo, utiliza o PageRank para ranquear as páginas que serão
exibidas para o usuário, sendo que essa estratégia utiliza o critério das redes entre as
páginas, em que a página que tiver o maior número de conexões com outras páginas
será a mais bem colocada.
Neste projeto o resultado da pesquisa tem que levar em consideração o usuário
que está realizando a pesquisa, não somente um usuário sem identificação, mas, um
usuário com preferências entre assuntos profissionais e de lazer.
36
Com isso a primeira estratégia para realizar uma pesquisa contextualizada é
conhecer as preferências do usuário. Em tal tarefa são utilizadas duas técnicas para a
operação: a primeira é realizar um simples cadastro na página da pesquisa, selecionando
a área de atuação profissional (utilizamos apenas área profissional neste trabalho), e a
segunda estratégia vem ao longo de algumas pesquisas, em que algoritmos de
aprendizagem são utilizados para conhecer as preferências do usuário.
3.1.3.1 Funcionalidade da pesquisa
A funcionalidade básica da pesquisa está relacionada com a estrutura de
armazenamento das páginas, e por esse motivo utiliza-se o mesmo procedimento
utilizado no momento da indexação.
A diferença em relação ao algoritmo de indexação está no fato de conhecermos o
usuário, e com isso já sabermos em qual primeiro diretório será realizada a pesquisa e a
leitura do arquivo. Neste ponto que ocorreu a dificuldade em se utilizar XML para cada
página, pois encontrando o diretório exato, ainda assim o motor terá que ler todos os
arquivos XML até encontrar algumas páginas que satisfaçam a pesquisa do usuário.
Com a utilização de arquivos é necessária à leitura de apenas um arquivo, que guarda
várias páginas com suas informações, com cada linha do arquivo correspondente a uma
página.
Por exemplo, na pesquisa “O mundo do neurologista”, se supõe como usuário
uma pessoa da área de saúde, e com isso já se conhece o primeiro diretório onde a
pesquisa irá acontecer. Então, seguindo os demais passos encontra-se o nó da árvore e
respectivamente a posição da tabela de hashing, apropriados, usando a primeira palavra
fundamental, "mundo".
Com esse procedimento encontra-se um arquivo em que existem somente
palavras iniciando com a palavra “mundo” e relacionadas a saúde, sendo que a pesquisa
será realizada procurando-se, entre as páginas, a página que apresente pelo menos uma
ocorrência da palavra “neurologista”, ou algo similar, como “neurônio”, e que será
exibida para o usuário através da interface, exibindo-se o nome da página, as palavraschave e o link.
Se a pesquisa não encontrar nada nesse arquivo, o motor vai para o próximo
diretório que mais tem relevância para esse usuário, utilizando o algoritmo de
aprendizagem para se conhecer esses próximos campos de interesse. Na próxima
37
subseção, Algoritmos de Aprendizagem, uma estratégia de aprendizagem será
demonstrada.
Encontrando o próximo diretório, realiza-se o mesmo processo e, se não ocorrer
sucesso em nenhum diretório, uma mensagem de erro será retornada, sendo que esse
processo pode ser observando na Figura 8 (a), a qual apresenta um diagrama de
comportamento da pesquisa.
Podemos observar que o funcionamento da pesquisa é muito parecido ao
procedimento realizado no momento de indexar uma página. No momento da indexação
recebemos o título da página, realizamos todo o processo já citado e armazenamos a
página em uma linha do arquivo correspondente a essa página. Na pesquisa o processo é
o mesmo, mas recebemos a frase passada pelo usuário e, como já sabemos a preferência
do usuário, já sabemos o diretório onde será realizada a pesquisa.
Um dos propósitos da divisão em diretórios é facilitar a tarefa do motor no
momento da pesquisa, pois em todos os diretórios temos árvores e hashings que podem
ter a mesma chave.
Assim a pesquisa é realizada em cada diretório, chegando a apenas um arquivo
por vez, deixando assim a pesquisa mais rápida do que seria se utilizassem páginas
armazenadas em XML.
3.1.4 Estratégia de Ranking de Páginas
A estratégia de ordenação de páginas na exibição de resultados utilizada neste
projeto é criar um ranking pessoal, e não um ranking geral de páginas. Essa estratégia
utiliza as preferências do próprio usuário no momento da pesquisa.
A ideia principal é colocar ao lado de cada link que for exibido no momento da
pesquisa, a possibilidade do usuário demonstrar que aprovou ou recusou a página, sendo
que assim, nas próximas pesquisas, os links com uma maior quantidade de "votos" serão
exibidos no topo da página.
A outra estratégia é: verificar a página que tem uma maior quantidade de páginas
apontando, juntas, para essa página. Com isso obtemos as páginas mais “populares” da
pesquisa.
O cálculo utilizado é verificar a quantidade de votos positivos e negativos que
determinada página teve e verificar a popularidade da mesma com a quantidade de
páginas que apontam para ela. A ponderação para os votos dos usuários é maior do que
a popularidade da página, pois como a ideia é criar um motor que leve em consideração
38
a preferência do usuário e não a dos desenvolvedores Web. A equação abaixo mostra o
cálculo do ranking das páginas, equação modelada pelo próprio autor deste TCC.
n
R ( i ) =10F−8C+5 ∑ R( j)
j =0
onde i é um nó (página Web), F a quantidade de votos a favor, C a quantidade de votos
contra e R(j) o valor de cada página que aponta para o nó atual, observando que se uma
quantidade de páginas com alto nível de aceitação apontar para uma página, ela será
mais popular ainda, e verificando que não é analisada apenas a quantidade de páginas
que aponta para o nó mas também o valor de cada página que aponta para o nó.
3.1.5 Algoritmo de Aprendizagem
Um dos pontos diferenciais deste Motor de Busca é a possibilidade de aprender
preferências do usuário ao decorrer de algumas pesquisas realizadas pelo mesmo. Tal
estratégia é utilizada para obter um maior conhecimento do usuário do sistema, pois,
como os mesmos são cadastrados no sistema, suas preferências são armazenadas e
reconhecidas, proporcionando uma melhor resposta no momento da busca.
Com a aprendizagem do sistema, o mesmo tem a possibilidade de abranger
outras áreas além daquela previamente cadastrada pelo usuário, proporcionando uma
busca em outros diretórios em caso de falha na primeira busca.
3.1.5.1 Funcionalidade do Algoritmo de Aprendizagem
A funcionalidade básica de um algoritmo de aprendizagem é aprender uma
função especifica, no entanto existe a necessidade de treinarmos a rede neural,
observando que foi utilizada neste projeto uma RNA.
Para obtermos um resultado satisfatório temos que capturar as pesquisas
realizadas pelo usuário e verificar qual diretório foi mais acessado, com isso aprendendo
outra área de atuação que não seja a principal.
Para treinarmos a rede tem-se um conjunto de palavras (os mesmos rótulos
utilizado pelo analisador semântico), sendo que essas palavras são utilizadas para
comparar com as palavras que o usuário está digitando, e assim, comparando as
39
palavras acessadas com as palavras pré-estabelecidas, balancea-se a rede direcionando
para o diretório que teve o maior número de acessos.
3.2 RELACIONAMENTOS ENTRE USUÁRIOS
Como já foi citado, o crescente número de usuários de Redes Sociais, e a
quantidade de tarefas realizadas nas mesmas, proporciona uma grande quantidade de
nichos específicos de usuários, levando em consideração trabalho, lazer, esporte etc. Por
isso utilizamos algoritmos de Otimização, como Meta-heurísticas, para relacionarmos
esses usuários, levando em conta suas preferências e a distância física entre suas
localizações.
A utilização de Meta-heurísticas é justificada pela quantidade de usuários que
utilizam Redes Sociais, notando-se que a quantidade de cômputo e tempo necessário
para calcular esses relacionamentos é enorme, classificando tal problema como NPDifícil.
Nesta sessão são apresentados os algoritmos utilizados para criar o melhor
relacionamento entre os usuários do Motor de Busca, sendo que para isso utiliza-se o
cadastro dos usuários, com suas preferências e as distâncias entre as cidades onde os
mesmos estão.
Em uma primeira fase testamos algumas Heurísticas e Meta-heurísticas para
escolher uma que se adequasse ao projeto, e para testarmos utilizamos a função-objetivo
do QAP e alguns exemplos da QAPLib. A seguir serão mostradas as Meta-heurísticas
usadas.
Na segunda fase, já sabendo qual algoritmo de Otimização utilizar, utilizamos
uma função-objetivo (para guiar os algoritmos de Otimização), que se adequasse às
especificações do projeto, que não é o caso da função-objetivo da QAP, utilizada apenas
para testes prévios (vide Apêndice C, com a função-objetivo e Resultados).
3.2.1 Busca Tabu
Tal método é baseado no conceito de Busca Local, pois se considera uma
solução como referencial corrente e se percorre a vizinhança dessa solução procurando
soluções factíveis melhores. O acréscimo a isso no funcionamento da Busca Tabu está
na procura de soluções melhores a cada vizinhança percorrida, memorizando-se as
soluções encontradas anteriormente (GOMES, 2003).
40
Partindo de uma solução inicial, que pode ser escolhida de acordo com algum
critério predeterminado, a busca move-se, a cada iteração, para a melhor solução na
vizinhança, não aceitando movimentos que levem a soluções já visitadas, sendo que
essas são memorizadas em uma estrutura de dados chamada lista tabu. A lista tabu
permanece na memória guardando soluções já visitadas (tabu) durante um determinado
espaço de tempo ou certo número de interações (tempo tabu). Como resultado final é
esperado que se encontre o ótimo global ou a solução factível mais próxima desta.
Ao se armazenarem tais soluções passadas, são considerados dois critérios de
estabelecimento de memorização na busca Tabu, a saber, a memória de curto prazo e a
memória de longo prazo. No primeiro caso as soluções encontradas, em um curto prazo,
são armazenadas visando à desconsideração de soluções já analisadas em um pequeno
espaço de soluções vizinhas. Mas, para se melhorar o desempenho da busca pode ser
utilizada a memorização de longo prazo, sendo que tal memorização não desconsidera
somente as soluções visitadas mais recentemente.
Alguns critérios são adotados em uma Busca Tabu:
●
k: quantidade de últimas iterações na memória (lista) tabu;
●
T(k): lista de movimentos proibidos (lista tabu), considerando-se as últimas k iterações;
●
N(s): conjunto de soluções vizinhas a uma solução específica s;
●
Critério de expiração: permite a aceitação de um movimento, baseado na qualidade da
solução prevista para tal movimento, mesmo havendo proibição segundo a lista tabu.
Abaixo, um exemplo de busca tabu:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Seja S uma solução inicial
S+ ← S (mantém armazenada a melhor solução encontrada)
Enquanto não se atingem as condições de parada faça
Escolha soluções candidatas V contidas em N(S)
Enquanto V é diferente de vazio faça
Pegue S’ elemento de V de custo menor e faça V ← V\ {S’}
Se C(S’) é menor ou igual C(S+) então
S+ ← S’, S ← S’ e V ← Ø
Se não
Se (não Tabu) ou (satisfaz Critério de expiração) então
41
S ← S’, V ← 0
11.
12.
Devolva S+
3.2.2 Simulated Annealing
Annealing é um processo físico utilizado para fundir materiais, sendo esses
aquecidos a altas temperaturas e em seguida resfriados até apresentar homogeneidade.
Em cada estágio de temperatura o material apresenta um nível de energia. O ponto de
solidificação (material ideal) é atingido quando se encontra o ponto de energia mínima.
Levando-se em consideração que o resfriamento do material deve ser lento e gradativo
para não danificar o material e atingir o ponto de energia mínima, podem-se definir
estágios de energia para cada temperatura, discretizando a temperatura em relação à
energia.
Em 1983 Kirkpatrick propôs que a simulação desse processo poderia ser
utilizada ao se compararem soluções factíveis, com o objetivo de se encontrar a solução
ótima em problemas de Otimização. Essa analogia com Otimização é chamada de
Simulated Annealing (SA) ou Têmpera Simulada, e consiste em otimizar o problema por
níveis, simulando níveis de temperatura. Em cada nível de temperatura uma mesma
variável representa uma solução factível, e no decorrer do processo a vizinhança dessa
variável é testada na tentativa de se encontrar a melhor solução para cada nível de
temperatura (HAESER E GOMES-RUGGIERO, 1995). Note-se que a relação entre
temperatura e busca da melhor solução vem da probabilidade de certa variável ter sua
energia (E) aumentada, levando-se em consideração um fator Δ, que pode ser expresso
pela função probabilística seguinte:
Tal função demonstra a probabilidade de acréscimo de energia no material, a
depender da temperatura vigente. Pode-se então relacionar essa probabilidade com a
procura da melhor solução factível em cada nível de temperatura, aceitando-se soluções
piores na tentativa de fuga de ótimos locais. A temperatura segue diminuindo e a
possibilidade de alterações que piorem a melhor solução armazenada vai se reduzindo,
pois se fica próximo ao ótimo global.
42
O algoritmo de SA apresenta inicialmente um ponto ou solução e uma temperatura
inicial (So e To), e o termo L, que representa a quantidade de iterações realizadas em
cada nível de temperatura. A Figura 11 representa o algoritmo de AS (REEVES, 1993).
43
Figura : Algoritmo de SA.
Fonte: Reeves (1993).
A ideia é aceitar inicialmente uma boa parte das soluções factíveis, mesmo
piorando o melhor custo, levando em consideração a temperatura, pois, quanto maior a
temperatura, maior será a chance de se aceitarem soluções piores, fugindo da melhor
solução local, tendência que regride com a redução da temperatura e provoca a
aproximação da solução ótima.
3.2.3 Função Objetivo Específica ao Projeto
Dada a necessidade do projeto de, na fase de sugestão de melhores
relacionamentos para o usuário de Rede Social, fazê-lo segundo um critério de
Otimização que guiasse as Meta-heurísticas selecionadas, formulou-se a seguinte
função-objetivo específica:
Sejam:
n
- o número de usuários passíveis de relacionamento (usuários-alvo) na Rede
Social;
V(n) - o conjunto de todas as permutações binárias de tamanho n;
44
P(pk) - uma matriz unidimensional de ordem n, em que p k representa
binariamente se o usuário está relacionado ao usuário-alvo k da Rede Social,
sendo o número de relacionamentos vigentes sempre menor ou igual a n;
A(ai) - uma matriz unidimensional de ordem n, em que a i representa um
somatório de códigos de preferências (definidos por uma tabela de associação de
preferências com números primos) pré-dirigido, correspondente a um usuárioalvo da Rede Social;
B(bj) - uma matriz unidimensional de ordem n, em que b j representa a distância
entre as localizações do usuário e de um usuário-alvo j;
O objetivo é minimizar a função:
n
C (v) = ∑ (ai +bi ) pv ( i )
i =1
v ∈ V(n )
Assim como este trabalho deixou em aberto possibilidades de extensão e
melhorias futuras, como, por exemplo, a aplicação de paralelismo, coube a decisão de
não se apresentarem resultados do uso das Meta-heurísticas atreladas a essa funçãoobjetivo específica, devido a não se ter conseguido, a tempo da entrega da versão atual
da monografia, uma quantidade razoável de testes dos módulos de geração de números
primos e de obtenção de um máximo divisor comum entre dois inteiros positivos,
módulos já implementados e isoladamente testados devido a sua simplicidade, mas
ainda não testados no âmbito sistema geral.
3.3 SISTEMA GERAL
O sistema em si é composto por um Motor de Busca, que alimenta a base de
dados com páginas Web, e uma Rede Social, que utiliza o cadastro dos usuários para
criar o melhor relacionamento entre os mesmos. Para obter acesso aos serviços do
sistema, o usuário utiliza páginas Web para acessar seu perfil na Rede Social e buscar
por páginas no Motor de Busca.
A ideia central do projeto é utilizar as informações dos usuários, contidas na
Rede Social, para criar um contexto no momento da busca por páginas, proporcionando
45
assim os melhores resultados, para um usuário especifico. Além disso, podemos propor
os melhores relacionamentos entre usuários da mesma Rede Social, levando em conta o
mesmo cadastro.
O contexto do usuário é criado no momento do cadastro, no qual ele escolhe sua
área de atuação profissional, e no decorrer do tempo de utilização do Motor de Busca,
em que o mesmo aprende outras preferências do usuário.
Para utilizar o sistema são propostas quatro páginas Web para o usuário, sendo
essas:
•
•
•
•
Cadastro;
Login;
Perfil;
Busca
Cadastro
A página de cadastro é utilizada para cadastrar o usuário na rede, capturando
informações necessárias para criar um contexto para um específico usuário. As
informações necessárias são nome, login, senha, cidade, estado e área de atuação
profissional.
A localização do usuário é utilizada para criar o melhor relacionamento entre
usuários, pois utilizamos as distâncias entre os mesmos para realizar o cálculo, além das
informações da área de atuação profissional, que também são utilizadas no momento da
busca por páginas (vide Apêndice A).
Login
A página de Login é utilizada apenas para possibilitar o acesso às
funcionalidades do sistema pelo usuário que já esteja cadastrado, enviando login e senha
para o sistema verificar se o mesmo tem possibilidade de utilizar o sistema. Após a
página de login o usuário é redirecionado para sua página de perfil.
Perfil
A página de perfil utilizada neste projeto é uma simples página Web que mostra
ao usuário informações de seu cadastro, possíveis usuários da Rede Social que podem
ser "amigos" e a possibilidade de acessar a página de busca.
Busca
46
A página de busca é utilizada para realizar uma busca e exibir os resultados de
uma pesquisa realizada pelo usuário, sendo que esses resultados são exibidos utilizando
a estratégia já citada na subseção 3.1.4 (Estratégia de Ranking de páginas).
Para simplificar o funcionamento do sistema para o usuário, a Figura 12 mostra
o diagrama de atividade do usuário, sendo que o mesmo pode realizar uma pesquisa na
base de dados do Motor de Busca, realizar um cadastro no sistema, ou acessar seu perfil
para visualizar suas informações e usuários "amigos".
Figura : Diagrama de Atividade do Usuário.
Fonte: Próprio Autor.
3.3.1 Funcionalidade do Sistema
O sistema por completo funciona em grande parte em função do usuário,
levando em consideração suas informações pessoais, como localização, profissão, lazer,
entre outras, informações que são abstraídas do perfil do usuário, na Rede Social
47
simulada para este projeto. Essas informações são utilizadas para realizar a busca dos
melhores relacionamentos entre os usuários, no momento da busca por páginas Web e
no momento em que o Motor de Busca aprende as preferências do usuário no decorrer
de algumas pesquisas. Os outros pontos do sistema estão voltados para o spider
(buscador de páginas Web) e para a indexação na base de dados do Motor de Busca.
A Figura 13 exibe o diagrama de caso de uso do sistema, com funções do
usuário de pesquisar, cadastrar e acessar, do Motor de Busca de pesquisar, indexar e
armazenar páginas Web, do sistema de relacionamento que escolhe os melhores
relacionamentos entre usuários da Rede Social, e do sistema de aprendizagem que
captura informações do Motor de Busca e do usuário para melhorar o resultado da
pesquisa.
Figura : Diagrama de Caso de Uso do Sistema.
Fonte: Próprio Autor.
(No Apêndice B pode-se encontrar os requisitos funcionais e não funcionais utilizados
para projetar o caso de uso do sistema, além da amostragem dos cenários, utilizada para
projetar todas as funcionalidades do sistema.)
48
4 RESULTADOS
A realização dos testes foi dividida em três etapas: a primeira etapa dos testes
está relacionada ao Motor de Busca, na segunda etapa obtiveram-se os resultados para a
seleção de Meta-heurísticas, para uso no sistema geral. Neste apêndice mostramos os
resultados dessas duas primeiras etapas e em seguida exibimos a formulação da funçãoobjetivo definida para a Otimização da sugestão de melhores relacionamentos em Rede
Social, e comentamos sobre os resultados de seu uso.
4.1 MOTOR DE BUSCA
4.1.1 Indexação com XML
Os testes implementados na primeira etapa foram uma pesquisa na Web através
de um link inicial, sua inserção em fila, a verificação de páginas válidas, a repetição de
links na fila, e a criação e o armazenamento das páginas no formato XML.
Para testarmos utilizamos um link referente à área de atuação profissional Saúde,
especificamente Medicina. Essa especificação foi adotada para verificarmos a
contextualização do Motor de Busca, pois, se no momento da pesquisa fosse encontrado
algum link não referente a medicina, tal link não seria armazenado no mesmo local dos
links com essa referência.
O link utilizado foi o da página Guia do Estudante, referente a estudantes de
Medicina, http://guiadoestudante.abril.com.br/profissoes/saude/medicina-601803.shtml
Realizando uma pesquisa com esse link, acessamos a página e obtivemos todos
os links válidos, que foram armazenados na fila, como pode ser visto abaixo:
http://guiadoestudante.abril.com.br/profissoes/saude/medicina-601803.shtml
http://twitter.com/guiadoestudante
http://www.facebook.com/guiadoestudante
http://www.orkut.com.br/Main#Profile?ui
http://www.lojaabril.com.br/detalhes.asp?produt
http://www.lojaabril.com.br/detalhes.asp?produt
http://www.lojaabril.com.br/detalhes.asp?produt
http://www.lojaabril.com.br/detalhes.asp?produt
http://twitter.com/share
http://guiadoestudante.abril.com.br/profissoes/testes/teste-medicina-mesmo-minhaopcao-506885.shtml
49
http://guiadoestudante.abril.com.br/profissoes/testes/medicina-foi-escolha-certa-mim607503.shtml
http://twitter.com/guiadoestudante
http://www.facebook.com/GuiaDoEstudante
http://twitter.com/guiadoestudante
http://www.facebook.com/guiadoestudante
http://www.orkut.com.br/Main#Profile?ui
http://publicidade.abril.com.br/marcas/48/revista/informacoes-gerais">Anuncie</a></li
http://www.lojaabril.com.br/busca/resultado_busca.asp?busc
http://a1.twimg.com/a/1314996488/images/twitter_57.png
http://a3.twimg.com/a/1314996488/images/favicon.ico
http://twitter.com/guiadoestudante
Esses links são utilizados para acessar outras páginas e assim sucessivamente.
O próximo teste realizado foi o armazenamento das informações necessárias da
página, como o link, palavras-chave e o título. Com essas informações podemos
contextualizar uma página antes de armazenar.
Para armazenamos a página Web é criado um xml para cada página, mas antes de
criarmos cada xml, verificamos se tal link acessa uma página válida, com informações
relevantes, como pode ser visto.
título
Medicina - Guia do Estudante.
palavras-chave
<meta name="keywords"
content="Medicina,médico,Profissão,Mercado,Trabalho,Faculdade,Curso" />
link
Medicina - Guia do Estudante.
criar XML
ARQUIVO GRAVOU
XML criado com sucesso
Depois que essa operação é realizada, podemos verificar no diretório as páginas
que proporcionaram a criação de xmls.
50
Fonte: Próprio Autor.
Quando uma página não tem conteúdo relevante, o sistema não gera um xml
para essa página e continua percorrendo a fila.
O próximo e último passo é indexar as páginas, comparando cada palavra do
conjunto de palavras-chave com as tags armazenadas no analisador semântico, que
podem ser observadas no Anexo A.
No diretório Saúde foram armazenados os três primeiros links válidos
encontrados na página Guia do Estudante. Como se pode observar pelo caminho na
parte superior da figura seguinte, as páginas foram armazenadas no diretório Saúde,
mostrando assim que a indexação foi realizada com sucesso.
Fonte: Próprio Autor.
Outras páginas foram indexadas, mostrando a ocorrência de algumas falhas,
como páginas que não tiveram suas palavras-chave relacionadas com nenhuma tag do
analisador semântico, sendo que assim essas páginas teriam que ser armazenadas nos
mesmos diretórios das páginas que geraram tais links.
51
Diretórios utilizados para armazenamento das páginas:
Fonte: Próprio Autor.
4.1.2 Indexação com TXT
Os testes realizados nesta etapa estão relacionados ao armazenamento de
algumas páginas em arquivo TXT, observando o funcionamento da indexação com
árvore e tabela de hashing. Lembrando que cada diretório tem uma estrutura de
armazenamento independente.
Para
realizarmos
os
testes
utilizamos
o
site
de
tecnologia
http://www.techtudo.com.br/ do portal Globo. Depois de o Web Crawler acessar a
página, seu título e suas palavras-chave são buscadas, sendo em seguida comparados
com as tags do analisador semântico e, encontrando um diretório equivalente, o Motor
irá buscar quais as posições da árvore e do hashing para armazenar o arquivo.
No entanto utiliza-se a primeira palavra do título, recupera-se a primeira letra,
para descobrir qual a posição da árvore, e em seguida encontra-se o ASCII do título,
para encontrar a chave do hashing.
A palavra do título e: techtudo
Não existe
Primeira letra da palavra e ASCII: t e 116
ASCII da principal palavra do título: 234
chave da função hash: 35
tecnologia
Como podemos observar a palavra escolhida do título “TechTudo: A Tecnologia
Descomplicada” foi “techtudo”. Em seguida é verificado se existe algum nó da árvore
52
com esse respectivo valor, 116, que corresponde ao ASCII da primeira letra do título, t,
e então encontramos o ASCII da palavra, utilizando esse mesmo ASCII para encontrar a
chave do hashing. A última palavra gerada corresponde ao respectivo diretório onde o
arquivo será armazenado.
Fonte: Próprio Autor.
Como podemos observar, a página em txt vem com o valor da chave do hashing,
pois qualquer página, que tenha a mesma palavra-chave como techtudo, será
armazenada assim, não havendo necessidade de criarmos vários arquivos XML.
Em seguida pode-se observar a diferença entre uma página armazenada em xml
e várias páginas armazenas em txt:
Fonte: Próprio Autor.
53
Outra ação a ser realizada é a indexação de páginas que tenham uma mesma
palavra-chave, como as páginas Mundo da Saúde e Mundo da Arte, sendo o primeiro
contexto Saúde, e o segundo Artes.
A palavra do titulo é: mundo
Não existe
Primeira letra da palavra e ASCII: m e 109
ASCII da principal palavra do título 105
chave da função hash 6
Saúde
A palavra do titulo é: mundo
Não existe
Primeira letra da palavra e ASCII: m e 109
ASCII da principal palavra do título 105
chave da função hash 6
Artes
Observe-se que as duas páginas têm quase todos os itens iguais, pelo fato de
terem a mesma palavra-chave, e se as mesmas tivessem o mesmo sentido existiria
apenas um arquivo txt para armazenar as duas páginas, mas no entanto existe um
arquivo no diretório Saúde e outro no diretório Arte, como podemos observar a seguir.
54
Fonte: Próprio Autor.
4.2 ALGORITMOS DE OTIMIZAÇÃO
Nesta seção serão abordados os testes dos algoritmos de Busca Tabu e Simulated
Annealing.
4.2.1 Busca Tabu
A busca tabu foi testada utilizando duas referências específicas da QAPLib, a
saber, Scriabin e Vergin, e Taillard, cada uma sendo composta de exemplos com as
respectivas iniciais dos autores, ordem ou tamanho do exemplo, fitness encontrado e
solução final. O tamanho dos exemplos varia de 12 a 20 na primeira referência e de 12 a
256 na segunda, sendo esses tamanhos referentes à quantidade de instalações e
localidades. Além disso, a busca tabu foi testada com um número de iterações
equivalente ao tamanho de cada exemplo multiplicado por 50.
A Tabela 1 contém a nomenclatura utilizada nas duas próximas tabelas; a Tabela
2, os resultados para Scriabin e Vergin; a Tabela 3, os resultados para Taillard.
Tabela : Legenda das duas próximas tabelas.
Nome
Ordem
Solução
Fitness Obtido
Diferença 1
Iterações
Diferença 2
Nome do arquivo de exemplo testado
Tamanho do exemplo, quantidade de localidades e instalações
Valor conhecido do melhor fitness, que acompanha cada
exemplo da QAPLib
Valor do melhor fitness encontrado pela busca tabu
Diferença entre o melhor fitness conhecido e o fitness da busca
tabu
Quantidade de iterações até a busca parar
Diferença entre o fitness da melhor solução e o da segunda
melhor solução da busca tabu
.
Tabela : Busca tabu para Scriabin e Vergin.
Nome
Ordem
Solução
Fitness
Diferença 1
Iterações
Diferença 2
55
Obtido
Scr12
12
Scr15
15
Scr20
20
31410
(OPT)
51140
(OPT)
110030
(OPT)
42801
-11391
600
-18334
74249
-23109
750
-29050
169262
-59232
1000
-62397
Tabela : Busca tabu para Taillard.
Nome
Ordem
Solução
Fitness Obtido
Diferença 1
Iterações
Diferença 2
Tai12a
12
260777
-36361
600
-44714
Tai50a
Tai256c
50
256
224416
(OPT)
4938796
44759294
5700638
96547604
-761842
-51788318
2500
12800
-112694
-2138074
4.2.2 Simulated Annealing
Para se testar o algoritmo, foram utilizados exemplos da QAPLib. Foi utilizada
como entrada uma temperatura igual a 50 (representando 50 níveis), e, como
decremento de temperatura, um fator unitário a cada 12 iterações no primeiro conjunto
de processamentos, e a cada 14 iterações no segundo conjunto, sendo todas as iterações
de um conjunto correspondentes a cada nível de temperatura alcançado.
Pode-se observar nas Tabelas 4 e 5 que quanto maior a temperatura, mais
soluções ruins podem ser aceitas, e, quando essa temperatura diminui, a probabilidade
de aceitação também é reduzida.
Tabela : Resultados de SA para o exemplo had12.
Temp 50; laços
1
2
3
4
Soluções
1874
1884
1836
1820
Temp 49; laços
1
2
3
4
Soluções
1824
1824
1812
1812
56
5
6
7
8
9
10
11
12
1866
1878
1870
1838
1858
1904
1956
1892
5
6
7
8
9
10
11
12
1804
1836
1808
1848
1860
1980
1960
1848
Tabela : Resultados de SA para o exemplo had14.
Temp 50; laços
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Soluções
3112
3140
3076
3044
3108
3112
3104
3102
3116
3182
3234
3170
3134
3104
Temp 1; laços
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Soluções
3212
3212
3240
3236
3068
3090
3078
3074
3134
3102
3134
3066
3042
3056
Com os resultados obtidos pode-se observar a fuga de ótimos locais no SA,
pois são consideradas soluções piores com temperaturas em 50 e 49. Com a redução da
temperatura e a aproximação da melhor solução global, pode-se observar uma redução
nessa aceitação de soluções piores, como na tabela 5, em que se observa que a
temperatura em 50 recebe valores piores, já com a temperatura em 1 não recebemos
soluções com valor pior.
5 CONCLUSÕES
Observa-se que ao encontrarmos estratégias de contextualização de usuários no
momento da busca e no momento da indexação de páginas Web pelo Motor de Busca, e
da utilização das informações do mesmo para encontrar os melhores relacionamentos
57
entre usuários de Redes Sociais, especificamente a Rede Social citada no trabalho,
pode-se afirmar que os objetivos principais do projeto foram alcançados.
Objetivos como criar um Motor de Busca contextualizador, utilizando
informações dos usuários cadastrados em uma Rede Social para criar um contexto tanto
na busca quanto na relação com outros usuários. Podemos destacar as estratégias de
indexação e pesquisa, ambas voltadas para a semântica do Motor de Busca, frisando a
contextualização, aliada à organização das páginas, não somente uma indexação pura de
páginas Web.
Outro objetivo principal alcançado é a utilização de algoritmos de Otimização,
principalmente de Meta-heurísticas, para criar o melhor relacionamento de usuários,
Meta-heurísticas que foram previamente analisadas e testadas com exemplos do QAP.
Entre os objetivos secundários, podemos citar a utilização de algoritmos de
aprendizagem para melhorar a contextualização dos usuários e consequentemente
proporcionar um melhor resultado nas pesquisas, sendo que o algoritmo estudado no
projeto foi o de RNAs, observando que todo o algoritmo foi analisado e direcionado
para o contexto do projeto, mas no entanto sua implementação não foi completada
ainda, do ponto de vista específico do projeto deste TCC. Com isso já temos uma
estratégia de aprendizagem de algoritmo para o Motor de Busca, restando apenas sua
integração ao mesmo.
Outro ponto interessante no desenvolvimento do projeto foi a criação de uma
nova estratégia de ranking de páginas Web. A mesma foi implementada e testada, mas
ainda não se dispõe da possibilidade do usuário votar nas páginas de interesse,
impossibilitando o sistema de de fato criar um ranking utilizando tais possíveis votos.
Um fato importante na implementação da estratégia de ranking foi a ideia de que
se tem de modificar parâmetros dos links, e com isso foram consideradas duas
possibilidades de armazenar as páginas: uma utilizando XML e outra utilizando
arquivos texto.
Para futuros projetos podemos avaliar as implementações citadas acima, e
avaliar novas estratégias de algoritmos de aprendizagem para o Motor de Busca.
Outro ponto que pode ser melhorado é aumentar a quantidade de áreas que
podem ser escolhidas pelo usuário, refinando assim a avaliação do analisador
semântico, e proporcionando um maior campo de alcance para incorporar todas as áreas
possíveis, e não somente as áreas profissionais citadas no Apêndice A.
58
Um ponto que pode ser avaliado em projetos futuros é a implementação do
sistema em uma plataforma paralela, com um servidor de grande porte, notando que
todo o projeto até aqui tem uma arquitetura serial, e no entanto o mesmo pode ser
avaliado e implementado com estratégias de programação paralela.
6 REFERÊNCIAS
AMARAL, H. Criando Web Crawlers em Python. 2010. Disponível em:
http://herberthamaral.com/2010/02/criando-web-crawlers-em-python-parte-i/
Acesso
em: 15 de agosto de 2011.
59
AMO, S. Técnicas de Mineração de Dados. Universidade Federal de Uberlândia,
Uberlândia. 2002.
AMs Home Page, Busca Local. Disponível em: http://www2.dbd.pucrio.br/pergamum/tesesabertas/0210675_06_cap_03.pdf Acesso em: 08 de setembro de
2011. 2010.
BENEVENUTO, F. ALMEIDA, J. M. SILVA, A. S. Coleta e Análise de Grandes
Bases de Dados de Redes Sociais Online. UFOP, Ouro Preto. UFMG, Belo Horizonte.
2011.
CENDÓN, B. V. Ferramentas de busca na Web. 2001.
COELHO, A. M. Uma Abordagem via Algoritmos Meméticos para a Solução do
Problema de Horário Escolar. CEFET-MG, Belo Horizonte. 2006.
COELHO, R. AZEVEDO, R. Estudo Comportamental dos Web Crawlers.
Universidade do Minho, Braga, Portugal. 2008.
CORRÊA, F. C. Têmpera Simulada Aplicada ao Problema de Designação
Quadrática. UFRGS, Porto Alegre. 2007.
DUARTE, O. C. M. B. XML – Extensible Markup Language. Disponível em:
http://www.gta.ufrj.br/grad/00_1/miguel/ Acesso em: 10 de outubro de 2011. 2010.
FREITAS, C. M. D. S. Extração de Conhecimento e Análise Visual de Redes Sociais, 2008.
GAREY, M. R. JOHNSON, D. S. Computers and Intractability: A Guide to the Theory of NPCompleteness, W. H. Freeman. 1979.
GOMES, A. Uma Introdução à Busca Tabu. Universidade de São Paulo. 2003.
HAESER, G. GOMES-RUGGIERO, M. Aspectos Teóricos de Simulated Annealing e um
Algoritmo duas Fases em Otimização Global. UNICAMP. 1995.
HAYKIN, S. S. ENGEL, P. M. Redes neurais: princípios e prática. 2ª Ed. Porto Alegre:
Bookman. 2001.
HOLLAND, J. H. Adaption in Natural and Artificial Systems, An introductory analysis with
application to biology, control, and artificial intelligence, The University of Michigan Press,
Ann Arbor, USA. 1975.
KANTEK, P. Estruturas de Dados e Arquivos. Unicenp, Curitiba. 2007.
MAIA, T. D’M. BERRETTA, R. E. Uma Avaliação de Meta-heurísticas para o Problema de
Designação Quadrática. USP, São Carlos. 2002.
OLIVEIRA, H. C. B. Clusterização em Redes Sociais através do Simulated Annealing não
monotônico. Universidade Federal de Alfenas. 2009.
PITONI, R. M. Mineração de Regras de Associação nos Canais de Informação do Direito.
Universidade Federal do Rio Grande do Sul, Porto Alegre. 2002.
60
RECUERO, R. Redes Sociais na Internet. Ed. Meridional. 2009.
SHKAPENYAK, V. SUEL, T. Design and Implementation of a High-Performance Distributed
Web Crawler. Polytechnic University, Brooklyn, EUA. 2003.
REEVES, C. R. Modern Heuristic Techniques for Combinatorial Problems, Blackwell. 1993.
SANTOS, V. N. Indexação Automática de Documentos textuais: Iniciativas dos
Grupos de Pesquisa de Universidades Públicas Brasileiras. USP, São Paulo. 2009.
SCHWALBERT, M. A. Metodologias de Aprendizagem de Máquina utilizando
Redes Neurais Artificiais. Universidade de Passo fundo. 2007.
SHKAPENYUK, V. SUEL, T. Design and Implementation of a High-Performance
Distributed Web Crawler. Polytechnic University. 2002.
THOMÉ, A. C. G. Redes Neurais – Uma Ferramenta Para KDD e Data Mining.
2002.
TONSIG, S. L. Redes Neurais Artificiais Multicamadas e o Algoritmo
Backpropagation. PUC - Campinas. 2000.
YAMAOKA, E. J. Recuperação de Informação na Web. UFRJ, Rio de Janeiro. 2003.
61
1 SOBRE OS APÊNDICES A & B
Com relação ao Trabalho de Conclusão de Curso intitulado “Uso de Algoritmos
de Otimização e Inteligência Artificial no Desenvolvimento de um Motor de Busca com
Contextualização em Redes Sociais na WWW”, de autoria de Edson dos Santos Araújo,
seguem três módulos em apêndice, estruturados como:
1.1 Apêndice A
Contém a listagem de áreas de atuação profissional passíveis de escolha pelo
usuário de Rede Social, que manipule o Motor de Busca com indexação a fim de obter
sugestões de melhores relacionamentos na Rede, baseados nos resultados dos
algoritmos de Otimização.
1.2 Apêndice B
Contém elementos de análise do sistema geral, incluindo a caracterização dos
requisitos funcionais e não funcionais considerados na construção do diagrama de caso
de uso citado na monografia.
62
Apêndice A – Áreas de Atuação Profissional
área de Ciências
área de Saúde
área de Tecnologia
Astronomia
Biologia
Bioquímica
Arquitetura
Ecologia
Estatística
Física
Geologia
Matemática
Química
Enfermagem
Farmácia
Educação Física
Medicina
Odontologia
Fisioterapia
Nutrição
Psicologia
Radiologia
Saúde
Tecnologia Biológica
Ciência de Computadores
Aeronáutica
Engenharia da Computação
Engenharia Civil
Engenharia Mecânica
Engenharia Mecatrônica
Engenharia Elétrica
Engenharia de Alimentos
Engenharia de Minas e Gás
Engenharia Química
Redes de Computadores
Comunicação
Análise de Sistemas
Segurança
Animação Digital
área de Direito, Ciências Sociais e Serviços
Administração
Antropologia
Economia
Comércio
Sociologia
Direito
Educação
Geografia
Gestão de Negócios
Jornalismo
Marketing
Política
Pedagogia
Turismo
área de Humanidades
Arqueologia
Assessoria
Filosofia
História
Línguas
Teologia
Secretariado
área de Agricultura e Recursos
Naturais
Agricultura
Agronomia
Engenharia da Agronômica
Engenharia Florestal
Gestão de Ambiente
Medicina Veterinária
Ciência Ambiental
63
Apêndice B – Análise de Requisitos
Requisitos Funcionais
 Motor de Busca
•
Coletar informações de páginas na Web. Título da página, assunto, palavraschave, outros links válidos;
•
Criar lista de links;
•
Armazenar informações em XML;
•
Criar diretório de armazenamento;
•
Criar índice para indexação de XML;
•
Possibilitar pesquisa na base de dados do Motor de Busca;
•
Criar pontuação para informações, levando em consideração o usuário;
•
Listar resultados de busca levando em consideração a pontuação de cada
informação.
 Perceptron de múltiplas camadas (PCM)
•
Coletar informações sobre preferências do usuário;
•
Treinar a rede com preferências do usuário;
•
Testar a rede;
•
Verificar modificações das preferências do usuário;
•
Mostrar preferências do usuário.
 Sistema Geral
64
•
Cadastrar usuário;
•
Excluir usuário;
•
Recuperar informações do usuário;
•
Criar tabela para usuário;
•
Criar contexto para usuário;
•
Otimizar relacionamentos entre usuários, levando em consideração o
contexto.
 Algoritmos de Otimização
•
Captura de informações do usuário para usar na Otimização (funçãoobjetivo);
•
Cálculos de imagem da função-objetivo;
•
Verificação de melhor imagem;
•
Informação das melhores opções de relacionamento na Rede para o
usuário.
Requisitos não funcionais
 Motor de Busca
•
Utilizar paralelismo na busca de informações da Web;
•
Verificar se o link encontrado é válido;
•
Verificar se os spiders estão pesquisando links já pesquisados;
•
Criar diretório em árvore binária de busca;
65
•
Criar índices para arquivos XML, levando em consideração as letras do
alfabeto e as áreas de atuação profissional;
•
No momento da pesquisa, verificar perfil do usuário e devolver resultados
referentes ao contexto do usuário.
 Perceptron de múltiplas camadas (PCM)
•
Utilizar Heurística para melhorar o desempenho;
•
Utilizar base de dados do Motor de Busca para capturar informações;
•
Modificar pesos sinápticos entre neurônios.
 Sistema Geral
•
No cadastro o usuário informará: nome, senha, localização, apelido e
profissão;
•
Criar lista de profissões e de cidades;
•
Criar interface Web, para cadastro e pesquisa.
 Algoritmos de Otimização
•
Utilizar Heurísticas e Meta-heurísticas;
•
Utilizar função-objetivo;
•
Utilizar localização e preferências do usuário, para sugerir melhores
relacionamentos na Rede.
Amostragem dos Cenários
•
Caso de Uso Acessar:
66
Ator: Usuário
Pré-condição: O usuário estar acessando o sistema
Pós-condição: Os dados serem exibidos e salvos
Fluxo Principal:
1.
Usuário informa apelido e senha;
2.
Se o usuário já está cadastrado:
2.1 O sistema exibe informações relativas aos dados que chegam
automaticamente;
5.
3.
Usuário altera dados no cadastro;
4.
Usuário confirma alterações;
Sistema apresenta informação de sucesso.
Fluxo Alternativo:
1.a – Usuário não está cadastrado:
•
1.
Apresenta uma mensagem indicando usuário não encontrado;
2.
Usuário pode se cadastrar.
Caso de Uso Cadastrar:
Ator: Usuário
Pré-condição: O usuário estar acessando o sistema
Pós-condição: Os dados serem salvos
Fluxo Principal:
1.
Usuário escolhe a opção “Cadastrar”;
2.
Usuário preenche os campos apelido, senha e email;
3.
Usuário indica sua profissão;
4.
Usuário preenche o campo de localização;
5.
Usuário confirma cadastro;
6.
Sistema apresenta informação de sucesso.
Fluxo alternativo:
67
2.a – Campo apelido ou email já existem:
•
1.
Apresenta uma mensagem indicando o erro, mostrando qual erro;
2.
O usuário pode preencher o(s) campo(s) novamente;
3.
Retorna ao passo 2.
Caso de Uso Pesquisar:
Atores: Usuário e Motor de Busca
Pré-condição: O usuário estar acessando o sistema
Pós-condição: Os dados serem exibidos
Fluxo Principal:
1.
Usuário preenche com as palavras que serão pesquisadas;
2.
Usuário inicia pesquisa;
3.
Motor de Busca captura palavras-chave e profissão;
4.
Motor de Busca realiza busca nos diretórios referentes às informações
do usuário;
5.
Motor de Busca encontra e lê o XML;
6.
Motor de Busca retorna informações ordenadas, com título, palavraschave e link do site que corresponde à pesquisa;
7.
Usuário escolhe entre as respostas do sistema.
Fluxo alternativo:
3.a – Pesquisa não encontrada:
1.
Sistema retorna mensagem para informar que não encontrou resposta;
2.
Usuário pode refazer a pesquisa;
3.
Retorna para passo 1.
5.a – Erro na leitura do XML:
1.
Retorna qual erro;
2.
Tenta ler novamente;
68
•
3.
Se não conseguir ler, busca outro XML segundo o ranking;
4.
Retorna para passo 5.
Caso de Uso Pesquisar links:
Atores: Motor de Busca e spider
Pré-condição: O sistema estar conectado à Web
Pós-condição: Os links serem exibidos e salvos
Fluxo Principal:
1.
Sistema recupera links da lista de links;
2.
Spider obtém link e realiza pesquisa na página;
3.
Spider armazena link encontrado, palavras-chave e título;
4.
Spider cria XML com informações e envia para o Indexador;
5.
Spider adiciona mais links na lista de links, para nova pesquisa;
6.
Spider verifica se deve continuar pesquisando.
Fluxo alternativo:
1.a – Verificar se um link é válido:
1. Sistema verifica que link não é válido, link é descartado;
2.
Sistema retorna resposta de erro para spider;
3.
Link é válido;
4.
Sistema retorna mensagem de validação para spider;
5.
Retorna para passo 2.
6.a – Se continua pesquisando:
1. Sistema verifica se continua loop de pesquisa;
2. Se resposta for “SIM”, vai para passo 1;
3. Se resposta for “NÂO”:
4. Sistema para de pesquisar.
•
Caso de Uso Indexar Informações:
Atores: Motor de Busca e Indexador
69
Pré-condição: Ter criado XML de informações das páginas pesquisadas
Pós-condição: Os dados serem salvos e ordenados
Fluxo Principal:
1.
Motor de Busca envia XML para o Indexador;
2.
Indexador recupera título e palavras-chave;
3.
Relaciona com alguma profissão;
4.
Armazena XML no diretório profissão;
5.
Sistema confirma indexação;
6.
Indexador ordena XMLs.
Fluxo alternativo:
2.a – Erro ao ler XML:
1.
Indexador verifica erro;
2.
Indexador tenta ler novamente XML;
3.
Em caso de novo erro, descarta esse XML;
4.
Retorna para passo 2.
4.a – Erro ao armazenar:
1. Não encontra diretório:
2. Retorna para passo 3.
•
Caso de Uso Treinar PMC:
Atores: PMC
Pré-condição: Escolher usuário cadastrado
Pós-condição: PMC treinado
Fluxo Principal:
1.
Obter cadastro do usuário;
2.
Separa informações e converter informações para o PMC utilizando
Heurística;
70
3.
Treinar neurônios;
4.
Retornar mensagem de treinamento completo.
Fluxo alternativo:
3.a – Verificar resultado de treinamento:
1.
Se PMC está treinada:
2.
Retornar para passo 4.
3.b – PMC não está treinado:
•
1.
Modificar pesos sinápticos dos neurônios;
2.
Retornar para passo 3.
Caso de Uso Retornar informações para usuário:
Atores: Sistema e PMC
Pré-condição: O usuário estar cadastrado
Pós-condição: Os dados serem exibidos
Fluxo Principal:
1.
Obter informações da base de dados;
2.
Separar parâmetros, como: distância entre usuários e relevância da
informação para usuário, levando em consideração a ordem de
indexação;
3.
Usar função-objetivo com esses parâmetros, para Otimização;
4.
Utilizar Meta-heurística(s) para sugerir melhores relacionamentos
entre usuários.
5.
Mostrar sugestão(ões) para o usuário.
Fluxo alternativo:
4.a – Encontrou informações satisfatórias:
1.
Ordenar informações pelo critério da Otimização;
3.
Retornar para passo 4.
4.b – Não encontrou sugestão(ões) satisfatória(s):
4. Retornar para passo 3.
71
Diagrama de Caso de Uso
Fonte: Próprio Autor.
Download