File size: 2,482 Bytes
3f6f474
cf575f8
 
 
 
 
d654474
 
cf575f8
 
 
 
 
 
 
 
 
 
 
 
d654474
 
3f6f474
cf575f8
 
d654474
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b49f004
d654474
b49f004
d654474
cf575f8
d654474
 
 
 
 
 
 
cf575f8
 
 
 
3f6f474
 
 
d654474
3f6f474
d654474
 
cf575f8
 
3f6f474
d654474
cf575f8
3f6f474
 
 
 
 
 
cf575f8
 
b49f004
 
 
 
d654474
 
3f6f474
 
 
cf575f8
 
 
d654474
b49f004
d654474
cf575f8
 
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
from io import StringIO
from typing import Optional

import gradio as gr
import pandas as pd

from utils import pipeline
from utils.models import list_models


def read_data(filepath: str) -> Optional[pd.DataFrame]:
    if filepath.endswith('.xlsx'):
        df = pd.read_csv(filepath)
    elif filepath.endswith('.csv'):
        df = pd.read_csv(filepath)
    else:
        raise Exception('File type not supported')
    return df


def process(task_name: str,
            model_name: str,
            text: str,
            file=None,
            ):
    try:
        # load file
        if file:
            df = read_data(file.name)
        elif text:
            string_io = StringIO(text)
            df = pd.read_csv(string_io)
            assert len(df) >= 1, 'No input data'
        else:
            raise Exception('No input data')

        # process
        if task_name == 'Originality':
            df = pipeline.p0_originality(df, model_name)
        elif task_name == 'Flexibility':
            df = pipeline.p1_flexibility(df, model_name)
        else:
            raise Exception('Task not supported')

        # save
        path = 'output.csv'
        df.to_csv(path, index=False, encoding='utf-8-sig')
        return None, df.iloc[:10], path
    except Exception as e:
        return {'Error': e}, None, None


instructions = 'Please upload a file or paste the text below. '

task_name_dropdown = gr.components.Dropdown(
    label='Task Name',
    value='Originality',
    choices=['Originality', 'Flexibility']
)

model_name_input = gr.components.Textbox(
    value='paraphrase-multilingual-MiniLM-L12-v2',
    lines=1,
    type='text'
)

model_name_dropdown = gr.components.Dropdown(
    label='Model Name',
    value=list_models[0],
    choices=list_models
)

text_input = gr.components.Textbox(
    value='id,prompt,response\n',
    lines=10,
    type='text'
)

text_output = gr.components.Textbox(
    label='Output',
    type='text'
)

dataframe_output = gr.components.Dataframe(
    label='DataFrame'
)

description = open('description.txt', 'r').read()

file_output = gr.components.File(label='Output File',
                                 file_count='single',
                                 file_types=['', '.', '.csv', '.xls', '.xlsx'])

app = gr.Interface(
    fn=process,
    inputs=[task_name_dropdown, model_name_dropdown, text_input, 'file'],
    outputs=[text_output, dataframe_output, file_output],
    description=description
)
app.launch()