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