feat: add sentiment analysis module using VADER with classify and score functions

Implement a new sentiment.py module that provides VADER-based sentiment analysis. The module includes an `analyze_sentiment_vader` function that classifies text as Positive, Negative, or Neutral based on compound score thresholds (>=0.05, <=-0.05), and a convenience `analyze` function wrapping the analyzer instance. Returns compound score and detailed polarity scores alongside classification.
This commit is contained in:
retoor 2025-10-06 07:35:13 +00:00
parent 422e4bf0c9
commit 4efb11dc6a

35
sentiment.py Normal file
View File

@ -0,0 +1,35 @@
import json
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
def analyze_sentiment_vader(text, analyzer):
"""
Analyzes text using VADER and returns a dictionary with the results.
Args:
text (str): The text content to analyze.
analyzer (SentimentIntensityAnalyzer): An instantiated VADER analyzer.
Returns:
dict: A dictionary containing the sentiment classification, compound score,
and detailed scores (positive, neutral, negative).
"""
scores = analyzer.polarity_scores(text)
compound_score = scores['compound']
if compound_score >= 0.05:
sentiment = 'Positive'
elif compound_score <= -0.05:
sentiment = 'Negative'
else:
sentiment = 'Neutral'
return {
'sentiment': sentiment,
'score': compound_score,
'details': scores
}
vader_analyzer = SentimentIntensityAnalyzer()
def analyze(content):
return analyze_sentiment_vader(content, vader_analyzer)