• Nenhum resultado encontrado

7. Conclusão

7.1. Trabalho Futuro

Para lá da utilização de diferentes algoritmos no futuro, também se podem utilizar outras funções de atratividade, diferentes da equação de Newman. Utilizar outras funções de atratividade pode levar à identificação de comunidades diferentes.

A API do Ciência-IUL devolve tipos distintos de publicações para cada autor. Neste trabalho considerou-se que algumas colaborações são incluídas e outras não, de acordo com determinados critérios, não sendo ponderado um peso específico para cada um. Para trabalho futuro poderia seria interessante atribuir-se pesos diferentes a cada tipo de publicação (uma coautoria num livro é mais importante que uma coautoria numa conferência?) de modo a obterem-se atratividades diferentes para as mesmas coautorias, com as mesmas publicações, mas com diferentes ponderações sobre as mesmas, o que poderá culminar em resultados significativamente diferentes dos obtidos.

Nos algoritmos de identificação de comunidades tem-se que ter em consideração o esforço computacional e o tempo despendido na identificação das mesmas, nomeadamente através da análise da complexidade assintótica (Aaron Clauset, 2004). A rede de coautorias atuais não apresenta uma grande dimensão, em termos de números totais de autores, publicações e coautorias, pelo que a questão da complexidade não se colocou. Contudo, no futuro, o número de autores, assim como de coautorias e publicações, irá inevitavelmente aumentar e a problemática do esforço computacional terá que ser equacionada e tida em conta.

A partição de um grafo em agrupamentos não necessita ser plana, ou seja, de um nível, podendo ter uma estrutura hierárquica (Schaeffer, 2007). Cada partição global pode desdobrar-se em vários agrupamentos até um determinado nível caso seja aplicada um algoritmo que o permita fazer. Estes algoritmos normalmente criam um dendrograma com a estrutura hierárquica das comunidades identificadas. A identificação de comunidades dentro das comunidades numa comunidade de redes de coautorias permitirá fazer uma análise mais granular dos padrões de partilha de conhecimento.

Na identificação de comunidades foi feita uma restrição ao número de comunidades que um autor pode pertencer: apenas uma. Seria também interessante analisar a possibilidade um mesmo autor estar presente em diferentes comunidades simultaneamente.

Em termos de avaliação da solução, não foram validadas as comunidades identificadas em testes de replicação. Um trabalho futuro possível será aceder à base de dados da solução desenvolvida e, com uma implementação diferente, identificar comunidades com os mesmos algoritmos de modo a validar as comunidades identificadas neste trabalho.

Referências Bibliográficas

Aaron Clauset, M. E. (2004). Finding community structure in very large networks. Phys. Rev. E, 70:066111.

Cervera, A. M. (2010). Discovering and analyzing scientific communities using conference network. Final Project, Computer Science, Universidad Catolica Nuestra Senora de la Asuncion.

Ciência-IUL. (11 de 2016). Documentação da API Pública. Obtido de Ciência-IUL: https://ciencia.iscte-iul.pt/api/doc

Deepjyoti Choudhury, A. P. (2013). Community Detection In Social Networks: An Overview. International Journal of Research in Engineering and Technology, 83-88.

Dongen, S. v. (2000). Graph Clustering by Flow Simulation. PhD thesis, University of Utrecht.

Dongen, S. v. (01 de 2017). MCL - a cluster algorithm for graphs. Obtido de http://micans.org/mcl/

Fernandes, D. (2017). Identification and Evaluation of Communities in Co-authorship Networks.

GEXF Working Group. (05 de 03 de 2017). GEXF File Format. Obtido de GEXF File Format: https://gephi.org/gexf/format/

Google. (4 de 2017). Google Sign-In for Websites. Obtido de Google Sign-In for Websites: https://developers.google.com/identity/sign-in/web/devconsole- project

ISCTE-IUL. (12 de 2016). Obtido de ISCTE-IUL: www.iscte-iul.pt

Lab, M. M. (26 de 12 de 2016). Visualizing Clinton, Podesta, and the DNC's Wikileaks E-mail Networks. Obtido de https://clinton.media.mit.edu/

Leonard Richardson, S. R. (2007). RESTful Web Services. O'Reilly Media.

MongoDB. (6 de 2 de 2017). MongoDB. Obtido de MongoDB: https://www.mongodb.com

