import pickle from flask import Flask, request, jsonify, render_template from flask_cors import CORS # Load model with open("model/model_knn.pkl", "rb") as f: knn_model = pickle.load(f) with open("model/vectorizer.pkl", "rb") as f: vectorizer = pickle.load(f) app = Flask(__name__, template_folder='templates') CORS(app) labels_map = {0: "Negatif", 1: "Positif"} def predict_knn(text): tfidf_input = vectorizer.transform([text]) pred_label = knn_model.predict(tfidf_input)[0] probabilities = knn_model.predict_proba(tfidf_input)[0] confidence = max(probabilities) * 100 return { "label": labels_map.get(pred_label, str(pred_label)), "confidence": round(confidence, 2) } @app.route("/") def index(): return render_template("index.html") @app.route("/predict", methods=["POST"]) def predict(): data = request.get_json(force=True) text = data.get("text", "") if not text: return jsonify({"error": "No text provided"}), 400 result = predict_knn(text) return jsonify(result) if __name__ == "__main__": app.run(host="0.0.0.0", port=7860)