File size: 1,931 Bytes
4c8fe65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from models import classifier, extractor
import api.get_tweets as get_tweets

nl = '\n'
tab = '\t'


def get_analysis(text='', mode=False, n_tweets=3):
    list_anns = []
    if mode == 'Search in Twitter':
        for word in get_tweets.use(text, n_tweets):
            list_anns.append((word, process_text(word)))
    else:
        list_anns.append((text, process_text(text)))
    return generate_string(list_anns)


def process_text(text):
    detection, pred_class = classifier.use(text)
    pred_ext = None
    if detection:
        pred_ext = extractor.use(text)
    return pred_class, pred_ext


def generate_string(anns):
    result = f'Nº{tab}Text{tab}Result{nl}'
    for idx, ann in enumerate(anns):
        result += f'{nl}{idx+1}:{tab}"{ann[0]}"{tab}{ann[1][0]}'
        if ann[1][1]:
            result += f'{nl}{ann[1][1]}'
    return result


iface = gr.Interface(fn=get_analysis,
                     inputs=[gr.inputs.Textbox(lines=2, label="Text or words for search"),
                             gr.inputs.Radio(choices=['Text', 'Search in Twitter'], label="Mode"),
                             gr.inputs.Slider(0, 5, label='Nº tweets per word', step=1)],
                     outputs=gr.inputs.Textbox(lines=7, label="Result"),
                     title='Adverse Drug Effect Detection',
                     description='Tell us your symptoms as if you were talking to a friend or search tweets with '
                                 'specific words '
                                 'in Twitter and we will give you a '
                                 'positive or negative result and the keywords we have detected.',
                     article='*An adverse drug effect (ADE) is when someone is harmed by a medicine.',
                     theme="grass",
                     allow_flagging=False,
                     allow_screenshot=False,
                     )
iface.launch()