Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,15 +1,13 @@
|
|
| 1 |
#!/usr/bin/env python3
|
| 2 |
# -*- coding: utf-8 -*-
|
| 3 |
"""
|
| 4 |
-
Gradio App - Intelligent Stacking Classifier
|
| 5 |
"""
|
| 6 |
import gradio as gr
|
| 7 |
import numpy as np
|
| 8 |
import joblib
|
| 9 |
import re
|
| 10 |
from pathlib import Path
|
| 11 |
-
|
| 12 |
-
# Sklearn
|
| 13 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 14 |
from sklearn.preprocessing import MultiLabelBinarizer
|
| 15 |
from scipy.sparse import hstack, csr_matrix
|
|
@@ -130,9 +128,22 @@ class PortugueseClassifier:
|
|
| 130 |
return predicted_labels
|
| 131 |
|
| 132 |
|
| 133 |
-
# ---------------- Gradio
|
| 134 |
classifier = PortugueseClassifier()
|
| 135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
|
| 137 |
def classify_text(text):
|
| 138 |
preds = classifier.predict(text)
|
|
@@ -158,7 +169,6 @@ def classify_text(text):
|
|
| 158 |
"""
|
| 159 |
return cards
|
| 160 |
|
| 161 |
-
|
| 162 |
# Dark theme CSS
|
| 163 |
css = """
|
| 164 |
body { background-color: #121212; color: #f5f5f5; font-family: 'Segoe UI', sans-serif; }
|
|
@@ -167,6 +177,8 @@ input, textarea { background-color: #1E1E1E; color: #f5f5f5; border: 1px solid #
|
|
| 167 |
button { background-color: #1E90FF; color: white; border-radius: 6px; border: none; }
|
| 168 |
.gradio-container { background-color: #121212; }
|
| 169 |
.output_html { background-color: #121212; color: #f5f5f5; }
|
|
|
|
|
|
|
| 170 |
"""
|
| 171 |
|
| 172 |
with gr.Blocks(css=css, theme=None) as demo:
|
|
@@ -176,6 +188,13 @@ with gr.Blocks(css=css, theme=None) as demo:
|
|
| 176 |
with gr.Column():
|
| 177 |
text_input = gr.Textbox(label="Enter Portuguese administrative text", lines=10,
|
| 178 |
placeholder="Cole aqui o texto do documento...")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 179 |
classify_btn = gr.Button("🔍 Classify")
|
| 180 |
with gr.Column():
|
| 181 |
output = gr.HTML(label="Predicted Categories")
|
|
|
|
| 1 |
#!/usr/bin/env python3
|
| 2 |
# -*- coding: utf-8 -*-
|
| 3 |
"""
|
| 4 |
+
Gradio App - Intelligent Stacking Classifier
|
| 5 |
"""
|
| 6 |
import gradio as gr
|
| 7 |
import numpy as np
|
| 8 |
import joblib
|
| 9 |
import re
|
| 10 |
from pathlib import Path
|
|
|
|
|
|
|
| 11 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 12 |
from sklearn.preprocessing import MultiLabelBinarizer
|
| 13 |
from scipy.sparse import hstack, csr_matrix
|
|
|
|
| 128 |
return predicted_labels
|
| 129 |
|
| 130 |
|
| 131 |
+
# ---------------- Gradio ----------------
|
| 132 |
classifier = PortugueseClassifier()
|
| 133 |
|
| 134 |
+
# 10 exemplos clicáveis
|
| 135 |
+
exemplos = [
|
| 136 |
+
"O Sr. Presidente deu conhecimento do relatório da ROC em relação à Prestação de contas de 2023.",
|
| 137 |
+
"Continuou por informar que no dia 19 o executivo participou na apresentação do Festival Soil to Soul, em Lisboa, que é já a segunda edição e que terá lugar nos dias 25 e 26 de maio, no Castelo do Alandroal.",
|
| 138 |
+
"Pelo Sr. Presidente foram presentes a reunião as informações da contabilidade que se anexam à presente ata. Ponderado e analisado o assunto o Executivo Municipal deliberou por maioria, com os votos a favor dos eleitos pelo PS e a abstenção da eleita pelo Nós, Cidadãos, ratificar as alterações orçamentais permutativas.",
|
| 139 |
+
"Não houve alteração orçamental permutativa para apresentar.",
|
| 140 |
+
"Pelo Senhor Presidente foi presentes a reunião a ata n.º 9, de 10.04.2024. Ponderado e analisado o assunto o Executivo Municipal deliberou por unanimidade aprovar a ata n.º 9, de 10.04.2024.",
|
| 141 |
+
"Pelo Sr. Presidente foi presente a reunião o pedido de apoio para obras do Centro Social e Paroquial de Alandroal que se anexa à presente ata. Ponderado e analisado o assunto o Executivo Municipal deliberou por unanimidade aprovar o pedido de apoio financeiro.",
|
| 142 |
+
"Pelo Senhor Presidente foi presente a reunião a proposta n.º 7 do Presidente que se anexa à presente ata. Ponderado e analisado o assunto o Executivo Municipal deliberou por unanimidade aprovar a proposta.",
|
| 143 |
+
"Pelo Senhor Presidente foram presentes a reunião as informações n.º 2/2024 de 12 de abril do serviço de Património. Referiu o Sr. Presidente tratar-se de equipamento informático obsoleto. Ponderado e analisado o assunto o Executivo Municipal deliberou por unanimidade aprovar o abate de equipamento.",
|
| 144 |
+
"Pelo Senhor Presidente foram presentes a reunião as informações n.º **** e **** da Secção de Serviço Social. Ponderado e analisado o assunto o Executivo Municipal deliberou por unanimidade aprovar a atribuição de dois subsídios de nascimento.",
|
| 145 |
+
"Pelo Senhor Presidente foi presente a esta reunião a informação n.º **** da Secção de Serviço Social. Ponderado e analisado o assunto o Executivo Municipal deliberou por unanimidade aprovar a atribuição de um apoio à fixação de residência em habitação própria."
|
| 146 |
+
]
|
| 147 |
|
| 148 |
def classify_text(text):
|
| 149 |
preds = classifier.predict(text)
|
|
|
|
| 169 |
"""
|
| 170 |
return cards
|
| 171 |
|
|
|
|
| 172 |
# Dark theme CSS
|
| 173 |
css = """
|
| 174 |
body { background-color: #121212; color: #f5f5f5; font-family: 'Segoe UI', sans-serif; }
|
|
|
|
| 177 |
button { background-color: #1E90FF; color: white; border-radius: 6px; border: none; }
|
| 178 |
.gradio-container { background-color: #121212; }
|
| 179 |
.output_html { background-color: #121212; color: #f5f5f5; }
|
| 180 |
+
.card-btn { width: 100%; margin-bottom:5px; background-color:#2C2C2C; color:white; border-radius:6px; }
|
| 181 |
+
.card-btn:hover { background-color:#3A3A3A; }
|
| 182 |
"""
|
| 183 |
|
| 184 |
with gr.Blocks(css=css, theme=None) as demo:
|
|
|
|
| 188 |
with gr.Column():
|
| 189 |
text_input = gr.Textbox(label="Enter Portuguese administrative text", lines=10,
|
| 190 |
placeholder="Cole aqui o texto do documento...")
|
| 191 |
+
|
| 192 |
+
# Exemplos clicáveis
|
| 193 |
+
gr.HTML("<h3 style='color:white;'>Exemplos de textos (clica para usar):</h3>")
|
| 194 |
+
for ex in exemplos:
|
| 195 |
+
btn = gr.Button(ex[:60]+"..." if len(ex)>60 else ex, elem_classes=["card-btn"])
|
| 196 |
+
btn.click(lambda x=ex: x, None, text_input)
|
| 197 |
+
|
| 198 |
classify_btn = gr.Button("🔍 Classify")
|
| 199 |
with gr.Column():
|
| 200 |
output = gr.HTML(label="Predicted Categories")
|