import json import streamlit as st from google.oauth2 import service_account from google.cloud import language_v1 # Sidebar content st.sidebar.title("About This Tool") st.sidebar.markdown("This tool leverages Google's NLP technology for entity analysis.") st.sidebar.markdown("### Step-by-Step Guide") st.sidebar.markdown(""" 1. **Open the Tool**: Navigate to the URL where the tool is hosted. 2. **User Input**: Enter the text you want to analyze. 3. **Analyze**: Click the 'Analyze' button. 4. **View Results**: See the identified entities and their details. To do: https://www.linkedin.com/pulse/seo-content-writing-how-optimize-entity-salience-emmanuel-dan-awoh/ """) # Header and intro st.title("Google Cloud NLP Entity Analyzer") st.write("This tool analyzes text to identify entities such as people, locations, organizations, and events") st.write("Entity salience scores are always relative to the analysed text. In natural language processing, a salience score is always a prediction of what a human would consider to be the most important entities in the same text. A number of textual features contribute to the salience score.") def sample_analyze_entities(text_content): # Assuming service_account_info is set in your Streamlit secrets service_account_info = json.loads(st.secrets["google_nlp"]) credentials = service_account.Credentials.from_service_account_info( service_account_info, scopes=["https://www.googleapis.com/auth/cloud-platform"] ) client = language_v1.LanguageServiceClient(credentials=credentials) document = {"content": text_content, "type_": language_v1.Document.Type.PLAIN_TEXT, "language": "en"} encoding_type = language_v1.EncodingType.UTF8 response = client.analyze_entities(request={"document": document, "encoding_type": encoding_type}) st.write(f"### We found {len(response.entities)} entities") st.write("---") for i, entity in enumerate(response.entities): st.write(f"Entity {i+1} of {len(response.entities)}") st.write(f"Name: {entity.name}") st.write(f"Type: {language_v1.Entity.Type(entity.type_).name}") st.write(f"Salience Score: {entity.salience}") if entity.metadata: st.write("Metadata:") st.write(entity.metadata) if entity.mentions: st.write("Mentions:") st.write(', '.join([mention.text.content for mention in entity.mentions])) st.write("---") # User input for text analysis user_input = st.text_area("Enter text to analyze", max_chars=2500) if st.button("Analyze"): if user_input: sample_analyze_entities(user_input)