File size: 2,489 Bytes
885aabb
 
89edd24
96b6fc1
885aabb
 
 
96b6fc1
 
 
 
 
 
 
 
 
 
 
 
885aabb
 
86f6523
96b6fc1
 
 
 
 
 
 
 
885aabb
96b6fc1
 
 
 
 
 
 
 
 
 
885aabb
 
 
96b6fc1
3f152b0
96b6fc1
885aabb
96b6fc1
885aabb
96b6fc1
 
 
 
 
 
 
885aabb
96b6fc1
 
 
3f152b0
885aabb
 
 
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
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()