|
import gradio as gr |
|
import pickle |
|
from transformers import pipeline |
|
|
|
def load_model(selected_model): |
|
with open(selected_model, 'rb') as file: |
|
loaded_model = pickle.load(file) |
|
return loaded_model |
|
|
|
encoder = { |
|
'negative':'assets/negative.jpeg', |
|
'neutral':'assets/neutral.jpeg', |
|
'positive':'assets/positive.jpeg' |
|
} |
|
|
|
def predict(model, text): |
|
|
|
selected_model = None |
|
with open('vectorizer.pkl', 'rb') as file: |
|
vectorizer = pickle.load(file) |
|
|
|
if 'Random Forest' == model: |
|
selected_model = "models/rf_twitter.pkl" |
|
elif 'Logistic Regression' == model: |
|
selected_model = "models/lg_twitter.pkl" |
|
elif 'Naive Bayes' == model: |
|
selected_model = "models/nb_twitter.pkl" |
|
elif 'Decision Tree' == model: |
|
selected_model = "models/dt_twitter.pkl" |
|
elif 'KNN' == model: |
|
selected_model = "models/knn_twitter.pkl" |
|
else: |
|
selected_model = "models/lg_twitter.pkl" |
|
loaded_model = load_model(selected_model) |
|
text_vector = vectorizer.transform([text]) |
|
prediction = loaded_model.predict(text_vector) |
|
return encoder[prediction[0]] |
|
|
|
classifier = pipeline(task="zero-shot-classification", model="facebook/bart-large-mnli") |
|
def analyze_sentiment(text): |
|
results = classifier(text,["positive","negative",'neutral'],multi_label=True) |
|
mx = max(results['scores']) |
|
ind = results['scores'].index(mx) |
|
result = results['labels'][ind] |
|
return encoder[result] |
|
|
|
|
|
|
|
demo = gr.Interface(fn=analyze_sentiment, inputs="text", outputs="image", title="Sentiment Analysis") |
|
demo.launch(share=True) |