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

[Projeto] 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 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

  1. 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."

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