Spaces:
Runtime error
Runtime error
import streamlit as st | |
import tensorflow as tf | |
from transformers import pipeline | |
from textblob import TextBlob | |
from transformers import AutoTokenizer, AutoModelForSequenceClassification | |
import torch | |
import torch.nn.functional as F | |
model_name = "distilbert-base-uncased-finetuned-sst-2-english" | |
model = AutoModelForSequenceClassification.from_pretrained(model_name) | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
classifier = pipeline(task="sentiment-analysis", model=model, tokenizer=tokenizer) | |
textIn = st.text_input("Input Text Here:", "I really like the color of your car!") | |
option = st.selectbox('Which pre-trained model would you like for your sentiment analysis?',('Pipeline', 'TextBlob', 'MILESTONE 3: FINE-TUNED')) | |
st.write('You selected:', option) | |
#------------------------------------------------------------------------ | |
# tokens = tokenizer.tokenize(textIn) | |
# token_ids = tokenizer.convert_tokens_to_ids(tokens) | |
# input_ids = tokenizer(textIn) | |
# X_train = [textIn] | |
# batch = tokenizer(X_train, padding=True, truncation=True, max_length=512, return_tensors="pt") | |
# # batch = torch.tensor(batchbatch["input_ids"]) | |
# with torch.no_grad(): | |
# outputs = model(**batch, labels=torch.tensor([1, 0])) | |
# predictions = F.softmax(outputs.logits, dim=1) | |
# labels = torch.argmax(predictions, dim=1) | |
# labels = [model.config.id2label[label_id] for label_id in labels.tolist()] | |
# # save_directory = "saved" | |
# tokenizer.save_pretrained(save_directory) | |
# model.save_pretrained(save_directory) | |
# tokenizer = AutoTokenizer.from_pretrained(save_directory) | |
# model = AutoModelForSequenceClassification.from_pretrained(save_directory) | |
#------------------------------------------------------------------------ | |
if option == 'Pipeline': | |
# pipeline | |
preds = classifier(textIn) | |
preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds] | |
st.write('According to Pipeline, input text is ', preds[0]['label'], ' with a confidence of ', preds[0]['score']) | |
if option == 'TextBlob': | |
# textblob | |
polarity = TextBlob(textIn).sentiment.polarity | |
subjectivity = TextBlob(textIn).sentiment.subjectivity | |
sentiment = '' | |
if polarity < 0: | |
sentiment = 'Negative' | |
elif polarity == 0: | |
sentiment = 'Neutral' | |
else: | |
sentiment = 'Positive' | |
st.write('According to TextBlob, input text is ', sentiment, ' and a subjectivity score (from 0 being objective to 1 being subjective) of ', subjectivity) | |
if option == 'MILESTONE 3: FINE-TUNED': | |
... |