File size: 2,299 Bytes
bc97ec5
 
 
35098f0
 
 
bc97ec5
 
35098f0
bc97ec5
 
 
 
 
 
 
 
 
 
 
35098f0
 
 
 
 
bc97ec5
 
 
35098f0
 
 
bc97ec5
 
 
35098f0
 
bc97ec5
 
 
 
 
35098f0
 
 
 
 
bc97ec5
35098f0
 
bc97ec5
35098f0
 
 
 
 
 
 
 
 
 
bc97ec5
35098f0
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
import gradio as gr
from spacy import displacy

from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline

# Carregar o modelo de tokenização e classificação de entidades
tokenizer = AutoTokenizer.from_pretrained("abhibisht89/spanbert-large-cased-finetuned-ade_corpus_v2")
model = AutoModelForTokenClassification.from_pretrained("abhibisht89/spanbert-large-cased-finetuned-ade_corpus_v2").to('cpu')
adr_ner_model = pipeline(task="ner", model=model, tokenizer=tokenizer, grouped_entities=True) 

def get_adr_from_text(sentence):
    tokens = adr_ner_model(sentence)
    entities = []
    
    for token in tokens:
        label = token["entity_group"]
        if label != "O":
            token["label"] = label
            entities.append(token)
    
    params = [{
        "text": sentence,
        "ents": entities,
        "title": None
    }]
    
    html = displacy.render(params, style="ent", manual=True, options={
        "colors": {
            "DRUG": "#f08080",
            "ADR": "#9bddff",
        },
    })
    return html

exp = [
    "Abortion, miscarriage or uterine hemorrhage associated with misoprostol (Cytotec), a labor-inducing drug.",
    "Addiction to many sedatives and analgesics, such as diazepam, morphine, etc.",
    "Birth defects associated with thalidomide",
    "Bleeding of the intestine associated with aspirin therapy",
    "Cardiovascular disease associated with COX-2 inhibitors (i.e. Vioxx)",
    "Deafness and kidney failure associated with gentamicin (an antibiotic)",
    "Having fever after taking paracetamol"
]

desc = "An adverse drug reaction (ADR) can be defined as an appreciably harmful or unpleasant reaction resulting from an intervention related to the use of a medicinal product. \
The goal of this project is to extract the adverse drug reaction from unstructured text with the Drug."

inp = gr.inputs.Textbox(lines=5, placeholder=None, default="", label="Texto para extrair reação adversa a medicamentos e menção ao medicamento")
out = gr.outputs.HTML(label=None)

iface = gr.Interface(
    fn=get_adr_from_text,
    inputs=inp,
    outputs=out,
    examples=exp,
    article=desc,
    title="Extrator de Reações Adversas a Medicamentos",
    theme="huggingface",
    layout="horizontal"
)

iface.launch()