Spaces:
Sleeping
Sleeping
init
Browse files- app.py +63 -0
- data/dialogs/dialogs_marked_33992.csv +0 -0
app.py
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pandas as pd
|
2 |
+
import streamlit as st
|
3 |
+
|
4 |
+
|
5 |
+
emotions = ['joy', 'optimism', 'anger', 'sadness']
|
6 |
+
df = pd.read_csv("dialogs/data/dialogs_marked_33992.csv")
|
7 |
+
df["emotion"] = pd.Categorical(df["emotion"], categories=emotions)
|
8 |
+
dialogs_count = len(df["dialog_id"].unique())
|
9 |
+
movie_titles = list(df["movie_title"].unique())
|
10 |
+
|
11 |
+
|
12 |
+
st.title("Интерфейс для аннотации реплик из диалогов")
|
13 |
+
st.markdown("""
|
14 |
+
Для того, чтобы начать размечать реплики, необходимо выбрать фильм,
|
15 |
+
с диалогами из которого вам хотелось бы поработать.
|
16 |
+
После этого появятся две реплики из диалога: предыдущая и текущая.
|
17 |
+
На основе информации из этих двух реплик необходимо выбрать эмоциональный окрас текущей рекплики на основе одного или нескольких предварительно определнных классов.
|
18 |
+
""")
|
19 |
+
st.markdown("""
|
20 |
+
Текущие классы для разметки: **joy**, **optimism**, **anger**, **sadness**
|
21 |
+
""")
|
22 |
+
st.write(f"Количество фильмов в базе данных: :red[{len(movie_titles)}], количество реплик: :green[{len(df)}], количество диалогов: :blue[{dialogs_count}]")
|
23 |
+
|
24 |
+
selected_movie = st.selectbox(
|
25 |
+
'Какой фильм вас интересует?', [''] + movie_titles,
|
26 |
+
)
|
27 |
+
|
28 |
+
if selected_movie:
|
29 |
+
if selected_movie not in st.session_state:
|
30 |
+
st.session_state[selected_movie] = 1
|
31 |
+
df_subset = df[df["movie_title"] == selected_movie]
|
32 |
+
df_subset = df_subset.reset_index(drop=True)
|
33 |
+
current_index = st.session_state[selected_movie]
|
34 |
+
prev_row = df_subset.iloc[current_index-1]
|
35 |
+
prev_speaker, prev_replica = prev_row["speakers"], prev_row["dialog"]
|
36 |
+
curr_row = df_subset.iloc[current_index]
|
37 |
+
curr_speaker, curr_replica = curr_row["speakers"], curr_row["dialog"]
|
38 |
+
with st.form("My form", clear_on_submit=True):
|
39 |
+
st.markdown(f"""
|
40 |
+
Предыдущая реплика:
|
41 |
+
```
|
42 |
+
{prev_speaker}: {prev_replica}
|
43 |
+
```
|
44 |
+
""", unsafe_allow_html=True)
|
45 |
+
st.markdown(f"""
|
46 |
+
Текущая реплика:
|
47 |
+
```
|
48 |
+
{curr_speaker}: {curr_replica}
|
49 |
+
```
|
50 |
+
""")
|
51 |
+
choices = st.multiselect(
|
52 |
+
"Выберите подходящие эмоции к текущей реплике:",
|
53 |
+
['joy', 'optimism', 'anger', 'sadness'],
|
54 |
+
key="multiselect"
|
55 |
+
)
|
56 |
+
if st.form_submit_button("Подтвердите ваш выбор") and choices:
|
57 |
+
next_index = current_index + 1
|
58 |
+
curr_dialog_id = df_subset.iloc[current_index]["dialog_id"]
|
59 |
+
next_dialog_id = df_subset.iloc[next_index]["dialog_id"]
|
60 |
+
if curr_dialog_id != next_dialog_id:
|
61 |
+
next_index += 1
|
62 |
+
st.session_state[selected_movie] = next_index
|
63 |
+
st.experimental_rerun()
|
data/dialogs/dialogs_marked_33992.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|