Giter Site home page Giter Site logo

iferrant / warcprocessor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sing-group/warcprocessor

0.0 0.0 0.0 31.32 MB

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 People

Contributors

iferrant avatar mcallon avatar mcalvarez avatar

Watchers

 avatar  avatar

warcprocessor's Issues

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.

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

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.

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

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ú.

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.

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.

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"
}

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.

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

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.

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

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.

Refrescar token

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

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.

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.