Yoon-gu Hwang commited on
Commit
c98c5d7
·
1 Parent(s): 92933b9

다수의 사용자 고려

Browse files
Files changed (2) hide show
  1. app.py +32 -27
  2. data.csv +25 -0
app.py CHANGED
@@ -1,13 +1,21 @@
1
  import gradio as gr
2
  import pandas as pd
 
 
 
 
 
 
 
 
 
3
 
4
  with gr.Blocks() as demo:
5
  dataset_df = {}
6
- state = gr.State(value=0)
7
  with gr.Row():
8
  gr.Markdown("# Distributed Evaluation Parallel 😎")
9
  with gr.Row():
10
- file = gr.File(label="Upload a file")
11
  prev = gr.Button(value="Previous")
12
  next = gr.Button(value="Next")
13
  download = gr.File(label="Download a file")
@@ -20,44 +28,41 @@ with gr.Blocks() as demo:
20
  prediction = gr.Textbox(label="Prediction")
21
  score = gr.Radio(choices=["Incorrect", "Correct"], label="Score")
22
  with gr.Row():
23
- todos = gr.DataFrame()
24
- done = gr.DataFrame()
25
-
26
-
27
- def csv2df(file):
28
- df = pd.read_csv(file.name)
29
- df['score'] = None
30
- df_dict = df.to_dict('records')
31
- dataset_df.update(dict(df=df, df_dict=df_dict))
32
- return update()
33
 
34
- def prev_func(score):
35
- df_dict = dataset_df['df_dict']
36
  state.value = max(state.value - 1, 0)
37
  score = df_dict[state.value]['score']
38
- gr.Info(f"총 {len(dataset_df['df'])}개 중에 {state.value + 1}번째 데이터입니다.")
39
- return [*update(), score]
40
 
41
- def next_func(score):
42
- df_dict = dataset_df['df_dict']
43
  df_dict[state.value]['score'] = score
44
- state.value = min(state.value + 1, len(dataset_df['df']) - 1)
45
  score = df_dict[state.value]['score']
46
- gr.Info(f"총 {len(dataset_df['df'])}개 중에 {state.value + 1}번째 데이터입니다.")
47
- return [*update(), score]
48
 
49
- def update():
50
- df_dict = dataset_df['df_dict']
51
  q = df_dict[state.value]['question']
52
  g = df_dict[state.value]['answer']
53
  p = df_dict[state.value]['prediction']
54
  df = pd.DataFrame(df_dict)
55
  todos = df[df.score.isna()]
56
  done = df[df.score.isna() == False]
57
- return q, g, p, todos, done, "data_backup.csv"
58
- file.upload(csv2df, file, [question, ground_truth, prediction, todos, done, download])
 
59
  prev.click(prev_func, [score], [question, ground_truth, prediction, todos, done, download, score])
60
  next.click(next_func, [score], [question, ground_truth, prediction, todos, done, download, score])
61
 
62
- demo.queue()
63
- demo.launch()
 
1
  import gradio as gr
2
  import pandas as pd
3
+ import random
4
+
5
+ USERS = ['user1', 'user2', 'user3']
6
+ df_per_user = {}
7
+ df = pd.read_csv("data.csv")
8
+ df['score'] = None
9
+ df['assignee'] = random.choices(USERS, k=len(df))
10
+ for u in USERS:
11
+ df_per_user[u] = df[df.assignee == u].to_dict('records')
12
 
13
  with gr.Blocks() as demo:
14
  dataset_df = {}
15
+ state = gr.State(value=-1)
16
  with gr.Row():
17
  gr.Markdown("# Distributed Evaluation Parallel 😎")
18
  with gr.Row():
 
19
  prev = gr.Button(value="Previous")
20
  next = gr.Button(value="Next")
21
  download = gr.File(label="Download a file")
 
28
  prediction = gr.Textbox(label="Prediction")
29
  score = gr.Radio(choices=["Incorrect", "Correct"], label="Score")
30
  with gr.Row():
31
+ with gr.Column():
32
+ gr.Markdown("## TODO")
33
+ todos = gr.DataFrame()
34
+ with gr.Column():
35
+ gr.Markdown("## DONE")
36
+ done = gr.DataFrame()
 
 
 
 
37
 
38
+ def prev_func(score, request: gr.Request):
39
+ df_dict = df_per_user[request.username]
40
  state.value = max(state.value - 1, 0)
41
  score = df_dict[state.value]['score']
42
+ gr.Info(f"{request.username}님, 총 {len(df_dict)}개 중에 {state.value + 1}번째 데이터입니다.")
43
+ return [*update(request.username), score]
44
 
45
+ def next_func(score, request: gr.Request):
46
+ df_dict = df_per_user[request.username]
47
  df_dict[state.value]['score'] = score
48
+ state.value = min(state.value + 1, len(df_dict) - 1)
49
  score = df_dict[state.value]['score']
50
+ gr.Info(f"{request.username}님, 총 {len(df_dict)}개 중에 {state.value + 1}번째 데이터입니다.")
51
+ return [*update(request.username), score]
52
 
53
+ def update(username):
54
+ df_dict = df_per_user[username]
55
  q = df_dict[state.value]['question']
56
  g = df_dict[state.value]['answer']
57
  p = df_dict[state.value]['prediction']
58
  df = pd.DataFrame(df_dict)
59
  todos = df[df.score.isna()]
60
  done = df[df.score.isna() == False]
61
+ filename = f"done_{username}.csv"
62
+ done.to_csv(filename, index=False)
63
+ return q, g, p, todos, done, filename
64
  prev.click(prev_func, [score], [question, ground_truth, prediction, todos, done, download, score])
65
  next.click(next_func, [score], [question, ground_truth, prediction, todos, done, download, score])
66
 
67
+ demo.queue(concurrency_count=10)
68
+ demo.launch(auth=[(u, u) for u in USERS])
data.csv ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ,question,answer,prediction,score
2
+ 0,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
3
+ 1,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
4
+ 2,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,
5
+ 3,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
6
+ 4,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
7
+ 5,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,
8
+ 6,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
9
+ 7,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
10
+ 8,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,
11
+ 9,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
12
+ 10,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
13
+ 11,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,
14
+ 12,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
15
+ 13,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
16
+ 14,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,
17
+ 15,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
18
+ 16,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
19
+ 17,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,
20
+ 18,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
21
+ 19,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
22
+ 20,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,
23
+ 21,한국말로 인사 어떻게 해?,안녕하세요,반가워요1,
24
+ 22,한국말로 인사 어떻게 해?,안녕하세요,반가워요2,
25
+ 23,한국말로 인사 어떻게 해?,안녕하세요,반가워요3,