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"