glossary

O que a proporção de upvotes do Reddit mede, e o que o vote fuzzing esconde

Taras Shynkarenko
Taras Shynkarenko
•Updated: •8 minutos de leitura
O que a proporção de upvotes do Reddit mede, e o que o vote fuzzing escondeO que a proporção de upvotes do Reddit mede, e o que o vote fuzzing esconde

TL;DR

8 minutos de leitura

A proporção de upvotes do Reddit é a fatia de todos os votos de um post que foram upvotes, e a API a devolve como um decimal entre 0 e 1 no campo upvote_ratio. O código-fonte arquivado do Reddit calcula upvotes divididos pelo total de votos. Dois posts com o mesmo score podem estar em 0.90 e 0.55, então leia a proporção junto com o score. O Reddit nunca disse se a proporção de hoje usa contagens com fuzzing ou reais, e a central de ajuda define "upvote ratio" de uma segunda forma, diferente, para comentários.

O que é a proporção de upvotes do Reddit?

O percentual que o Reddit mostra ao lado de um post é a proporção de upvotes do Reddit: a fatia de todos os votos daquele post que foram upvotes, devolvida pela API como um decimal entre 0 e 1 no campo upvote_ratio. Um post com 45 upvotes e 5 downvotes tem proporção de 0.9, ou 90 por cento.

A referência atual da API do Reddit em reddit.com/dev/api documenta endpoints e parâmetros, não campos de resposta, então a definição mais clara vem do próprio código-fonte arquivado do Reddit. Em r2/models/builder.py, no repositório reddit-archive/reddit, o cálculo ocupa duas linhas:

total_votes = max(item.num_votes, 1)
w.upvote_ratio = float(item._ups) / total_votes

Upvotes sobre o total de votos, com um piso de um voto para que um post recém-criado não divida por zero. O PRAW, o wrapper Python mais usado para a API, descreve o campo do mesmo jeito: "The percentage of upvotes from all votes on the submission."

Como calcular a proporção de upvotes?

Divida os upvotes pela soma de upvotes e downvotes. O score, o número ao lado das setas, é outra grandeza: upvotes menos downvotes. Os dois números respondem a perguntas diferentes, e é a proporção que diz se as pessoas concordaram.

PostUpvotesDownvotesScore (score)Proporção de upvotes (upvote_ratio)
A455400.90
B220180400.55
C4041.00

Os posts A e B mostram o mesmo score de 40. O post A é um post tranquilo de que a maioria dos leitores gostou. O post B atraiu oito vezes mais votos e dividiu a sala quase ao meio, que é o padrão que a ordenação controversial do Reddit procura. O post C mostra a outra falha de ler só a proporção: um 1.00 perfeito com quatro votos quase não diz nada.

Onde o upvote_ratio aparece na API do Reddit?

Ele fica nos objetos de post do JSON que o Reddit devolve, ao lado de score, ups e downs. Dois desses vizinhos já não significam o que o nome diz. O template JSON arquivado em r2/lib/jsontemplates.py fixa "downs": 0 no código e define "ups": item.score, então em qualquer post ups é igual ao score líquido e downs é sempre zero. Um script que calcula ups / (ups + downs) recebe 1.0 em todo post.

O mesmo template arquivado só adiciona upvote_ratio quando c.permalink_page é verdadeiro, ou seja, na página de comentários do próprio post, não na listagem do subreddit. O último push nesse repositório foi em 17 de outubro de 2017 e ele está marcado como arquivado, então o site ao vivo pode ser diferente. A referência de campos arquivada na wiki do repositório lista ups, downs e score e não menciona upvote_ratio em lugar nenhum.

O template arquivado de comentários não tem upvote_ratio. Comentários têm apenas um score.

Dá para descobrir a contagem real de votos a partir da proporção e do score?

Sim, com álgebra, desde que a proporção não seja exatamente 0.5. Upvotes menos downvotes é igual ao score, e upvotes sobre o total de votos é igual à proporção. Resolvendo o par, fica:

upvotes   = ratio x score / (2 x ratio - 1)
downvotes = upvotes - score

Para o post A, 0.9 x 40 / 0.8 = 45 upvotes e 5 downvotes, o que confere. A fórmula quebra em dois pontos. Com proporção de 0.5 o denominador é zero, e um score de 0 não diz nada sobre quantos votos se anularam. Perto de 0.5 ela fica hipersensível. O post B, com 0.55 e score de 40, dá 220 upvotes. Mude a proporção para 0.56 e a mesma fórmula devolve cerca de 187. Uma diferença de arredondamento de um ponto move a estimativa em 33 votos, então trate qualquer contagem reconstruída de um post dividido como uma faixa aproximada.

