# sentiment_analyzer.py - 情感分析核心模块
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
from typing import Dict, Optional

# 全局初始化情感分析器（单例模式，避免重复创建提升性能）
_sentiment_analyzer = SentimentIntensityAnalyzer()

def analyze_sentiment(text: str) -> Optional[Dict[str, float]]:
    """
    对输入文本进行情感分析，返回多维度情感得分
    
    参数:
        text: 待分析的文本字符串（支持中英文短文本）
    
    返回:
        Dict: 包含4个维度的得分（neg/neu/pos/compound）
            - neg: 负面情感占比 (0~1)
            - neu: 中性情感占比 (0~1)
            - pos: 正面情感占比 (0~1)
            - compound: 综合情感得分 (-1~1，越接近1越正面)
        None: 输入文本为空/无效时返回
    """
    # 输入清洗与校验
    cleaned_text = text.strip()
    if not cleaned_text:
        print("[错误] 输入文本不能为空！")
        return None
    
    # 调用VADER进行情感分析
    sentiment_scores = _sentiment_analyzer.polarity_scores(cleaned_text)
    return sentiment_scores

def get_sentiment_label(compound_score: float) -> str:
    """
    将综合情感得分转换为易理解的标签
    
    参数:
        compound_score: analyze_sentiment返回的compound值
    
    返回:
        str: 正面/中性/负面
    """
    if compound_score >= 0.05:
        return "正面"
    elif compound_score <= -0.05:
        return "负面"
    else:
        return "中性"