Objetivo:
Nesta atividade, vamos nos tornar analistas de dados e descobrir o que o público realmente está achando de alguns filmes.
Usaremos comentários reais (do nosso dataset) e uma biblioteca de Processamento de Linguagem Natural (PLN) chamada pysentimiento para extrair e analisar os sentimentos expressos.
Plataforma: Google Colab (Jupyter Notebook)
Bibliotecas Principais: pandas, pysentimiento
Antes de tudo, precisamos preparar nosso ambiente no Google Colab.
-
Instalação da Biblioteca: A
pysentimientonão vem instalada por padrão no Colab. Em uma célula de código, você precisará instalá-la.- Dica: Use o comando
!pip install.
- Dica: Use o comando
-
Importações: Importe as bibliotecas necessárias. Você precisará do
pandas(geralmente importado comopd) e, dapysentimiento, precisará importar a classe principal. -
Criação do Dataset: Para facilitar, vamos criar o arquivo CSV diretamente no ambiente do Colab.
- Dica: Crie uma célula de texto e cole o dataset nela. Em uma célula de código, use o "comando mágico"
%%writefile comentarios.csv(no topo da célula) e cole o dataset logo abaixo dele (sem as linhas---).
- Dica: Crie uma célula de texto e cole o dataset nela. Em uma célula de código, use o "comando mágico"
-
Leitura com Pandas: Agora, leia o arquivo
comentarios.csvpara um DataFrame do pandas.- Atenção: Observe o dataset. O separador padrão do
read_csvé a vírgula (,). O nosso arquivo usa outro caractere. Você precisará especificar o separador correto usando o parâmetrosep.
- Atenção: Observe o dataset. O separador padrão do
Com os dados carregados, vamos analisar cada comentário.
-
Inicializando o Analisador: Crie uma instância do
SentimentAnalyzer. -
Limpando o Texto (Opcional, mas recomendado): Observe a coluna
"texto_mensagem". Ela possui aspas (") no início e no fim do texto. Isso pode atrapalhar a análise.- Dica: Use os métodos
.str.strip()ou.str.replace()do pandas para limpar essa coluna antes de passá-la para o analisador.
- Dica: Use os métodos
-
Aplicando a Análise: O desafio aqui é aplicar a análise de sentimento em cada linha da sua coluna de texto.
- Estratégia: A forma mais "pythônica" e eficiente de fazer isso no pandas é usando o método
.apply()na sua coluna de texto. - Dentro do
.apply(), você pode usar uma funçãolambdaque chama o método de análise de sentimento (provavelmente algo comoanalyzer.predict_sentiment(...)ou similar) para cada texto. - Dica: A
pysentimientogeralmente retorna mais de uma informação (o sentimento em si e a polaridade). Investigue como a biblioteca retorna isso.
- Estratégia: A forma mais "pythônica" e eficiente de fazer isso no pandas é usando o método
-
Armazenando os Resultados: Crie novas colunas no seu DataFrame para armazenar os resultados da análise. Por exemplo, uma coluna
sentimento(com 'positive', 'negative', 'neutral') e umapolaridade(o score numérico).
Agora queremos saber: qual filme foi o mais amado e qual foi o mais odiado?
-
Agrupamento: Você precisa agregar os resultados por filme.
- Dica: Use o método
.groupby()na colunacod_filme.
- Dica: Use o método
-
Estratégia de Ranking: Como você pode definir um "ranking"? Existem algumas formas:
- Contagem Simples: Para cada filme, conte quantos comentários 'positive', 'negative' e 'neutral' ele recebeu. (Dica: após o
groupby, selecione a colunasentimentoe use.value_counts()). - Média de Polaridade (Recomendado): Se você salvou o score de polaridade numérico (ex: 1 para positivo, -1 para negativo), você pode calcular a média da polaridade para cada filme. (Dica: após o
groupby, selecione a colunapolaridadee use.mean()).
- Contagem Simples: Para cada filme, conte quantos comentários 'positive', 'negative' e 'neutral' ele recebeu. (Dica: após o
-
Ordenação: Após calcular a média, use
.sort_values()para ver o ranking, do melhor (maior média) para o pior (menor média).
Um filme pode ter uma média "neutra" (próxima de zero) por dois motivos: ou todos os comentários são neutros (convergência), ou ele tem muitos comentários positivos e muitos negativos que se anulam (divergência).
-
Observando a Distribuição: Reutilize o agrupamento do Passo 3 (a contagem de sentimentos por filme).
- Filme F01: Analise os resultados. Ele tem comentários positivos e negativos?
- Filme F02: E este? A opinião sobre ele é mais unânime (convergente) ou mais dividida (divergente)?
-
Analisando as Respostas: O dataset tem uma coluna
id_mensagem_resposta.- Filtre seu DataFrame para ver apenas as respostas da mensagem
1(do filme F01). Os sentimentos convergem ou divergem? - Agora filtre para as respostas da mensagem
4(do filme F02). E aqui?
- Filtre seu DataFrame para ver apenas as respostas da mensagem
-
Medida de Divergência (Avançado): Se você quiser uma medida numérica da divergência, calcule o desvio padrão (
.std()) da polaridade para cada filme (usando ogroupby).- Um desvio padrão baixo significa que as opiniões são parecidas (convergência).
- Um desvio padrão alto significa que as opiniões variam muito (divergência).
Ao final, responda:
- Qual filme teve a melhor avaliação geral, segundo a média de polaridade?
- Qual filme gerou mais debate (maior divergência de sentimentos)?
- A análise de sentimento automática (Pysentimento) pareceu concordar com a sua leitura humana dos comentários?
- Um documento Jupyter Notebook, no Google Colab, com o código criado e as respostas da análise
- A entrega deve ser feita no AVA e é INDIVIDUAL
- A construção da solução pode ser feita INDIVIDUALMENTE ou EM GRUPO
Você é um usuário de uma ferramenta de transmissão de filmes, e vai responder ao que você acho dos filmes que assistiu.
Simule 30 respostas e comentários dos filmes, sendo:
- Para cada comentário crie até 2 respostas de outros usuários.
- Para cada comentário varie o humor, termos e a educação do texto criado.
Os usuários respondentes dos comentários também pode ficar insatisfeito e variar o humor.
A saída deve ser no formato csv, conforme descrito no tópico [comentarios.csv].
[comentarios.csv] id_mensagem;cod_filme;id_mensagem_resposta;"texto_mensagem";data_hora;
cod_filme;"nome_filme"
F01;"O Poderoso Chefão"
F02;"Um Sonho de Liberdade"
F03;"Batman: O Cavaleiro das Trevas"
F04;"A Lista de Schindler"
F05;"Pulp Fiction: Tempo de Violência"
F06;"O Senhor dos Anéis: O Retorno do Rei"
F07;"Clube da Luta"
F08;"Forrest Gump: O Contador de Histórias"
F09;"Star Wars: O Império Contra-Ataca"
F10;"A Origem"
F11;"Os Sete Samurais"
F12;"O Silêncio dos Inocentes"
F13;"Cidade de Deus"
F14;"Central do Brasil"
F15;"Tropa de Elite"
F16;"De Volta Para o Futuro"
F17;"Gladiador"
F18;"O Rei Leão"
F19;"Toy Story"
F20;"Alien, o Oitavo Passageiro"
F21;"Laranja Mecânica"
F22;"E.T. - O Extraterrestre"
F23;"Casablanca"
F24;"O Mágico de Oz"
F25;"Cidadão Kane"
F26;"Psicose"
F27;"Taxi Driver"
F28;"Cantando na Chuva"
F29;"Cinema Paradiso"
F30;"A Viagem de Chihiro"id_mensagem;cod_filme;id_mensagem_resposta;"texto_mensagem";data_hora;
1;F01;; "Simplesmente a obra-prima do ano. A cinematografia é de tirar o fôlego. 10/10";2025-11-03 14:30:00;
2;F01;1;"CONCORDO TOTALMENTE! Chorei no final.";2025-11-03 14:32:00;
3;F01;1;"Achei exagerado. É bom, mas 'obra-prima'?? Menos, gente.";2025-11-03 14:33:00;
4;F02;; "QUE LIXO. Perdi 2 horas da minha vida. O roteiro parece que foi escrito por uma criança. FUJAM!";2025-11-03 14:35:00;
5;F02;4;"kkkkk calma cara. É só um filme. Mas concordo que foi fraco.";2025-11-03 14:36:00;
6;F02;4;"Vc que não entendeu a profundidade. Volta pra ver desenho animado.";2025-11-03 14:37:00;
7;F03;; "Alguém pode me explicar o final? Não entendi nada. O protagonista tava sonhando o tempo todo?";2025-11-03 14:40:00;
8;F03;7;"Também fiquei boiando. Péssima direção, deixou tudo em aberto.";2025-11-03 14:41:00;
9;F03;7;"Claro que tava! O diretor deu várias pistas. Presta atenção nos detalhes da cortina azul.";2025-11-03 14:42:00;
10;F04;; "Uau. Outro filme de herói que salva o mundo no final. Que original. Palmas para a criatividade.";2025-11-03 14:45:00;
11;F04;10;"Mas os efeitos especiais foram legais, vai.";2025-11-03 14:46:00;
12;F04;10;"Hahahaha exatamente o que pensei. Mais do mesmo.";2025-11-03 14:47:00;
13;F05;; "A narrativa se arrasta no segundo ato, comprometendo o ritmo. Contudo, a atuação da protagonista é louvável, carregando o filme nas costas.";2025-11-03 14:50:00;
14;F05;13;"Análise perfeita. O desenvolvimento dos coadjuvantes foi muito pobre.";2025-11-03 14:51:00;
15;F05;13;"Discordo. A lentidão do segundo ato foi proposital para construir a tensão. É um filme 'slow burn'.";2025-11-03 14:52:00;
16;F06;; "Mto bom!! Cenas de ação iradas. Valeu cada centavo.";2025-11-03 14:55:00;
17;F06;16;"Toop dms";2025-11-03 14:56:00;
18;F06;16;"Ação? Só vi gente conversando. Dormi.";2025-11-03 14:57:00;
19;F07;; "Tanto hype pra isso? Esperava muito mais. O trailer entregou o filme todo. Decepcionante.";2025-11-03 15:00:00;
20;F07;19;"Né? Falaram que ia revolucionar o gênero... achei bem mediano.";2025-11-03 15:01:00;
21;F07;19;"O problema é a expectativa de vcs. O filme é ótimo pelo que se propõe.";2025-11-03 15:02:00;
22;F08;; "lixooooooooo";2025-11-03 15:05:00;
23;F08;22;"Desenvolva. Pq achou ruim?";2025-11-03 15:06:00;
24;F08;22;"É isso. lixo. 0/10";2025-11-03 15:07:00;
25;F09;; "Quem leu o livro vai se decepcionar. Mudaram partes essenciais da história. Não gostei da adaptação.";2025-11-03 15:10:00;
26;F09;25;"Sempre mudam. Filme é filme, livro é livro. Eu gostei.";2025-11-03 15:11:00;
27;F09;25;"Concordo. Cortaram meu personagem favorito! Absurdo.";2025-11-03 15:12:00;
28;F10;; "Meh. Dá pra assistir num domingo à tarde. Nada demais, mas também não é horrível. 5/10.";2025-11-03 15:15:00;
29;F10;28;"Exato. Esquecível.";2025-11-03 15:16:00;
30;F10;28;"Achei divertido, vcs são mto chatos.";2025-11-03 15:17:00;
31;F11;; "Não estava preparado para chorar tanto. Que história linda e sensível. Tocou minha alma.";2025-11-03 15:20:00;
32;F11;31;"Nossa, sim. O final me destruiu.";2025-11-03 15:21:00;
33;F11;31;"Achei muito melodrama. Forçado demais.";2025-11-03 15:22:00;
34;F12;; "Impossível assistir. O áudio tá dessincronizado. A plataforma precisa arrumar isso URGENTE.";2025-11-03 15:25:00;
35;F12;34;"Aqui tá normal. Vê sua internet.";2025-11-03 15:26:00;
36;F12;34;"Aqui também tá ruim. O problema é no streaming mesmo.";2025-11-03 15:27:00;
37;F13;; "Era pra ser terror? Dei risada na parte do 'monstro'. Roteiro fraco e jumpscare previsível.";2025-11-03 15:30:00;
38;F13;37;"kkkk sim! O bicho parecia de borracha.";2025-11-03 15:31:00;
39;F13;37;"Ah, eu tomei uns sustos. Vcs que são os corajosos.";2025-11-03 15:32:00;
40;F14;; "Com todo respeito a quem gostou, mas achei a trama muito corrida. Os personagens não tiveram tempo de se desenvolver.";2025-11-03 15:35:00;
41;F14;40;"Concordo plenamente. Faltou profundidade.";2025-11-03 15:36:00;
42;F14;40;"Eu gostei do ritmo ágil. Odeio filme parado.";2025-11-03 15:37:00;
43;F15;; "Mais um filme com 'lacração'. Não aguento mais essa agenda. Só queria ver um filme, não uma palestra.";2025-11-03 15:40:00;
44;F15;43;"'Lacração' = ter personagem que não é igual a vc? Melhore.";2025-11-03 15:41:00;
45;F15;43;"Finalmente alguém falou! Um saco isso.";2025-11-03 15:42:00;
46;F16;; "Que filme doido. Entendi foi nada, mas gostei da estética. Muito 'cult'.";2025-11-03 15:45:00;
47;F16;46;"É o famoso 'filme de arte'. Eu achei genial.";2025-11-03 15:46:00;
48;F16;46;"'Cult' = chato. Chamar de chato pode.";2025-11-03 15:47:00;
49;F17;; "amei o filme. Muinto bom os ator. Recomendo";2025-11-03 15:50:00;
50;F17;49;"Também gostei :)";2025-11-03 15:51:00;
51;F17;49;"'Muinto'? Pelo amor de Deus. Aprende a escrever.";2025-11-03 15:52:00;
52;F18;; "O primeiro foi ótimo, mas essa sequência estragou tudo. História sem pé nem cabeça, só pra ganhar dinheiro.";2025-11-03 15:55:00;
53;F18;52;"Verdade. Deixava quieto no primeiro.";2025-11-03 15:56:00;
54;F18;52;"Ah, eu curti. Expandiu o universo.";2025-11-03 15:57:00;
55;F19;; "Que casal! Que química! Melhor comédia romântica que vi em anos. Leve e divertido.";2025-11-03 16:00:00;
56;F19;55;"Perfeitos né? Torci por eles o tempo todo.";2025-11-03 16:01:00;
57;F19;55;"Clichê demais. A mesma história de sempre.";2025-11-03 16:02:00;
58;F20;; "Pensei que o tema (Documentário sobre abelhas) era interessante, mas a execução foi muito lenta. Quase dormi.";2025-11-03 16:05:00;
59;F20;58;"Eu achei fascinante. Aprendi muito.";2025-11-03 16:06:00;
60;F20;58;"Também achei parado. Faltou ritmo.";2025-11-03 16:07:00;
61;F21;; "Tanta explosão e CGI que meus olhos doeram. Cadê a história? Parecia um videogame.";2025-11-03 16:10:00;
62;F21;61;"É um filme de ação, vc queria o que? Diálogos filosóficos?";2025-11-03 16:11:00;
63;F21;61;"Concordo. O CGI tava muito artificial, me tirou do filme.";2025-11-03 16:12:00;
64;F22;; "Fui ver com meu filho e acabei gostando mais que ele. Animação linda e com uma mensagem profunda.";2025-11-03 16:15:00;
65;F22;64;"Pixar sabe fazer isso né? Sempre choro.";2025-11-03 16:16:00;
66;F22;64;"Achei bobinho. Só pra criança mesmo.";2025-11-03 16:17:00;
67;F23;; "Sério que esse filme ganhou prêmios? Não vi nada demais. Atuações fracas.";2025-11-03 16:20:00;
68;F23;67;"Crítica 'especializada' adora esses filmes chatos.";2025-11-03 16:21:00;
69;F23;67;"Você que não tem sensibilidade artística. O filme é sutil.";2025-11-03 16:22:00;
70;F24;; "O filme tava indo PERFEITO. Aí veio aquele final... que decepção. Estragou tudo nos últimos 10 minutos.";2025-11-03 16:25:00;
71;F24;70;"NEM ME FALE. Que raiva daquele final.";2025-11-03 16:26:00;
72;F24;70;"Eu gostei do final. Foi corajoso.";2025-11-03 16:27:00;
73;F25;; "MELHOR FILME DA MINHA VIDAAA. Sério, todo mundo TEM que ver isso. PERFEITO ZERO DEFEITOS";2025-11-03 16:30:00;
74;F25;73;"AAAAAA SIMM!!";2025-11-03 16:31:00;
75;F25;73;"Calma. É bom. Mas não é pra tanto.";2025-11-03 16:32:00;
76;F26;; "Filme coreano ótimo, mas a legenda em português tá PÉSSIMA. Erros de tradução bizarros. Arrumem!";2025-11-03 16:35:00;
77;F26;76;"Percebi isso também. A legenda PT-BR tá muito ruim.";2025-11-03 16:36:00;
78;F26;76;"Assiste dublado então.";2025-11-03 16:37:00;
79;F27;; "Desculpe, tentei 3x. Dormi em todas. Chato, chato, chato.";2025-11-03 16:40:00;
80;F27;79;"Eu também! 3 horas de filme pra nada acontecer.";2025-11-03 16:41:00;
81;F27;79;"É um drama contemplativo. Não é pra quem gosta de explosão.";2025-11-03 16:42:00;
82;F28;; "Bom filme, mas tem um furo de roteiro gigante. Como que ele saiu da caverna se a chave tava do lado de fora?? Isso me incomodou.";2025-11-03 16:45:00;
83;F28;82;"Verdade! Pensei a mesma coisa.";2025-11-03 16:46:00;
84;F28;82;"O amigo dele deixou a chave por baixo da porta. Vc que não viu.";2025-11-03 16:47:00;
85;F29;; "Só ator ruim. Direção de iniciante. Não percam tempo com essa porcaria nacional.";2025-11-03 16:50:00;
86;F29;85;"Vira-lata. O filme é ótimo, muito melhor que muito enlatado americano.";2025-11-03 16:51:00;
87;F29;85;"Ator ruim? O protagonista ganhou prêmio em Gramado. Vc entende muito.";2025-11-03 16:52:00;
88;F30;; "Gostei bastante. Uma história simples, mas muito bem contada. Recomendo para a família.";2025-11-03 16:55:00;
89;F30;88;"Uma gracinha mesmo. Bem sessão da tarde.";2025-11-03 16:56:00;
90;F30;88;"Filme fofo.";2025-11-03 16:57:00;