Newman, M. E. (2004). Coauthorship networks and patterns of scientific collaboration. Proceedings of the National Academy of Sciences, 5200-5205.

Newman, M. E. (2006). Modularity and community structure in networks. Proceedings of the National Academy of Sciences, 8577-8582.

Node.js. (6 de 2 de 2017). Node.js. Obtido de Node.js: https://nodejs.org

Pinheiro, D. F. (2016). Identificação de Comunidades no ISCTE-IUL usando Bases de Dados e Técnicas de Análise de Redes Sociais. Dissertação de Mestrado, ISCTE-IUL.

Ruifang Liua, S. F. (2014). Weighted graph clustering for community detection of large social networks. 2nd International Conference on Information Technology and QuantitativeManagement, ITQM, 85-94.

Ruohonen, K. (2013). Graph Theory. Self-publishing.

Sample Resume Template. (01 de 02 de 2017). Sample Resume Template. Obtido de Sample Resume Template: http://sampleresumetemplate.net/

Schaeffer, S. E. (2007). Graph clustering. Computer Science Review, 27-64 .

Schulz, C. (2016). Graph Partitioning and Graph Clustering in Theory and Practice. Lecture Notes, Institute for Theoretical Informatics - Karlsruhe Institute of Technology.

SCImago. (11 de 2016). Scimago Journal & Country Rank. Obtido de Scimago Journal & Country Rank: http://www.scimagojr.com/

vis.js. (01 de 02 de 2017). vis.js - A dynamic, browser based visualization library. . Obtido de vis.js - A dynamic, browser based visualization library. :

Anexos

Anexo A – Instalação da aplicação em macOS

A solução é uma aplicação web com três camadas: cliente – servidor – base de dados. Para instalar a solução numa máquina é necessário instalar as camadas de servidor e base dados. A camada de cliente é acedida por um navegador web comercial. As seguintes instruções de instalação foram feitas num sistema operativo macOS e servem como referência para instalar em outros sistemas operativos:

1. Para instalar o Node.js basta ir à página oficial (nodejs.org) e fazer download da aplicação. Ao instalar a aplicação irá receber a mensagem que irá também instalar o software npm. O npm é o gestor oficial de pacotes e bibliotecas desenvolvidas em código aberto do Node.js.

2. Para instalar o MongoDB é necessário primeiro instalar o Homebrew, um gestor de pacotes do macOS:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install mongodb

3. Para o MongoDB funcionar é necessário criar a pasta onde as bases de dados irão ser guardadas no sistema de ficheiros:

mkdir -p /data/db

sudo chown -R `id -u` /data/db

4. Colocar o MongoDB a ser executado:

mongod

5. Para criar a base de dados com o nome redecoautorias e as coleções onde os objetos irão ser guardados no MongoDB:

mongo use redecoautorias db.createCollection('authors') db.createCollection('publications') db.createCollection('coauthorships') db.createCollection('authorsInCommunity') db.createCollection('publicationsInCommunity') db.createCollection('coauthorshipsInCommunity') db.createCollection('communityJobs')

O código da solução encontra-se nas pastas core e model e foi desenvolvido em JavaScript, a linguagem interpretada pelo servidor Node.js. Já na pasta public encontra- se o código que será utilizado pelo cliente no seu navegador web. Para a correr na máquina onde se instalou o Node.js e o MongoDB deve-se colocar o código fonte numa diretoria à escolha. Na raiz da diretoria encontra-se o ficheiro package.json. Neste ficheiro encontra-se a discrição geral da aplicação e as dependências de bibliotecas externas. Para as mesmas serem instaladas na pasta node_modules tem-se de executar o comando:

npm install

O ficheiro server.js é definido como o ponto de entrada da aplicação no ficheiro package.json. Basta executar o seguinte comando para correr a aplicação:

npm start

Para o algoritmo de identificação de comunidades MCL funcionar é necessário compilar o código da aplicação externa utilizada no computador onde a solução está a ser executada. Na pasta core\MCL encontra-se o código fonte num arquivo, mcl-latest.tar.gz. Após o descomprimir, deve-se seguir as instruções presentes no ficheiro INSTALL de modo a instalar a aplicação. Após instalado, o mesmo fica acessível a nível de sistema através do comando mcl.

Anexo B – Instalação da aplicação na Amazon AWS

