File size: 5,392 Bytes
32c9084 a906ccd 32c9084 35ef636 32c9084 a906ccd 0e5f8d9 32c9084 a906ccd d19d235 9e19736 c9d9479 9e19736 c9d9479 a906ccd 1cbfec0 2c0ab44 a906ccd dd63333 a906ccd f7d4880 9e19736 a906ccd 9e19736 f35d308 d19d235 f35d308 2c5fe61 f35d308 8cf4aa8 492c1a0 f35d308 a4dab2d 2c5fe61 492c1a0 2c5fe61 dbdc1d5 f35d308 8cf4aa8 f35d308 8cf4aa8 |
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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
#x = st.slider('Select a value')
#st.write(x, 'squared is', x * x)
import streamlit as st
from transformers import pipeline
import ast
# Load the summarization model
#summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6") # smaller version of the model
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
# Default article text
# DEFAULT_ARTICLE = """ New York (CNN)When Liana Barrientos was 23 years old, she got married in Westchester County, New York.
# A year later, she got married again in Westchester County, but to a different man and without divorcing her first husband.
# Only 18 days after that marriage, she got hitched yet again. Then, Barrientos declared "I do" five more times, sometimes only within two weeks of each other.
# In 2010, she married once more, this time in the Bronx. In an application for a marriage license, she stated it was her "first and only" marriage.
# Barrientos, now 39, is facing two criminal counts of "offering a false instrument for filing in the first degree," referring to her false statements on the
# 2010 marriage license application, according to court documents.
# """
# DEFAULT_STATEMENT = ""
# # Create a text area for user input
# STATEMENT = st.sidebar.text_area('Enter Article (String)', DEFAULT_ARTICLE, height=150)
# Define the summarization function
def summarize(txt):
st.write('\n\n')
st.write(txt[:100]) # Display the first 100 characters of the article
st.write('--------------------------------------------------------------')
summary = summarizer(txt, max_length=130, min_length=30, do_sample=False)
st.write(summary[0]['summary_text'])
DEFAULT_STATEMENT = ""
# Create a text area for user input
STATEMENT = st.sidebar.text_area('Enter Statement (String or List of Strings)', DEFAULT_STATEMENT, height=150)
# Enable the button only if there is text in the SENTIMENT variable
if STATEMENT:
if st.sidebar.button('Summarize Statement'):
# Call your Summarize function here
#st.write(f"Summarizing: {STATEMENT}")
summarize(STATEMENT) # Directly pass the STATEMENT
else:
st.sidebar.button('Summarize Statement', disabled=True)
st.warning('π Please enter Statement!')
# # Create a button and trigger the summarize function when clicked
# if st.sidebar.button('Summarize Article'):
# summarize(ARTICLE)
# else:
# st.warning('π Please enter Article!')
#################################
# Initialize the sentiment analysis pipeline
# No model was supplied, defaulted to distilbert-base-uncased-finetuned-sst-2-english
sentiment_pipeline = pipeline("sentiment-analysis")
# Default article text
# DEFAULT_SENTIMENT = """[
# "I'm so happy today!",
# "This is the worst experience ever.",
# "It's a decent product, nothing special."
# ]"""
# DEFAULT_SENTIMENT = "I'm so happy today!"
def is_valid_list_string(string):
try:
result = ast.literal_eval(string)
return isinstance(result, list)
except (ValueError, SyntaxError):
return False
# Define the summarization function
def analyze(txt):
st.write('\n\n')
#st.write(txt[:100]) # Display the first 100 characters of the article
st.write('--------------------------------------------------------------')
# Display the results
#if type(txt_converted) == 'list':
#if isinstance(txt_converted, list):
if is_valid_list_string(txt):
txt_converted = ast.literal_eval(txt) #convert string to actual content, e.g. list
# Perform Hugging sentiment analysis on multiple texts
results = sentiment_pipeline(txt_converted)
for i, text in enumerate(txt_converted):
st.write(f"Text: {text}")
st.write(f"Sentiment: {results[i]['label']}, Score: {results[i]['score']:.2f}\n")
else:
# Perform Hugging sentiment analysis on multiple texts
results = sentiment_pipeline(txt)
st.write(f"Text: {txt}")
st.write(f"Sentiment: {results[0]['label']}, Score: {results[0]['score']:.2f}\n")
DEFAULT_SENTIMENT = ""
# Create a text area for user input
SENTIMENT = st.sidebar.text_area('Enter Sentiment (String or List of Strings)', DEFAULT_SENTIMENT, height=150)
# Enable the button only if there is text in the SENTIMENT variable
if SENTIMENT:
if st.sidebar.button('Analyze Sentiment'):
# Call your Analyze function here
#st.write(f"Summarizing: {SENTIMENT}")
analyze(SENTIMENT) # Directly pass the SENTIMENT
else:
st.sidebar.button('Summarize Sentiment', disabled=True)
st.warning('π Please enter Sentiment!')
# # Create a button and trigger the summarize function when clicked
# if st.sidebar.button('Summarize Sentiment'):
# #ast.literal_eval() is a function in Python that safely evaluates a string containing a valid Python expression,
# #such as lists, dictionaries, tuples, sets, integers, and floats. It parses the string and returns the corresponding
# #Python object, without executing any arbitrary code, which makes it safer than using eval().
# #summarize(str(SENTIMENT)) #explicitly change SENTIMENT to string so that even when ypu provide unquoted string, it still works
# analyze(SENTIMENT) # Directly pass the SENTIMENT
# else:
# st.warning('π Please enter Sentiment!') |