| | import streamlit as st |
| | from google.cloud import language_v1 |
| | from google.oauth2 import service_account |
| | import json |
| |
|
| | |
| | def load_credentials(): |
| | credentials_info = json.loads(st.secrets["GOOGLE_APPLICATION_CREDENTIALS"]) |
| | return service_account.Credentials.from_service_account_info(credentials_info) |
| |
|
| | |
| | def get_language_client(): |
| | credentials = load_credentials() |
| | return language_v1.LanguageServiceClient(credentials=credentials) |
| |
|
| | |
| | def analyze_sentiment(texts): |
| | client = get_language_client() |
| | document = language_v1.Document(content=texts, type_=language_v1.Document.Type.PLAIN_TEXT) |
| | return client.analyze_sentiment(request={"document": document}) |
| |
|
| | |
| | def display_sentiment_results(annotations): |
| | score = annotations.document_sentiment.score |
| | magnitude = annotations.document_sentiment.magnitude |
| |
|
| | |
| | for index, sentence in enumerate(annotations.sentences): |
| | sentence_sentiment = sentence.sentiment.score |
| | sentence_text = sentence.text.content |
| | st.write(f"Sentence {index} sentiment score: {sentence_sentiment:.2f}") |
| | st.write(f"Sentence {index}: {sentence_text}") |
| |
|
| | |
| | st.write(f"Overall Sentiment: score of {score:.2f} with magnitude of {magnitude:.2f}") |
| |
|
| | |
| | def main(): |
| | st.title("Sentiment Analysis App") |
| | st.write("Enter some text to analyze its sentiment:") |
| |
|
| | text_input = st.text_area("Text to analyze", height=200) |
| |
|
| | if st.button("Analyze Sentiment"): |
| | if text_input: |
| | annotations = analyze_sentiment(text_input) |
| | display_sentiment_results(annotations) |
| | else: |
| | st.warning("Please enter some text.") |
| |
|
| | |
| | if __name__ == "__main__": |
| | main() |
| |
|