from flask import Flask, request, render_template import pickle from preprocessing import preprocess_text # pastikan file preprocessing.py ada di folder yang sama app = Flask(__name__) with open('model_SVM.pkl', 'rb') as f: model_SVM = pickle.load(f) with open('model_NB.pkl', 'rb') as f: model_NB = pickle.load(f) def classify_text(processed_text): result_svm = model_SVM.predict([processed_text])[0] result_nb = model_NB.predict([processed_text])[0] return result_svm, result_nb @app.route('/', methods=['GET', 'POST']) def index(): input_text = '' processed_steps = {} result_svm = '' result_nb = '' tfidf_dict = {} if request.method == 'POST': input_text = request.form['text'] processed_steps = preprocess_text(input_text) # Gunakan hasil akhir (stemming) untuk prediksi dan TF-IDF final_text = processed_steps.get("stemming", "") result_svm, result_nb = classify_text(final_text) # Dapatkan nilai TF-IDF dari vectorizer di pipeline model_SVM vectorizer = model_SVM.named_steps['vectorizer'] tfidf_vector = vectorizer.transform([final_text]) dense = tfidf_vector.todense().tolist()[0] features = vectorizer.get_feature_names_out() tfidf_dict = {feature: round(value, 3) for feature, value in zip(features, dense) if value > 0} return render_template('index.html', input_text=input_text, processed_steps=processed_steps, result_svm=result_svm, result_nb=result_nb, tfidf_dict=tfidf_dict) if __name__ == '__main__': app.run(debug=True)