File size: 9,113 Bytes
f3fe141 738d321 2a1ebf7 738d321 777c11a da98d97 777c11a 738d321 777c11a ee74ba4 777c11a 738d321 3ab2be7 f3fe141 936d180 3d2e947 f3fe141 3d2e947 8df1b3b 3d2e947 f3fe141 20801dd 3d2e947 aa42b04 7a88212 ee74ba4 da98d97 ee74ba4 7a88212 da98d97 7a88212 ee74ba4 2a1ebf7 936d180 aa42b04 7a88212 da98d97 7a88212 2a1ebf7 7a88212 2a1ebf7 7a88212 738d321 7a88212 2a1ebf7 da98d97 3ba2d59 2a1ebf7 ee74ba4 777c11a 936d180 7a88212 6daba21 |
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
import gradio as gr
from transformers import AutoModelForTokenClassification,AutoModelForSequenceClassification, AutoTokenizer, pipeline
from sentence_transformers import SentenceTransformer, util
title = "Modelo Jur铆dico Mexicano"
description = """
<div id="content">
<div id="left">
<center>
<img src="https://www.pactomundial.org/wp-content/uploads/2021/10/16-paz-justicia-e-instituciones-solidas-3.jpg" width=200px>
</center>
</div>
<div id="right">
Este demo permite utilizar los modelos:
<ul>
<li>hackathon-pln-es/jurisbert-finetuning-ner</li>
<li>hackathon-pln-es/jurisbert-class-tratados-internacionales-sistema-universal</li>
<li>hackathon-pln-es/jurisbert-clas-art-convencion-americana-dh</li>
<li>hackathon-pln-es/jurisbert-tsdae-sentence-transformer</li>
</ul>
entrenados para el hackathon por el equipo compuesto por: gpalomeque, aureliopvs, ceciliamacias, giomadariaga y cattsytabla
</div>
</div>
"""
examples =[
["El articulo 55, ultimo p谩rrafo , de la ley de Navegaci贸n y Comercio Mar铆timo no vulnera el principio de igualdad y no discriminaci贸n, pues la norma no contempla una autorizaci贸n a los pilotos de puerto para prestar el servicio de lanchaje sin un permiso para ello."],
["Una persona promovi贸 juicio de amparo indirecto contra el auto por el cual el presidente de la Junta fij贸 fecha lejana para llevar a cabo su reinstalaci贸n, ordenada en el laudo que le fue favorable, pues en su opini贸n, ello constitu铆a una tardanza excesiva de proveer adecuadamente. Por su parte, el Juez Federal neg贸 la suspensi贸n provisional, al considerar que de concederse, los efectos dejar铆an sin materia una eventual sentencia protectora, dado que la restituci贸n que aqu茅l solicita coincidir铆a exactamente, en su caso, con los del fallo protector"],
["En un juicio ordinario civil, una persona moral ejerci贸 acci贸n reivindicatoria respecto de una fracci贸n de un bien inmueble que refiere es de su propiedad, mientras que su contraparte aduce que es un bien del dominio p煤blico, al tratarse de un anexo que forma parte de un monumento hist贸rico"],
["El art铆culo 47 DE LA LEY DEL REGISTRO CIVIL del menor a que se le registre inmediatamente despu茅s de su nacimiento, se le asigne un nombre y apellidos, se le respete su derecho a la identidad y filiaci贸n en un sentido de pertenencia con sus progenitores biol贸gicos y se protejan su desarrollo y bienestar integral, al garantiz谩rsele y reconoc茅rsele sus lazos familiares, prerrogativas que salvaguardan los art铆culos de la Carta Magna y de los tratados internacionales invocados."],
["Diversas personas, f铆sicas y morales, promovieron juicio de amparo indirecto en contra de la imposici贸n de un mecanismo de votaci贸n por c茅dula secreta sobre un dictamen de reforma constitucional local, atribuible a diversas autoridades adscritas al Poder Legislativo de una entidad federativa, al considerarlo violatorio de, entre otros, el derecho a la libertad de expresi贸n, el acceso a la informaci贸n p煤blica y la transparencia parlamentaria."]
]
examples2 =[
["El articulo 55, ultimo p谩rrafo , de la ley de Navegaci贸n y Comercio Mar铆timo no vulnera el principio de igualdad y no discriminaci贸n, pues la norma no contempla una autorizaci贸n a los pilotos de puerto para prestar el servicio de lanchaje sin un permiso para ello."],
["Una persona promovi贸 juicio de amparo indirecto contra el auto por el cual el presidente de la Junta fij贸 fecha lejana para llevar a cabo su reinstalaci贸n, ordenada en el laudo que le fue favorable, pues en su opini贸n, ello constitu铆a una tardanza excesiva de proveer adecuadamente. Por su parte, el Juez Federal neg贸 la suspensi贸n provisional, al considerar que de concederse, los efectos dejar铆an sin materia una eventual sentencia protectora, dado que la restituci贸n que aqu茅l solicita coincidir铆a exactamente, en su caso, con los del fallo protector"],
["En un juicio ordinario civil, una persona moral ejerci贸 acci贸n reivindicatoria respecto de una fracci贸n de un bien inmueble que refiere es de su propiedad, mientras que su contraparte aduce que es un bien del dominio p煤blico, al tratarse de un anexo que forma parte de un monumento hist贸rico"],
["El art铆culo 47 DE LA LEY DEL REGISTRO CIVIL del menor a que se le registre inmediatamente despu茅s de su nacimiento, se le asigne un nombre y apellidos, se le respete su derecho a la identidad y filiaci贸n en un sentido de pertenencia con sus progenitores biol贸gicos y se protejan su desarrollo y bienestar integral, al garantiz谩rsele y reconoc茅rsele sus lazos familiares, prerrogativas que salvaguardan los art铆culos de la Carta Magna y de los tratados internacionales invocados."],
["Diversas personas, f铆sicas y morales, promovieron juicio de amparo indirecto en contra de la imposici贸n de un mecanismo de votaci贸n por c茅dula secreta sobre un dictamen de reforma constitucional local, atribuible a diversas autoridades adscritas al Poder Legislativo de una entidad federativa, al considerarlo violatorio de, entre otros, el derecho a la libertad de expresi贸n, el acceso a la informaci贸n p煤blica y la transparencia parlamentaria."]
]
def get_entities(example):
model_name = "hackathon-pln-es/jurisbert-finetuning-ner"
tokenizer = AutoTokenizer.from_pretrained(model_name, add_prefix_space=True)
model = AutoModelForTokenClassification.from_pretrained(model_name)
token_classifier = pipeline("token-classification", aggregation_strategy="simple", model=model, tokenizer=tokenizer)
results = token_classifier(example.lower())
output = []
i=0
item = None
prev_item = None
next_item = None
while i < (len(results)):
item = results[i]
p=i-1
n=i+1
if p > 0:
prev_item = results[p]
if n<(len(results)):
next_item = results[n]
if (i==0):
if item["start"]>0:
output.extend([(example[0:item["start"]], None)])
output.extend([(example[item["start"]:item["end"]], item["entity_group"])])
if (next_item!=None):
##verificar el tramo entre actual y siguiente
if(item["end"]!=next_item["start"]):
output.extend([(example[item["end"]:next_item["start"]], None)])
i=i+1
if (item!=None):
if (item["end"] < len(example)):
output.extend([(example[item["end"]:len(example)], None)])
return output
def clasifica_sistema_universal(example):
tokenizer = AutoTokenizer.from_pretrained("hackathon-pln-es/jurisbert-class-tratados-internacionales-sistema-universal")
model = AutoModelForSequenceClassification.from_pretrained("hackathon-pln-es/jurisbert-class-tratados-internacionales-sistema-universal")
text_classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)
results= text_classifier (example)
salida=[]
for i in results:
salida.append({i["label"]:i["score"]})
#return results[0]["label"], round(results[0]["score"], 5)
return {i["label"]: float(i["score"]) for i in results}
def clasifica_conv_americana(example):
tokenizer = AutoTokenizer.from_pretrained("hackathon-pln-es/jurisbert-clas-art-convencion-americana-dh")
model = AutoModelForSequenceClassification.from_pretrained("hackathon-pln-es/jurisbert-clas-art-convencion-americana-dh")
text_classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)
results= text_classifier (example)
return {i["label"]: float(i["score"]) for i in results}
def similitud(example,example2):
#Compute embedding for both lists
embeddings1 = model.encode(sentences1, convert_to_tensor=True)
embeddings2 = model.encode(sentences2, convert_to_tensor=True)
#Compute cosine-similarits
cosine_scores = util.cos_sim(embeddings1, embeddings2)
return float(cosine_scores[0])*100
def process(example,example2):
entidades = get_entities(example)
class_sistema_universal = clasifica_sistema_universal(example)
class_conv_americana = clasifica_conv_americana(example)
score_similitud = similitud(example,example2)
return entidades,class_sistema_universal, class_conv_americana, score_similitud
input_sen = gr.inputs.Textbox(lines=10, label="Proporcione el texto a analizar:")
input_sen2 = gr.inputs.Textbox(lines=10, label="Proporcione el texto a comparar:")
output_lbl1= gr.outputs.Label(label="Clasificaci贸n modelo convenci贸n americana:")
output_lbl2= gr.outputs.Label(label="Clasificaci贸n modelo sistema universal:")
output_txt= gr.outputs.Textbox(label="Porcentaje de similitud:")
#iface = gr.Interface(fn=process, inputs=input_sen, outputs=["highlight","label","label"], examples=examples, title=title, description = description)
iface = gr.Interface(fn=process, inputs=[input_sen, input_sen2], outputs=["highlight",output_lbl2,output_lbl2,output_txt], examples=[examples,examples2], title=title, description = description)
iface.launch()
|