Spaces:
Sleeping
Sleeping
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:[email protected]/?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)) | |