Spaces:
Sleeping
Sleeping
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() | |