news-summarize / sentiment_analysis.py
Manishkumaryadav's picture
Upload 8 files
706ec74 verified
raw
history blame
1.61 kB
import pandas as pd
from textblob import TextBlob
def analyze_sentiment(text):
"""Perform sentiment analysis on the given text."""
try:
blob = TextBlob(text)
polarity = blob.sentiment.polarity
if polarity > 0:
sentiment = "Positive"
elif polarity < 0:
sentiment = "Negative"
else:
sentiment = "Neutral"
return sentiment, round(polarity, 2)
except Exception as e:
print(f"Error in sentiment analysis: {e}")
return "Neutral", 0.0
def perform_sentiment_analysis(csv_file):
"""Analyze sentiment for all articles in the CSV."""
df = pd.read_csv(csv_file)
if 'summary' not in df.columns:
print("No 'summary' column found in CSV.")
return None
df['sentiment'], df['polarity'] = zip(*df['summary'].apply(analyze_sentiment))
# Save the result with sentiment analysis
output_csv = csv_file.replace('.csv', '_sentiment.csv')
df.to_csv(output_csv, index=False)
print(f"βœ… Sentiment analysis saved to {output_csv}")
return df
def comparative_analysis(df):
"""Perform comparative sentiment analysis across multiple articles."""
sentiment_counts = df['sentiment'].value_counts(normalize=True) * 100
print("\nπŸ“Š Sentiment Distribution:")
print(sentiment_counts)
summary = {
"positive": sentiment_counts.get("Positive", 0),
"negative": sentiment_counts.get("Negative", 0),
"neutral": sentiment_counts.get("Neutral", 0)
}
return summary