import joblib import pandas as pd import gradio as gr vec = joblib.load('vectorizer.joblib') feature_names = vec.get_feature_names_out() knn = joblib.load('best_knn.joblib') lreg = joblib.load('best_lreg.joblib') svm = joblib.load('best_svm.joblib') forest = joblib.load('best_forest.joblib') knn_label = "KNN Classifier" lreg_label = "Logistic Regression" svm_label = "Support Vector Machine" forest_label = "Random Forest" str_to_model = { knn_label: knn, lreg_label: lreg, svm_label: svm, forest_label: forest } review_input = gr.Textbox(label = 'Review Comment') dropdown_input = gr.Dropdown([knn_label, lreg_label, svm_label, forest_label], label='Method') def multi_inputs(review, model_label): model = str_to_model[model_label] mat = vec.transform([review]) bow = pd.DataFrame(mat.toarray(), columns=feature_names) a = model.predict(bow)[0] b = model.predict_proba(bow)[0] out1 = 'Negative comment' if a == 0 else 'Positive comment' out2 = f'{b[0]*100:.0f}%' out3 = f'{b[1]*100:.0f}%' return out1, out2, out3