| 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 |