# app.py - very simple Flask emotion detector # English (joblib) + Sinhala & Tamil (transformers) from flask import Flask, render_template, request import joblib from huggingface_hub import hf_hub_download from transformers import pipeline app = Flask(__name__) print("Loading English model...") vectorizer = joblib.load(hf_hub_download( "E-motionAssistant/Englsih_Trained_Model_LR", "tfidf_vectorizer.joblib" )) classifier = joblib.load(hf_hub_download( "E-motionAssistant/Englsih_Trained_Model_LR", "logreg_model.joblib" )) label_encoder = joblib.load(hf_hub_download( "E-motionAssistant/Englsih_Trained_Model_LR", "label_encoder.joblib" )) print("Loading Sinhala model...") sinhala_pipe = pipeline("text-classification", model="E-motionAssistant/Sinhala_Text_Emotion_Model_Retrained") print("Loading Tamil model...") tamil_pipe = pipeline("text-classification", model="E-motionAssistant/Tamil_Emotion_Recognition_Model") print("All models loaded successfully!") @app.route("/", methods=["GET", "POST"]) def home(): english_result = "" sinhala_result = "" tamil_result = "" if request.method == "POST": action = request.form.get("action") if action == "predict_english": text = request.form.get("english_text", "").strip() if text: X = vectorizer.transform([text]) pred = classifier.predict(X)[0] emotion = label_encoder.inverse_transform([pred])[0] english_result = f"Emotion: {emotion}" else: english_result = "Please write something" elif action == "predict_sinhala": text = request.form.get("sinhala_text", "").strip() if text: res = sinhala_pipe(text)[0] sinhala_result = f"හැඟීම: {res['label']} ({res['score']:.3f})" else: sinhala_result = "කරුණාකර යමක් ලියන්න" elif action == "predict_tamil": text = request.form.get("tamil_text", "").strip() if text: res = tamil_pipe(text)[0] tamil_result = f"உணர்வு: {res['label']} ({res['score']:.3f})" else: tamil_result = "கருணையுடன் உரையை உள்ளிடவும்" return render_template( "index.html", english_result=english_result, sinhala_result=sinhala_result, tamil_result=tamil_result ) if __name__ == "__main__": app.run(host="0.0.0.0", port=7860, debug=False)