Uma pessoa rolando o celular no sofá, ao lado da seção sobre vote fuzzing e o que o Reddit revelou sobre isso.

O que é vote fuzzing, e ele afeta a proporção de upvotes?

Vote fuzzing é o Reddit somando votos falsos às contagens de upvotes e downvotes para que bots não consigam saber se os votos deles contaram. O antigo FAQ do Reddit, hoje marcado como "no longer updated", explica com um exemplo: cinco upvotes e três downvotes "may say 23 upvotes and 21 downvotes, or 12 upvotes, and 10 downvotes. The points score is correct, but the vote totals are 'fuzzed'."

A proporção era calculada a partir dessas contagens com fuzzing. Em 18 de junho de 2014, o admin do Reddit Deimorz anunciou no r/announcements que as contagens individuais de upvotes e downvotes sairiam da vista pública, e deu o motivo: todo post perto do topo da front page "seems to drift towards showing '55% like it' due to the vote-fuzzing." Depois da mudança, o post do topo "has gone from showing '57% like it' to '96% like it'." Em 6 de dezembro de 2016, o admin KeyserSosa anunciou um recálculo dos scores históricos que removeu regras antigas contra trapaça, com o TL;DR de que "Scores are increasing by a lot."

Aqui está a lacuna. Nenhum dos dois anúncios diz a partir de quê a proporção é calculada hoje, e a central de ajuda atual do Reddit nunca menciona fuzzing. O artigo dela sobre votos ocultos diz apenas que os votos não aparecem durante "the first few hours after a post is created" e que algumas comunidades os ocultam por pouco tempo. A proporção ficou "closer to reality" em 2014. O Reddit não disse que ela é exata.

De onde a proporção foi calculada
Até 2014: totais distorcidos
18 de junho de 2014: contagens individuais de votos ocultadas
6 de dezembro de 2016: scores históricos recalculados
Hoje: o Reddit não disse
A central de ajuda atual do Reddit nunca menciona o fuzzing.

Qual a relação entre a proporção de upvotes e a ordenação controversial do Reddit?

O código arquivado usa a proporção diretamente para decidir o que conta como controverso. A função _is_controversial em builder.py marca um item quando o número de votos passa de cflag_min_votes e a proporção fica entre cflag_lower_bound e cflag_upper_bound. O example.ini distribuído define esses valores como 7, 0.4 e 0.6.

RedReplier
RedReplier

Começar

Reddit, X, Bluesky e HN

Alertas de intenção em tempo real

Respostas IA ilimitadas

Classificado por intenção de compra

A ordenação controversial em si, em _sorts.pyx, recompensa volume e equilíbrio ao mesmo tempo: magnitude ** balance, em que magnitude é o total de votos e balance é o lado menor dividido pelo maior. O post B acima, 220 contra 180, pontua muito mais alto do que um post de 3 contra 2 com a mesma proporção. O conjunto completo de ordenações, e quais delas o Reddit documenta, está em hot, new e top no Reddit.

O Reddit define "upvote ratio" do mesmo jeito em todo lugar?

Não. O Reddit usa a expressão para pelo menos duas fórmulas diferentes.

OndeVale paraDefinição
Campo da API upvote_ratio (código arquivado, PRAW)PostsUpvotes divididos pelo total de votos, de 0 a 1
Central de ajuda, Post & Comment InsightsComentários"The ratio of upvotes to downvotes that the comment has received"
Central de ajuda, Reddit Pro PerformancePostsUpvotes: "Ratio of upvotes to downvotes"

Upvotes para downvotes e upvotes para o total de votos são números diferentes. Um post com 90 upvotes e 10 downvotes fica em 9 para 1 na primeira forma e em 0.9 na segunda. Quando você compara números entre as ferramentas do próprio Reddit, confira qual deles está vendo. A mesma armadilha aparece nos cálculos de taxa de engajamento no Reddit, em que o denominador muda a resposta.

Duas pessoas em uma discussão acalorada à mesa, ao lado da seção sobre como uma proporção perto de 0.5 indica desacordo.

Qual é uma boa proporção de upvotes no Reddit?

O Reddit não publica nenhum benchmark, e um número-alvo único enganaria. A proporção depende do subreddit, do tema e de quantas pessoas votaram. Leia em três partes. Uma proporção alta com um score alto significa concordância ampla. Uma proporção perto de 0.5 com um score alto significa briga, e os comentários vão dizer sobre o quê. Uma proporção perto de 1.0 com poucos votos significa que ninguém decidiu ainda.

