
Configuração da coleta
Para obter dados brutos, use um programa hospedado de coleta de dados chamado Actor. O scraper Reddit Comments ajuda a extrair threads públicas. Altere a predefinição da tarefa para usar um URL de thread conhecido. Defina o limite máximo de comentários por postagem entre 1 e 500, com padrão de 100. Nesta tarefa inicial, use um teto de 3 linhas. A entrada postUrls exige de 1 a 50 threads públicas conhecidas, e maxCommentsPerPost é de 1 a 500 por postagem, com a predefinição 250 alterada para 3 no piloto.
Cada linha de comentário tem nomes de campo exatos: postId, commentId, parentId, depth, body, status, unavailableFields e observedAt. Preserve os nomes exatos, não aliases com espaços. O status do conjunto de dados é somente ok, deleted ou removed. Uma execução parcial ou com falha, ou um estado de entrada, é separado do status da linha.
Os dados de saída da execução incluem commentsSaved, duplicatesSkipped, hiddenBranchesRemaining, completionReason, status, isComplete e inputResults. Os campos por entrada incluem commentsFound, commentsSaved, status e reason. No piloto atual, três IDs com body presente têm parentId e depth nulos, hiddenBranchesRemaining nulo, e os resultados gerais ou de entrada são parciais apesar do sinalizador de processamento isComplete=true. Isto não é prova de contexto completo nem de qualidade do classificador. Se um pai correspondente for necessário, use uma verificação pública manual autorizada ou mantenha o contexto desconhecido. Nunca adivinhe uma linha vizinha.
Definição de alvos e rótulos
Antes de ler qualquer texto, defina o conjunto de alvos e a unidade de rótulo. Uma unidade aqui é um comentário mais um alvo, não um comentário ou uma pessoa. Especifique cinco rótulos com regras simples:
- Positivo: aprovação expressa.
- Negativo: desaprovação expressa.
- Neutro: exposição de fatos sem uma posição.
- Misto: ter visões positivas e negativas ao mesmo tempo.
- Incerto: o alvo ou a posição não está claro.
Um alvo é a pessoa, o produto, a política ou a ação específica de que as palavras falam.
Oito passos para analisar comentários
- Defina a pergunta, o conjunto de alvos e a unidade de rótulo antes de ler.
- Preserve as linhas de origem e os dados de saída. Mantenha a identidade do comentário, o texto, o status e os dados ausentes. Faça uma tabela de rótulos de trabalho em vez de gravar sentimento adivinhado nos campos originais.
- Leia o contexto do pai correspondente quando estiver disponível. Encontre menções explícitas ao alvo e pronomes. Se você não puder resolver um pronome com segurança, mantenha o alvo e o contexto incertos. Trate o sarcasmo como motivo para revisão, não como rótulo negativo automático.
- Separe afirmações com vários alvos. Um comentário pode elogiar a velocidade e não gostar de uma mudança de preço. Não atribua uma preferência universal.
- Salve o ID do comentário, o alvo, a passagem de evidência, a fonte do contexto, o rótulo e o motivo. Mantenha palavras citadas de outras pessoas separadas da posição do próprio autor. Não rotule uma pergunta como reclamação sem contexto.
- Peça a um segundo leitor que codifique um pequeno subconjunto comum. Registre a concordância bruta e anote quais regras causaram discordâncias. Não afirme alta acurácia sem um padrão de referência justificado. Refine as regras e rotule de novo os casos afetados.
- Informe separadamente as contagens por unidades de comentário-alvo e por IDs de comentário distintos. Comentários com vários alvos acrescentam mais linhas de rótulo do que comentários. Mantenha visíveis, fora dos denominadores resolvidos, os rótulos incertos e os comentários cujo texto (campo body) está indisponível.
- Entregue uma tabela de posição por alvo, um livro de códigos e notas de discordância. Isto prepara um conjunto de dados que pode ser inspecionado. Não dá prioridades de produto, opiniões representativas nem ações automáticas de resposta.
Todo o texto e todos os IDs neste exemplo são inventados. Imagine que o contexto pai P pergunta sobre o novo preço mensal do produto A e o onboarding do produto B.
| commentID | fonte de contexto correspondente | alvo | passagem exata da fonte | rótulo | motivo |
|---|---|---|---|---|---|
| C1 | Contexto P | Produto A | "Ainda gosto de A" | Positivo | Expressa posição positiva sobre o produto A |
| C1 | Contexto P | Mudança de preço (A) | "o novo preço é ruim" | Negativo | Expressa posição negativa sobre a mudança de preço |
| C2 | Contexto P | Onboarding (B) | "B foi fácil de aprender" | Positivo | Elogio à facilidade do onboarding |
| C2 | Contexto P | Velocidade (A) | "A foi mais rápido para a nossa equipe" | Positivo | Elogio à velocidade limitado à equipe do autor |
| C3 | Contexto P (confirmado) | Aumento de preço | "Ótimo, mais um aumento de preço" | Negativo | Reclamação sarcástica confirmada pelo pai P |
| C4 | Desconhecido | Desconhecido | "Isso funciona offline?" | Incerto | Alvo não resolvido sem contexto pai |
Observe que C5 tem status de body removed e fica fora da tabela de sentimento, como um registro de disponibilidade sem rótulo de sentimento.
Exemplo fictício passo a passo
O comentário C1 diz: "Ainda gosto de A, mas o novo preço é ruim." Isto gera duas unidades. O produto A é positivo. A mudança de preço de A é negativa. Não atribua uma posição negativa universal ao produto A.
O comentário C2 diz: "B foi fácil de aprender; A foi mais rápido para a nossa equipe." Isto torna o onboarding de B positivo e a velocidade de A positiva somente para a equipe do autor. Nenhum vencedor geral é declarado.
O comentário C3 diz: "Ótimo, mais um aumento de preço." Esta mudança de preço, como alvo, só é contada se o contexto pai P estiver confirmado. Rotule como negativo ou como sarcasmo após revisão manual; caso contrário, mantenha como incerto.
O comentário C4 diz: "Isso funciona offline?" Há um pronome não resolvido sem contexto pai. O alvo é desconhecido, então rotule como incerto. Não transforme uma pergunta em feedback negativo sobre o modo offline.
O comentário C5 teve o body removido, então não é analisado. Mantenha a posição de disponibilidade na tabela.
Com um pai confirmado para C3, a tabela de rótulos tem seis unidades de comentário-alvo a partir de quatro comentários com body disponível. Isso significa duas para C1, duas para C2, uma para C3 e uma para C4.
As unidades resolvidas somam cinco. Três são positivas para C1 A, C2 B e C2 A. Duas são negativas para o preço de C1 e o preço de C3. Uma é incerta para C4.
A pontuação positiva é 3 dividido por 5, o que equivale a 60 por cento somente das unidades de alvo resolvidas. Não é 60 por cento dos comentaristas nem da opinião da comunidade. Há cinco posições observadas e quatro comentários com body disponível, e C5, com o valor de status removed, fica fora do sentimento.
Concordância da codificação e limites
Dois codificadores fictícios rotulam as cinco unidades resolvidas. A concordância inicial deles é 4 de 5, o que equivale a 80 por cento. A diferença deles em C3 diz respeito a sarcasmo e contexto. Eles revisam a condição real do pai e concordam com uma regra. Isto não estabelece uma acurácia geral de 80 por cento. Se o pai de C3 estiver ausente, o caso deve permanecer incerto. O denominador resolvido cai para 4. Não invente confirmação de pai a partir de linhas vizinhas.
O artefato final mostra ponteiros de origem e cada alvo separadamente, com C4 e C5 em um registro de desconhecidos e indisponíveis. Não fornece tabelas de frequência de tema nem de prioridade de funcionalidade. Discussões reais seguem padrões semelhantes de comunidade. Você pode consultar uma discussão real de projeto de sentimento para mais contexto.
Fontes e leituras adicionais
Por Chronometrica · Atualizado
Voltar ao topo ↑

