import streamlit as st from transformers import pipeline from googletrans 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()