Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -15,16 +15,9 @@ def load_and_analyze_csv(file, text_field, event_model):
|
|
15 |
if text_field not in df.columns:
|
16 |
raise gr.Error(f"Error: Enter text column'{text_field}' not in CSV file.")
|
17 |
|
18 |
-
# floods, fires, nones, scores = [], [], [], []
|
19 |
labels, scores = [], []
|
20 |
for post in df[text_field].to_list():
|
21 |
res = classify(post, event_model, HFTOKEN)
|
22 |
-
# if res["event"] == 'flood':
|
23 |
-
# floods.append(post)
|
24 |
-
# elif res["event"] == 'fire':
|
25 |
-
# fires.append(post)
|
26 |
-
# else:
|
27 |
-
# nones.append(post)
|
28 |
labels.append(res["event"])
|
29 |
scores.append(res["score"])
|
30 |
|
@@ -46,11 +39,21 @@ def analyze_selected_texts(selections):
|
|
46 |
result_df = pd.DataFrame({"Selected Text": selected_texts, "Analysis": analysis_results})
|
47 |
return result_df
|
48 |
|
49 |
-
def calculate_accuracy(flood_selections, fire_selections, none_selections, num_posts):
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
correct = num_posts - incorrect
|
52 |
accuracy = (correct/num_posts)*100
|
53 |
-
return incorrect, correct, accuracy
|
54 |
|
55 |
|
56 |
|
@@ -117,12 +120,17 @@ with gr.Blocks() as demo:
|
|
117 |
|
118 |
accuracy_button = gr.Button("Calculate Accuracy")
|
119 |
num_posts = gr.Number(visible=False)
|
120 |
-
data = gr.DataFrame(
|
|
|
121 |
|
122 |
-
predict_button.click(
|
123 |
-
|
124 |
-
|
125 |
-
|
|
|
|
|
|
|
|
|
126 |
|
127 |
with gr.Tab("Question Answering"):
|
128 |
# XXX Add some button disabling here, if the classification process is not completed first XXX
|
|
|
15 |
if text_field not in df.columns:
|
16 |
raise gr.Error(f"Error: Enter text column'{text_field}' not in CSV file.")
|
17 |
|
|
|
18 |
labels, scores = [], []
|
19 |
for post in df[text_field].to_list():
|
20 |
res = classify(post, event_model, HFTOKEN)
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
labels.append(res["event"])
|
22 |
scores.append(res["score"])
|
23 |
|
|
|
39 |
result_df = pd.DataFrame({"Selected Text": selected_texts, "Analysis": analysis_results})
|
40 |
return result_df
|
41 |
|
42 |
+
def calculate_accuracy(flood_selections, fire_selections, none_selections, num_posts, text_field, data_df):
|
43 |
+
posts = data_df[text_field].to_list()
|
44 |
+
selections = flood_selections + fire_selections + none_selections
|
45 |
+
eval = []
|
46 |
+
for post in posts:
|
47 |
+
if post in selections:
|
48 |
+
eval.append("incorrect")
|
49 |
+
else:
|
50 |
+
eval.append("correct")
|
51 |
+
|
52 |
+
data_df["model_eval"] = eval
|
53 |
+
incorrect = len(selections)
|
54 |
correct = num_posts - incorrect
|
55 |
accuracy = (correct/num_posts)*100
|
56 |
+
return incorrect, correct, accuracy, data_df
|
57 |
|
58 |
|
59 |
|
|
|
120 |
|
121 |
accuracy_button = gr.Button("Calculate Accuracy")
|
122 |
num_posts = gr.Number(visible=False)
|
123 |
+
data = gr.DataFrame(visible=False)
|
124 |
+
data_eval = gr.DataFrame()
|
125 |
|
126 |
+
predict_button.click(
|
127 |
+
load_and_analyze_csv,
|
128 |
+
inputs=[file_input, text_field, event_model],
|
129 |
+
outputs=[flood_checkbox_output, fire_checkbox_output, none_checkbox_output, model_confidence, num_posts, data])
|
130 |
+
accuracy_button.click(
|
131 |
+
calculate_accuracy,
|
132 |
+
inputs=[flood_checkbox_output, fire_checkbox_output, none_checkbox_output, num_posts, text_field, data],
|
133 |
+
outputs=[incorrect, correct, accuracy, data_eval])
|
134 |
|
135 |
with gr.Tab("Question Answering"):
|
136 |
# XXX Add some button disabling here, if the classification process is not completed first XXX
|