Spaces:
Sleeping
Sleeping
| from flask import Flask, render_template | |
| import pandas as pd | |
| import os | |
| app = Flask(__name__) | |
| # --- Baca data CSV --- | |
| CSV_PATH = "hasil komentar canva Data.csv" | |
| def analyze_sentiment(): | |
| df = pd.read_csv(CSV_PATH) | |
| # Pastikan kolom teks ada | |
| text_col = df.columns[0] # asumsikan kolom pertama berisi teks komentar | |
| texts = df[text_col].astype(str) | |
| # Kamus sentimen sederhana | |
| lexicon = { | |
| "bagus": 1, "hebat": 1, "baik": 1, "keren": 1, "mantap": 1, | |
| "buruk": -1, "jelek": -1, "tidak": -1, "parah": -1, "kurang": -1 | |
| } | |
| results = [] | |
| for text in texts: | |
| score = sum(lexicon.get(word.lower(), 0) for word in text.split()) | |
| if score > 0: | |
| sentiment = "Positif" | |
| elif score < 0: | |
| sentiment = "Negatif" | |
| else: | |
| sentiment = "Netral" | |
| results.append(sentiment) | |
| df["Sentimen"] = results | |
| # Hitung jumlah tiap kategori | |
| summary = df["Sentimen"].value_counts().to_dict() | |
| total = len(df) | |
| pos = summary.get("Positif", 0) | |
| neg = summary.get("Negatif", 0) | |
| neu = summary.get("Netral", 0) | |
| return { | |
| "total": total, | |
| "positive": pos, | |
| "negative": neg, | |
| "neutral": neu, | |
| "data": df.to_dict(orient="records") | |
| } | |
| def dashboard(): | |
| sentiment_data = analyze_sentiment() | |
| return render_template('dashboard.html', sentiment_data=sentiment_data) | |
| def health(): | |
| return {"status": "ok"} | |
| if __name__ == '__main__': | |
| app.run(host="0.0.0.0", port=7860) | |