DilshanKavinda's picture
create app.py
1694d91 verified
import streamlit as st
from transformers import pipeline
def main():
st.title("Sentiment analysis")
st.header("Add comment")
input = st.text_input("Enter a new comment:")
if st.button("Add"):
add_input_text(input)
result_list(input)
display_comments()
def add_input_text(input):
if input:
if 'input_text' not in st.session_state:
st.session_state.input_text = []
st.session_state.input_text.append(input)
def result_list(input):
if input:
if 'result_list' not in st.session_state:
st.session_state.result_list = []
pipe = pipeline("text-classification", model="cardiffnlp/twitter-roberta-base-sentiment-latest")
sentiment = pipe(input)
result = sentiment[0]['label']
st.session_state.result_list.append(result)
def display_comments():
if 'result_list' in st.session_state:
st.header("Filter by Type")
filter_option = st.selectbox("Select type:", ["All", "Positive", "Negative"])
if filter_option == "All":
st.header(f"{len(st.session_state.result_list)} comments")
elif filter_option == "Positive":
st.header(f"{st.session_state.result_list.count('positive')} comments")
elif filter_option == "Negative":
st.header(f"{st.session_state.result_list.count('negative')} comments")
for id,result in enumerate(st.session_state.result_list):
if filter_option == "All":
# st.header(f"{len(st.session_state.result_list)} comments")
if result == 'positive':
st.success(st.session_state.input_text[id])
else:
st.error(st.session_state.input_text[id])
elif filter_option == "Positive" and result == 'positive':
# st.header(f"{st.session_state.result_list.count('positive')} comments")
st.success(st.session_state.input_text[id])
elif filter_option == "Negative" and result == 'negative':
st.error(st.session_state.input_text[id])
if __name__ == "__main__":
main()