Vargock
changed README file type to .md
a11c611
raw
history blame
3.16 kB
from flask import Flask, render_template, request
from modules.db import init_db, save_message, get_recent
from modules.hf_helpers import hf_infer
from modules.helpers import detect_lang, MODELS, LABELS, update_history, bar
app = Flask(__name__)
init_db()
COLOR_MAP = {
"POSITIVE": "green",
"NEGATIVE": "red",
"NEUTRAL": "orange",
"ПОЗИТИВНЫЙ": "green",
"НЕГАТИВНЫЙ": "red",
"НЕЙТРАЛЬНЫЙ": "orange",
"Emotion": "blue",
"Toxicity": "purple"
}
@app.route("/", methods=["GET", "POST"])
def index():
result = None
if request.method == "POST":
text = request.form.get("text", "").strip()
if text:
user_id = 1
lang = detect_lang(text)
labels = LABELS[lang]
# Sentiment
sentiment_model = MODELS["ru_sentiment"] if lang == "ru" else MODELS["en_sentiment"]
sentiment_data = hf_infer(sentiment_model, text)
sentiment_result = None
if sentiment_data:
top_raw_label = max(sentiment_data, key=lambda x: x["score"])
sentiment = labels.get(top_raw_label["label"].lower() if lang == "ru" else top_raw_label["label"], top_raw_label["label"]).upper()
score = top_raw_label["score"]
sentiment_result = {
"name": sentiment,
"score": int(score * 100),
"bar": bar(score),
"color": COLOR_MAP.get(sentiment, "black")
}
save_message(user_id, text, sentiment, score)
pos_count = update_history(user_id, sentiment_result["name"] if sentiment_result else "")
# Emotion (EN only)
emotion_result = None
if lang == "en":
emo_data = hf_infer(MODELS["emotion"], text)
if emo_data:
top_emo = max(emo_data, key=lambda x: x["score"])
emotion_result = {
"name": top_emo["label"].capitalize(),
"score": int(top_emo["score"]*100),
"bar": bar(top_emo["score"]),
"color": COLOR_MAP["Emotion"]
}
# Toxicity (EN only)
tox_result = None
if lang == "en":
tox_data = hf_infer(MODELS["toxicity"], text)
if tox_data:
top_tox = max(tox_data, key=lambda x: x["score"])
tox_result = {
"name": top_tox["label"],
"score": int(top_tox["score"]*100),
"bar": bar(top_tox["score"]),
"color": COLOR_MAP["Toxicity"]
}
result = {
"sentiment": sentiment_result,
"emotion": emotion_result,
"toxicity": tox_result,
"pos_count": pos_count
}
history = get_recent(1, 10)
return render_template("index.html", result=result, history=history)
if __name__ == "__main__":
app.run(debug=True)