File size: 4,185 Bytes
7ca1979
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
92
93
94
95
96
97
import torch
import gradio as gr
from PIL import Image
from transformers import AutoTokenizer, AutoModelForSequenceClassification

js = """
function createGradioAnimation() {
    var container = document.createElement('div');
    container.id = 'gradio-animation';
    container.style.fontSize = '2em';
    container.style.fontWeight = 'bold';
    container.style.textAlign = 'center';
    container.style.marginBottom = '20px';

    var text = 'Stress Prediction Model';
    for (var i = 0; i < text.length; i++) {
        (function(i){
            setTimeout(function(){
                var letter = document.createElement('span');
                letter.style.opacity = '0';
                letter.style.transition = 'opacity 0.5s';
                letter.innerText = text[i];

                container.appendChild(letter);

                setTimeout(function() {
                    letter.style.opacity = '1';
                }, 50);
            }, i * 250);
        })(i);
    }

    var gradioContainer = document.querySelector('.gradio-container');
    gradioContainer.insertBefore(container, gradioContainer.firstChild);

    return 'Animation created';
}
"""

saved_directory = 'jnyx74/stress-prediction'
tokenizer = AutoTokenizer.from_pretrained(saved_directory)
model = AutoModelForSequenceClassification.from_pretrained(saved_directory)

# gr.load("models/jnyx74/stress-prediction").launch()

#"LABEL_0": "I think you don't feel stress. Perhaps, describe more, so I can understand you more!",
#"LABEL_1": "Darling, I sensed that you were stressed. Are you alright?""

background = Image.open('quote.jpg')
with gr.Blocks(js=js,theme=gr.themes.Soft()) as demo:
    gr.Image(background, height = '400px',interactive = False)
    gr.Markdown(
        '''
        # Let me study you, perhaps?
        Not everyone tends to express/ knowing to relieve their stress in a proper way. Therefore, are you stress? Perhaps,
        I could have a guess here. I am a fine-tuned DeepLearning/Transformers Model on DistilBert Model with training on reddit datasets.
        '''
    )
    gr.Markdown("Start typing below and then click **Study Me** to see the output.")
    inp = gr.Text(placeholder = "How do you feel today?", label="Sentence Me:")
    btn = gr.Button("Study Me")
    with gr.Column(visible=False) as output_col:
        out_label = gr.Markdown("# Ooh, I think ...")
        out = gr.Text(label="Result",interactive = False)
    examples = gr.Examples(examples=["By serendipity, I meet her once again and for real, I miss her.", 
                                     "Insomnia and overthinking is really killing me as my final year project is reaching.",
                                     "I just won a lottery and wanting to own a house in Kuching.",
                                     "I can't believe I just hit a car just now and the car driver just ran away, how ridiculous?",
                                     "I hate kids but my wife insists to have one, can't we just adopt?"]
                                    ,
                                      inputs = [inp])
    
    def form_submit(inp):
        if len(inp)<=15:
            gr.Warning("Describe/ Express more, a sentence with expression is more appreciated")
            return {
                output_col: gr.Column(visible=True),
                out: gr.Text(value="Please express more of you!!")}
        else:
            inputs = tokenizer([inp], return_tensors="pt")
            with torch.no_grad():
                logits = model(**inputs).logits

            predicted_class_id = logits.argmax().item()
            result = model.config.id2label[predicted_class_id]
            if result == 'LABEL_0':
                result_value = "I think you don't feel stress. Perhaps, describe more, so I can understand you more!"
            else: result_value = "Darling, I sensed that you were stressed. Are you alright?"
            gr.Info("Success Executed")
            return {
                output_col: gr.Column(visible=True),
                out: gr.Text(value=result_value)
            }
    btn.click(fn=form_submit, inputs=inp, outputs=[out, output_col])
    

demo.launch()