A Amazon Web Services (AWS) é uma plataforma da empresa Amazon que oferece serviços na nuvem, nomeadamente poder computacional e bases de dados. Para demonstrar o funcionamento da solução foi criado um servidor na Amazon AWS através do produto Amazon Elastic Cloud Computing (EC2). Este servidor tem a camada aplicacional (Node.js) e a base de dados (MongoDB), estando exposto à internet. Este serviço tem custos associados que devem ser considerados e ponderados.

1. Criar uma conta na Amazon AWS (aws.amazon.com);

2. Selecionar o serviço EC2 (Elastic Compute Cloud) e de seguida selecionar a opção Launch Instance;

3. Na configuração do servidor, escolher o sistema operativo Amazon Linux e a configuração de máquina t2.medium;

4. Depois de configurado será pedido para criar um par de chaves de segurança que permitirem aceder ao servidor;

5. Na consola de gestão do serviço EC2 é possível obter o endereço público DNS para aceder ao servidor;

6. Aceder pelo protocolo SSH através da linha de comando ao servidor respeitando as instruções presentes na consola de gestão do serviço EC2;

7. Atualizar o software do servidor com: sudo yum update; 8. Instalar o Node.js e o npm:

sudo yum install gcc-c++ make sudo yum install openssl-devel sudo yum install git

git clone https://github.com/nodejs/node.git cd node

git checkout tags/v7.9.0 ./configure

make

sudo make install sudo vi /etc/sudoers

- encontrar a linha secure_path = /sbin:/bin:/usr/sbin:/usr/bin e acrescentar no final :/usr/local/bin - carregar ESC e escrever :w!

git clone https://github.com/npm/npm.git cd npm

sudo make install

9. Executar o comando node na consola para validar se a instalação correu bem;

10. Instalar a base de dados MongoDB (ficando a correr como serviço, mesmo em caso de reboot do servidor):

echo "[10gen]

name=10gen Repository

baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.3/x86_64/ gpgcheck=0" | sudo tee -a /etc/yum.repos.d/10gen.repo

echo "[10gen]

name=10gen Repository

baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 gpgcheck=0" | sudo tee -a /etc/yum.repos.d/10gen.repo

sudo yum -y install mongo-10gen-server mongodb-org-shell sudo yum -y install sysstat

sudo mkdir /var/lib/mongo/data sudo mkdir /var/lib/mongo/log sudo mkdir /var/lib/mongo/journal

sudo chown mongod:mongod /var/lib/mongo/data sudo chown mongod:mongod /var/lib/mongo/log sudo chown mongod:mongod /var/lib/mongo/journal sudo chkconfig mongod on

sudo /etc/init.d/mongod start

11. Executar o comando mongo na consola para validar se a instalação correu bem; 12. Para criar a base de dados com o nome redecoautorias e as coleções onde os objetos

irão ser guardados no MongoDB:

mongo use redecoautorias db.createCollection('authors') db.createCollection('publications') db.createCollection('coauthorships') db.createCollection('authorsInCommunity') db.createCollection('publicationsInCommunity') db.createCollection('coauthorshipsInCommunity') db.createCollection('communityJobs')

13. Criar uma pasta para o código da solução na raiz do sistema de ficheiros:

mkdir redecoautorias

14. Fazer upload do código da solução (app.zip) para a pasta criada. Uma possibilidade é utilizar o software FileZilla com a opção SFTP;

15. Compilar a aplicação do MCL presente na pasta core/MCL/mcl-latest.tar.gz;

16. No ficheiro de configuração core/configuration.js alterar a propriedade this.googleCallbackURL para o endereço público HTTP do servidor EC2. Para a autenticação na Google continuar a funcionar este endereço tem de ser adicionado à

lista de endereços da aplicação na Google API Console

(console.developers.google.com);

17. Na raiz da pasta onde está o código da solução, instalar o pm2 que permitirá manter o Node.js a funcionar mesmo após desligar o terminal:

npm install pm2 -g

18. Na raiz da pasta onde está o código da solução, instalar todas as dependências da mesma com:

npm install

19. Iniciar o Node.js com:

sudo pm2 start server.js

20. O Node.js encontra-se a correr na porta definida no ficheiro server.js. No caso deste guia encontra-se na porta 80. É necessário na consola de gestão do serviço EC2 permitir que o servidor seja acedido através da porta 80 via internet (Network & Security ->Security Groups -> Edit inbound rules).

21. Ao aceder através do endereço DNS público através de um navegador web será possível ver a página inicial da solução.

Documentos relacionados