Um computador não lê palavras, lê números. O Processamento de Linguagem Natural (PLN) é o caminho que transforma um comentário como "a espera foi longa e cansativa" em algo que um modelo consegue usar. Siga as etapas com comentários fictícios de pacientes, mude as escolhas e veja o efeito até a última etapa.
Escreva ou edite o comentário e ligue ou desligue cada etapa. As escolhas feitas aqui valem também para as seções seguintes: o bag of words, o treino e o analisador de sentimento usam o mesmo pré-processamento.
Passe o cursor sobre um radical para ver as regras aplicadas.
Stemização corta sufixos por regras, sem consultar dicionário. É rápida e agressiva: "atendimento", "atendido" e "atender" viram "atend", que não é uma palavra de verdade. Aqui usamos uma versão simplificada do RSLP, o stemmer para português disponível no NLTK.
Lematização procura a forma de dicionário: "estavam" vira "estar", "cansativa" vira "cansativo". O resultado é legível, mas exige um léxico e, idealmente, saber a classe gramatical. "foi" pode ser do verbo ser ou do verbo ir, e só o contexto decide. Na prática, usam-se ferramentas como o spaCy.
Cada palavra do vocabulário vira uma coluna, e cada documento, uma linha que conta quantas vezes cada palavra aparece. A ordem se perde: fica só o "saco" de palavras. O TF-IDF reduz o peso das palavras que aparecem em quase todos os documentos, e os bigramas recuperam um pouco da ordem, juntando pares vizinhos.
Clique numa célula para ver de onde vem o número.
1 = mesmo conjunto de palavras nas mesmas proporções; 0 = nenhuma palavra em comum.
Temos 50 comentários rotulados: 40 para treinar e 10 guardados para teste, que o modelo nunca vê durante o treino. O modelo é uma regressão logística sobre o bag of words (presença ou ausência de cada termo). Cada termo ganha um peso: positivo puxa para "elogio", negativo para "reclamação". A cada época, o gradiente ajusta todos os pesos um pouco.
Escreva um comentário, diga se é elogio ou reclamação e acrescente ao treino. O modelo é treinado de novo, com o mesmo número de épocas.
O modelo treinado na seção 3 lê um comentário novo: pré-processa, monta o vetor, soma o peso de cada termo presente e passa a soma pela curva sigmoide. Palavras que ele nunca viu no treino não contribuem com nada.
Azul puxa para elogio; ameixa, para reclamação; cinza, termo que o modelo não conhece.