Sentiment Analysis Model
This model performs sentiment analysis and emotion detection on text data.
Model Files
_tfidf_vectorizer.pkl: TF-IDF vectorizer for text preprocessingemotion_encoder.pkl: Label encoder for emotionsemotion_model.pkl: Trained emotion classification modelsentiment_encoder.pkl: Label encoder for sentimentssentiment_model.pkl: Trained sentiment classification model
Usage
import joblib import re import pandas as pd
Load models models = { 'emotion_model': joblib.load('models/emotion_model.pkl'), 'sentiment_model': joblib.load('models/sentiment_model.pkl'), 'vectorizer': joblib.load('models/_tfidf_vectorizer.pkl'), 'emotion_encoder': joblib.load('models/emotion_encoder.pkl'), 'sentiment_encoder': joblib.load('models/sentiment_encoder.pkl') }
def preprocess_text(text): if pd.isna(text) or not text: return "" text = str(text).lower() text = re.sub(r'[^a-zA-Z\s]', '', text) text = ' '.join(text.split()) return text
def analyze_text(text, models): cleaned_text = preprocess_text(text) if not cleaned_text: return None
text_vector = models['vectorizer'].transform([cleaned_text])
emotion_pred = models['emotion_model'].predict(text_vector) emotion_probs = models['emotion_model'].predict_proba(text_vector) emotion_label = models['emotion_encoder'].inverse_transform([emotion_pred])
sentiment_pred = models['sentiment_model'].predict(text_vector) sentiment_probs = models['sentiment_model'].predict_proba(text_vector) sentiment_label = models['sentiment_encoder'].inverse_transform([sentiment_pred])
return { 'emotion': emotion_label, 'emotion_confidence': max(emotion_probs), 'sentiment': sentiment_label, 'sentiment_confidence': max(sentiment_probs), 'overall_confidence': (max(emotion_probs) + max(sentiment_probs)) / 2 }
Example usage result = analyze_text("I love this product!", models) print(result)
text
Requirements
- scikit-learn
- pandas
- numpy
- joblib