5240_project / app.py
miltonc's picture
Update app.py
89edd24 verified
raw
history blame
2.49 kB
import streamlit as st
from transformers import pipeline
from translate import Translator
import time
# Load models
def load_models():
sentiment_analyzer = pipeline("text-classification", model="miltonc/distilbert-base-uncased_ft_5")
summarizer = pipeline("summarization", model="FelixChao/T5-Chinese-Summarization")
return sentiment_analyzer, summarizer
def sentiment_analysis(text, sentiment_analyzer):
try:
result = sentiment_analyzer(text)[0]["generated_text"] #Adjusted max and min lengths.
return result
except Exception as e:
print(f"sentiment_analysis error for '{text}': {e}. Returning 'sentiment_analysis Failed'")
return "sentiment_analysis Failed"
# Generate a narrative story using the GPT-2 genre-based story generator
def summarize_news(text, summarizer):
try:
summary = summarizer(text, max_length=30, min_length=10)[0]['summary_text']
return summary
except Exception as e:
print(f"Summarization error for '{text}': {e}. Returning 'Summarization Failed'")
return "Summarization Failed"
def translate_text(text_to_translate, target_language='en', source_language='zh-TW', delay=1):
translator = Translator()
try:
translation = translator.translate(text_to_translate, dest=target_language, src=source_language)
time.sleep(delay) # Add a delay to avoid rate limiting.
return translation.text
except Exception as e:
print(f"Translation error for '{text_to_translate}': {e}. Returning 'Translation Failed'")
time.sleep(delay)
return "Translation Failed"
# Main Streamlit app
def main():
st.title("AI-Powered Sentiment Analysis and Summarization")
sentiment_analyzer, summarizer = load_models()
text = st.text_area("Enter the Chinese text here.....", height=200) # Changed from file_uploader to text_area
if text: # check if text is not empty
# google translate package
with st.spinner("Analyzing sentiment..."):
text_en = translate_text(text, target_language='en', source_language='zh-TW', delay=1)
sentiment_output = sentiment_analysis(text_en, sentiment_analyzer)
st.write("### Sentiment:")
st.write(sentiment_output)
with st.spinner("Summarizing News..."):
story = summarize_news(text, summarizer)
st.write("### Summarized News:")
st.write(story)
if __name__ == "__main__":
main()