GPalomeque
commited on
Commit
·
8a0e22f
1
Parent(s):
6ba88a5
Update app_details.py
Browse files- app_details.py +42 -6
app_details.py
CHANGED
@@ -29,7 +29,7 @@ entrenados para el hackathon por el equipo compuesto por: gpalomeque, aureliopvs
|
|
29 |
|
30 |
### Como funciona el demo:
|
31 |
|
32 |
-
1. Requiere que se proporciones dos textos (el primero denominada texto a analizar y el segundo texto a comparar), los cuales se pueden
|
33 |
|
34 |
2. Cada uno de estos textos pasa por cada uno de los modelos que conforman el proyecto
|
35 |
|
@@ -49,17 +49,53 @@ entrenados para el hackathon por el equipo compuesto por: gpalomeque, aureliopvs
|
|
49 |
|
50 |
"""
|
51 |
|
52 |
-
article=
|
53 |
-
|
|
|
|
|
|
|
|
|
54 |
|
55 |
Es por ello que tuvimos que crear dos datasets:
|
56 |
|
57 |
-
- [scjnugacj/scjn_dataset_corpus_tesis] (https://huggingface.co/datasets/scjnugacj/scjn_dataset_corpus_tesis) la información base fue obtenida del **[Buscador Juridico de la SCJN de México]** (https://bj.scjn.gob.mx/) utilizando como fuente de información: Tesis y filtrando la información por décima y undécima
|
58 |
* `id`: a `string` feature.
|
59 |
* `text`: a `string` features.
|
60 |
-
- [scjnugacj/scjn_dataset_ner](https://huggingface.co/datasets/scjnugacj/scjn_dataset_ner)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
### Team
|
63 |
|
64 |
El equipo esta conformado por [gpalomeque](https://huggingface.co/GPalomeque), [aureliopvs](https://huggingface.co/aureliopvs), [ceciliamacias](https://huggingface.co/ceciliamacias), [giomadariaga](https://huggingface.co/giomadariaga) y [cattsytabla](https://huggingface.co/cattsytabla)
|
65 |
-
|
|
|
29 |
|
30 |
### Como funciona el demo:
|
31 |
|
32 |
+
1. Requiere que se proporciones dos textos (el primero denominada texto a analizar y el segundo texto a comparar), los cuales se pueden seleccionar de la lista de ejemplos
|
33 |
|
34 |
2. Cada uno de estos textos pasa por cada uno de los modelos que conforman el proyecto
|
35 |
|
|
|
49 |
|
50 |
"""
|
51 |
|
52 |
+
article="""
|
53 |
+
### Retos
|
54 |
+
|
55 |
+
#### Creación de los datasets
|
56 |
+
|
57 |
+
El principal problema de entrenar modelos que pertenezcan a un dominio especializado como el **jurídico** que además sea en **español** se centra en la construcción de los **datasets** por la prácticamente inexistencia de los mismos.
|
58 |
|
59 |
Es por ello que tuvimos que crear dos datasets:
|
60 |
|
61 |
+
- [scjnugacj/scjn_dataset_corpus_tesis] (https://huggingface.co/datasets/scjnugacj/scjn_dataset_corpus_tesis) la información base fue obtenida del **[Buscador Juridico de la SCJN de México]** (https://bj.scjn.gob.mx/) utilizando como fuente de información: Tesis y filtrando la información por décima y undécima época; sin embargo, fue necesario realizar procesos de ETL para la limpieza de información no relevante y estructuración de los campos
|
62 |
* `id`: a `string` feature.
|
63 |
* `text`: a `string` features.
|
64 |
+
- [scjnugacj/scjn_dataset_ner](https://huggingface.co/datasets/scjnugacj/scjn_dataset_ner) el primer reto para este dataset fue entender la estructura que debía tener para ser utilizado la tarea **NER** afortunadamente esto fue relativamente sencillo de encontrar y nos dimos cuenta que no éramos el único equipo con el mismo problema.
|
65 |
+
|
66 |
+
* `id`: a `string` feature.
|
67 |
+
* `tokens`: a `list` of `string` features.
|
68 |
+
* `ner_tags`: a `list` of classification labels (`int`). Full tagset with indices: ```python
|
69 |
+
{'O': 0, 'B-LEY': 1, 'I-LEY': 2, 'B-TRAT_INTL': 3, 'I-TRAT_INTL': 4}
|
70 |
+
```
|
71 |
+
|
72 |
+
Afortunadamente, teníamos claro que entidades nos interesaba identificar pero el reto estaba en crear el corpus anotado por la cantidad de ejemplos que teniamos considerando como base los 27913 ejemplos del dataset **scjn_corpus_tesis** aún utilizando una herramienta para realizar las anotaciones de manualmente el tiempo requerido era elevado es por ello que nos dimos a la rarea de crear un notebook que recibe una lista de los nombres de las leyes y tratados internacionales y realiza el ETL necesario para las anotaciones automáticamente, para asegurarnos de que todo estaba anotado acorde a lo esperado se extrajo una muestra para su verificación manual.
|
73 |
+
|
74 |
+
|
75 |
+
#### Compartir los datasets en HugginFace
|
76 |
+
|
77 |
+
Realizar la investigación de como compartir los datasets en HuggingFace represento un tiempo importante y la mejor forma que encontramos para hacerlo fue:
|
78 |
+
|
79 |
+
- Crear un script para utilizar la función **load_dataset** que lee desde un repositorio en github los archivos train.txt y dev.txt y los convierte en un **DatasetDict** para finalmente publicarlos con la función **push_to_hub**
|
80 |
+
|
81 |
+
## Entrenamiento de los modelos
|
82 |
+
- Crear la línea base de los modelos
|
83 |
+
- **hackathon-pln-es/jurisbert-finetuning-ner**
|
84 |
+
* Espacio de almacenamiento para almacenar los checkpoints que requerian 1.4 GB de almacenamiento por lo que no podíamos entrenar de forma continua.
|
85 |
+
* Los resultados de F1 eran muy bajos
|
86 |
+
* La cantidad de datos en el corpus era tan elevado y disparejo que el tiempo para entrenar una época era muy alto
|
87 |
+
* Fue necesario dar un paso atrás y revisar el dataset para realizar un análisis exploratorio e idear estrategias para balancear la muestra por lo que se acoto a:
|
88 |
+
|
89 |
+
| name |train|validation|test|
|
90 |
+
|---------|----:|---------:|---:|
|
91 |
+
|SCJNNER|1396|345|0|
|
92 |
+
|
93 |
+
| annotations|train|validation|test|
|
94 |
+
|---------|----:|---------:|---:|
|
95 |
+
|LEY|1084|329|0|
|
96 |
+
|TRAT_INTL|935|161|0|
|
97 |
|
98 |
### Team
|
99 |
|
100 |
El equipo esta conformado por [gpalomeque](https://huggingface.co/GPalomeque), [aureliopvs](https://huggingface.co/aureliopvs), [ceciliamacias](https://huggingface.co/ceciliamacias), [giomadariaga](https://huggingface.co/giomadariaga) y [cattsytabla](https://huggingface.co/cattsytabla)
|
101 |
+
"""
|