Emotion_Classification / functions.py
achmaddhani's picture
Update functions.py
bd15546
raw
history blame
1.57 kB
import pandas as pd
import numpy as np
# preprocess
import string
import nltk
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from tensorflow.keras.models import load_model
import joblib
nltk.download('punkt')
nltk.download('wordnet')
nltk.download('averaged_perceptron_tagger')
stopword_list= joblib.load('stopword_list.joblib')
def get_wordnet_pos(treebank_tag):
if treebank_tag.startswith('J'):
return wordnet.ADJ
elif treebank_tag.startswith('V'):
return wordnet.VERB
elif treebank_tag.startswith('N'):
return wordnet.NOUN
elif treebank_tag.startswith('R'):
return wordnet.ADV
else:
return wordnet.NOUN
def preprocess_text(text):
lemmatizer = WordNetLemmatizer()
text = text.lower() # lowercase text
tokens = word_tokenize(text) # tokenize
filtered_words = [word for word in tokens if word.lower() not in stopword_list]
lemmatized_words = [lemmatizer.lemmatize(w, get_wordnet_pos(w)) for w in filtered_words]
lemmatized_clean = [word.translate(str.maketrans('', '', string.punctuation)) for word in lemmatized_words]
return ' '.join(lemmatized_clean)
def prediction(X):
model = load_model('best_model.keras')
y_pred = model.predict(X)
predictions = np.argmax(y_pred, axis=1)
for val in predictions:
if val == 0:
return 0, f"You are feeling Fear"
elif val == 1:
return 1, f"You are feeling Anger"
else:
return 2, f"You are feeling Joy"