Y1OV commited on
Commit
46920e7
1 Parent(s): c5fa297

Delete Leaderboard.py

Browse files
Files changed (1) hide show
  1. Leaderboard.py +0 -198
Leaderboard.py DELETED
@@ -1,198 +0,0 @@
1
- import pandas as pd
2
- import streamlit as st
3
-
4
- def load_data():
5
- df_itog = pd.read_csv("ITOG.csv")
6
- df_oblzn = pd.read_csv("oblzn.csv")
7
- df_vidvopr = pd.read_csv("vidvopr.csv")
8
- df_provokac = pd.read_csv("provokac.csv")
9
-
10
- return df_itog, df_oblzn, df_vidvopr, df_provokac
11
-
12
- def select_table(tables):
13
- table_choice = st.selectbox(
14
- "Выберите таблицу для отображения:",
15
- ["ITOG", "Область знаний", "Вид вопроса", "Провокационность"],
16
- index=0
17
- )
18
-
19
- return tables[table_choice]
20
-
21
- def filter_itog_columns(df):
22
- st.markdown("### Фильтрация по отдельным колонкам (кроме Model, которая всегда видна):")
23
-
24
- selected_columns = st.multiselect(
25
- "Выберите колонки для отображения:",
26
- options=[col for col in df.columns if col != "Model"]
27
- )
28
-
29
- selected_columns = ["Model"] + selected_columns if selected_columns else ["Model"]
30
-
31
- return df[selected_columns]
32
-
33
- def filter_oblzn_columns(df):
34
- st.markdown("### Фильтрация по областям знаний:")
35
-
36
- knowledge_areas_dict = {
37
- "GEO": "География",
38
- "HIST": "История",
39
- "SOC": "Обществознание (социология)",
40
- "POL": "Политология и основы нац.безопасности",
41
- "ALL": "Все области"
42
- }
43
-
44
- knowledge_areas = list(knowledge_areas_dict.values())
45
-
46
- selected_columns = st.multiselect(
47
- "Выберите области знаний:",
48
- knowledge_areas
49
- )
50
-
51
- if 'Все области' in selected_columns or not selected_columns:
52
- return df
53
- else:
54
- selected_abbr = [abbr for abbr, full in knowledge_areas_dict.items() if full in selected_columns]
55
-
56
- filtered_columns = [col for col in df.columns if any(abbr in col for abbr in selected_abbr)]
57
-
58
- selected_columns = ["Model"] + filtered_columns if filtered_columns else ["Model"]
59
- return df[selected_columns]
60
-
61
-
62
- def filter_vidvopr_columns(df):
63
- st.markdown("### Фильтрация по виду вопроса:")
64
-
65
- question_types_dict = {
66
- "multich": "multichoice (мультивыбор)",
67
- "onech": "one choice (вопрос с одним правильным ответом)",
68
- "seq": "sequence (последовательность)",
69
- "map": "mapping (сопоставление)",
70
- "ALL": "Все типы"
71
- }
72
-
73
- question_types = list(question_types_dict.values())
74
-
75
- selected_columns = st.multiselect(
76
- "Выберите типы вопросов:",
77
- question_types
78
- )
79
-
80
- if 'Все типы' in selected_columns or not selected_columns:
81
- return df
82
- else:
83
- selected_abbr = [abbr for abbr, full in question_types_dict.items() if full in selected_columns]
84
-
85
- filtered_columns = [col for col in df.columns if any(abbr in col for abbr in selected_abbr)]
86
-
87
- selected_columns = ["Model"] + filtered_columns if filtered_columns else ["Model"]
88
- return df[selected_columns]
89
-
90
-
91
- def filter_provokac_columns(df):
92
- st.markdown("### Фильтрация по уровню провокативности:")
93
-
94
- provocation_levels_dict = {
95
- "PROVOC_1": "1ый уровень провокативности",
96
- "PROVOC_2": "2ой уровень провокативности",
97
- "PROVOC_3": "3ий уровень провокативности",
98
- "ALL": "Все уровни"
99
- }
100
-
101
- provocation_levels = list(provocation_levels_dict.values())
102
-
103
- selected_columns = st.multiselect(
104
- "Выберите уровни провокативности:",
105
- provocation_levels
106
- )
107
-
108
- if 'Все уровни' in selected_columns or not selected_columns:
109
- return df
110
- else:
111
- selected_abbr = [abbr for abbr, full in provocation_levels_dict.items() if full in selected_columns]
112
-
113
- filtered_columns = [col for col in df.columns if any(abbr in col for abbr in selected_abbr)]
114
-
115
- selected_columns = ["Model"] + filtered_columns if filtered_columns else ["Model"]
116
- return df[selected_columns]
117
-
118
-
119
-
120
-
121
- st.title("Leaderboard")
122
-
123
- df_itog, df_oblzn, df_vidvopr, df_provokac = load_data()
124
-
125
- tables = {
126
- "ITOG": df_itog,
127
- "Область знаний": df_oblzn,
128
- "Вид вопроса": df_vidvopr,
129
- "Провокационность": df_provokac
130
- }
131
-
132
- df_selected = select_table(tables)
133
-
134
- if st.checkbox("Добавить фильтры"):
135
- if df_selected is df_itog:
136
- df_selected = filter_itog_columns(df_selected)
137
- elif df_selected is df_oblzn:
138
- df_selected = filter_oblzn_columns(df_selected)
139
- elif df_selected is df_vidvopr:
140
- df_selected = filter_vidvopr_columns(df_selected)
141
- elif df_selected is df_provokac:
142
- df_selected = filter_provokac_columns(df_selected)
143
-
144
- st.dataframe(df_selected, use_container_width=True)
145
-
146
- st.download_button(
147
- "Скачать таблицу в формате CSV",
148
- df_selected.to_csv(index=False).encode('utf-8'),
149
- "filtered_table.csv",
150
- "text/csv"
151
- )
152
- st.write('---')
153
-
154
- st.write("""
155
- ### Описание структуры названий колонок:
156
-
157
- #### Части, отвечающие за область знаний:
158
- - **GEO** - география
159
- - **HIST** - история
160
- - **SOC** - обществознание (социология)
161
- - **POL** - политология и основы национальной безопасности
162
-
163
- #### Части, отвечающие за вид вопроса:
164
- - **NUM_Q** или **_num_q_** - вопрос с числовым ответом, с делением на:
165
- - **_multich_** - "multichoice", мультивыбор
166
- - **_onech_** - "one choice", вопрос с одним правильным ответом
167
- - **_seq_** - "sequence", последовательность
168
- - **_map_** - "mapping", соответствие
169
- - **OPEN_Q** или **_open_q_** - открытый вопрос, подразумевающий свободный письменный ответ
170
-
171
- #### Части, отвечающие за уровень провокативности:
172
- - **PROVOC_1** - первый уровень провокативности
173
- - **PROVOC_2** - второй уровень провокативности
174
- - **PROVOC_3** - третий уровень провокативности
175
-
176
- #### Части, указывающие метрику:
177
- - **_EM** - "exact match", ответ модели точно совпадает с правильным
178
- - **_CC** - "contains check", ответ модели содержит правильный ответ
179
- - **_PM** - "partially match", ответ модели частично верный
180
- - **_F1** - метрика f1-score
181
- - **_LR** - "levenshtein ratio", мера схожести ответа модели с эталонным, на основе расстояния Левенштейна
182
-
183
- ---
184
-
185
- ### Структура таблиц:
186
- В таблице представлены три обобщенные вкладки по каждому срезу:
187
- - **Область знаний**
188
- - **Вид вопроса**
189
- - **Уровень провокативности**
190
-
191
- Также присутствует таблица **ИТОГ**, представляющая итоговый рейтинг. Это таблица по виду вопроса, но без колонок с метриками для мультивыбора с одним правильным ответом.
192
- """)
193
-
194
- st.write("### `Ссылки/контакты`")
195
-
196
- st.write("[GitHub](https://github.com/ikanam-ai/slava)")
197
- st.write("[Dataset](https://huggingface.co/datasets/RANEPA-ai/SLAVA-OpenData-2800-v1)")
198
-