WARCProcessor is a platform independent integrative tool providing specific support to scientists that need to perform experiments in the field of web spam research.
Java 100.00%
warcprocessor's Introduction
Modo de empleo
=======================
java -jar WarcProject-4.X.X-X.jar [--help] [--nogui] [--config <path>]
--help: Muestra las opciones de arranque.
--nogui: Ejecuta la aplicación sin interface de usuario.
--config <path>: Arranca la aplicación con el fichero de configuración especificado.
Actualizaciones
=======================
--> Versión 4
- Modificaciones en la vista que incluyen accesos directos al directorio
de entrada del DS y al directorio de salida. Se incluye el
control por teclado para desplazarse en el árbol del menú y
un enlace desde el menú principal para crear orígenes de datos.
- Opción de deshabilitar DS a través de la vista
- Corpus a partir de CSV + múltiples WARC ó WARC.gz
- Ejecutar sin guí (Usando GetOpt)
- Filtrar por idioma
- Un simple jar ejecutable con java -jar
- Unificar nombres en Datasource CSV y ARFF
- Incluir en ARFF el atributo SpamValue
- Guardar la configuración con una extensión del programa
--> Versión 3
- Añadido interfaz gráfico.
- Añadido DataSource para directorios Warc (WarcDS). A diferencia de CorpusDS,
este busca en un directorio ficheros .warc, y delega al usuario que configura
el DS la responsabilidad de indicar si los ficheros Warc que encontrará
en dicho directorio son Spam o Ham.
- (Incidencia Cod. 2.01) Cuando se establece una profuncidad mayor que 0 en
el crawler, los enlaces rastreados sólo serán los que pertenezcan a los
sitios web originales.
- (Incidencia Cod. 2.02) En el DataSource se pueden establecer el
parámetro “spamCol” con el valor de un campo del CSV que indique si la url
de esa fila corresponde a un sitio web spam o ham, así pues en el
parámetro “spamColSpamValue” se puede indicar el valor de ese campo
que se tomará como spam. Cualquier otro valor corresponderá a ham.
- (Incidencia Cod. 2.03) Corregido. En el DataSource CSVDS se ha
establecido el parámetro “fieldSeparator” donde se puede configurar el
caracter que corresponderá al separador de columnas.
--> Version 2
- Añadido soporte para nuevos formatos de entrada: Arff, CSV, Corpus Warc
- Modificado el fichero de configuracion de la aplicacion para personalizar los
origenes de datos
Creditos
=======================
Iconos: www.aha-soft.com - Creative Commons Attribution-Share Alike 3.0 License
Dependencias
=======================
# Dependencias WarcProject
commons-beanutils-1.9.2.jar
commons-validator-1.4.0.jar
# Dependencias crawler4j
httpcore-4.2.2.jar
commons-logging-1.1.1.jar
httpclient-4.2.3.jar
commons-codec-1.6.jar
je-4.0.92.jar
tika-parsers-1.0.jar
boilerpipe-1.1.0.jar
tagsoup-1.2.1.jar
metadata-extractor-2.4.0-beta-1.jar
asm-3.1.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
commons-compress-1.3.jar
apache-mime4j-dom-0.7.jar
apache-mime4j-core-0.7.jar
tika-core-1.0.jar
log4j-1.2.14.jar
# Dependencias heritrix
# http://sourceforge.net/projects/archive-crawler/files/heritrix3
heritrix-commons-3.1.0.jar
fastutil-5.0.7.jar
commons-io-1.4.jar
# Dependencias Kryo
# https://code.google.com/p/kryo/
# Used to serialization for Warc reader
kryo-1.04-all.jar
# Dependencias Weka
# http://weka.wikispaces.com/
weka.jar
# Dependencias Lucene
luceneTrigramsLanguageGuesser.jar
# Dependencias Jsoup
# http://jsoup.org/
# Used to extract text from html
jsoup-1.8.1.jar
# Dependencias GetOpt
# www.urbanophile.com/arenn/hacking/download.html
# Used to get options from command line
java-getopt-1.0.13.jar
Si después de balancear un corpus, la lista de spam o ham no dispone de páginas, no se crea su carpeta. Al no crearse e intentar subir el corpus, lo primero que se comprueba es si existen esas dos carpetas. Debe basarse la comprobación en el número de páginas del corpus, si alguno es 0, la carpeta puede no existir.
Debe crearse un modal que permita introducir las credenciales de un usuario (email y password) para poder loguearse.
Cuando el usuario pulse "Aceptar", esto debe producir un petición POST a la API que, si las credenciales son correctas, permita recuperar un token válido.
Por defecto el modal debe tener las credenciales de demo/demo. El usuario logueado en el sistema en principio se guardará en memoria y no en un archivo de configuración por motivos de seguridad.
Request: POST: /login
Body:
Hay dos maneras de cargar una configuración en la aplicación:
La pantalla inicial donde se ofrecen los archivos de configuración más recientes para ser cargados.
La opción Load del menú principal.
Ninguna de las dos funciona correctamente. Si la configuración que se ha cargado tiene definido un directorio de salida (Output folder) que no sea el directorio por defecto (RESULT) y se ejecuta la aplicación sin haber guardado, el corpus se genera en la carpeta por defecto.
Cuál es el comportamiento esperado?
Al cargar la configuración y ejecutar la aplicación, ésta debería respetar los campos de la configuración que se ha cargado.
Durante la subida de un corpus pesado debe mostrarse el progreso de la subida. Este debe basarse en el porcentaje real y además debe ofrecerse la posibilidad de cancelar dicha subida.
Una vez que el archivo comprimido que contiene el corpus se ha subido correctamente a API, este debe ser eliminado. Esto evitará tener que comprobar si se está duplicando un archivo o no, lo que causa una excepción.
Deben añadirse nuevos atributos a las cabeceras de los archivos WARC generados por la aplicación.
En la cabecera warcinfo (cabecera global y única del archivo WARC):
Content-Type: application/warc-fields.
WARC-All-Language: Donde debe figurar el idioma del propio WARC. Este idioma puede estar compuesto por una lista con el conjunto de idiomas de las páginas que componen el WARC. NO se refiere a los idiomas seleccionados en la configuración del Datasource.
WARC-All-Content_type: Todos los tipos de registros que se detallan en el fichero MIME/Content-type.
En la cabecera response (cabecera de cada página que compone el WARC):
Ahora mismo se puede subir cualquier carpeta a la API. Cuando se selecciona un directorio con un corpus para ser subido, es necesario confirmar que se trata de un directorio que contiene un corpus y que ha sido generado por WARCProcessor:
Obteniendo su archivo resumen.
Comprobando que existen los directorios de SPAM y HAM que figuran en dicho archivo de configuración.
El corpus debe balancearse a nivel de página, no a nivel de WARC. Para ello será necesario, una vez finalizada la ejecución, leer los WARC generado, almacenar las páginas en dos estructuras de datos, una para spam y otra para ham, y balancear ambas estructuras según los porcentajes establecidos en la configuración general.
Los idiomas de las páginas web siempre son del formato en-US, con un máximo de 5 caracteres. Para controlar el caso en el que la etiqueta lang del HTML no tenga un valor real, se limitará el número de caracteres que puede contener esta cabecera.
En la opción Output del apartado de Configuration, crear un nuevo campo Corpus name. El nombre especificado se concatenará a la ruta de Output folder y servirá como carpeta raíz para _spam_ y _ham_. También debe ir el archivo de configuración, ya que esta es la carpeta que se va a comprimir y subir a la API. Importante comprobar que el nombre que ha puesto el usuario no existe, no se pueden sobrescribir las carpetas.