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] # models = gr.Radio(['Random Forest', 'Logistic Regression','Naive Bayes','Decision Tree','KNN'], label="Choose model") # demo = gr.Interface(fn=predict, inputs=[models,"text"], outputs="image", title="Sentiment Analysis") demo = gr.Interface(fn=analyze_sentiment, inputs="text", outputs="image", title="Sentiment Analysis") demo.launch(share=True)