Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer | |
| import torch | |
| from transformers import pipeline | |
| # Set up the Streamlit app | |
| st.title("Sentiment Analysis App") | |
| st.write('Welcome to my Sentiment Analysis app!') | |
| #subtitle | |
| st.markdown("Sentiment Analysis App using 'streamlit' hosted on hugging spaces ") | |
| st.markdown("") | |
| user_input = st.text_area("Enter your text", value="") | |
| form = st.form(key='sentiment-form') | |
| submit = form.form_submit_button('Submit') | |
| classifier = pipeline(model="distilbert-base-uncased-finetuned-sst-2-english") | |
| classifier("I've been waiting for HuggingFAcecourse my whole life.") | |
| classifier = pipeline(model="distilbert-base-uncased-finetuned-sst-2-english") | |
| result = classifier(user_input)[0] | |
| label = result['label'] | |
| score = result['score'] | |
| if submit: | |
| classifier = pipeline(model="distilbert-base-uncased-finetuned-sst-2-english") | |
| result = classifier(user_input)[0] | |
| label = result['label'] | |
| score = result['score'] | |
| if label == 'POSITIVE': | |
| st.success(f'{label} sentiment (score: {score})') | |
| else: | |
| st.error(f'{label} sentiment (score: {score})') | |
| # Load the sentiment analysis model and tokenizer | |
| model_name = "textattack/bert-base-uncased-SST-2" | |
| model2 = AutoModelForSequenceClassification.from_pretrained(model_name) | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| # Model selection | |
| model_options = { | |
| "BERT-base-uncased-SST-2": "textattack/bert-base-uncased-SST-2", | |
| "BERT-base-cased-finetuned-mrpc": "bert-base-cased-finetuned-mrpc" | |
| } | |
| model_name = st.selectbox("Select a pretrained model", list(model_options.keys())) | |
| model_path = model_options[model_name] | |
| # Sentiment analysis | |
| if st.button("Analyze"): | |
| if user_input.strip() == "": | |
| st.warning("Please enter some text.") | |
| else: | |
| # Tokenize input text | |
| inputs = tokenizer.encode_plus(user_input, return_tensors="pt", padding=True, truncation=True) | |
| # Perform sentiment analysis | |
| with torch.no_grad(): | |
| outputs = model2(**inputs) | |
| logits = outputs.logits | |
| predicted_label = torch.argmax(logits, dim=1).item() | |
| sentiment = "Positive" if predicted_label == 1 else "Negative" | |
| st.success(f"The sentiment of the text is: {sentiment}") | |