Para marcas, uma proporção baixa em um post que cita você é um sinal para ler a thread antes de responder. Não é motivo para mobilizar votos. Pedir que as pessoas votem viola as regras do Reddit, como explicado em manipulação de votos no Reddit, e downvotes nos seus próprios posts e comentários também custam karma no Reddit.

Ler a proporção ao lado do score
Proporção alta, score altoConcordância ampla
Proporção perto de 0.5, score altoUma briga, então leia os comentários
Proporção perto de 1.0, poucos votosNinguém decidiu ainda
O Reddit não publica nenhuma referência, então a proporção só diz algo com o volume de votos ao lado.

Perguntas frequentes

O que significa uma proporção de upvotes de 50 por cento no Reddit?

Significa que o post recebeu tantos downvotes quanto upvotes, então o score fica em zero ou perto disso. Uma proporção de 50 por cento com dois votos e com dois mil votos parece idêntica, e é por isso que você precisa do volume de votos ou do número de comentários para interpretá-la.

Por que a API do Reddit devolve downs como 0?

O Reddit parou de expor contagens separadas de upvotes e downvotes em junho de 2014. O template JSON arquivado fixa "downs": 0 no código e define ups igual ao score líquido, então nenhum dos dois campos é uma contagem real. Use score e upvote_ratio no lugar.

Dá para ver a proporção de upvotes de um comentário no Reddit?

Não no JSON da API. O template arquivado de comentários do Reddit devolve um score e nenhuma proporção. O autor do comentário vê um "Upvote ratio" nos insights do comentário, que a central de ajuda do Reddit define como upvotes para downvotes, uma fórmula diferente da do campo de posts.

A proporção de upvotes do Reddit é precisa?

Ela está mais perto da verdade do que as contagens com fuzzing que substituiu, segundo o anúncio do Reddit de 2014. O Reddit não informou se a proporção de hoje usa contagens com fuzzing ou reais, então trate-a como uma boa estimativa, não como um número auditado.

Por que a proporção de upvotes do meu post está oculta?

O Reddit oculta as contagens de votos nas primeiras horas depois que um post entra no ar, e algumas comunidades também ocultam os votos em posts e comentários por pouco tempo. A central de ajuda diz que isso evita a manipulação de votos e impede que as pessoas sejam influenciadas pela forma como os outros votaram.

Uma proporção de upvotes baixa prejudica o ranking de um post?

A ordenação hot no código arquivado do Reddit usa o score líquido e a idade do post, não a proporção. Com o mesmo número de votos, uma proporção menor significa um score menor, o que reduz a posição no hot. O Reddit não publicou o código de ranking que roda hoje.

Como encontro a proporção de upvotes de um post do Reddit?

O Reddit mostra a proporção como porcentagem ao lado do post. Na API, é o campo upvote_ratio, um decimal entre 0 e 1. O template arquivado do Reddit só o adiciona na página de comentários do post, não nas listagens do subreddit.

Como calcular upvotes e downvotes a partir da proporção e do score?

Resolva o par de equações: upvotes = proporção x score / (2 x proporção - 1), e downvotes = upvotes - score. Com proporção de 0.9 e score de 40, o resultado é 45 upvotes e 5 downvotes. A fórmula quebra com proporção exatamente igual a 0.5, e perto desse valor uma diferença de arredondamento de um ponto move a estimativa em dezenas de votos.

Qual a diferença entre o score do Reddit e a proporção de upvotes?

O score é upvotes menos downvotes. A proporção de upvotes é upvotes divididos pelo total de votos. Dois posts podem ter score 40, um com 0.90 e o outro com 0.55.

RedReplier
RedReplier

Começar

Reddit, X, Bluesky e HN

Alertas de intenção em tempo real

Respostas IA ilimitadas

Classificado por intenção de compra

Com que proporção de upvotes um post do Reddit é considerado controverso?

No código arquivado do Reddit, um item é marcado como controverso quando tem pelo menos 7 votos e uma proporção entre 0.4 e 0.6. Esses são os valores do example.ini incluído. O Reddit não publicou as configurações que usa hoje.

Veja-nos mais no Google

Um clique marca a RedReplier como fonte preferida e nossos artigos passam a aparecer mais acima nas suas Principais notícias, no modo IA e nas visões gerais com IA.

Antes de você ir...

RedReplier

RedReplier

Alcance cada comprador que procura o que você vende

O RedReplier monitora Reddit, X, Bluesky e Hacker News em tempo real, classifica cada tópico por intenção de compra e redige a sua resposta, para que você chegue primeiro.

Reddit, X, Bluesky e HN

Alertas de intenção em tempo real

Respostas IA ilimitadas

Classificado por intenção de compra

Artigos relacionados