File size: 6,227 Bytes
39c03f5
f5b7255
39c03f5
ceecf58
 
1694dfe
ceecf58
 
7e0d4e7
70c9d09
7e0d4e7
0d93e4f
7e0d4e7
70c9d09
7e0d4e7
0d93e4f
7e0d4e7
0d93e4f
7e0d4e7
 
 
 
 
 
 
 
70c9d09
7e0d4e7
70c9d09
7e0d4e7
0d93e4f
7e0d4e7
 
 
 
 
 
0d93e4f
7e0d4e7
0d93e4f
7e0d4e7
0d93e4f
7e0d4e7
0d93e4f
7e0d4e7
 
 
 
ceecf58
 
 
 
eb4e789
90a3887
ac37333
f5b7255
ceecf58
 
 
0f44ac3
 
 
 
c6ee43b
f5b7255
6010e2f
 
 
 
 
 
 
 
320f2aa
6010e2f
320f2aa
6010e2f
39c03f5
d336538
234502e
 
d336538
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TextClassificationPipeline, pipeline

title = "Clasificador de Tesis"

description = "Clasifica el texto de una tesis con la carrera a la que le pertenece [Actuar铆a, Derecho, Econom铆a, Psicolog铆a, Qu铆mica Farmac茅utico Biol贸gica]."

article = """
## Obtenci贸n de los datos
    
### Motivos y Objetivo de la Obtenci贸n de los Datos
    
La creaci贸n de este dataset ha sido motivado por la participaci贸n en el Hackathon 2022 de PLN en Espa帽ol organizado por Somos NLP, con el objetivo de democratizar el NLP en espa帽ol y promover su aplicaci贸n a buenas causas y, debido a que no existe un dataset de tesis en espa帽ol.
    
### Proceso de Obtenci贸n
    
Se opt贸 realizar un [scraper](https://github.com/IsaacIsaias/NLP-clasificador-tesis/blob/main/main.py) para conseguir la informaci贸n. Se decidi贸 usar la base de datos [TESIUNAM](https://tesiunam.dgb.unam.mx/F?func=find-b-0&local_base=TES01), la cual es un cat谩logo en donde se pueden visualizar las tesis de los sustentantes que obtuvieron un grado en la Universidad Nacional Aut贸noma de M茅xico (UNAM), as铆 como de las tesis de licenciatura de escuelas incorporadas a ella.
        
Para ello, en primer lugar se consult贸 la [Oferta Acad茅mica](http://oferta.unam.mx/indice-alfabetico.html) de la Universidad, sitio de donde se extrajo cada una de las 131 licenciaturas en forma de lista. Despu茅s, se analiz贸 cada uno de los casos presente en la base de datos, debido a que existen carreras con m谩s de 10 tesis, otras con menos de 10, o con solo una o ninguna tesis disponible. Se us贸 Selenium para la interacci贸n con un navegador Web (Edge) y est谩 actualmente configurado para obtener las primeras 20 tesis, o menos, por carrera.
      
Este scraper obtiene de esta base de datos:
- Nombres del Autor
- Apellidos del Autor
- T铆tulo de la Tesis
- A帽o de la Tesis
- Carrera de la Tesis
        
A la vez, este scraper descarga cada una de las tesis en la carpeta *Downloads* del equipo local.
        
En el csv formado por el scraper se a帽adi贸 el Resumen/Introduccion/Conclusion de la tesis, dependiendo cual primero estuviera disponible, ya que la complejidad recae en la diferencia de la estructura y formato de cada una de las tesis.
        
Posteriormente, se le realiz贸 un procesado al dataset con las siguientes tareas:
- Conversi贸n a min煤sculas
- Tokenizaci贸n
- Eliminaci贸n de palabras que no son alfanum茅ricas
- Eliminaci贸n de palabras vac铆as
- Stemming: eliminaci贸n de plurales
        
## Impacto Social
    
El presente conjunto de datos favorecer谩 la b煤squeda e investigaci贸n relacionada con tesis en espa帽ol, a partir de su categorizaci贸n autom谩tica por un modelo entrenado con este dataset. Esta tarea favorece el cumplimiento del Objetivo 4 de Desarrollo Sostenible de la ONU: Educaci贸n y Calidad (https://www.un.org/sustainabledevelopment/es/objetivos-de-desarrollo-sostenible/).
    
## Miembros del Equipo:
    
- Isaac Isa铆as L贸pez L贸pez ([MajorIsaiah](https://huggingface.co/MajorIsaiah))
- Dionis L贸pez Ramos ([inoid](https://huggingface.co/inoid))
- Yisel Clavel Quintero ([clavel](https://huggingface.co/clavel))
- Ximena Yeraldin L贸pez L贸pez ([Ximyer](https://huggingface.co/Ximyer))
"""

