Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Streamlit: Sistema de Alerta para Ideação Suicida e Depressão com NLP

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 texto

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

1.	Salve o código acima como `“sistemaalertanlp.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."

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Oi, Ricardo! Tudo bom?

Que projeto sensível e ao mesmo tempo técnico, parabéns!

É admirável como você conseguiu unir conhecimento de NLP com uma causa tão importante quanto a saúde mental, apresentando tudo com clareza e organização no uso do Streamlit. Além disso, a ideia de destacar os trechos de risco no texto analisado mostra um cuidado especial com a experiência do usuário e com a identificação prática dos sinais de alerta.

Você está no caminho certo, continue compartilhando esse tipo de iniciativa.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Daniel,Com certeza, o progresso está começando a se consolidar. Estou muito satisfeito com a Alura.Agradeço a todos vocês.Ricardo