Giter Site home page Giter Site logo

whoknowsbot's Introduction

WhoKnowsBot

Overview do projeto

WhoKnowsBot é um robô social. Ele foi desenvolvido como um estudo de caso sobre desenvolvimento de componentes de software associados a computação por humanos (human computation). O estudo é parte do projeto PIBIC-CNPq coordenado pelo prof. Lesandro Ponciano e conduzido pelo aluno bolsista Arthur Vinicius Soares, no curso Bacharelado em Sistemas de Informação da Pontifícia Universidade Católica de Minas Gerais (PUC Minas). O projeto foi executado entre Agosto de 2017 e Julho de 2018.

De forma geral, o robô possui duas funcionalidades principais que podem ser acionadas pelo usuário: atribuição e agregação. Pela funcionalidade de atribuição (escalonamento), o usuário informa ao robô um tópico e o robô responde ao usuário quem (entre as pessoa que seguem o usuário no twitter) mais fala sobre aquele tópico no twitter. Pela funcionalidade de agregação, o usuário informa ao robô um tópico e o robô responde ao usuário quantas (entre as pessoa o usuário segue no twitter) falaram sobre aquele tópico no twitter.

Há uma instância do robô ativa em https://twitter.com/whoknowsbot Informações sobre como conversar com o robô e explicações sobre as respostas dele estão em https://drive.google.com/file/d/1jhFCTByFLM2uOGsqa_BUB0BR9FarKnlV/view.

Abaixo estão mais informações sobre a implementação do robô.

Configuração inicial

Em twitter_connection.py atribuir valores às variáveis:

    - consumerKey
    - consumerSecret
    - accessToken
    - accessTokenSecret
  

Essas informações estão disponíveis na página para desenvolvedores do Twitter https://apps.twitter.com:
ex:

    consumerKey = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
    consumerSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    accessToken = '0000000000-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    accessTokenSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
  

A partir desse momento o script já está pronto para executar.
Deve ser executado o arquivo main.py, responsável por chamar todos os métodos e arquivos durante a execução.
Este script está em um loop ifinito. Quando necessário, deve-se interrompê-lo manualmente.


Ativação do script

Com o script executando, sempre que uma novas menções são direcionadas à conta do Twitter associado às variáveis definidas acima, inicia-se a análise de cada menção individualmente.
OBS: Por conta de limites da API, a verificação de novas menções ocorrem de 1 em 1 minuto.

Quando não há novas menções o script hiberna por 1 minutos, e verifica novamente novas menções


Análise das menções


A função listener() é a primeira função a ser chamada no script.
Ela é responsável pela coleta de novas menções, e determinar qual a próxima função a ser chamada de acordo com o conteúdo da menção.

Para cada menção que é coletada, a string com seu conteúdo é quebrada, e verifica-se se o termo que o usuário utilizou. As opções padrões são limitadas ao uso dos termos QUEMSABE e QUANTOSSABEM.
A forma como será decidido qual fluxo seguir pode ser personalizada conforme o uso que será dado ao script.

Quantos sabem

Essa análise foca em descobrir quantos amigos falaram sobre um termo.

É feita a coleta das publicações de quem o mencionador segue (amigos), que foram criadas até 7 dias precedentes ao início da análise e que possuem em seu conteúdo um termo especificado na menção. A função how_many_knows(self, mention) busca quais amigos utilizaram o termo em seus tweets e faz uma contagem desses amigos.


Veja abaixo o diagrama de sequência que representa essa análise:

image1

Quem sabe

Essa análise foca em descobrir quem é o melhor seguidor para responder algo sobre um termo.

É feita a coleta das publicações de quem segue o mencionador (seguidores), que foram criadas até 7 dias precedentes ao início da análise e que possuem em seu conteúdo um termo especificado na menção. A da função who_knows(self, mention) busca quais seguidores utilizaram o termo em seus tweets.
Em seguida, busca-se a publicação mais antiga, que servirá de referência para selecionar o melhor seguidor.
Para cada seguidor é feito o cálculo de uma pontuação que representa sua aptidão para responder alguma pergunta sobre o termo especificado. Sua pontuação aumenta a cada publicação que possui o termo, conforme a fórmula abaixo:

image4

    - Pw é pontuação do seguidor w; 
    - a é publicação do seguidor w;  
    - Tw,a é o timestamp da publicação a; 
    - T* é o timestamp da publicação mais antiga
    - now é timestamp no momento da decisão de escalonamento (horário do sistema).
  

Ao final é retornado o seguidor com a melhor pontuação.

Veja abaixo o diagrama de sequência que representa essa análise:

image3

Respostas

Após a análise de cada menção, o mencionador é respondido, conforme o resultado opções dispiníveis no arquivo mentions_replies.py, podendo ser:
Para análise do tipo QUANTOSSABEM:

    - reply_mention_how_many(self, mention_id, term, user, users_amount)
  

Para análise do tipo QUEMSABE:

    - reply_mention_who_know(self, mention_id, term, user, suitable_user)
  

Ou para menções em formato inválido:

    - reply_invalid_tweet(self, mention_id, user)
  

whoknowsbot's People

Contributors

lesandropcodes avatar

Stargazers

Daniel Wagner avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.