File size: 2,127 Bytes
5d6c700
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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("### Descriptive Introduction")
st.sidebar.markdown("This tool leverages Google's NLP technology for text classification.")
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 classify.
3. **Analyze**: Click the 'Analyze' button.
4. **View Results**: See the classified categories and their confidence scores.
""")

# Header and intro
st.title("Google Cloud NLP Text Classifier")
st.write("This tool classifies text into predefined categories.")

def sample_classify_text(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"}
    
    content_categories_version = (
        language_v1.ClassificationModelOptions.V2Model.ContentCategoriesVersion.V2
    )
    response = client.classify_text(
        request={
            "document": document,
            "classification_model_options": {
                "v2_model": {"content_categories_version": content_categories_version}
            },
        }
    )

    st.write(f"### We found {len(response.categories)} categories")
    st.write("---")

    for category in response.categories:
        st.write(f"Category Name: {category.name}")
        st.write(f"Confidence Score: {category.confidence}")
        st.write("---")

# User input for text analysis
user_input = st.text_area("Enter text to classify", max_chars=2500)

if st.button("Analyze"):
    if user_input:
        sample_classify_text(user_input)