Git Product home page Git Product logo

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

warcprocessor's People

Contributors

iferrant avatar mcallon avatar mcalvarez avatar

Watchers

 avatar James Cloos avatar

warcprocessor's Issues

Refrescar token

Antes de subir un corpus, debe refrescarse el token del usuario para garantizar su validez.

Comprobar validez de corpus sin carpetas spam/ham

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.

Crear modal de login

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:

{
  "email":"[email protected]",
  "password":"userpassword"
}

Comprimir carpeta de salida

Generar una carpeta comprimida .zip con la carpeta resultante de una ejecución. Este archivo será el que se subirá a través de la api.
POST: /corpus

Cargar configuración

Cuál es el error ?

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.

Crear menú de preferencias

Crear un menú Preferences para la configuración de credenciales (opción Login) y trasladar la opción Languages de Help a este nuevo menú.

Mostrar progreso de subida de corpus

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.

Eliminar corpus comprimido

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.

Añadir atributos a cabeceras WARC

Requerimientos

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):
    • WARC-language: idioma de la página

Documentación adicional

captura de pantalla 2018-02-11 a las 12 56 56

Validar corpus antes de subir

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.

Balancear corpus

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.

Limitar valor de la cabecera de idioma

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.

Servicio de comunicación con la API

Crear un servicio que agrupe todas las posibles peticiones a la API:

  • Loguear un usuario para recuperar un token válido: GET: /login
  • Subir un nuevo corpus a la API: POST: /corpus

Configurar nombre del corpus

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.

Generar archivo resumen

El corpus subido a la API, en vez de contener el archivo de configuración completo, debe contener un archivo resumen con los siguientes campos:

  • Nombre del directorio de SPAM y de HAM
  • Número de páginas de SPAM y de HAM

Debe ir en formato XML

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.