import streamlit as st import pandas as pd import nltk import pickle from nltk.corpus import stopwords from nltk.tokenize import word_tokenize import tensorflow as tf from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences from tensorflow.keras.models import load_model nltk.download('punkt') nltk.download('stopwords') stop_words = set(stopwords.words('english')) vocab_size = 50000 embedding_dim = 100 max_length = 50 model_100epoch = load_model("test.h5") tokenizer_filename = "tokenizertest.pkl" with open(tokenizer_filename, 'rb') as tokenizer_file: loaded_tokenizer = pickle.load(tokenizer_file) def preprocess_text(text): if type(text) == str: tokens = word_tokenize(text.lower()) filtered_tokens = [word for word in tokens if word.isalnum() and word not in stop_words] return ' '.join(filtered_tokens) else: return str(text) def predict_sentiment(tweet,model): preprocessed_tweet = preprocess_text(tweet) tweet_sequence = loaded_tokenizer.texts_to_sequences([preprocessed_tweet]) padded_sequence = pad_sequences(tweet_sequence, maxlen=max_length, padding='post', truncating='post') sentiment_prediction = model.predict(padded_sequence)[0][0] return sentiment_prediction def result(prediction): if(prediction>0.7445957064628601): return "positive" elif(prediction>-0.4008907079696655): return "neutral" else: return "negative" tweet = st.text_input('Enter a tweet related to the political situation in India.') sentiment_prediction = predict_sentiment(tweet,model_100epoch) st.write("Sentiment prediction in relation to Mr. Narendra Modi :", sentiment_prediction, " => ",result(sentiment_prediction)," sentiment.")