gridflowai's picture
Upload 7 files
c24562e
raw
history blame
3.59 kB
import gradio as gr
import numpy as np
from tensorflow.keras.models import load_model
import re
#importing skearn and joblib modules
import joblib
import sklearn
# setting the joblib
sklearn.externals.joblib = joblib# Load the models
lr_model = joblib.load("logistic_model.pkl")
svm_model = joblib.load("svm_model.pkl")
nn_model = load_model("dl_model.h5")
mnb_model = joblib.load("mnb_model.pkl")
TAG_RE = re.compile(r'<[^>]+>')
def remove_tags(text):
return TAG_RE.sub('', text)
# Load other necessary files like vectorizers or scalers
tfidf_vectorizer = joblib.load("tfidf_vectorizer.pkl")
def preprocess_text(sen):
# Removing html tags
sentence = remove_tags(sen)
# Remove punctuations and numbers
sentence = re.sub('[^a-zA-Z]', ' ', sentence)
# Single character removal
sentence = re.sub(r"\s+[a-zA-Z]\s+", ' ', sentence)
# Removing multiple spaces
sentence = re.sub(r'\s+', ' ', sentence)
return sentence
# Function to predict sentiment using Logistic Regression
# Function to predict sentiment using Logistic Regression
def predict_lr(text):
preprocessed_text = preprocess_text(text)
vectorized_text = tfidf_vectorizer.transform([preprocessed_text])
dense_vectorized_text = vectorized_text.toarray() # Convert to dense array
prediction = int(lr_model.predict(dense_vectorized_text)[0])
return prediction
# Function to predict sentiment using SVM
def predict_svm(text):
preprocessed_text = preprocess_text(text)
vectorized_text = tfidf_vectorizer.transform([preprocessed_text])
dense_vectorized_text = vectorized_text.toarray() # Convert to dense array
prediction = int(svm_model.predict(dense_vectorized_text)[0])
return prediction
# Function to predict sentiment using Neural Network
def predict_nn(text):
preprocessed_text = preprocess_text(text)
vectorized_text = tfidf_vectorizer.transform([preprocessed_text])
dense_vectorized_text = vectorized_text.toarray() # Convert to dense array
prediction_probs = nn_model.predict(dense_vectorized_text)[0]
prediction = int(np.argmax(prediction_probs))
return prediction
# Function to predict sentiment using Multinomial Naive Bayes
def predict_mnb(text):
preprocessed_text = preprocess_text(text)
vectorized_text = tfidf_vectorizer.transform([preprocessed_text])
dense_vectorized_text = vectorized_text.toarray() # Convert to dense array
prediction = int(mnb_model.predict(dense_vectorized_text)[0])
return prediction
# Set the function based on the selected model
def sentiment_prediction(text, model):
if model == "Logistic Regression":
prediction = predict_lr(text)
elif model == "SVM":
prediction = predict_svm(text)
elif model == "Neural Network":
prediction = predict_nn(text)
elif model == "Multinomial Naive Bayes":
prediction = predict_mnb(text)
threshold = 0.5
# Logic for determining positive or negative sentiment based on the model's prediction
if prediction >= threshold:
return "Positive"
else:
return "Negative"
# Create the Gradio interface
iface = gr.Interface(
fn=sentiment_prediction,
inputs=[gr.Textbox(type="text", label="Enter Text"), gr.Dropdown(["Logistic Regression", "SVM", "Neural Network", "Multinomial Naive Bayes"], label="Select Model")],
outputs=gr.Label(),
live=True,
title="Sentiment Analysis with Model Selection",
description="Enter a text and choose a model for sentiment prediction.",
)
# Launch the Gradio interface
iface.launch()
iface.launch()