add rudimentary sentiment analysis endpoint to calculate average sentiment of posts

This commit is contained in:
2026-01-11 17:31:37 +00:00
parent 4d459f2035
commit 68642709b7

View File

@@ -1,6 +1,7 @@
from flask import Flask from flask import Flask
from db.database import Database from db.database import Database
from connectors.reddit_connector import RedditConnector from connectors.reddit_connector import RedditConnector
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
app = Flask(__name__) app = Flask(__name__)
db = Database(db_name='ethnograph', user='ethnograph_user', password='ethnograph_pass') db = Database(db_name='ethnograph', user='ethnograph_user', password='ethnograph_pass')
@@ -31,5 +32,33 @@ def fetch_subreddit(subreddit, limit = 10):
return {"status": "success", "inserted_posts": len(posts)} return {"status": "success", "inserted_posts": len(posts)}
@app.route('/sentiment', methods=['GET'])
def sentiment_analysis():
posts = db.execute_query(
"SELECT id, title, content FROM ethnograph.posts;"
)
analyzer = SentimentIntensityAnalyzer()
total_sentiment = 0.0
count = 0
for post in posts:
content = post.get("title")
if not content:
continue
score = analyzer.polarity_scores(content)["compound"]
total_sentiment += score
count += 1
average_sentiment = total_sentiment / count if count else 0.0
return {
"status": "success",
"average_sentiment": average_sentiment,
"posts_analyzed": count
}
if __name__ == "__main__": if __name__ == "__main__":
app.run(debug=True) app.run(debug=True)