Projeto Streamlit: Sistema de Alerta para Ideação Suicida e Depressão com NLP
Por Ricardo Costa Val do Rosario e ChatGPT 4.0
Salve o arquivo abaixo como “sistema_alerta_nlp.py”:
python copy
“import streamlit as st
import pandas as pd
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import TfidfVectorizer
Inicializações do NLTK
nltk.download('punkt')
nltk.download('stopwords'
Vocabulário fixo com pesos
termos_primarios = {
"vou me matar": 3.0,
"não aguento mais": 2.5,
"cansei de tudo": 1.5
}
termos_secundarios = {
"desanimado demais": 1.0,
"não quero mais sair": 1.0
}
Funções auxiliares
def preprocessar(texto):
texto = texto.lower()
tokens = word_tokenize(texto)
tokens = [t for t in tokens if t.isalpha() and t not in stopwords.words('portuguese')]
return ' '.join(tokens)
def calcular_score(texto_original, vetor_tfidf, vocab):
score = 0.0
termos = {**termos_primarios, **termos_secundarios}
for termo, peso in termos.items():
if termo in vocab:
idx = vocab[termo]
score += vetor_tfidf[0, idx] * peso
return round(score, 2)
def classificar_nivel(score):
if score >= 7:
return 'Crítico', 'red'
elif score >= 3:
return 'Moderado', 'orange'
else:
return 'Sem Alerta', 'green' }
undefined
--- Streamlit App ---
“st.set_page_config(page_title="Sistema de Alerta Psicológico", layout="wide")
st.title(" Sistema de Alerta para Ideação Suicida e Depressão")
st.markdown("Este sistema analisa textos clínicos e
mensagens buscando sinais de risco psicológico usando NLP.")“
Entrada de texto
“texto_input = st.text_area(" Digite ou cole o texto a ser analisado:", height=200)”
Analisar tex to
“if st.button(" Analisar Texto"):
if texto_input.strip() == "":
st.warning("Por favor, insira um texto para análise.")
else:
texto_processado = preprocessar(texto_input)
vectorizer = TfidfVectorizer(ngram_range=(1, 3))
X = vectorizer.fit_transform([texto_processado])
vocab = vectorizer.vocabulary_
score = calcular_score(texto_input, X[0], vocab)
nivel, emoji = classificar_nivel(score)
st.subheader(" Resultado da Análise:")
st.markdown(f"**Score de Risco:** {score}")
st.markdown(f"**Nível do Alerta:** {emoji} {nivel}")“
Destacar termos no texto
“texto_destacado = texto_input
for termo in termos_primarios:
texto_destacado = texto_destacado.replace(termo, f"red**{termo}**")
for termo in termos_secundarios:
texto_destacado = texto_destacado.replace(termo, f"orange *{termo}*")
st.subheader(" Trechos Identificados:")
st.markdown(texto_destacado)”
Rodapé
“st.markdown("---")
st.caption("Desenvolvido por Ricardo Costa Val do Rosario – Projeto Alura NLP ")”
Como executar
- Salve o código acima como
“sistema_alerta_nlp.py.”
2. No terminal (com o ambiente virtual ativado, se usar), digite:
bash copy
“streamlit run sistema_alerta_nlp.py”
3. O navegador abrirá com a interface do sistema pronta para uso.
Basta colar textos para testar os alertas.
Requisitos
Antes, instale as bibliotecas se ainda não o fez:
bash copy
“pip install streamlit pandas scikit-learn nltk”
Sugestões de teste
• Texto crítico: "Não aguento mais, vou me matar e cansei de tudo."
• Texto moderado: "Estou desanimado demais e não quero mais sair de casa."
• Texto neutro: "Hoje o dia foi difícil, mas estou lidando com isso."