1
resposta

[Projeto] 03 Etapa 1 - Análise de Sentimentos das Letras

Conceito: Enriquecimento de Dados com PLN
A base da Playcatch não é apenas tocar música, mas entender o conteúdo semântico. Transformamos texto bruto (letras) em metadados estruturados (emoções/sentimentos) utilizando modelos de linguagem pré-treinados.

Abordagem: Transfer Learning (Aprendizado por Transferência), utilizando modelos do Hugging Face.

Modelo Sugerido: nlptown/bert-base-multilingual-uncased-sentiment.

Métrica de Saída: Escala de 1 a 5 estrelas (atribuindo polaridade ao texto).

  1. Pontos-Chave Técnicos (Checklist de Desenvolvimento)
    Configuração: Ambiente isolado com Python 3.10+, PyTorch para processamento e transformers para abstração do modelo.

Limpeza (Preprocessing): Uso de Expressões Regulares (Regex) para remover ruídos das letras (tags como [Refrão]), evitando que o modelo tente analisar metadados como se fossem sentimentos.

Inferência em Lote (Batching): Processamento de várias letras simultaneamente para otimizar o uso da GPU/CPU.

Persistência: Exportação dos resultados em .csv para alimentar o futuro motor de recomendação (Etapa 2).

  1. Código-Fonte Consolidado (Versão Produção)
    Este código resume a lógica de inicialização e processamento que você implementou:

Python
import torch
from transformers import pipeline
import pandas as pd
import re

1. SETUP DO DISPOSITIVO

device = 0 if torch.cuda.is_available() else -1

2. CARREGAMENTO DO MODELO (BERT MULTILINGUAL)

Classifica de 1 (muito negativo) a 5 (muito positivo)

sentiment_analyzer = pipeline(
"sentiment-analysis",
model="nlptown/bert-base-multilingual-uncased-sentiment",
device=device
)

def clean_text(text):
"""Limpeza técnica das letras (O(n))"""
text = re.sub(r'[.*?]', '', text)
return text.strip()

def run_analysis(lyrics_list):
"""Executa a análise e estrutura os dados"""
cleaned = [clean_text(l) for l in lyrics_list]

# Inferência em lote
preds = sentiment_analyzer(cleaned, truncation=True, max_length=512)

# Criação do dataset estruturado
data = []
for i, p in enumerate(preds):
    data.append({
        "id": i,
        "label": p['label'],
        "score": round(p['score'], 4),
        "preview": cleaned[i][:50]
    })
return pd.DataFrame(data)

--- EXEMPLO DE USO ---

if name == "main":
letras = ["Eu estou muito feliz hoje!", "Que saudade de você, dói muito."]
df = run_analysis(letras)
print(df)
4. Analogia para Memorização
Imagine que a Playcatch é uma biblioteca mágica.

As letras de música chegam como pergaminhos sem título.

O Transformer é um bibliotecário que sabe ler todas as línguas e sente a "energia" de cada texto.

A Etapa 1 foi colocar um carimbo colorido em cada pergaminho (Azul para triste, Amarelo para feliz).

Agora, na Etapa 2, quando um leitor (usuário) pedir algo "para animar o dia", o bibliotecário só precisa olhar para os carimbos amarelos.

1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o enriquecimento de dados com PLN para transformar letras em metadados estruturados com Python, utilizou muito bem o transfer learning com modelos pré-treinados para aplicar análise de sentimentos em múltiplos idiomas e ainda compreendeu a importância da persistência dos resultados em datasets para alimentar motores de recomendação de forma eficiente.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

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!