terça-feira, 23 de agosto de 2011

Analisando a formação de redes na ferramenta Fórum do Moodle

Sempre considerei o Moodle uma plataforma bastante dura, engessada e pouco sedutora para a promoção de um espaço de conversa online em relação a outras possibilidades, como o Drupal e Wordpress.

O fato é que tenho trabalho, nem tanto por opção mas por uma questão demanda do edital, com o Moodle na Rede de Formação do projeto Telecentros.BR. Tenho documentado por aqui alguns movimentos que temos feito de análise da formação de redes de conversas entre os monitores que estão participando desse processo. Já são mais de 1300 nesse momento e os primeiros estudos que comecei a fazer me mostraram algo que de fato eu pouco esperava: um uso muito intenso dos módulos de comunicação, acima de qualquer outra coisa que eu já tinha visto em um projeto como esse.

Continuando nessa pesquisa/estudo/experiência comecei ontem a noite a estudar como analisar a formação dessas redes entre os monitores a partir de suas conversas nos fóruns disponíveis pelos diversos tópicos do curso. O Gus havia me dado um toque de que estava ocorrendo um tipo de conversa interessante/intensa por ali, dado a percepção que ele estava tendo nos encontros de formação presencial com os monitores, pelos papos que estava ouvindo na reunião com as equipes de cada polo. Deu um tempo, resolvi investigar isso.

O fato é que o modo que o Moodle dificulta muito as coisas pela maneira com que ele guarda os dados na na sua tabela de fórum. A tabela onde conseguimos extrair as conversas é chamada de mdl_forum_posts, que organiza as mensagens em colunas chamadas: "discussion", "parent", "user", "created", "subject" e "message", entre outras que importam menos para o que queria fazer por aqui. A coluna discussion guarda o número de uma thread de conversas, ou seja, o número de um tópico qualquer criado dentro de um fórum. A coluna "parent" guarda o número do fórum onde ocorreu a conversa. A coluna user guarda o usuário que postou naquela discussão, repetindo a discussão e o usuário caso haja repetição de qualquer um deles. A coluna created guarda o timestamp (horário em formato Unix) de quando a postagem foi feita e as colunas subject e message guardam o título e o conteúdo da postagem.

A complicação é que, diferente das tabelas de mensagens online, não temos diretamente do Moodle uma listagem de relacione quem conversou diretamente com quem. Dado isso, montei um script em PHP que monta essa correlação de quem conversou com quem. A ideia básica desse script considerar que todo mundo que postou numa discussão conversou com todo mundo nessa discussão, formando um grupo que interage entre si a partir dessa discussão. Sem dúvida, podemos montar isso de outra forma, considerando o tempo de postagem ou outros critérios para como relacionar as pessoas. É algo que pretendo explorar a partir desse estudo inicial. O script lê os dados de um arquivo que contêm basicamente duas colunas: número da discussão e id do usuário que postou na discussão. Ele monta para cada discussão um array e depois faz uma combinação entre todos os usuários desse array, exibindo na tela para uso posterior.

Segue aqui o script:


function possibilities ($input) {
 
  for ($contador=0;$contador<=count($input);$contador++){
    $elementoatual = array_shift($input);
    foreach ($input AS $current) {
        if (!empty($input)) {
        printf("%d,%d
",$elementoatual,$current);
            }
        }       
    }
 }

    $fh=fopen('c:\xampp\htdocs\arquivos\forum.csv','r');
    $dados = array ();
   
    while (list($discussao,$pai,$usuario,$timestamp) = fgetcsv($fh,1024,',')){
       
        // cria um array temporário com as duas variáveis coletadas
        $arraytemp = array($discussao,$usuario);
       
        // acrescenta o array temporário num array que vai agregar todos os dados do arquivo.
        array_push($dados,$arraytemp);       
    }
   
    //indexa o array pela primeira dimensão, no caso, pelo campo da discussão
    sort($dados);
   
    $contador=0;      
    $discussaoux=9999999;
    $acumulaarray = array();
    foreach ($dados AS $dado){
   
        if ($dados[$contador][0]!=$discussao) {         
            $discussao=$dados[$contador][0];
            possibilities($acumulaarray);
            $acumulaarray = array();
        }    

        array_push($acumulaarray,$dados[$contador][1]);
        $contador++;

    }
   
    fclose($fh);
    ?>;
       

Só para ilustrar os primeiros utilizando esse script para montar um arquivo no formato Pajek, segue a primeira imagem da rede que gerei ontem a noite:





Alguns dados interessantes sobre ela, limpando loops e múltiplas conexões entre pares:
  • grau médio de conexão: 27,44
  • diâmetro da rede: 13 (maior distância entre dois pontos).
O próximo passo é começar a detalhar essa análise, buscando descobrir como o fórum tem sido apropriado pelos monitores, pelos tutores e equipes de polos, analisando as possíveis diferenças regionais que podem se desdobrar em diferentes estratégias de como cada polo tem utilizado/ocupado esse ambiente.

Nenhum comentário: