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
|
|
|