Vsevolod commited on
Commit
4c3d8ea
1 Parent(s): c4a7b6e
Files changed (2) hide show
  1. app.py +63 -0
  2. 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