Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import praw | |
| import googleapiclient.discovery | |
| import pandas as pd | |
| import joblib | |
| from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer | |
| from transformers import pipeline | |
| # Load pre-trained regression model (if available) | |
| try: | |
| model = joblib.load("sentiment_regression.pkl") | |
| except: | |
| model = None | |
| # Reddit Authentication | |
| def authenticate_reddit(): | |
| return praw.Reddit( | |
| client_id=st.secrets["REDDIT_CLIENT_ID"], | |
| client_secret=st.secrets["REDDIT_CLIENT_SECRET"], | |
| user_agent=st.secrets["REDDIT_USER_AGENT"] | |
| ) | |
| # YouTube Authentication | |
| def authenticate_youtube(): | |
| return googleapiclient.discovery.build("youtube", "v3", developerKey=st.secrets["YOUTUBE_API_KEY"]) | |
| # Sentiment Analysis Functions | |
| def vader_sentiment(text): | |
| analyzer = SentimentIntensityAnalyzer() | |
| return analyzer.polarity_scores(text)["compound"] | |
| def bert_sentiment(text): | |
| sentiment_pipeline = pipeline("sentiment-analysis") | |
| return sentiment_pipeline(text)[0]['label'] | |
| def regression_sentiment(text): | |
| if model: | |
| return model.predict([text])[0] | |
| return "Model not trained yet" | |
| # Fetch Reddit Data | |
| def get_reddit_data(keyword): | |
| reddit = authenticate_reddit() | |
| posts = [] | |
| for submission in reddit.subreddit("all").search(keyword, limit=10): | |
| posts.append(submission.title) | |
| return posts | |
| # Fetch YouTube Data | |
| def get_youtube_data(keyword): | |
| youtube = authenticate_youtube() | |
| request = youtube.search().list(q=keyword, part="snippet", maxResults=10) | |
| response = request.execute() | |
| return [item["snippet"]["title"] for item in response.get("items", [])] | |
| # Streamlit UI | |
| st.title("Sentiment Analysis App") | |
| keyword = st.text_input("Enter a keyword to analyze:") | |
| if keyword: | |
| reddit_data = get_reddit_data(keyword) | |
| youtube_data = get_youtube_data(keyword) | |
| st.subheader("Reddit Sentiment") | |
| for post in reddit_data: | |
| st.write(f"🔹 {post}") | |
| st.write(f"VADER Sentiment: {vader_sentiment(post)}") | |
| st.write(f"BERT Sentiment: {bert_sentiment(post)}") | |
| st.write(f"Regression Sentiment: {regression_sentiment(post)}") | |
| st.write("---") | |
| st.subheader("YouTube Sentiment") | |
| for title in youtube_data: | |
| st.write(f"📺 {title}") | |
| st.write(f"VADER Sentiment: {vader_sentiment(title)}") | |
| st.write(f"BERT Sentiment: {bert_sentiment(title)}") | |
| st.write(f"Regression Sentiment: {regression_sentiment(title)}") | |
| st.write("---") | |