File size: 3,027 Bytes
f3fe141
 
 
 
 
 
3d2e947
 
 
f3fe141
3d2e947
 
 
 
 
 
 
8df1b3b
3d2e947
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f3fe141
3d2e947
 
 
 
aa42b04
 
 
 
f3fe141
d0d2f52
f3fe141
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
from transformers import AutoModelForTokenClassification, AutoTokenizer, pipeline
import gradio as gr

examples =[["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."]]

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["end"] < len(example):
        output.extend([(example[item["end"]:len(example)], None)])
    
    return output

def process(example):
    entidades = get_entities(example)
    return entidades
  
iface = gr.Interface(fn=get_entities, inputs="text", outputs=['highlight'], examples=examples, title="Test of jurisbert-finetuning-ner ",)
iface.launch()