File size: 3,903 Bytes
644c96b
86f2d3a
0c756f9
be5bcd1
5c60a64
be5bcd1
644c96b
86f2d3a
 
be5bcd1
 
 
 
 
 
86f2d3a
 
 
 
 
 
 
5c60a64
 
 
 
 
 
 
 
 
 
644c96b
86f2d3a
62a9f8b
86f2d3a
62a9f8b
86f2d3a
c1fa828
86f2d3a
 
 
 
 
 
c1fa828
86f2d3a
 
 
be5bcd1
86f2d3a
 
 
0c756f9
86f2d3a
0c756f9
 
 
be5bcd1
 
c1fa828
 
 
86f2d3a
644c96b
86f2d3a
 
 
644c96b
86f2d3a
 
 
 
 
 
 
c1fa828
86f2d3a
be5bcd1
86f2d3a
c1fa828
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import streamlit as st
from story_gen import StoryGenerator
import plotly.figure_factory as ff
import plotly.express as px
import random
gen = StoryGenerator()

st.set_page_config(page_title='Storytelling ' +
                   u'\U0001F5BC', page_icon=u'\U0001F5BC', layout="wide")
if 'count' not in st.session_state or st.session_state.count == 6:
	  st.session_state.count = 0
	  st.session_state.chat_history_ids = None
	  st.session_state.old_response = ''
else:
    st.session_state.count += 1
container_mode = st.sidebar.container()
container_param = st.sidebar.container()
container_button = st.sidebar.container()
mode = container_mode.radio(
    "Select your mode",
    ('Create Statistics', 'Play Storytelling'), index=0)
story_till_now = container_param.text_input(
    label='First Sentence', 
    value=random.choice([
        'Hello, I\'m a language model,',
        'So I suppose you want to ask me how I did it.',
        'I always wanted to be a giraffe - until that night.',
        'My first tutor was a dragon with a terrible sense of humor.',
        'Doctors told her she could never diet again.',
        'Memory is all around us, as well as within.',
        
        ]))

num_generation = container_param.slider(
    label='Number of generation', min_value=1, max_value=100, value=3, step=1)
length = container_param.slider(label='Length of the generated sentence',
                                min_value=1, max_value=100, value=10, step=1)
if mode == 'Create Statistics':
    
    num_tests = container_param.slider(
        label='Number of tests', min_value=1, max_value=1000, value=3, step=1)
    reaction_weight_mode = container_param.select_slider(
        "Reaction Weight w:", ["Random", "Fixed"])
    if reaction_weight_mode == "Fixed":
        reaction_weight = container_param.slider(
            label='Reaction Weight w', min_value=0.0, max_value=1.0, value=0.5, step=0.01)
    elif reaction_weight_mode == "Random":
        reaction_weight = -1
    if container_button.button('Analyse'):
        gen.get_stats(story_till_now=story_till_now,
                      num_generation=num_generation, length=length, reaction_weight=reaction_weight, num_tests=num_tests)
        if len(gen.stories) > 0:
            for si, story in enumerate(gen.stories):
                st.markdown(f'### Story no. {si}:', unsafe_allow_html=False)
                st.markdown(story, unsafe_allow_html=False)
            data=gen.stats_df[gen.stats_df.sentence_no==3]
            fig = px.violin(data_frame=data, x="reaction_weight", y="num_reactions", hover_data=data.columns)
            st.plotly_chart(fig, use_container_width=True)
            fig2 = px.box(data_frame=data, x="reaction_weight", y="num_reactions", hover_data=data.columns)
            st.plotly_chart(fig2, use_container_width=True)
    else:
        st.markdown('### You selected statistics. Now set your parameters and click the `Analyse` button.')
elif mode == 'Play Storytelling':
    container_mode.write('Let\'s play storytelling.')

    # # , placeholder="Start writing your story...")
    # story_till_now = st.text_input(
    #     label='First Sentence', value='Hello, I\'m a language model,')

    # num_generation = st.sidebar.slider(
    #     label='Number of generation', min_value=1, max_value=100, value=10, step=1)
    # length = st.sidebar.slider(label='Length of the generated sentence',
    #                            min_value=1, max_value=100, value=20, step=1)
    if container_button.button('Run'):
        story_till_now, emotion = gen.story(
            story_till_now, num_generation, length)
        st.markdown(f'### Story')
        st.text(story_till_now)
        st.markdown(f'The last sentence has the "{emotion["label"]}" **Emotion** with a confidence score of {emotion["score"]}.')
    else:
        st.markdown('### Write the first sentence and then hit the `Run` button')