|
from transformers import AutoModelForTokenClassification, AutoTokenizer, pipeline |
|
import gradio as gr |
|
|
|
def ner_tagging(text): |
|
model_name = "hackathon-pln-es/jurisbert-finetuning-ner" |
|
tokenizer = AutoTokenizer.from_pretrained(model_name, add_prefix_space=True) |
|
|
|
model = AutoModelForTokenClassification.from_pretrained(model_name) |
|
nlp = pipeline("ner", model=model, tokenizer=tokenizer) |
|
ner_results = nlp(text.lower()) |
|
|
|
output = [] |
|
|
|
text_2 = text.split(" ") |
|
|
|
for i in range(len(text_2)): |
|
ent = ner_results[i]["entity"] |
|
if ent != "O": |
|
output.extend([(text_2[i], ent), (" ", None)]) |
|
else: |
|
output.extend([(text_2[i], None), (" ", None)]) |
|
|
|
return output |
|
|
|
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 |
|
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): |
|
|
|
if(item["end"]!=next_item["start"]): |
|
output.extend([(example[item["end"]:next_item["start"]], None)]) |
|
i=i+1 |
|
|
|
if item["end"] < len(example): |
|
output.extend([(example[item["end"]:len(example)], None)]) |
|
|
|
return output |
|
|
|
def greet(name): |
|
return "Hello " + name + "!!" |
|
|
|
iface = gr.Interface(fn=get_entities, inputs="text", outputs=['highlight'], examples=[['Esta Primera Sala de la Suprema Corte de Justicia de la Naci贸n es competente para conocer de la presente Solicitud de Ejercicio de la Facultad de Atracci贸n, en t茅rminos de lo dispuesto en los art铆culos 107, fracci贸n VIII, pen煤ltimo p谩rrafo, de la Constituci贸n Pol铆tica de los Estados Unidos Mexicanos; 80 Bis de la Ley de Amparo; as铆 como el precepto 21, fracci贸n II, de la Ley Org谩nica del Poder Judicial de la Federaci贸n, en relaci贸n con lo dispuesto en los puntos segundo, fracci贸n IX, y tercero del Acuerdo General 5/2013, del Pleno de este Alto Tribunal, relativo a la determinaci贸n de los asuntos que el Tribunal Pleno conservar谩 para su resoluci贸n y el env铆o de los de su competencia originaria a las Salas y a los tribunales colegiados de circuito.'], |
|
["Lo anterior es as铆, toda vez que, si bien es cierto, el art铆culo 1掳 de la Constituci贸n Federal tiene como finalidad brindar la protecci贸n m谩s amplia al gobernado, y que ello se logra garantizando el derecho a un recurso efectivo en t茅rminos del art铆culo 25 de la Convenci贸n Americana sobre Derechos Humanos, ello no significa que en cualquier caso el 贸rgano jurisdiccional deba resolver el fondo del asunto sin verificar los requisitos de procedencia previstos en las leyes nacionales, ya que las formalidades procesales son la v铆a que hace posible arribar a una adecuada resoluci贸n."]], title="Test of jurisbert-finetuning-ner ",) |
|
iface.launch() |