jueves, 28 de marzo de 2013

Segundo ARFF

Tal como fue anunciado antes, modifiqué mi código PHP para que, en lugar de crear un único archivo plano con una página por línea, cree tantos archivos planos como páginas se procesen.

Quedó así:

--etiqueta PHP de inicio--

// INCLUDES

// adaptacion de la librería en http://www.howtocreate.co.uk/php/html2texthowto.html
include 'html2text_v3.php';

//FUNCTIONS

/*
Convierte los contenidos de un HTML a texto y genera un target_file por cada pagina html
Parámetros:
source_file_name: string que contiene el path al archivo de origen en formato html
target_directory: directorio de destino para los target files
prefix: prefijo del nombre de cada target file. La idea es usar las 3 primeras consonantes de cada clase (dominio)
i: como es un archivo por página, se usa como sufijo el orden en que se genera.
*/
function conversion($source_file_name, $target_directory, $prefix, $i) {
//Nombre del archivo destino
$target_file_name = $target_directory."/".$prefix."data".$i.".txt";
//Prepara el archivo destino para escritura
$target_file = fopen($target_file_name,"w");
//Lee los contenidos del archivo origen
$source_file = file_get_contents($source_file_name);
//Escribe los contenidos en el archivo destino
echo fwrite($target_file,html2text($source_file));
//Cierra el archivo destino
fclose($target_file);
}


//BODY

//Prefijo
$prefix="tlf";

//Nombre del directorio en el que se almacenarán los archivos destino
$target_directory = "target";

$i=1;
//Recorre el directorio source
// de: http://forums.codeguru.com/showthread.php?424910-PHP-Looping-through-files-in-directory
$handle = opendir('source');
while (false !== ($source_file = readdir($handle))){

conversion('source/'.$source_file, $target_directory, $prefix, $i );

$i = $i + 1;

}

-- etiqueta PHP de finalización --

Este ejemplo es para el dominio de teléfonos. Modifiqué a mano el prefijo y coloqué también a mano los archivos de entrada (las páginas html) en el directorio source. Que me perdonen los puristas de la parametrización en el código y la automatización extrema.

Después volví a ejecutar en el Simple CLI de Weka el comando:
java weka.core.converters.TextDirectoryLoader -dir "C:\Users\Ana\Documents\Data Mining\TESIS DM\EXTRACCION DE ESPECIFICACIONES\Weka\data\directorio_camaras_telefonia" > "C:\Users\Ana\Documents\Data Mining\TESIS DM\EXTRACCION DE ESPECIFICACIONES\Weka\data\directorio_camaras_telefonia\camaras_telefonia.arff"
Y ahora sí, obtuve un archivo ARFF con 9506 observaciones, cada una con su clase. Tiene dos columnas: la primera columna es un string (la página html desprovista de etiquetas) y la segunda columna es la clase.




No hay comentarios:

Publicar un comentario