File size: 2,574 Bytes
22ec88e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60d700a
22ec88e
cc6ab9b
6a8c654
 
 
 
 
 
 
 
 
 
f2ada5a
fbeb298
 
 
 
60d700a
5fc6e92
fbeb298
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60d700a
fbeb298
 
 
 
 
 
 
 
 
 
 
22ec88e
 
f2ada5a
22ec88e
 
 
 
 
 
 
 
 
90f9e09
 
f2ada5a
 
22ec88e
 
f2ada5a
 
90f9e09
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
83
84
85
86
87
88
89
90
91
import streamlit as st
import numpy as np
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
import pickle 

# Load the LSTM model
lstm_model = load_model('lstm.h5')

# Load the Tokenizer used during training
with open('tokenizer.pkl', 'rb') as tokenizer_file:
    tokenizer = pickle.load(tokenizer_file)

# Define class labels and their numerical mapping
class_mapping = {"Angry": 0, "Sad": 1, "Joy": 2, "Surprise": 3}
numerical_to_label = {v: k for k, v in class_mapping.items()}
st.set_page_config(layout = "wide")

st.title('VibeConnect ๐Ÿ˜๐Ÿ˜‹๐Ÿคช')
st.markdown(
    """
    <style>
        div.stElement {
            text-align: center;
        }
    </style>
    """,
    unsafe_allow_html=True
)

# Define the emojis you want to use
emojis = ["๐Ÿคฃ","๐Ÿฅฒ","๐Ÿฅน","๐Ÿ˜‡","๐Ÿ˜","๐Ÿ˜‹","๐Ÿคช","๐Ÿคฉ","๐Ÿฅณ","๐Ÿ˜ญ","๐Ÿ˜ก","๐Ÿ˜ฆ","๐Ÿ˜ง","๐Ÿ˜ฎ","๐Ÿฅด","๐Ÿคฎ","๐Ÿคง","๐Ÿ˜ท"]

# Create a string of emojis to use as the background
background_emojis = " ".join(emojis * 10)  # Repeat the emojis to cover the background


# Use HTML and CSS to set the background
background_style = f"""
    <style>
        body {{
            background: linear-gradient(to right, #ffecd2, #fcb69f);
            font-size: 30px;
            background-size: 100% 100%;
            background-attachment: fixed;
            height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
        }}

        .content {{
            background: rgba(255, 255, 255, 0.8);
            padding: 20px;
            border-radius: 10px;
            text-align: center;
            opacity: 0.8
        }}
    </style>
    <div class="content">
        {background_emojis}
        
    </div>
"""

# Set the HTML as the app's background
st.markdown(background_style, unsafe_allow_html=True)


# Text input for the user to enter a sequence
user_input = st.text_input('Enter a Text:')

if st.button('Predict'):
    # Tokenize and pad the user input
    sequence = tokenizer.texts_to_sequences([user_input])
    padded_sequence = pad_sequences(sequence, maxlen=128)

    # Make predictions
    prediction = lstm_model.predict(padded_sequence)

    emojis = ["๐Ÿ˜ก", "๐Ÿ˜ญ", "๐Ÿ˜„", "๐Ÿ˜ฏ"]

    threshold = 0.5 
    # Display the label
    for i in range(len(prediction[0])):
        label = numerical_to_label[i]
        probability = prediction[0][i]
        if probability > threshold:
            st.write(f'{label}{emojis[i]}')