tokenizer = AutoTokenizer.from_pretrained('hiiamsid/BETO_es_binary_classification', use_fast=False)
model = AutoModelForSequenceClassification.from_pretrained(
    'hackathon-pln-es/unam_tesis_BETO_finnetuning', num_labels=5, output_attentions=False, output_hidden_states=False)
#pipe = TextClassificationPipeline(model=model, tokenizer=tokenizer, return_all_scores=True)
pipe = pipeline("text-classification", model='hackathon-pln-es/unam_tesis_BETO_finnetuning', tokenizer=tokenizer) 
#classificationResult = pipe("El objetivo de esta tesis es elaborar un estudio de las condiciones asociadas al aprendizaje desde casa.")


def thesis_prediction(input):
    classificationResult = pipe(input)
    classificationResult[0].sort(reverse=True, key=lambda x:x['score'])
    keyClass = classificationResult[0][0]['label']
    return keyClass
              

examples = [
    ["Introducci贸n al an谩lisis de riesgos competitivos bajo el enfoque de la funci贸n de incidencia acumulada (FIA) y su aplicaci贸n con R"],
    ["los promedios de calificaciones y clasificar por grupo o asignatura se realizaron a trav茅s de tablas din谩micas en Excel"],
    ["El matrimonio civil sin distinci贸n de g茅nero y las garant铆as de su reconocimiento y protecci贸n"],
    ["establece que la acusaci贸n deber谩 contener la enunciaci贸n de los hechos  que  se  le  atribuyen  al  acusado"],
    ["Notas sobre deuda p煤blica en M茅xico"],
    ["茅stas suman 56.8% de la poblaci贸n del pa铆s (63,836,779 habitantes), por lo que representan los mayores centros de consumo."],
    ["La importancia de la motivaci贸n para el clima laboral"],
    ["pues  surgen  pensamientos  que  se  relacionan  con  la  evaluaci贸n  de  la  vida misma"],
    ["Asociaci贸n del polimorfismo rs1256031 del receptor beta de estr贸genos en pacientes con diabetes tipo 2"],
    ["los  derivados  de la  serie  LCG presentaron actividad  citot贸xica contra  las  l铆neas celulares SK-LU-1 y SW620"]
]

#gr.Interface(fn=thesis_prediction, inputs=[gr.inputs.Textbox(label="T铆tulo o frase:", placeholder="Ingrese de favor el t铆tulo de la tesis o un fragmento de esta."),], outputs=[gr.outputs.HTML(label="La tesis pertenece a la carrera de: ",)], title=title, description=description, article=article, examples=examples).launch()
#gr.Interface(fn=thesis_prediction, inputs=[gr.inputs.Textbox(label="T铆tulo o frase:", placeholder="Ingrese de favor el t铆tulo de la tesis o un fragmento de esta."),], outputs="keyClass", title=title, description=description, article=article, examples=examples).launch()
#gr.Interface.load('huggingface/hackathon-pln-es/unam_tesis_BETO_finnetuning', placeholder="Ingrese de favor el t铆tulo de la tesis o un fragmento de esta.", title=title, description=description, article=article, examples=examples).launch()
gr.Interface.from_pipeline(pipe, title=title, description=description, article=article, examples=examples).launch()