|
""" |
|
Sentiment mapping utilities for different model outputs. |
|
""" |
|
|
|
from typing import Dict |
|
from ..config.settings import SENTIMENT_MAPPINGS |
|
|
|
|
|
def get_sentiment_mapping(num_classes: int) -> Dict[int, str]: |
|
""" |
|
Get the sentiment mapping based on number of classes. |
|
|
|
Args: |
|
num_classes: Number of output classes from the model |
|
|
|
Returns: |
|
Dictionary mapping class indices to sentiment labels |
|
""" |
|
return SENTIMENT_MAPPINGS.get( |
|
num_classes, {i: f"Class_{i}" for i in range(num_classes)} |
|
) |
|
|
|
|
|
def get_sentiment_colors() -> Dict[str, str]: |
|
""" |
|
Get color-coded sentiment display mapping. |
|
|
|
Returns: |
|
Dictionary mapping sentiment labels to emoji indicators |
|
""" |
|
return { |
|
"Positive": "π’", |
|
"Negative": "π΄", |
|
"Neutral": "π‘", |
|
"Angry": "π΄", |
|
"Sad": "π΅", |
|
"Happy": "π’", |
|
"Fear": "π£", |
|
"Disgust": "π ", |
|
"Surprise": "π‘", |
|
} |
|
|
|
|
|
def format_sentiment_result( |
|
sentiment: str, confidence: float, input_info: str = "", model_name: str = "" |
|
) -> str: |
|
""" |
|
Format sentiment analysis result for display. |
|
|
|
Args: |
|
sentiment: Predicted sentiment label |
|
confidence: Confidence score |
|
input_info: Information about the input |
|
model_name: Name of the model used |
|
|
|
Returns: |
|
Formatted result string |
|
""" |
|
colors = get_sentiment_colors() |
|
emoji = colors.get(sentiment, "β") |
|
|
|
result = f"{emoji} Sentiment: {sentiment}\n" |
|
result += f"Confidence: {confidence:.2f}\n" |
|
|
|
if input_info: |
|
result += f"Input: {input_info}\n" |
|
|
|
if model_name: |
|
result += f"Model: {model_name}\n" |
|
|
|
return result |
|
|