165 lines
3.7 KiB
PHP
Executable File
165 lines
3.7 KiB
PHP
Executable File
<?php
|
|
|
|
// Este script recebe como entradas as variaveis de avaliacao, as matrizes de indexação e gera como saídas, essas matrizes divididas em treino e teste já com os seus cabeçalhos para processamento para atribuição de notas pelo professor.
|
|
|
|
// Diretorio com arquivos de selecao e de indexacao
|
|
|
|
$diretorioindexacao = "indexados/";
|
|
$arquivovariaveis = "arquivosindexacao/tokens.clabel";
|
|
|
|
// Funcao para carregar arquivo com matriz de indexacao e separar entre treino e teste
|
|
|
|
function selecionartreinoteste($matrizindexada, $listavariaveis)
|
|
{
|
|
// Esta função tem como entrada o diretorio de origem da matriz indexada, as variaveis de avaliação
|
|
// A saida é ua matriz de treino e outra de teste
|
|
|
|
// Obter diretorio da matrizindexada
|
|
$diretoriodestino= dirname($matrizindexada);
|
|
$diretoriodestino= $diretoriodestino."/";
|
|
|
|
// Carregar matriz indexada, variaveis
|
|
|
|
$matriz = file($matrizindexada);
|
|
$variaveis = file($listavariaveis);
|
|
|
|
// Abrir arquivos de treino e teste
|
|
|
|
$arqtreino= $diretoriodestino."treino.csv";
|
|
$arqteste= $diretoriodestino."teste.csv";
|
|
|
|
$ftr= fopen($arqtreino,'w');
|
|
$fte= fopen($arqteste,'w');
|
|
|
|
// Grava os cabeçalhos de treino e teste a partir da lista de variaveis
|
|
|
|
foreach ($variaveis as $x)
|
|
{
|
|
$k = trim($x);
|
|
fwrite($ftr, $k.";");
|
|
fwrite($fte, $k.";");
|
|
|
|
}
|
|
|
|
fwrite($ftr, "\n");
|
|
fwrite($fte, "\n");
|
|
|
|
// Retira a primeira linha da matriz (pois contem informações de numero de linhas e de colunas) e reindexa a matriz
|
|
|
|
unset($matriz[0]);
|
|
$matriz=array_values($matriz);
|
|
|
|
// Calcular 2/3 da matriz indexada (tirando a primeira linha)
|
|
|
|
$nitens = count($matriz);
|
|
$tamanhotreino = round(2*$nitens/3);
|
|
|
|
// Escolhe randomicamente os "tamanhotreino" da matriz
|
|
|
|
// Para i de 1 ate tamanhotreino
|
|
|
|
for($i=0;$i<$tamanhotreino;$i++)
|
|
{
|
|
|
|
// Sorteia valor um item da matriz
|
|
$vs = array_rand($matriz, 1);
|
|
|
|
// Grava linha sorteada da matriz no treino
|
|
|
|
$linha= str_replace(' ', ';', $matriz[$vs]);
|
|
|
|
fwrite($ftr, $linha);
|
|
|
|
// Remove a linha que foi sorteada da matriz para não ser sorteada de novo
|
|
|
|
unset($matriz[$vs]);
|
|
|
|
// Redefine os indices
|
|
|
|
$matriz=array_values($matriz);
|
|
|
|
}
|
|
|
|
|
|
// Grava a matriz que sobrou como teste
|
|
|
|
foreach ($matriz as $l)
|
|
{
|
|
$lin= str_replace(' ', ';', $l);
|
|
|
|
|
|
fwrite($fte, $lin);
|
|
|
|
}
|
|
|
|
// Liberar matrizes
|
|
|
|
unset($matriz);
|
|
unset($variaveis);
|
|
fclose($ftr);
|
|
fclose($fte);// Para cada tarefa
|
|
|
|
|
|
} // Fim da função
|
|
|
|
// Para cada tarefa, obter matrizindexada
|
|
|
|
|
|
// Entrar no diretorio de indexacao
|
|
|
|
$ponteiro1 = opendir($diretorioindexacao);
|
|
|
|
|
|
if ((file_exists($diretorioindexacao)))
|
|
{
|
|
|
|
// Para cada diretorio de tarefa
|
|
|
|
while (($nometarefa = readdir($ponteiro1)))
|
|
{
|
|
|
|
if (($nometarefa<>".") && ($nometarefa<>".."))
|
|
{
|
|
$dirtarefa= $diretorioindexacao.$nometarefa."/";
|
|
|
|
// Localizar o arquivo com a matriz indexada
|
|
|
|
|
|
$ponteiro2 = opendir($dirtarefa);
|
|
|
|
$achou=false;
|
|
|
|
while($achou==false && ($arquivolido = readdir($ponteiro2)) )
|
|
{
|
|
if (($arquivolido<>".") && ($arquivolido<>".."))
|
|
{
|
|
$vetnomearq = explode("_",$arquivolido);
|
|
|
|
if (strcmp($vetnomearq[0], "matrizindexada") == 0)
|
|
{
|
|
$arquivomatrizindexada=$dirtarefa.$arquivolido;
|
|
$achou=true;
|
|
}
|
|
|
|
unset($vetnomearq);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((file_exists($arquivomatrizindexada)))
|
|
{
|
|
selecionartreinoteste($arquivomatrizindexada, $arquivovariaveis);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} // fim do if para verificar se existe diretorio de indexacao
|
|
?>
|
|
|
|
|