import streamlit as st import pandas as pd import requests import io from pymongo import MongoClient from transformers import pipeline #### **1. MongoDB Connection** def get_mongo_client(): client = MongoClient("mongodb+srv://groupA:pythongroupA@sentimentcluster.4usfj.mongodb.net/?retryWrites=true&w=majority&appName=SentimentCluster") db = client["sentiment_db"] return db["tweets"] collection = get_mongo_client() #### **2. Load Dataset from Hugging Face** csv_url = "https://huggingface.co/spaces/sharangrav24/SentimentAnalysis/resolve/main/sentiment140.csv" try: response = requests.get(csv_url) response.raise_for_status() # Ensure the request was successful df = pd.read_csv(io.StringIO(response.text), encoding="ISO-8859-1") st.success("Dataset Loaded Successfully!") except Exception as e: st.error(f"Error loading dataset: {e}") st.stop() #### **3. Sentiment Analysis using BERT-ROBERTA** st.info("Running Sentiment Analysis...") sentiment_pipeline = pipeline("sentiment-analysis", model="cardiffnlp/twitter-roberta-base-sentiment") # Function to analyze sentiment def analyze_sentiment(text): return sentiment_pipeline(text)[0]['label'] df["sentiment"] = df["text"].apply(analyze_sentiment) #### **4. Upload Data to MongoDB** collection.delete_many({}) # Optional: Clear existing data before inserting collection.insert_many(df.to_dict("records")) st.success("Data Uploaded to MongoDB!") #### **5. Build Streamlit Dashboard** st.title("📊 Sentiment Analysis Dashboard") # Show first 5 rows from MongoDB st.subheader("First 5 Rows from Database") data = list(collection.find({}, {"_id": 0}).limit(5)) st.write(pd.DataFrame(data)) # Buttons to display more data if st.button("Show Complete Data"): st.write(df) if st.button("Show MongoDB Data"): data = list(collection.find({}, {"_id": 0})) st.write(pd.DataFrame(data))