shubhamg79 commited on
Commit
e963d84
·
1 Parent(s): e262a2a
Files changed (5) hide show
  1. .gitattributes +3 -34
  2. app.py +91 -0
  3. model/cnn_model.h5 +3 -0
  4. requirements.txt +6 -0
  5. util/temp.csv +0 -0
.gitattributes CHANGED
@@ -1,34 +1,3 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tflite filter=lfs diff=lfs merge=lfs -text
29
- *.tgz filter=lfs diff=lfs merge=lfs -text
30
- *.wasm filter=lfs diff=lfs merge=lfs -text
31
- *.xz filter=lfs diff=lfs merge=lfs -text
32
- *.zip filter=lfs diff=lfs merge=lfs -text
33
- *.zst filter=lfs diff=lfs merge=lfs -text
34
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
3
+ model/cnn_model.h5 filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio
2
+ import keras
3
+ import nltk
4
+ import numpy as np
5
+ import pandas as pd
6
+ from keras.preprocessing.text import Tokenizer
7
+ from keras.utils import pad_sequences
8
+ from nltk.corpus import stopwords
9
+ from nltk.stem import PorterStemmer
10
+
11
+ nltk.download("stopwords")
12
+ import re
13
+
14
+ vocab_size = 25000
15
+ embedding_dim = 64
16
+ max_length = 50
17
+ trunc_type = 'pre'
18
+ padding_type = 'pre'
19
+ oov_tok = '<OOV>'
20
+
21
+ labels = {
22
+ 1: 'admiration',
23
+ 2: 'anger',
24
+ 3: 'curiosity',
25
+ 4: 'disappointment',
26
+ 5: 'disgust',
27
+ 6: 'embarrassment',
28
+ 7: 'excitement',
29
+ 8: 'fear',
30
+ 9: 'gratitude',
31
+ 10: 'love',
32
+ 11: 'nervousness',
33
+ 12: 'pride',
34
+ 13: 'sadness',
35
+ 14: 'neutral'
36
+ }
37
+
38
+
39
+ def get_tokenizer():
40
+ df = pd.read_csv('emo/util/temp.csv', ).reset_index(drop=True)
41
+ X = df['text']
42
+ tokenizer = Tokenizer(num_words=vocab_size, oov_token=oov_tok)
43
+ tokenizer.fit_on_texts(X)
44
+ return tokenizer
45
+
46
+
47
+ def clean_text(text):
48
+ stemmer = PorterStemmer()
49
+ stp_words = set(stopwords.words('english'))
50
+ sent = text.replace("NAME", "")
51
+ sent = re.sub('[^a-zA-Z]', " ", sent)
52
+ sent = sent.lower()
53
+ sent = sent.split()
54
+ sent = [stemmer.stem(words) for words in sent if words not in stp_words]
55
+ text = [' '.join(sent)]
56
+ # print(text)
57
+ # print((sent))
58
+
59
+ train_seq = get_tokenizer().texts_to_sequences(text)
60
+ # print(train_seq)
61
+ test_padding = pad_sequences(train_seq, max_length, padding=padding_type, truncating=trunc_type)
62
+
63
+ return test_padding
64
+
65
+
66
+ def predict(text):
67
+ model = keras.models.load_model('emo/model/cnn_model.h5')
68
+ pred = model.predict(text)
69
+ pred_class = np.argmax(pred, axis=-1)
70
+ return labels.get(pred_class[0])
71
+
72
+
73
+ def my_inference_function(text):
74
+ # TODO: do the pre-processing of text to be able to feed it
75
+ # in the model
76
+ # 1. Preprocess
77
+ inp = clean_text(text)
78
+ return predict(inp)
79
+
80
+
81
+ gradio_interface = gradio.Interface(
82
+ fn=my_inference_function,
83
+ inputs="text",
84
+ outputs="text",
85
+ # outputs=gradio.outputs.Label(num_top_classes=5),
86
+ title='Emotion Classification',
87
+ description=f"Let's know how you feel!!!",
88
+ allow_flagging="never"
89
+ )
90
+
91
+ gradio_interface.launch(inbrowser=True)
model/cnn_model.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:67c5db9470765f2949fa8880a82b18e7a9eca262dea57357d0a4b1251fe5f7bb
3
+ size 20204520
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio==3.32.0
2
+ keras~=2.11.0
3
+
4
+ nltk~=3.8.1
5
+ numpy~=1.21.6
6
+ pandas~=1.3.5
util/temp.csv ADDED
The diff for this file is too large to render. See raw diff