MBTI / core /mbti_analyzer.py
QAway-to
Back to normal app.py v1.3
206b8e2
raw
history blame
1.32 kB
# core/mbti_analyzer.py
from transformers import pipeline
MBTI_MODEL = "f3nsmart/MBTIclassifier"
mbti_pipe = pipeline("text-classification", model=MBTI_MODEL, return_all_scores=True)
def analyze_mbti(user_text: str):
"""Пошаговый MBTI-анализ (генератор для стриминга)."""
yield "⏳ Analyzing personality traits..."
try:
res = mbti_pipe(user_text)[0]
res_sorted = sorted(res, key=lambda x: x["score"], reverse=True)
mbti_text = "\n".join([f"{r['label']}{r['score']:.3f}" for r in res_sorted[:3]])
yield mbti_text
except Exception as e:
yield f"❌ Error: {e}"
def compute_dominant_axis(results):
"""
Преобразует оценки классификатора в MBTI-код.
"""
axes = {
"IE": ("Introversion", "Extroversion"),
"SN": ("Sensing", "Intuition"),
"TF": ("Thinking", "Feeling"),
"JP": ("Judging", "Perceiving")
}
mbti_code = ""
for pair in axes.values():
left, right = pair
left_score = next((r["score"] for r in results if r["label"] == left), 0)
right_score = next((r["score"] for r in results if r["label"] == right), 0)
mbti_code += left[0] if left_score >= right_score else right[0]
return mbti_code