Skip to content

Maits27/Deduplication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Wikipedia crawler

Para la extracción de textos Médicos de Wikipedia se utilizaron los pasos del siguiente repositorio: https://github.com/umcu/dutch-medical-wikipedia.

LIMPIEZA

Se ejecutaron los scripts en la carpeta limpieza para los diferentes corpus.

DEDUPLICATION: Dolma

Para la deduplicación se ha utilizado Dolma. Dolma está preparado principalmente para dos tipos de deduplicación: URLs y texto plano. En este caso se va a utilizar para texto plano. Link: https://github.com/allenai/dolma/blob/main/docs/deduplication.md

La deduplicación consta de dos partes, una en la que se identifican los elementos duplicados dolma dedupe y otra en la que, teniendo en cuenta cuales son (recogidos en los atributos) procede a borrar lo que se le pide, es decir los textos duplicados. A este se le llama dolma mix.

Esto lo hace mediante un Bloom filter y hash-eando los documentos, de forma que el espacio que ocupa en memoria se minimiza considerablemente (a diferencia de con PySpark).

Para utilizar esta librería hay que hacer lo siguiente, siguiendo el repositorio que aparece en el link de más arriba.

Se necesita un entorno virtual con Python que tenga dolma incluido (utiliza rust por detrás).

Los datos de inicio deben estar en formato jsonl.gz. Dentro de ese jsonl, por cada línea debe haber un json con al menos el parámetro 'text' o 'url' (en nuestro caso 'text'). También puede tener otros parámetros aunque no se tengan en cuenta en el deduplicado. Por ejemplo:

{"text":"In addition to routine clinical laboratory tests (including natriuretic peptides and cardiac troponins), other biomarkers are gaining attention for their...", "dataset": "PUBMED", "language": "en"}
{"text":"An Improved Flow Cytometric...", "dataset": "PUBMED", "language": "en"}
{"text":"Image Analysis for the Quantitative...", "dataset": "PUBMED", "language": "en"}

Además, se necesitan dos ficheros de configuración para cada proceso: dedup.yaml y mix.yaml respectivamente.

DEDUP.YAML:

documents:
  - /paths/a/cada/uno/de/los/1.jsonl.gz 
  - /paths/a/cada/uno/de/los/2.jsonl.gz
  - /paths/a/cada/uno/de/los/3.jsonl.gz
work_dir:
  input: /path/a/la/carpeta/tmp/input
  output: /path/a/la/carpeta/tmp/output
dedupe:
  name: bff_duplicate_text
  documents:
    attribute_name: bff_duplicate_text
    key: $.text               # La clave del JSON que se va a tener en cuenta para deduplicar
bloom_filter:
  file: /path/al/fichero/del/filtro/bff_duplicate_text.bin
  read_only: false
  estimated_doc_count: 3877787 # Número de documentos que se esperan mantener
  desired_false_positive_rate: 0.0001
processes: 1  # Procesos en paralelo, se mantiene así para darle prioridad a los documentos de arriba

En la primera parte del proceso se crea una carpeta 'attributes' con los documentos paralelos a los que se han especificado anteriormente. Una vez con esos documentos y mediante el mix.yaml se dice qué se quiere hacer con aquellos documetos identificados por el filtro. En este caso borrarlos:

MIX.YAML:

streams:
    - name: dedup_text_iter_0
      documents:
        - /paths/a/cada/uno/de/los/que/se/quieran/mantener/de/los/jsonl.gz # Pueden ser los mismos que en el anterior o dejar solo los que se quieren mantener (una vez deduplicados)
      output:
        path: /path/a/la/carpeta/result
        max_size_in_bytes: 1_000_000_000
      attributes:
        - bff_duplicate_text
      filter:
        exclude:
          - "$@.attributes[?(@.bff_duplicate_text)]" # Eliminar documentos duplicados
processes: 16  # Procesos en paralelo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors