View
218
Download
0
Category
Preview:
Citation preview
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE SISTEMAS DE INFORMAÇÃO – BACHARELADO
SISTEMA DE MONITORAMENTO DE REDES SOCIAIS
DIGITAIS UTILIZANDO REDES NEURAIS ARTIFICIAIS
MARCO AURÉLIO BEBER
BLUMENAU
2013
2013/2-19
MARCO AURÉLIO BEBER
SISTEMA DE MONITORAMENTO DE REDES SOCIAIS
DIGITAIS UTILIZANDO REDES NEURAIS ARTIFICIAIS
Trabalho de Conclusão de Curso submetido à
Universidade Regional de Blumenau para a
obtenção dos créditos na disciplina Trabalho
de Conclusão de Curso II do curso de Sistemas
de Informação— Bacharelado.
Prof. Roberto Heinzle, Doutor – Orientador
BLUMENAU
2013
2013/2-19
SISTEMA DE MONITORAMENTO DE REDES SOCIAIS
DIGITAIS UTILIZANDO REDES NEURAIS ARTIFICIAIS
Por
MARCO AURÉLIO BEBER
Trabalho aprovado para obtenção dos créditos
na disciplina de Trabalho de Conclusão de
Curso II, pela banca examinadora formada
por:
______________________________________________________
Presidente: Prof. Roberto Heinzle, Doutor – Orientador, FURB
______________________________________________________
Membro: Prof. Wilson Pedro Carli, Mestre – FURB
______________________________________________________
Membro: Prof. Francisco Adell Péricas, Mestre – FURB
Blumenau, 02 de dezembro de 2013.
Dedico este trabalho aos meus familiares,
professores e amigos, especialmente aqueles
que me ajudaram na conclusão deste trabalho.
AGRADECIMENTOS
À minha família: Eugênio Beber, Odete Maria Beber e Mara Rúbia Beber, que sempre
me apoiaram incondicionalmente.
À minha namorada, Fernanda Krieger da Silva, que esteve presente nos momentos
alegres e tristes e que nunca deixou de me apoiar.
A todos os meus amigos, e em especial: Fernando Erhardt, Felippe Prado, Guilherme
Goll, Eduardo Kraus e Iago Schmitt, que contribuíram para a realização deste trabalho.
Ao meu orientador, professor Roberto Heinzle, por ter me aceito como orientando e
por ter acreditado na conclusão deste trabalho.
Aos professores do Departamento de Sistemas e Computação e aos professores do
Departamento de Matemática da Universidade Regional de Blumenau por suas contribuições
durante o curso.
Don’t worry about failure; you only have to be
right once
Drew Houston
RESUMO
Este trabalho apresenta a especificação e o desenvolvimento de um sistema capaz de obter
publicações de redes sociais digitais e filtrá-las de acordo com os interesses do usuário através
de uma rede neural artificial. Para o desenvolvimento do sistema utilizou-se a plataforma
Node.js, a linguagem de programação JavaScript, o framework Backbone.js e o banco de
dados MongoDB. Como resultado obteve-se um sistema de filtro de conteúdo em tempo real
para redes sociais digitais que respeita as necessidades de cada usuário.
Palavras-chave: Redes sociais digitais. Redes neurais artificiais. Filtro de conteúdo. Twitter.
ABSTRACT
This paper presents the specification and development of a system capable of obtain
publications from digital social networks and filter them according to the user's interests
through an artificial neural network. For the system development was used the Node.js
platform, JavaScript programming language, Backbone.js framework and MongoDB
database. The result was a real time content filter system for digital social networks that
respects each user's needs.
Key-words: Digital social networks. Artificial neural networks. Content filter. Twitter.
LISTA DE FIGURAS
Figura 1 - Neurônio artificial de McCulloch e Pitts ................................................................. 16
Figura 2 - Rede de Hopfield composta por três neurônios ....................................................... 17
Figura 3 - Equação para o armazenamento de padrões ............................................................ 18
Figura 4 - Função de transformação de binário para bipolar .................................................... 18
Figura 5 - Matriz de contribuição ............................................................................................. 18
Figura 6 - Matriz de peso .......................................................................................................... 18
Figura 7 - Trecho de código para a reconstrução de padrões da rede de Hopfield .................. 19
Figura 8 - Sistema de classificação de páginas web ................................................................. 20
Figura 9 - Sistema de monitoramento usando palavras-chave ................................................. 21
Figura 10 - Diagrama de casos de uso ...................................................................................... 25
Figura 11 - Diagrama de atividades do treinamento da RNA .................................................. 26
Figura 12 - Diagrama de atividades da avaliação das publicações através da RNA ................ 28
Figura 13 - Diagrama de classes simplificado do front-end do sistema ................................... 29
Figura 14 - Diagrama de classes simplificado do back-end do sistema ................................... 30
Figura 15 - Ferramenta usada para o desenvolvimento do sistema .......................................... 32
Figura 16 - Trecho de código usando Node.js .......................................................................... 33
Figura 17 - Trecho de código responsável por fazer a busca das publicações ......................... 33
Figura 18 - Trecho de código para monitoramento de publicações do Twitter ........................ 34
Figura 19 - Aplicação cliente MongoDB ................................................................................. 35
Figura 20 - Trecho de código responsável por criar a RNA com base nos interesses .............. 36
Figura 21 - Trecho de código responsável por realizar o treinamento da RNA ....................... 37
Figura 22 - Trecho de código responsável por reconstruir o padrão apresentado à rede ......... 38
Figura 23 - Trecho de código responsável por definir a exibição da publicação ..................... 39
Figura 24 - Página de login do sistema .................................................................................... 40
Figura 25 - Página de cadastro de usuário ................................................................................ 40
Figura 26 - Página home do sistema ......................................................................................... 41
Figura 27 - Página de edição de dados do usuário ................................................................... 41
Figura 28 - Página de interesses ............................................................................................... 42
Figura 29 - Cadastro de interesse ............................................................................................. 43
Figura 30 - Página de treinamento de interesses ...................................................................... 43
Figura 31 - Treinamento de interesses ...................................................................................... 44
Figura 32 - Trecho de código responsável por exibir as publicações do treinamento .............. 44
Figura 33 - Página de visualização de conteúdos ..................................................................... 45
Figura 34 - Página de conteúdos exibindo mensagens filtradas através da RNA .................... 45
Figura 35 - Gráfico do entendimento do sistema ..................................................................... 46
Figura 36 - Gráfico da forma com que o treinamento de interesses é feito .............................. 47
Figura 37 - Gráfico dos conteúdos apresentados usando a RNA ............................................. 47
Figura 38 - Página de desenvolvedor para o Twitter ................................................................ 58
Figura 39 - Dados de conexão com o Twitter .......................................................................... 58
LISTA DE QUADROS
Quadro 1 - Requisitos funcionais ............................................................................................. 24
Quadro 2 - Requisitos não funcionais ...................................................................................... 24
Quadro 3 - Comparação com os trabalhos correlatos ............................................................... 46
Quadro 4 - Caso de uso "Efetuar Login" .................................................................................. 52
Quadro 5 - Caso de uso "Manter conta de usuário" ................................................................. 53
Quadro 6 - Caso de uso "Manter interesses" ............................................................................ 54
Quadro 7 - Caso de uso "Manter palavras-chave" .................................................................... 55
Quadro 8 - Caso de uso "Treinar rede neural" .......................................................................... 56
Quadro 9 - Caso de uso "Monitorar publicações" .................................................................... 56
Quadro 10 - Caso de uso "Visualizar publicações relevantes" ................................................. 57
Quadro 11 - Coleção "Authentications" ................................................................................... 59
Quadro 12 - Coleção "Contents" .............................................................................................. 59
Quadro 13 - Coleção "Interests" ............................................................................................... 59
Quadro 14 - Coleção "Trainings" ............................................................................................. 59
Quadro 15 - Coleção "Users" ................................................................................................... 60
LISTA DE SIGLAS
API – Application Programming Interface
I/O – Input/ Output
JSON – JavaScript Object Notation
MVC – Model View Collection
RF – Requisito Funcional
RNA - Rede Neural Artificial
RNF – Requisito Não Funcional
SUMÁRIO
1. INTRODUÇÃO .................................................................................................................. 12
1.1 OBJETIVOS DO TRABALHO ......................................................................................... 13
1.2 ESTRUTURA DO TRABALHO ....................................................................................... 13
2. FUNDAMENTAÇÃO TEÓRICA .................................................................................... 14
2.1 REDES SOCIAIS DIGITAIS ......................................................................................... 14
2.2 REDES NEURAIS ARTIFICIAIS ................................................................................. 15
2.2.1 Definição de rede neural artificial ................................................................................... 15
2.2.2 Neurônio artificial ........................................................................................................... 16
2.2.3 Aprendizado .................................................................................................................... 16
2.2.4 Rede de Hopfield............................................................................................................. 17
2.3 SISTEMA ATUAL ......................................................................................................... 19
2.4 TRABALHOS CORRELATOS ..................................................................................... 20
3. DESENVOLVIMENTO DO SISTEMA .......................................................................... 22
3.1 LEVANTAMENTO DE INFORMAÇÕES ....................................................................... 22
3.2 ESPECIFICAÇÃO ............................................................................................................. 23
3.2.1. Requisitos do sistema ..................................................................................................... 24
3.2.2. Diagramas de casos de uso ............................................................................................. 25
3.2.3. Diagramas de atividades ................................................................................................. 26
3.2.4. Diagramas de classe........................................................................................................ 29
3.3 IMPLEMENTAÇÃO ......................................................................................................... 32
3.3.1 Técnicas e ferramentas utilizadas .................................................................................... 32
3.3.2 Operacionalidade da implementação ............................................................................... 39
3.4 RESULTADOS E DISCUSSÃO ....................................................................................... 46
4. CONCLUSÕES .................................................................................................................. 48
4.1 EXTENSÕES ..................................................................................................................... 49
REFERÊNCIAS ..................................................................................................................... 50
APÊNDICE A – Descrição dos Casos de Uso ...................................................................... 52
APÊNDICE B – Cadastro de aplicativo do Twitter ............................................................ 58
APÊNDICE C – Descrição do Dicionário de Dados ............................................................ 59
12
1. INTRODUÇÃO
Os sites que têm por objetivo conectar e promover a interação entre grupos de pessoas
são conhecidos como redes sociais digitais. Assim como as redes de computadores são
conjuntos de máquinas conectadas através de cabos, as redes sociais são compostas por
grupos de pessoas ou organizações que se conectam através de relações, como amizade,
trabalho em equipe ou troca de informação (GARTON; HAYTHORNTHWAITE;
WELLMAN, 1997, p.1).
Uma das características das redes sociais digitais é que o seu consumidor, ou usuário,
é capaz de publicar conteúdo dentro da rede. Esse conteúdo pode variar de simples mensagens
de texto, comunicando atividades cotidianas, até conteúdos mais elaborados, como imagens e
vídeos. Para Tomaél, Alcará e Chiara (2005), ―as redes sociais constituem uma das estratégias
subjacentes utilizadas pela sociedade para o compartilhamento da informação e do
conhecimento [...]‖.
Como consequência dessa característica, volumes de dados gigantescos são gerados
diariamente dentro das redes. Levando-se em conta o exemplo da rede social Facebook, seus
usuários fazem upload de um bilhão de novas fotos semanalmente, o que é equivalente a 60
Terabytes (BEAVER et al, 2009).
Com o crescimento da quantidade de conteúdo publicado, aumenta a quantidade de
conteúdos maliciosos ou irrelevantes que se propagam através da rede. Esse conteúdo vai
desde propagandas não solicitadas, até spam. Conteúdos que não são solicitados consomem a
atenção do usuário e, em últimos casos, o distúrbio que é causado pelos usuários emissores
desses conteúdos reduz a efetividade da comunicação e faz com que ao tentar buscar
conteúdo, o usuário encontre dificuldades e acabe frustrado por perder seu tempo visualizando
conteúdos irrelevantes (BENEVENUTO; ALMEIDA; SILVA, 2012).
Relacionando a quantidade de informação gerada dentro das redes sociais com
assuntos não solicitados ou irrelevantes, surge a necessidade de monitorar e filtrar os
conteúdos que estejam de acordo com os interesses dos usuários. Para Martins e Coello
(2010), "[...] os sistemas de filtragem de informação têm que ser personalizados para
satisfazer os interesses de cada usuário, assumindo o papel de assistentes pessoais‖.
Apesar de existirem alternativas de sistemas para o monitoramento e filtro de
publicações na rede social digital Twitter, não foi encontrado um sistema que fosse capaz de
realizar o filtro das publicações de maneira eficaz.
13
Diante deste cenário, este trabalho consiste em uma solução para obter informações
relevantes nas redes sociais digitais através de um sistema de monitoramento e filtro de
conteúdos. Trata-se de um sistema na plataforma web, onde o conteúdo apresentado ao
usuário é baseado no uso de uma rede neural artificial, treinada com base nos seus interesses
específicos.
1.1 OBJETIVOS DO TRABALHO
O objetivo deste trabalho consiste em criar um sistema de monitoramento e filtro de
publicações para a rede social digital Twitter, baseado em redes neurais artificiais.
Os objetivos específicos do trabalho são:
a) construir um mecanismo de monitoramento das publicações do Twitter;
b) possibilitar o cadastro de interesses e palavras-chave;
c) construir uma rede neural baseada nos interesses do usuário;
d) realizar o treinamento da rede neural;
e) realizar o filtro das publicações através da rede neural artificial.
1.2 ESTRUTURA DO TRABALHO
No primeiro capítulo tem-se a introdução ao tema principal deste trabalho com a
apresentação da justificativa e dos objetivos.
No segundo capítulo apresenta-se a fundamentação teórica pesquisada sobre as redes
sociais digitais e sobre as redes neurais artificiais. Ainda no capítulo dois, são apresentados o
sistema atual e os trabalhos correlatos.
O terceiro capítulo apresenta o desenvolvimento do sistema, iniciando-se com o
levantamento de informações, tendo na sequência a especificação, implementação e
resultados e discussão.
No quarto capítulo têm-se as conclusões deste trabalho bem como as sugestões para
trabalhos futuros.
14
2. FUNDAMENTAÇÃO TEÓRICA
A fundamentação teórica aborda assuntos necessários para a compreensão do sistema
desenvolvido. Na seção 2.1 é apresentada uma visão geral das redes sociais digitais. Na seção
2.2 é feita uma abordagem das redes neurais artificiais, dividindo o conteúdo em definição,
neurônio artificial, aprendizado e a rede de Hopfield. A seção 2.3 é dedicada ao
funcionamento do sistema atual e por fim, a seção 2.4 apresenta os trabalhos correlatos.
2.1 REDES SOCIAIS DIGITAIS
As redes sociais digitais são caracterizadas por promover a interação entre grupos de
pessoas através da internet. Assim como as redes de computadores são conjuntos de máquinas
interconectadas, as redes sociais digitais são compostas por grupos de pessoas ou
organizações que se conectam através de relações, onde as conexões realizadas são feitas
através da internet (GARTON; HAYTHORNTHWAITE; WELLMAN, 1997, p.1).
Uma rede, assim, é uma metáfora para observar os padrões de conexão de um grupo
social, a partir das conexões estabelecidas entre os diversos atores. A abordagem de
rede tem, assim, seu foco na estrutura social, onde não é possível isolar os atores
sociais e nem suas conexões. (RECUERO, 2009, p.24).
Tendo essa definição como base, pode-se verificar a existência de diversas redes
sociais presentes na internet. Dentre estas, pode-se verificar que elas possuem diferentes
propósitos, como o Twitter, que tem como objetivo a troca de mensagens curtas, o LinkedIn,
cujo objetivo é promover a interação entre profissionais de diferentes áreas, o Facebook, que
tem como foco os relacionamentos de pessoas, marcas e produtos (BENEVENUTO;
ALMEIDA; SILVA, 2012).
Dentro das redes sociais, as pessoas ou organizações são caracterizadas como atores.
São esses atores que criam a estrutura da rede através de relações.
Os atores são o primeiro elemento da rede social, representados pelos nós (ou nodos).
Trata-se das pessoas envolvidas na rede que se analisa. Como parte do sistema, os
atores atuam de forma a moldar as estruturas sociais, através da interação e da
constituição dos laços sociais. (RECUERO, 2009, p.25).
No caso das redes sociais da internet, no entanto, os atores são representados de uma
maneira um pouco diferente. A representação do ator se dá pela construção de uma identidade
dentro da rede. No caso de uma conta no Twitter pertencente à determinada empresa,
considera-se a conta como um ator, entretanto ela pode ser mantida por diversas pessoas.
15
Por causa do distanciamento entre os envolvidos na interação social, principal
característica da comunicação mediada por computador, os atores não são
imediatamente discerníveis. Assim, neste caso, trabalha-se com representações dos
atores sociais, ou com construções identitárias do ciberespaço. Um ator, assim, pode
ser representado por um weblog, por um fotolog, por um twitter ou mesmo por um
perfil no Orkut. E, mesmo assim, essas ferramentas podem apresentar um único nó
(como um weblog, por exemplo), que é mantido por vários atores (um grupo de
autores do mesmo blog coletivo). (RECUERO, 2009, p.25).
As conexões de uma rede social podem ser definidas como a constituição de laços
sociais, que por sua vez, são formados através da interação social entre os atores. Na internet,
as conexões podem ser identificadas devido à possibilidade de manter os rastros sociais dos
indivíduos. Por exemplo, comentários em uma foto do Facebook podem permanecer até que
alguém o apague ou a foto seja excluída (RECUERO, 2009, p.30).
2.2 REDES NEURAIS ARTIFICIAIS
Esta seção apresenta as redes neurais artificias, abordando sua definição, alguns
conceitos, métodos de aprendizado e modelo de Hopfield.
2.2.1 Definição de rede neural artificial
Braga, Carvalho e Ludemir (2000), afirmam que ―Redes Neurais Artificiais (RNAs)
são modelos matemáticos que se assemelham às estruturas neurais biológicas e que tem
capacidade computacional adquirida por meio de aprendizado e generalização‖. Já Barreto
(2002, p.13) complementa, dizendo que não apenas se assemelham, mas tem a sua construção
inspirada nos neurônios biológicos e no funcionamento do sistema nervoso.
Informalmente, as RNAs são sistemas compostos por vários neurônios. Os neurônios
conectam-se pelo que é chamado de conexão sináptica. Traçando uma comparação com o
organismo humano, pode-se dizer que os neurônios correspondentes aos órgãos dos sentidos
são equivalentes aos neurônios de entrada da rede, já que recebem excitações do exterior.
Outros que são usados para alterar o mundo exterior são chamados de neurônios de saída e
correspondem aos neurônios biológicos que excitam os músculos. Há ainda, outro tipo de
neurônio, que não se encaixa na classificação de entrada e saída, esse tipo de neurônio é
chamado de neurônio escondido (BARRETO, 2002, p.16).
16
2.2.2 Neurônio artificial
O primeiro modelo de neurônio artificial foi proposto por Warren McCulloch e Walter
Pitts no ano de 1943 (MCCULLOCH; PITTS, 1943). O modelo de McCulloch e Pitts
interpreta o funcionamento do neurônio como sendo um circuito binário simples, que combina
várias entradas excitatórias ou inibitórias, e gera um sinal de saída (KARRER et al, 2005). A
Figura 1 representa o modelo de neurônio proposto por McCulloch e Pitts.
Figura 1 - Neurônio artificial de McCulloch e Pitts
Fonte: Tatibana e Kaetsu (2000?).
Para determinar o estado do neurônio, calcula-se a soma do estado das entradas com
os seus pesos, positivos no caso excitatório e negativos no caso inibitório. Se a soma for
maior ou igual a determinado limiar já fixado, considera-se que o neurônio está ativo e é
emitido um pulso (SILVA, 2003, p. 10).
Dessa forma, uma rede neural é constituída de neurônios artificiais, que tem o papel de
um simples processador. Cada neurônio executa uma função simples, mas uma rede neural
tem capacidade computacional para resolução de problemas complexos (BRAGA;
CARVALHO; LUDEMIR, 2000).
2.2.3 Aprendizado
Barreto (2002, p.22) considera que: ―aprender é o ato que produz um comportamento
diferente a um estímulo externo devido a excitações recebidas no passado e é de certa forma,
sinônimo de aquisição de conhecimento‖. Sendo assim, as RNAs possuem a capacidade de
aprender através de exemplos. Para um determinado conjunto de dados, o algoritmo de
aprendizado deve ser responsável por adaptar os parâmetros da rede e obter uma solução
através de um número finito de iterações do algoritmo (KARRER et al, 2005).
17
Considera-se que o processo de aprendizado da rede tem como característica a
ocorrência de um estímulo externo representado por um conjunto de dados. Como
consequência o algoritmo de aprendizado provoca mudança nos parâmetros da rede que
acarretam na mudança no comportamento da RNA (KARRER et al, 2005).
Outra maneira de se classificar o aprendizado é traçando uma analogia com uma sala
de aula, onde há ou não, a intervenção do professor. Quando há intervenção significa que em
determinado instante os alunos aprenderão porque o professor realizará a correção das
atividades, enquanto a ausência significa que o aprendizado é realizado sem a necessidade da
correção do professor (BARRETO, 2002, p.23).
2.2.4 Rede de Hopfield
A memória dos seres humanos funciona como uma memória endereçada por conteúdo,
o que quer dizer que dado determinado estímulo, um padrão pode ser reconstruído. Por
exemplo, o simples fato de ouvir uma melodia ou uma frase pode levar ao reconhecimento de
uma música ou seu autor. É através do endereçamento de conteúdo, também conhecido como
memória associativa, que funciona a rede de Hopfield (SILVA, 2003, p.18).
Tratando-se de memória associativa, todos os neurônios de uma rede de Hopfield são
considerados como neurônio de entrada e saída, e são completamente conectados, ou seja, o
padrão utilizado como entrada para a rede é o padrão que será reconstruído (ROSEN, 2009).
Um exemplo de rede com três neurônios pode ser observado na imagem a seguir.
Figura 2 - Rede de Hopfield composta por três neurônios
Fonte: Rosen (2009).
18
Para que a rede seja capaz de realizar o reconhecimento de padrões é necessário antes
passar por uma etapa de aprendizado. A Figura 3 apresenta a equação responsável por
armazenar os padrões da RNA.
Figura 3 - Equação para o armazenamento de padrões
Fonte: Rosen (2009).
Através desta equação podem-se identificar duas coisas:
a) o vetor binário apresentado para a rede na etapa de aprendizado será transformado
em um vetor bipolar. A Figura 4 apresenta a função responsável por esta
transformação;
Figura 4 - Função de transformação de binário para bipolar
Fonte: adaptado de Rosen (2009).
b) o vetor bipolar será transposto e multiplicado para obter-se uma matriz que
representa um novo padrão para a rede neural, essa matriz é chamada de matriz de
contribuição. A Figura 5 apresenta o cálculo para a obtenção da matriz de
contribuição.
Figura 5 - Matriz de contribuição
Fonte: adaptado de Rosen (2009).
Após ter calculado a matriz de contribuição, é necessário adicioná-la na memória da
rede. Essa etapa pode ser definida através de uma adição de matrizes, conforme se demonstra
na Figura 6.
Figura 6 - Matriz de peso
Fonte: adaptado de Rosen (2009).
19
Terminada a fase de aprendizado, a rede é capaz de fazer a reconstrução dos padrões
aprendidos. Para tal, é necessário realizar iterações na rede até que o padrão de entrada esteja
estabilizado em um dos padrões armazenados. A rede estará estabilizada quando o estado dos
neurônios não for mais afetado por novas iterações. Demonstra-se na Figura 7 o algoritmo
responsável por reconstruir os padrões. No primeiro passo do algoritmo os estados atuais dos
neurônios serão iguais aos estados iniciais e posteriormente, os neurônios serão atualizados
até que tenham seus estados constantes (SILVA, 2003).
Figura 7 - Trecho de código para a reconstrução de padrões da rede de Hopfield
Fonte: adaptado de Silva (2003).
2.3 SISTEMA ATUAL
A rede social digital Twitter é considerada um microblog porque permite a troca de
textos de até 140 caracteres. A rede estrutura-se da seguinte forma: há atores que
desempenham o papel de seguidores, há atores que desempenham o papel de pessoas que são
seguidas e há atores que desempenham ambos os papéis. Dentre todos esses papéis, cada ator
pode determinar, de acordo com os seus interesses, quais e se serão adotados algum dos
papéis. Para os atores seguidores, são exibidas no seu feed as mensagens dos atores que se
está seguindo. Para o ator que é seguido, a mensagem é distribuída entre todos os seus
seguidores (RECUERO, 2009, p.173).
Dessa forma, os atores da rede tem o poder de escolher as origens das publicações que
visualizarão e possuem uma página de filtro por palavras-chave, porém não há uma maneira
eficiente de escolher quais publicações devem ou não ser exibidas, e ainda, estão limitados a
visualizar em seu feed, apenas as mensagens dos atores que se está seguindo e das
propagandas patrocinadas.
20
2.4 TRABALHOS CORRELATOS
Os trabalhos correlatos aqui apresentados envolvem de alguma forma as técnicas que
foram utilizadas no desenvolvimento do sistema. Dallo (2013) trata do desenvolvimento de
um sistema capaz de classificar o conteúdo de páginas da web através de uma rede neural
artificial. O sistema de Dallo (2013) permite carregar as palavras presentes em determina
página web através do preenchimento de um campo com a URL. Após a etapa de busca das
palavras da página web desejada, esse conteúdo será processado por uma RNA. A Figura 8
representa a tela do sistema.
Figura 8 - Sistema de classificação de páginas web
Fonte: Dallo (2013).
O funcionamento de filtro de conteúdo é semelhante ao deste trabalho, porém Dallo
(2013) quantifica as palavras presentes na fase de treinamento e classificação para determinar
os pesos dos neurônios enquanto o sistema desenvolvido considera apenas a presença da
palavra.
O aprendizado da RNA no sistema desenvolvido é feita de forma híbrida, fazendo-se
necessária a classificação do usuário para determinar se as palavras são relevantes ou
irrelevantes para o interesse desejado, porém não permitindo alterar manualmente o resultado
21
final do treinamento, enquanto Dallo (2013) realiza o treinamento da RNA a partir das
palavras-chave encontradas em documentos selecionados pelo usuário.
Já Holt (2013) criou um sistema que realiza o monitoramento da rede social digital
Twitter a partir de palavras-chave informadas pelo usuário. A Figura 9 representa o sistema de
Holt (2013).
Figura 9 - Sistema de monitoramento usando palavras-chave
Fonte: Holt (2013).
Diferente do sistema de Dallo (2013), o sistema de Holt (2013) apenas filtra as
publicações que contenham as palavras-chave selecionadas, permitindo a visualização
simultânea de diferentes palavras-chave.
O sistema desenvolvido por Martins e Coello (2010) apresenta características
semelhantes com o sistema de Dallo (2013). Ele possui módulos especializados em processar
determinados documentos de um determinado assunto, quantificar as palavras-chave
presentes nos documentos e realizar o treinamento da rede neural artificial. Diferente do
sistema de Dallo (2013), Martins e Coello (2010) fazem o uso de uma ontologia para filtrar os
documentos de maneira mais eficiente, porém, segundo eles, ―nos experimentos realizados, o
uso de ontologia mostra resultados positivos, porém causou grande perda de desempenho ao
agente, que passa a levar muito mais tempo para realizar a busca.‖.
22
3. DESENVOLVIMENTO DO SISTEMA
Neste capítulo serão apresentadas as características do sistema desenvolvido, como o
levantamento de informações, especificação dos requisitos funcionais e não funcionais,
diagrama de casos de uso, diagrama de classes, técnicas e ferramentas utilizadas no
desenvolvimento do sistema, operacionalidade da implementação e por fim, os resultados
obtidos.
3.1 LEVANTAMENTO DE INFORMAÇÕES
O levantamento de informações foi realizado em conversas informais entre usuários de
redes sociais digitais. Com o interesse de visualizar a maior quantidade de informações sobre
determinado assunto dentro das redes sociais, foi verificada a necessidade de um sistema
capaz de filtrar os conteúdos e organizá-los através de interesses. Para atingir esse objetivo,
definiu-se um sistema responsável por monitorar e filtrar as publicações da rede social
Twitter, através da sua Application Programming Interface (API). O sistema ainda conta com
o filtro das publicações através de uma rede neural artificial, para proporcionar a visualização
de informações relevantes de acordo com os interesses do usuário.
O sistema foi dividido em cinco módulos: gerenciamento de conta, gerenciamento de
interesses, treinamento de interesses, monitoramento de publicações e visualização de
conteúdo. O módulo de gerenciamento de conta possibilita que o usuário crie e mantenha os
dados da sua conta. Para atender essa funcionalidade, foi desenvolvida uma página de
cadastro de usuários, página de login do sistema e uma página para configuração de dados da
conta.
O módulo de gerenciamento de interesses possibilita que o usuário crie e mantenha
seus interesses atualizados. Os interesses do usuário serão utilizados para alimentar a rede
neural artificial, que será responsável por filtrar as publicações da rede social digital Twitter.
Para atender essa funcionalidade, foi criada uma página de cadastro de interesses e palavras-
chave, onde cada interesse do usuário será composto por uma ou mais palavras-chave. As
palavras chaves serão utilizadas como filtro para o treinamento da rede neural artificial e os
23
interesses terão um percentual de limiar que definirá se a publicação deverá ou não ser exibida
para o usuário.
O módulo de treinamento de interesses é responsável por realizar o treinamento da
rede neural artificial. As palavras-chave do interesse serão utilizadas para filtrar as
publicações do Twitter e as palavras-chave presentes nas publicações serão utilizadas para
alimentar a rede neural artificial. Para atender essa funcionalidade, foi criada uma página de
treinamento de interesses, que permite ao usuário selecionar o interesse desejado e iniciar o
treinamento, parar o treinamento e avaliar as publicações como relevantes ou irrelevantes.
O módulo de monitoramento de publicações é responsável por manter o
monitoramento contínuo das publicações que contenham as palavras-chave dos interesses de
todos os usuários. Para atender essa funcionalidade, foi criado um mecanismo que utiliza
bibliotecas que fazem o acesso a API do Twitter para obter as publicações em tempo real.
O módulo de visualização de conteúdo possibilita que o usuário visualize as
publicações que atendam aos seus interesses. Para atender à funcionalidade de visualização de
conteúdo, será utilizada a técnica de mineração de texto na publicação para separar suas
palavras-chave. As palavras-chave presentes na publicação serão tratadas e usadas como
entrada para a rede neural artificial, que reconstruirá o padrão de interesses e filtrará a
publicação de acordo com o percentual de limiar definido no interesse.
Para o desenvolvimento do sistema, foram necessárias as seguintes ferramentas:
a) ferramenta Eclipse Juno para o desenvolvimento do sistema;
b) Node.js para o back-end do sistema;
c) MongoDB como o banco de dados;
d) Backbone.js para o desenvolvimento do front-end;
e) Twitter Bootstrap para o desenvolvimento da parte gráfica do front-end;
f) Sparx Systems Enterprise Architect para a modelagem dos diagramas.
3.2 ESPECIFICAÇÃO
Nesta seção serão apresentados os requisitos funcionais e não funcionais do sistema, os
digramas de atividades, os diagramas de classes e o diagrama de casos de uso, sendo que os
principais casos de uso estão descritos no Apêndice A.
24
3.2.1. Requisitos do sistema
O Quadro 1 apresenta os Requisitos Funcionais (RF) previstos para o sistema e sua
rastreabilidade, ou seja, vinculação com o(s) caso(s) de uso associado(s). Dentre eles
destacam-se o RF05, RF06 e RF07. O RF05 diz respeito à criação de um mecanismo que seja
capaz de realizar o monitoramento de publicações realizadas na rede social Twitter. O RF06
diz respeito à forma como o sistema será capaz de identificar as publicações relevantes para o
usuário. Por fim, o RF07 refere-se à forma que o sistema será capaz de avaliar as publicações
para o usuário.
Quadro 1 - Requisitos funcionais
Requisitos Funcionais Caso de Uso
RF01: O sistema deverá permitir que o usuário efetue login no sistema. UC01
RF02: O sistema deverá permitir o usuário manter conta. UC02
RF03: O sistema deverá permitir o usuário manter interesses. UC03
RF04: O sistema deverá permitir o usuário manter palavras-chave. UC04
RF05: O sistema deverá monitorar as publicações do Twitter. UC06
RF06: O sistema deverá realizar o treinamento da rede neural com os
interesses do usuário.
UC05
RF07: O sistema deverá permitir o usuário visualizar publicações filtradas
pela rede neural.
UC07
O Quadro 2 lista os Requisitos Não Funcionais (RNF) previstos para o sistema. Dentre
eles, destaca-se o RNF01, que diz respeito à forma com que as publicações do Twitter serão
monitoradas.
Quadro 2 - Requisitos não funcionais
Requisitos Não Funcionais
RNF01: O sistema deverá utilizar a API do Twitter para buscar as publicações.
RNF02: O sistema deverá ser desenvolvido na linguagem JavaScript.
RNF03: O sistema deverá utilizar banco de dados MongoDB.
RNF04: O sistema deverá ser multi browser.
25
3.2.2. Diagramas de casos de uso
Esta subseção apresenta o diagrama de casos de uso do sistema desenvolvido, sendo
que a descrição e o detalhamento dos casos de uso estão disponíveis no Apêndice A.
A Figura 10 apresenta o cenário com as funcionalidades que o usuário pode realizar.
Será permitido ao usuário cadastrar-se, realizar login e manter sua conta no sistema para que
dessa forma tenha-se acesso aos interesses já cadastrados e publicações filtradas
anteriormente. Também será permitido ao usuário criar interesses e palavras-chave, que serão
responsáveis por definir os conteúdos visualizados. Será permitido realizar o treinamento dos
seus interesses, que será responsável por ensinar a rede neural quais tipos de publicações são
relevantes para o usuário. Por fim, será possível que o usuário visualize publicações vindas da
rede social Twitter, obtidas através do uso de sua API.
Figura 10 - Diagrama de casos de uso
26
3.2.3. Diagramas de atividades
A Figura 11 contém o diagrama de atividades que representa o treinamento da rede
neural artificial. Como pode ser observado, o processo tem início com a busca dos interesses e
das palavras-chave cadastrados pelo usuário, que são responsáveis por definir quais conteúdos
serão visualizados. Então as publicações do Twitter serão filtradas utilizando as palavras-
chave do interesse para que o usuário visualize e classifique as publicações como relevantes
ou irrelevantes, para dessa forma treinar a rede neural com o que considera interessante. A
partir daí o sistema encarrega-se de separar todas as palavras-chave de todas as publicações
selecionadas no treinamento e as adiciona como neurônios da RNA. Terminada a construção
da rede, as palavras-chave de cada publicação selecionada no treinamento são utilizadas como
uma regra de aprendizado para a RNA. Esse padrão corresponde à presença das palavras-
chave da publicação em relação a todas as palavras-chave selecionadas no treinamento.
Figura 11 - Diagrama de atividades do treinamento da RNA
27
A Figura 12 contém o diagrama de atividades que representa o filtro de conteúdos
através da RNA. Como pode ser observado, o processo é iniciado quando o usuário seleciona
um determinado interesse, para que sejam exibidas publicações relacionadas a ele. Após a
seleção do interesse, o sistema encarrega-se de buscar as publicações utilizadas como base
para o treinamento do interesse e constrói a rede neural do usuário. A partir desse ponto,
enquanto o usuário não executar a ação de parar com a visualização dos conteúdos, serão
buscadas publicações do Twitter para que sejam avaliadas pela rede neural. Para realizar a
avaliação, o sistema separa as palavras-chave presentes na publicação e, de acordo com a
presença delas nos neurônios da rede, gera o padrão de entrada para a RNA. Esse padrão é
submetido a RNA, que é responsável por fazer a reconstrução do padrão informado,
transformando-o em um dos padrões já aprendidos no treinamento do interesse. Após a RNA
ser estabilizada, o sistema compara o padrão submetido com o padrão reconstruído, para
verificar se a publicação avaliada faz parte dos interesses do usuário. O sistema realiza a
comparação através de uma função que define que: se o limiar definido no interesse for
atendido, a publicação é exibida; senão ela é descartada.
28
Figura 12 - Diagrama de atividades da avaliação das publicações através da RNA
29
3.2.4. Diagramas de classe
A Figura 13 contém a versão resumida do diagrama de classes que representa a
estrutura do front-end do sistema. Foram escolhidas apenas as classes que contribuem para a
lógica do sistema. As classes responsáveis por controlar acesso ao banco de dados ou
desenhar as telas foram omitidas do diagrama. A descrição do dicionário de dados do sistema
pode ser visualizada no Apêndice C.
Figura 13 - Diagrama de classes simplificado do front-end do sistema
A função de cada classe é descrita a seguir:
a) classe Login - classe responsável por realizar as operações de login do sistema.
A classe não armazena dados, apenas possui vínculo com a classe User, que
contém os dados de acesso ao sistema;
b) classe User - classe responsável por armazenar dados do usuário. A classe
armazena dados de nome, senha, e-mail, faz ligação com os interesses do usuário
e com a rede neural de Hopfield;
c) classe Interest - classe responsável por armazenar dados dos interesses do
usuário. A classe armazena dados de título do interesse, descrição do interesse,
30
interesse ativo, percentual de ativação, palavras-chave e faz ligação com os
conteúdos e o treinamento;
d) classe Training - classe responsável por armazenar o treinamento dos
interesses. A classe armazena dados de texto da publicação, data da publicação,
relevância e faz ligação com os conteúdos e com os interesses;
e) classe Content - classe responsável por armazenar dados dos conteúdos
filtrados pela rede neural. A classe armazena dados de texto da publicação, data da
publicação e faz ligação com os interesses, treinamentos e com a rede neural de
Hopfield;
f) classe HopfieldNetwork - classe responsável por realizar o reconhecimento
de padrões de interesses do usuário. A classe armazena um índice de neurônios,
que são compostos pelas palavras-chave do interesse, a matriz de peso, que é a
memória da rede neural, e faz ligação com o usuário e com os conteúdos;
A Figura 14 contém a versão resumida do diagrama de classes que representa a
estrutura do back-end do sistema. Igualmente foram escolhidas apenas as classes que
contribuem para a lógica do sistema, além disso, a listagem de atributos e métodos foi
simplificada.
Figura 14 - Diagrama de classes simplificado do back-end do sistema
31
A função de cada classe é descrita a seguir:
a) classe Server - classe responsável por organizar a estrutura de rotas do sistema,
responder com o conteúdo do sistema e organizar a busca de publicações do
Twitter;
b) classe Worker - classe responsável por controlar a classe que realiza a busca das
publicações do Twitter que contenham as palavras-chave dos interesses dos
usuários;
c) classe Twitter - classe responsável por armazenar os dados de autenticação do
sistema vinculados ao Twitter. Esses dados são disponibilizados ao desenvolvedor
ao cadastrar uma nova aplicação para a rede social;
d) classe TwitterStream - classe que faz uso da biblioteca ntwitter-
immortal para buscar publicações do Twitter. Através de alterações realizadas
nas rotinas da biblioteca é possível iniciar e parar a busca de publicações
realizadas em tempo real;
e) classe Users - classe responsável por realizar as operações de inserção, seleção e
atualização dos dados dos usuários do sistema;
f) classe Interests - classe responsável por realizar as operações de inserção,
seleção, atualização e exclusão de interesses do sistema;
g) classe Contents - classe responsável por realizar as operações de inserção,
seleção e exclusão de conteúdos do sistema;
h) classe Trainings - classe responsável por realizar as operações de inserção,
seleção, atualização e exclusão de treinamentos de interesses do sistema;
i) classe Authentications - classe responsável por realizar a autenticação,
mudança de senha, envio de e-mails e logout dos usuários do sistema. A classe
também conta com rotinas que tratam da restrição de visualização de registros que
não sejam de autoria do usuário e rotinas que validam os tokens de acesso dos
usuários ao sistema.
32
3.3 IMPLEMENTAÇÃO
A seguir são mostradas as técnicas e ferramentas utilizadas no desenvolvimento do
sistema, a operacionalidade da implementação, bem como determinados trechos de código
que são relevantes para o entendimento do sistema.
3.3.1 Técnicas e ferramentas utilizadas
Para o desenvolvimento do sistema foi utilizada a ferramenta Eclipse Juno, conforme
apresentado na Figura 15. A ferramenta possui editor para a linguagem JavaScript com plug-
in para a plataforma Node.js bem como possui editores para HTML e CSS.
Figura 15 - Ferramenta usada para o desenvolvimento do sistema
O sistema foi desenvolvido utilizando a linguagem JavaScript, tanto no front-end
quanto no back-end. Para o desenvolvimento do back-end foi utilizada a plataforma Node.js,
que faz uso do modelo orientado a eventos, com Input/Output (I/O) não bloqueante, o que
torna a plataforma leve e eficiente, perfeita para aplicações em tempo real com grande volume
de dados (DAHL, 2013).
Diferente dos servidores web que criam novas threads para atender a novas requisições
33
dos usuários, a plataforma Node.js usa apenas uma thread. Conforme apresentado na Figura
16, várias conexões podem ser tratadas concorrentemente desta maneira. Ao conectar-se ao
servidor, será executada a função de callback, ou seja, cada conexão é apenas uma pequena
parte alocada da memória (DAHL, 2013).
Figura 16 - Trecho de código usando Node.js
Fonte: DAHL (2013)
Para realizar o monitoramento das publicações do Twitter foi utilizada como base a
biblioteca immortal-ntwitter, que facilita o processo de busca de publicações, início e
parada de monitoramento (IMMORTAL-NTWITTER, 2013). O trecho de código que
corresponde aos controles de início e parada do monitoramento de publicações do Twitter
pode ser visualizado na Figura 17. O método de início faz uso da biblioteca supracitada para
estabelecer a conexão com a API do Twitter e cria uma função de call-back para ser
executada quando novas publicações forem encontradas. As publicações recebidas são
enviadas para os usuários conectados ao sistema. O método de parada aborda a conexão para
que ela seja reestabelecida com novas palavras-chave para o filtro. A forma de obtenção dos
dados de conexão com a rede social é descrita no Apêndice B.
Figura 17 - Trecho de código responsável por fazer a busca das publicações
Além dos controles de início de pausa de monitoramento, a Figura 18 apresenta o
trecho de código usado para monitorar as publicações usando as palavras-chave cadastradas
nos interesses dos usuários. Através dessa rotina é atendido o objetivo referente ao
mecanismo de monitoramento do Twitter. O requisito funcional atendido é o RF05.
34
Figura 18 - Trecho de código para monitoramento de publicações do Twitter
Para o desenvolvimento do front-end foram utilizados os frameworks Backbone.js,
Underscore.js e Twitter Bootstrap. O framework Backbone.js tem como objetivo estruturar a
aplicação através do padrão Model View Collection (MVC). Ele oferece uma estrutura de
modelos com acesso por chave-valor e eventos customizados, coleções com várias funções,
visualizações com tratamentos de evento e tudo é conectado diretamente ao back-end da
aplicação através de uma interface JavaScript Object Notation (JSON) (ASHKENAS, 2013a).
Já o framework Underscore.js tem como objetivo reunir funções em JavaScript para
agilizar o desenvolvimento, como criação de templates e funções específicas (ASHKENAS,
2013b).
Para o desenvolvimento da parte gráfica foi utilizado o Twitter Bootstrap, que é um
framework para o desenvolvimento de telas, criado para padronizar e agilizar o
desenvolvimento do front-end (OTTO, 2011).
Para realizar a persistência dos dados no sistema foi utilizado o banco de dados
MongoDB. Trata-se de um banco não relacional orientado a documentos, sem esquemas, de
alto desempenho e alta escalabilidade (MONGODB, 2013).
A escolha de tal banco de dados deu-se por três motivos principais:
a) enquadrar-se perfeitamente com o framework Backbone.js, que faz uso de uma
35
interface JSON para a camada de persistência;
b) ausência de esquema, viabilizando a adaptação e integração com outras redes
sociais digitais;
c) alta escalabilidade, viabilizando escalar a base horizontalmente, sendo necessário
apenas configurar novos nós em outras máquinas.
Para configurar e visualizar os dados foi utilizada a aplicação cliente presente no
pacote de instalação do MongoDB. A Figura 19 apresenta a tela da aplicação.
Figura 19 - Aplicação cliente MongoDB
Para realizar o filtro dos conteúdos é utilizada uma RNA treinada com base nos
interesses do usuário. Foi escolhido o modelo de Hopfield por tratar-se de um modelo
associativo, com objetivo de reconstruir padrões incompletos, que é o caso das publicações
das redes sociais digitais.
Na Figura 20 é apresentado o trecho de código em que é feita a construção da RNA a
partir dos interesses cadastrados pelo usuário. As publicações usadas como treinamento do
interesse são carregadas em uma lista e cada palavra presente nas publicações relevantes dessa
lista é considerada como um neurônio para a rede. As palavras presentes nas publicações
irrelevantes dessa lista são removidas dos neurônios e cada publicação relevante é
transformada em um padrão para a rede neural artificial. Através dessa rotina é atingido o
objetivo referente a construir uma rede neural baseada nos interesses do usuário.
36
Figura 20 - Trecho de código responsável por criar a RNA com base nos interesses
Na Figura 21 é apresentado o trecho de código em que ocorre o treinamento da RNA.
O padrão apresentado à RNA é processado em três etapas até que seja armazenado. A
primeira etapa é transformar o padrão binário em bipolar, pois os padrões apresentados à rede
são descritos em valores binários, que representam a presença ou ausência da palavra-chave
na memória da rede, e matematicamente valores binários não são opostos. O segundo passo é
transpor e multiplicar a matriz que representa o padrão, fazendo com que seja gerada uma
matriz quadrada, que representa a conexão entre todos os neurônios. O terceiro passo é zerar a
diagonal principal da matriz, pois como a matriz representa uma memória associativa,
significa que os neurônios não possuem ligações com eles mesmos.
Realizados os três passos, a matriz é somada com a memória anterior da rede fazendo
com que o padrão seja aprendido. Através dessa rotina é atendido o objetivo referente a
realizar o treinamento da rede neural. O requisito funcional atendido é o RF06.
37
Figura 21 - Trecho de código responsável por realizar o treinamento da RNA
Para reconstruir o padrão a RNA segue três fases de processamento. A primeira fase é
separar as palavras-chave da publicação sujeita a exibição, da mesma forma como é feito o
treinamento da rede, mas dessa vez o padrão vai ser avaliado. A segunda fase é adaptar a
entrada da rede de acordo com os seus neurônios, gerando um padrão binário de entrada. A
terceira etapa é fazer com que a rede reconstrua um padrão já treinado a partir do padrão
fornecido como entrada. A Figura 22 apresenta o trecho de código responsável por fazer a
reconstrução do padrão de entrada.
38
Figura 22 - Trecho de código responsável por reconstruir o padrão apresentado à rede
Além da reconstrução do padrão, o sistema também faz a comparação do padrão de
entrada da rede com o padrão reconstruído. Se os dois atingirem o percentual para a exibição
definido no cadastro do interesse, a publicação é considerada relevante e é exibida para o
usuário. A Figura 23 apresenta o trecho de código responsável por fazer a avaliação da
publicação. Através dessa rotina é atingido o objetivo referente a realizar o filtro de
publicações através da RNA. O requisito funcional atendido é o RF07.
39
Figura 23 - Trecho de código responsável por definir a exibição da publicação
3.3.2 Operacionalidade da implementação
Nesta subseção são apresentadas as principais telas do sistema, suas funcionalidades e
trechos de código para o entendimento das principais rotinas.
Ao abrir o sistema, é apresentada a página de login. A página de login contém uma
descrição breve do sistema, links para baixar o código fonte do sistema, ferramentas utilizadas
e para o perfil do seu criador. A página também contém uma caixa solicitando o e-mail e
senha do usuário para entrar no sistema. Através da página é atendido o requisito funcional
RF01. A Figura 24 apresenta a página de login.
40
Figura 24 - Página de login do sistema
Os usuários não serão cadastrados por um administrador. Para obter acesso ao sistema
todos os novos usuários deverão criar sua conta informando nome, e-mail e senha, conforme a
página exibida na Figura 25. Através da página é atendido parcialmente o requisito funcional
RF02, que define que o sistema torne possível manter as contas de usuários.
Figura 25 - Página de cadastro de usuário
Após a autenticação ou o cadastro no sistema, o usuário é direcionado para a página
41
home, onde são exibidos os módulos principais do sistema: interesses, treinamento e
conteúdo. A Figura 26 apresenta a página home.
Figura 26 - Página home do sistema
Além dos módulos principais, o usuário pode realizar alterações na sua conta através
do botão "Usuário". A Figura 27 apresenta a página para realizar as alterações na conta de
usuário. Através dessa página o requisito funcional RF02 é atendido completamente.
Figura 27 - Página de edição de dados do usuário
42
Para que o usuário visualize os conteúdos é necessário antes realizar duas etapas: o
cadastro de seus interesses e o seu treinamento. Ao acessar a página de interesses é exibida
uma lista com todos os interesses do usuário e as funções para cadastrar um novo interesse ou
excluir um ou mais interesses cadastrados, conforme Figura 28.
Figura 28 - Página de interesses
Ao cadastrar um novo interesse, o usuário deverá informar o título do interesse, uma
breve descrição do interesse, o percentual de aceitação para as publicações filtradas pela rede
neural artificial e as palavras-chave que compõem o interesse. A Figura 29 apresenta a página
de cadastro de interesses. Através dessa página é atendido o objetivo referente ao cadastro de
interesses e palavras-chave. Os requisitos funcionais atendidos são os RF03 e RF04.
43
Figura 29 - Cadastro de interesse
Terminado o cadastro do interesse, é necessário realizar o treinamento da rede para que
o conteúdo comece a ser exibido. Ao acessar a página de treinamento é exibida uma lista com
os interesses ativos e funções para iniciar ou excluir o treinamento. A Figura 30 apresenta a
página de treinamento.
Figura 30 - Página de treinamento de interesses
44
Iniciado o treinamento, as publicações filtradas com as palavras-chave do interesse
serão exibidas para que o usuário as classifique como relevantes ou irrelevantes e assim
componha a memória da RNA. Também é possível usar a função ―Recarregar‖ para exibir
outras publicações e a função ―Parar‖ para terminar o treinamento do interesse. A Figura 31
apresenta as publicações sendo exibidas.
Figura 31 - Treinamento de interesses
Na Figura 32 apresenta-se o trecho de código usado para exibir as publicações para que
o usuário classifique-as.
Figura 32 - Trecho de código responsável por exibir as publicações do treinamento
45
Após realizar o treinamento das publicações é possível visualizar o conteúdo filtrado
através da RNA. Ao acessar a página de conteúdos é exibida uma lista com os interesses
cadastrados e uma função para iniciar a visualização dos conteúdos caso o interesse já tenha
passado pela etapa de treinamento. A Figura 33 apresenta a página de conteúdos.
Figura 33 - Página de visualização de conteúdos
Ao abrir e selecionar o interesse da página de conteúdos, a rede neural artificial é
treinada com as publicações selecionadas na sessão de treinamento do interesse. Após realizar
o treinamento da RNA, as publicações estão prontas para serem filtradas. A Figura 34
apresenta a página de conteúdos exibindo publicações consideradas relevantes pela RNA. A
página ainda conta com a função ―Parar‖ para que os conteúdos sejam interrompidos.
Figura 34 - Página de conteúdos exibindo mensagens filtradas através da RNA
46
3.4 RESULTADOS E DISCUSSÃO
O sistema desenvolvido neste trabalho atendeu as expectativas propostas fazendo com
que os usuários de redes sociais digitais possam visualizar grande quantidade de informações
sobre determinado assunto, respeitando os seus interesses específicos.
No Quadro 3 é feita uma comparação das principais funções encontradas no sistema
desenvolvido e nos trabalhos correlatos. Dentre elas, destacam-se o uso da rede neural
juntamente com o filtro realizado em tempo real, possibilitando a visualização de grande
quantidade de informações.
Quadro 3 - Comparação com os trabalhos correlatos
Funções Holt
(2013)
Dallo
(2013)
Martins e Coello
(2010) Sistema desenvolvido
Uso de rede neural X X X
Filtro de conteúdo X X X X
Filtro em tempo real X X
Integração com redes sociais X X
Ao término do desenvolvimento do trabalho foi realizado um questionário para validar
as principais funções do sistema e a forma com que o treinamento de interesses é realizado.
Para realização do questionário, foram entrevistados informalmente cinco usuários de redes
sociais digitais, todos residentes em Blumenau.
Na Figura 35 tem-se o resultado referente ao entendimento das funcionalidades e uso
do sistema.
Figura 35 - Gráfico do entendimento do sistema
47
A Figura 36 trata da forma com que o treinamento dos interesses é feito para que se
possam filtrar os conteúdos usando a rede neural artificial. Houve bastante divergência nas
respostas dessa questão, tal fato pode ser explicado devido ao fato de que alguns usuários
encontraram demora em realizar o treinamento de determinados interesses, visto que são
filtradas publicações em tempo real.
Figura 36 - Gráfico da forma com que o treinamento de interesses é feito
Na Figura 37 pode-se observar que o resultado do filtro da rede neural artificial está
em um grau aceitável para os usuários das redes sociais, visto que os usuários que marcaram a
opção ―Atende parcialmente‖ o fizeram por ter encontrado demora do sistema para listar
conteúdos relevantes. Tal fato é esperado, já que o sistema depende das publicações realizadas
em tempo real pela rede social digital Twitter.
Figura 37 - Gráfico dos conteúdos apresentados usando a RNA
48
4. CONCLUSÕES
O trabalho aqui apresentado discorre sobre o desenvolvimento de um sistema capaz de
filtrar conteúdo relevante através de uma rede neural artificial treinada com os interesses do
usuário. O estudo de redes neurais artificiais possibilitou um melhor entendimento de como
essa técnica funciona e como ela é utilizada para fazer o reconhecimento de padrões não
apenas em textos, mas também em outros tipos de mídia, como imagens e áudio. Foi este
estudo que possibilitou a determinação de três objetivos do trabalho, que são criar uma rede
neural a partir os interesses do usuário, realizar o seu treinamento e filtrar publicações através
dela. Todos os três objetivos foram atendidos, visto que o sistema é capaz de montar a rede
neural a partir dos interesses, aceita que o usuário faça o seu treinamento e realiza o filtro das
publicações com ela, porém, apesar de mostrar resultados satisfatórios, o filtro de conteúdo
depende completamente das palavras selecionadas durante a etapa de treinamento, e sabe-se
que palavras comuns diminuem o poder descritivo do interesse e impactam na qualidade das
publicações filtradas pela rede.
Para atingir o objetivo referente ao monitoramento das publicações da rede social
digital Twitter foi desenvolvida uma rotina para buscar as publicações de acordo com as
palavras-chave dos interesses dos usuários. Tal objetivo foi atendido, visto que o sistema
realiza o monitoramento das publicações do Twitter e realiza o filtro dessas publicações com
a rede neural artificial. Para que este objetivo fosse atendido, foi utilizada a biblioteca
immortal-ntwitter. Sem essa biblioteca não seria possível realizar a busca das
publicações de maneira tão eficiente, seguindo as recomendações descritas na documentação
das integrações do Twitter.
Outro objetivo refere-se à criação de uma estrutura que possibilite ao usuário manter
seus interesses e palavras-chave. Para atender este objetivo foi desenvolvida uma página que
possibilita a criação, edição e exclusão de interesses compostos por palavras-chave.
O objetivo final do sistema, que trata do monitoramento e filtro de publicações
presentes na rede social digital Twitter foi atendido. O sistema mostrou-se capaz de realizar o
filtro das publicações em tempo real, de acordo com os interesses de cada usuário, porém, o
sistema apresenta uma limitação oriunda de limitações impostas pela própria rede social em
que as publicações são buscadas. Segundo o Twitter, não é permitido realizar a busca de
publicações com mais de 400 palavras-chave simultaneamente. Entretanto, a quantidade de
palavras-chave que podem ser filtradas simultaneamente é alta. Desta forma, o resultado
49
obtido na utilização do filtro das publicações é satisfatório.
A utilização de publicações oriundas da rede social digital Twitter também se mostrou
um ponto positivo para o sistema e, unido ao uso da rede neural, é um fator que diferencia o
sistema dos trabalhos semelhantes.
4.1 EXTENSÕES
Como sugestões de extensões para trabalhos futuros, têm-se os seguintes itens:
a) filtrar conteúdos de outras redes sociais digitais;
b) aprimorar o filtro de conteúdos através do uso de uma ontologia, para que se
atribuam pesos à palavras similares;
c) criar uma rede neural capaz de filtrar imagens presentes nas redes sociais digitais.
50
REFERÊNCIAS
ASHKENAS, Jeremy. Backbone.js. San Francisco, [2013]. Disponível em:
<http://backbonejs.org/>. Acesso em: 15 out. 2013.
ASHKENAS, Jeremy. Underscore.js. San Francisco, [2013]. Disponível em:
<http://underscorejs.org/>. Acesso em: 15 out. 2013.
BARRETO, Jorge M. Introdução as Redes Neurais Artificiais. Florianópolis, [2002].
Disponível em: <http://www.inf.ufsc.br/~barreto/tutoriais/Survey.pdf>. Acesso em: 11 abr.
2013.
BEAVER, Doug et al. Needle in a Haystack: Efficient Storage of Billions of Photos.
Facebook Engineering Notes. San Francisco, [2009]. Disponível em:
<http://www.facebook.com/note.php?note_id=76191543919>. Acesso em: 10 abr. 2013.
BENEVENUTO, Fabrício.; ALMEIDA, Jussara.; SILVA, Altigran. Coleta e Análise de
Grandes Bases de Dados de Redes Sociais Online. In: SOUZA, Alberto Ferreira et al.
Jornada de Atualizações em Informática (JAI). Curitiba: CSBC, 2012. p.11-57.
BRAGA, Antônio P.; CARVALHO, Andre C. P. L. F.; LUDEMIR, Teresa B. Redes Neurais
Artificiais: Teoria e Aplicações. Rio de Janeiro: LTC, 2000.
DAHL, Ryan L. Node.js. San Francisco, [2013]. Disponível em: <http://nodejs.org/>. Acesso
em: 10 out. 2013.
DALLO, Genilto. Classificação de páginas da Internet utilizando redes neurais
artificiais. Guarapuava, [2013]. Disponível em: <http://www.geniltodallo.com/wp-
content/uploads/2013/03/Artigo-Redes-Neurais-Artificiais-Genilto-Dallo.pdf>. Acesso em:
05 abr. 2013.
GARTON, Laura.; HAYTHORNTHWAITE, Caroline.; WELLMAN, Barry. Studying
Online Social Networks, Journal of Computer Mediated Communication, n.3, vol 1, 1997.
Disponível em: <http://jcmc.indiana.edu/vol3/issue1/garton.html>. Acesso em: 05 abr. 2013.
HOLT, Alex. Monitter. Sydney, [2013]. Disponível em: <http://monitter.com/>. Acesso em:
10 abr. 2013.
IMMORTAL-NTWITTER. Imortal-ntwitter. San Francisco, [2013]. Disponível em:
<https://github.com/horixon/immortal-ntwitter>. Acesso em: 12 out. 2013.
KARRER, Daniel et al. Redes neurais artificiais: conceitos e aplicações. In: Encontro de
Engenharia de Produção da UFRJ, 9., 2005, Rio de Janeiro. Anais... Rio de Janeiro: UFRJ,
2005.
MARTINS, Daniel M.; COELLO, Juan M. A. Filtragem de informação na web usando
rede neural de Hopfield e ontologia. In: Encontro de Iniciação Científica, 15., 2010,
Campinas. Anais... Campinas: PUC-Campinas, 2010.
51
MCCULLOCH, Warren S.; PITTS, Walter H. Logical Calculus of the Ideas Immanent in
Nervous Activity. Bulletin of Mathematical Biophysics, Elmsford, v.5, p.115-133, 1943.
MONGODB, MongoDB. Palo Alto, [2013]. Disponível em: <http://www.mongodb.org/>.
Acesso em: 10 out. 2013.
OTTO, Mark. Bootstrap from Twitter. San Francisco, 2011. Disponível em:
<https://dev.twitter.com/blog/bootstrap-twitter>. Acesso em: 20 out. 2013.
RECUERO, Raquel. Redes sociais na internet. Porto Alegre: Sulina, 2009.
ROSEN, Bruce. A Hopfield Net Example. Los Angeles, 2009. Disponível em:
<http://www.cs.ucla.edu/~rosen/161/notes/hopfield.html>. Acesso em: 14 out. 2013.
SILVA, Juliana M. N. Redes Neurais Artificiais: Rede Hopfield e Redes Estocásticas. 2003.
40 f. Estudo Orientado (Pós-Graduação em Ciência da Computação) - Instituto de
Computação, Universidade Federal Fluminense, Niterói.
TATIBANA, Cassia Y.;KAETSU, Deisi Y. Uma introdução às Redes Neurais. Maringá,
[2000?]. Disponível em: <http://www.din.uem.br/ia/neurais/>. Acesso em: 12 out. 2013.
TOMAÉL, Maria I.; ALCARÁ, Adriana R.; CHIARA, Ivone G. Das redes sociais à inovação.
Ci. Inf., Brasília, v. 34, n. 2, p. 93-104, Mai./Ago. 2005.
52
APÊNDICE A – Descrição dos Casos de Uso
Nos quadros a seguir, tem-se o detalhamento dos casos de uso presentes no diagrama
apresentado na sessão 3.2.2. No Quadro 4 apresenta-se a função do caso de uso, as pré-
condições, pós-condições e o fluxo principal e alternativo para que o usuário faça login no
sistema.
Quadro 4 - Caso de uso "Efetuar Login"
UC01 Efetuar Login
Permite ao usuário conectar-se ao sistema.
Ator: Usuário.
Pré-condição: O usuário deve estar cadastrado na base de dados.
Pós-condição: Usuário conectado ao sistema.
Cenários.
Fluxo principal:
1. Usuário acessa o sistema;
2. Usuário informa os dados para acesso;
3. Usuário obtém acesso ao sistema.
Fluxo alternativo:
No passo 2 caso os dados informados sejam inválidos:
1. Sistema exibe mensagem alertando o nome de usuário e/ou senha inválido(s);
2. Sistema volta para o fluxo principal no passo 2.
No Quadro 5 apresenta-se a função do caso de uso, as pré-condições, pós-condições e
o fluxo principal e alternativo para que o usuário mantenha os dados de sua conta atualizada
no sistema.
53
Quadro 5 - Caso de uso "Manter conta de usuário"
UC02 Manter Conta de Usuário
Permite ao usuário cadastrar ou alterar sua conta.
Ator: Usuário.
Pré-condição: Não há.
Pós-condição: O usuário criou/alterou dados da sua conta.
Cenários.
Fluxo principal:
1. Usuário opta por cadastrar sua conta.
2. Sistema exibe formulário de cadastro de conta;
3. Usuário preenche os dados do formulário;
4. Usuário seleciona a opção ―Cadastrar‖;
5. Sistema inclui o registro na base;
6. Sistema exibe mensagem confirmando o cadastro;
7. Sistema redireciona o usuário para a página inicial.
Fluxo alternativo:
No passo 3 caso os dados obrigatórios não sejam preenchidos:
1. Sistema exibe mensagem de alerta requisitando o preenchimento dos campos;
2. Sistema volta para o fluxo principal no passo 3.
No Quadro 6 apresenta-se a função do caso de uso, as pré-condições, pós-condições e
o fluxo principal e alternativo para que o usuário mantenha os dados dos seus interesses
atualizados no sistema.
54
Quadro 6 - Caso de uso "Manter interesses"
UC03 Manter Interesses
Permite ao usuário criar, alterar ou excluir seus interesses.
Ator: Usuário.
Pré-condição: Usuário deve fazer login no sistema.
Pós-condição: Usuário cadastrou, editou ou excluiu interesse.
Cenários.
Fluxo principal:
1. Usuário acessa página de interesses;
2. Sistema exibe interesses cadastrados;
3. Usuário opta por incluir, editar ou excluir registro(s).
Cenário - Inclusão/Edição:
1. Sistema exibe formulário de cadastro;
2. Usuário preenche dados do formulário;
3. Usuário seleciona a opção ―Salvar‖;
4. Sistema realiza a alteração na base;
5. Sistema confirma a alteração para o usuário.
Cenário - Exclusão:
1. Usuário seleciona um ou mais interesses;
2. Usuário seleciona a ação ―Excluir‖;
3. Sistema pede confirmação de exclusão;
4. Usuário confirma exclusão;
5. Sistema exclui interesse.
Fluxo alternativo:
No passo 3 do cenário de inclusão/edição, caso os dados obrigatórios não estejam
preenchidos:
1. Sistema exibe mensagem de alerta requisitando o preenchimento dos campos;
2. Sistema volta para o fluxo principal no passo 2.
No passo 3 do cenário de exclusão, caso o usuário não confirme a exclusão:
1. Sistema retorna para o passo 2 do fluxo principal.
No Quadro 7 apresenta-se a função do caso de uso, as pré-condições, pós-condições e
o fluxo principal e alternativo para que o usuário mantenha as palavras-chave atualizadas
dentro dos seus interesses.
55
Quadro 7 - Caso de uso "Manter palavras-chave"
UC04 Manter Palavras-chave
Permite ao usuário criar ou excluir as palavras-chaves de seus interesses.
Ator: Usuário.
Pré-condição: Usuário deve fazer login no sistema e deve selecionar interesse.
Pós-condição: Usuário cadastrou ou excluir palavra-chave.
Cenários.
Fluxo principal:
1. Usuário seleciona interesse;
2. Sistema exibe coleção de palavras-chave;
3. Usuário opta por incluir ou excluir palavras-chave.
Cenário - Inclusão/alteração:
1. Sistema grupo de palavras-chave;
2. Usuário faz o preenchimento do grupo;
3. Usuário seleciona a opção ―Salvar‖;
4. Sistema realiza a inclusão/atualização na base;
5. Sistema confirma a inclusão/atualização para o usuário.
Fluxo alternativo:
No passo 2 do cenário de inclusão/alteração, caso o usuário não preencha ao menos
uma palavra-chave:
1. Sistema exibe mensagem de alerta requisitando o preenchimento das palavras-
chave;
2. Sistema volta para o fluxo principal no passo 2.
No Quadro 8 apresenta-se a função do caso de uso, as pré-condições, pós-condições e
o fluxo principal e alternativo para que o usuário realize o treinamento da rede neural artificial
para realizar o filtro de conteúdos.
56
Quadro 8 - Caso de uso "Treinar rede neural"
UC05 Treinar Rede Neural
Permite o usuário treinar a rede neural para filtrar interesses.
Ator: Usuário.
Pré-condição: Usuário deve fazer login no sistema e deve possuir interesses e palavras-
chave cadastradas.
Pós-condição: Rede neural é treinada com os interesses do usuário.
Fluxo principal:
1. Usuário seleciona módulo ―Treinamento‖;
2. Sistema busca os interesses do usuário;
3. Usuário seleciona interesse para realizar o treinamento;
4. Sistema exibe publicações filtradas pelas palavras-chave;
5. Usuário classifica as publicações como relevante ou irrelevante;
6. Rede neural é treinada.
No Quadro 9 apresenta-se a função do caso de uso, as pré-condições, pós-condições e
o fluxo principal e alternativo para que seja possível filtrar as publicações da rede social
digital Twitter.
Quadro 9 - Caso de uso "Monitorar publicações"
UC06 Monitorar Publicações
Permite monitorar as publicações criadas na rede social Twitter.
Ator: Twitter.
Pré-condição: Twitter deve estar acessível.
Pós-condição: Publicações do Twitter são enviadas para os usuários.
Cenários.
Fluxo principal:
1. Sistema busca publicações do Twitter;
2. Sistema envia as publicações para os usuários conectados ao sistema.
Fluxo alternativo:
No passo 1 do fluxo principal, caso o Twitter não esteja disponível:
1. Sistema para de enviar mensagens para os usuários;
2. Sistema tenta reconectar-se até que o Twitter esteja disponível;
57
3. Sistema volta para o fluxo principal no passo 1.
No Quadro 10 apresenta-se a função do caso de uso, as pré-condições, pós-condições e
o fluxo principal e alternativo para que o usuário visualize conteúdos da rede social digital de
acordo com os seus interesses.
Quadro 10 - Caso de uso "Visualizar publicações relevantes"
UC07 Visualizar Publicações Relevantes
Permite o usuário visualizar as publicações relevantes da rede social Twitter.
Ator: Usuário.
Pré-condição: Usuário deve fazer login no sistema e deve ter a rede neural treinada.
Pós-condição: Publicações são visualizadas pelo usuário.
Cenários.
Fluxo principal:
1. Usuário acessa ―Conteúdos‖;
2. Usuário seleciona interesse;
3. Usuário visualiza as publicações.
58
APÊNDICE B – Cadastro de aplicativo do Twitter
Nos figuras a seguir, têm-se as principais etapas para obter os dados de conexão com o
Twitter. Na Figura 38 apresenta-se a página exibida para os desenvolvedores e os aplicativos
cadastrados.
Figura 38 - Página de desenvolvedor para o Twitter
Criado o aplicativo, é necessário obter os dados que tornam possível ao Twitter
identificar qual aplicativo está requisitando o uso de suas APIs. Na Figura 39 é demonstrada a
página onde os dados estão disponíveis.
Figura 39 - Dados de conexão com o Twitter
59
APÊNDICE C – Descrição do Dicionário de Dados
Nos quadros a seguir, tem-se a descrição das coleções de documentos do banco de
dados apresentadas na seção de especificação deste trabalho. Nos Quadros de 11 a 15 estão o
dicionário de dados das coleções de documentos do sistema. Utilizam-se os seguintes tipos de
dados para os atributos:
a) objectId: armazena o identificador único do documento;
b) string: armazena caracteres alfanuméricos;
c) date: armazena data;
d) double: armazena números com duas casas decimais.
Quadro 11 - Coleção "Authentications"
Authentications – Armazena as chaves de validação das contas
Atributo Descrição Tipo Tamanho
_id Identificador único objectId 12
Email E-mail do usuário string -
Token Token de validação string 32
Quadro 12 - Coleção "Contents"
Contents – Armazena os conteúdos filtrados pelo sistema
Atributo Descrição Tipo Tamanho
_id Identificador único objectId 12
Parent Documento de origem objectId 12
User Usuário da publicação String -
Text Conteúdo da publicação String 140
Date Data da publicação Date 24
Quadro 13 - Coleção "Interests"
Interests – Armazena os interesses dos usuários
Atributo Descrição Tipo Tamanho
_id Identificador único objectId 12
Parent Documento de origem objectId 12
Title Título do interesse String -
Description Descrição do interesse String -
Keywords Palavras-chave do interesse string -
Active Estado do interesse string 3
Percent Limiar do filtro de conteúdos double (3,2)
Quadro 14 - Coleção "Trainings"
Trainings – Armazena as publicações utilizadas para treinamento
Atributo Descrição Tipo Tamanho
60
_id Identificador único objectId 12
Parent Documento de origem objectId 12
User Usuário da publicação String -
Text Conteúdo da publicação String 140
Date Data da publicação Date 24
Relevance Relevância da publicação string 4
Quadro 15 - Coleção "Users"
Users – Armazena os usuários do sistema
Atributo Descrição Tipo Tamanho
_id Identificador único objectId 12
Name Nome do usuário String -
Email E-mail do usuário String -
Password Senha do usuário string -
Recommended