Spaces:
Sleeping
Sleeping
File size: 2,896 Bytes
ad9bf8d 38207ff af09235 e94ec88 b03e8ad 38207ff af09235 e94ec88 af09235 e94ec88 ad9bf8d af09235 e94ec88 b03e8ad af09235 ad9bf8d b03e8ad af09235 b03e8ad e94ec88 b03e8ad 5628a29 b03e8ad 5628a29 b03e8ad 5628a29 b03e8ad 5628a29 38207ff b03e8ad 38207ff b03e8ad 38207ff b03e8ad 38207ff 5628a29 b03e8ad |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
import streamlit as st
import pandas as pd
import google.generativeai as genai # Import Generative AI library
import os
from pymongo import MongoClient
from db import insert_data_if_empty, get_mongo_client # Import functions from db.py
from transformers import pipeline # Import Hugging Face transformers for sentiment analysis
# 🔑 Fetch API key from Hugging Face Secrets
GEMINI_API_KEY = os.getenv("gemini_api")
if GEMINI_API_KEY:
genai.configure(api_key=GEMINI_API_KEY)
else:
st.error("⚠️ Google API key is missing! Set it in Hugging Face Secrets.")
#### **1. Ensure Data is Inserted Before Display**
insert_data_if_empty()
#### **2. MongoDB Connection**
collection = get_mongo_client()
#### **3. Streamlit App to Display Data**
st.title("📊 MongoDB Data Viewer with AI Sentiment Chatbot")
# Show first 5 rows from MongoDB
#st.subheader("First 5 Rows from Database")
#data = list(collection.find({}, {"_id": 0}).limit(5))
#if data:
# st.write(pd.DataFrame(data))
#else:
# st.warning("⚠️ No data found. Try refreshing the app.")
# Button to show full MongoDB data
#if st.button("Show Complete Data"):
# all_data = list(collection.find({}, {"_id": 0}))
# st.write(pd.DataFrame(all_data))
#### **4. Load Sentiment Analysis Model (RoBERTa)**
sentiment_pipeline = pipeline("sentiment-analysis", model="cardiffnlp/twitter-roberta-base-sentiment")
# Function to analyze sentiment
def analyze_sentiment(text):
sentiment_result = sentiment_pipeline(text)[0]
label = sentiment_result['label'] # Extract sentiment label (POSITIVE, NEGATIVE, NEUTRAL)
score = sentiment_result['score'] # Extract confidence score
# Convert labels to a readable format
sentiment_mapping = {
"LABEL_0": "Negative",
"LABEL_1": "Neutral",
"LABEL_2": "Positive"
}
return sentiment_mapping.get(label, "Unknown"), score
#### **5. AI Chatbot with Sentiment Analysis**
st.subheader("🤖 AI Chatbot with Sentiment Analysis")
# User input for chatbot
user_prompt = st.text_area("Ask AI something or paste text for sentiment analysis:")
if st.button("Analyze Sentiment & Get AI Response"):
if user_prompt:
try:
# AI Response from Gemini
model = genai.GenerativeModel("gemini-1.5-pro")
ai_response = model.generate_content(user_prompt)
# Sentiment Analysis
sentiment_label, confidence = analyze_sentiment(user_prompt)
# Display AI Response & Sentiment Analysis
st.write("### AI Response:")
st.write(ai_response.text)
st.write("### Sentiment Analysis:")
st.write(f"**Sentiment:** {sentiment_label} ({confidence:.2f} confidence)")
except Exception as e:
st.error(f"❌ Error: {e}")
else:
st.warning("⚠️ Please enter a question or text for sentiment analysis.")
|