145 lines
3.6 KiB
PHP
Executable File
145 lines
3.6 KiB
PHP
Executable File
<?php
|
|
// Código para indexar arquivos de programas de computador.
|
|
// Entrada: Subdiretorios com tarefas. Cada tarefa contém um conjunto de arquivos normalizados
|
|
// Saída> Matriz de indexação para cada tarefa
|
|
// Autor: Márcia Gonçalves de Oliveira
|
|
// Data: 27/05/2011. Modificado em: 11/07/2013
|
|
$diretorioexp = "arquivosindexacao/";
|
|
|
|
|
|
function indexartarefa($diretorioorigem, $diretoriodestino, $lista)
|
|
{
|
|
// Esta função recebe como entrada todas as tarefas normalizadas
|
|
// Obter identificador da tarefa e cria diretorio correspondente para gerar os arquivos .rlabel e matriz indexada da tarefa
|
|
|
|
$idtarefa = basename($diretorioorigem);
|
|
$dirtarefaindexada = $diretoriodestino.$idtarefa."/";
|
|
|
|
|
|
|
|
if (!(file_exists($dirtarefaindexada)))
|
|
{
|
|
mkdir($dirtarefaindexada);
|
|
}
|
|
// Arquivos .rlabel e matrizindexada para cada tarefa a serem gerados para cada tarefa
|
|
|
|
$tarefaindexada=$dirtarefaindexada."matrizindexada_".$idtarefa.".txt";
|
|
$arqrlabel = $dirtarefaindexada.$idtarefa.".rlabel";
|
|
|
|
$fi= fopen($tarefaindexada,'w');
|
|
$fr= fopen($arqrlabel,'w');
|
|
|
|
$point = opendir($diretorioorigem);
|
|
|
|
$vetarqs=array();
|
|
$i=0;
|
|
|
|
while($arquivolido = readdir($point))
|
|
{
|
|
if (($arquivolido<>".") && ($arquivolido<>".."))
|
|
{
|
|
|
|
$vetarqs[$i]=trim($arquivolido);
|
|
$i=$i + 1;
|
|
}
|
|
|
|
}
|
|
|
|
// Gravar numero de linhas e de colunas na matriz de indexação
|
|
|
|
$nlinhas=count($vetarqs);
|
|
$ncolunas= count($lista);
|
|
fwrite($fi,$nlinhas." ".$ncolunas."\n");
|
|
|
|
foreach ($vetarqs as $linha)
|
|
{
|
|
$aq = $diretorioorigem."/".$linha;
|
|
|
|
$fp = fopen($aq,'r');
|
|
|
|
$copiaarq = fread($fp, (filesize($aq) + 1));
|
|
$copiaarq = strtoupper(trim($copiaarq));
|
|
|
|
fclose($fp);
|
|
|
|
// Para cada linha da lista de termos de indexação, contar a frequencia
|
|
// e Gerar vetor de indexação
|
|
|
|
$vetfreqtermos=array();
|
|
$j=0;
|
|
foreach ($lista as $termo)
|
|
{
|
|
$token= strtoupper(trim($termo));
|
|
|
|
$vetfreqtermos[$j]=substr_count($copiaarq, $token);
|
|
|
|
$j=$j+1;
|
|
}
|
|
|
|
|
|
// Grava questao do aluno no arquivo .rlabel
|
|
|
|
$questao= substr($linha, 0, -4);
|
|
|
|
fwrite($fr,$questao."\n");
|
|
|
|
// Gravar vetor na matriz de indexacao
|
|
$repvetor= trim(implode(" ", $vetfreqtermos));
|
|
|
|
fwrite($fi,$repvetor."\n");
|
|
|
|
unset($vetfreqtermos);
|
|
|
|
}
|
|
|
|
unset($vetarqs);
|
|
fclose($fi);
|
|
fclose($fr);
|
|
|
|
} /* Fim da função */
|
|
|
|
// Entrar no diretorio submissoes
|
|
// Ler os arquivos dos diretorio de tarefas
|
|
// Gerar no diretorio indexados, as matrizes de indexação de cada tarefa
|
|
|
|
// Carregar arquivos com palavras e simbolos reservados
|
|
$palavras = file($diretorioexp."tokens.csv");
|
|
|
|
// Diretorio de entrada
|
|
$diretoriotarefas= "normalizados/";
|
|
// Diretório de saida
|
|
$dirindexacao = "indexados/";
|
|
|
|
// Para cada tarefa
|
|
|
|
// Entrar no diretorio
|
|
|
|
$ponteiro1 = opendir($diretoriotarefas);
|
|
|
|
|
|
if (!(file_exists($dirindexacao)))
|
|
{
|
|
mkdir($dirindexacao);
|
|
}
|
|
// Para cada subdiretorio de submissoes (isto é, as tarefas), verifique se diretorio da questao já foi normalizado. Se não, envia
|
|
// endereço do diretorio para ser normalizado
|
|
|
|
while (($nometarefa = readdir($ponteiro1)))
|
|
{
|
|
|
|
if (($nometarefa<>".") && ($nometarefa<>".."))
|
|
{
|
|
$dirtarefa= $diretoriotarefas.$nometarefa;
|
|
|
|
indexartarefa($dirtarefa, $dirindexacao, $palavras);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
unset($palavras);
|
|
|
|
?>
|
|
|
|
|