A maldição cármica de Habra

O ponto inteiro


ConsequĂŞncias imprevistas


"O sistema de karma Habr e seu impacto sobre os usuários" é um tópico de um curso pelo menos
Tema sobre karma em "Picaba"

Eu poderia começar este artigo com o fato de estar lendo Habr há muito tempo, mas isso não será uma afirmação completamente precisa. A tese correta seria: “Eu leio artigos da Habr há muito tempo” - mas não estava interessado no que estava acontecendo dentro da comunidade quando decidi finalmente me registrar nesta primavera. Esse é um erro típico de uma pessoa que acessa a Habr a partir de um mecanismo de pesquisa para ler artigos úteis sobre os meandros da programação ou notícias interessantes do mundo da tecnologia. Desde que você veja o portal apenas desse lado positivo, você não fará perguntas sobre o que está acontecendo sob o capô. É claro que, nos comentários ou artigos, as menções ao karma diminuíram de tempos em tempos - mas, afinal, o karma está em quase todos os principais portais (pensei ingenuamente), isso é normal para comunidades on-line auto-reguladas.

Eu tive que pensar seriamente sobre isso depois que de repente perdi a capacidade de escrever mais de um comentário em cinco minutos.

Ao mesmo tempo, tudo parecia estar indo bem: meus comentários estavam sempre fortes, minha avaliação estava aumentando - e de repente aconteceu que eu tinha carma negativo. Toda a minha longa experiência em comunicação na Internet, todos os hábitos do usuário e o senso comum comum me gritaram que isso era algum tipo de erro: o indicador de aprovação de um usuário do site por outros usuários do site não pode subir e cair simultaneamente! Mas decidi não cortar o ombro, mas realizar uma pequena pesquisa, tanto analítica (na forma de estudar as opiniões dos usuários sobre karma) quanto estatística (na forma de análise dos indicadores de conta).

A história da guerra dos usuários com o karma acabou sendo muito rica. Com sucesso variável, já dura mais de uma dúzia de anos, por conta de dezenas de vítimas bloqueadas e de vários artigos excluídos. E, estranhamente, meu problema (discrepância entre notas e karma) praticamente não é usado na argumentação - mesmo durante a API aberta, esses cálculos não foram usados. Mais perto de tudo, apenas um comentarista foi selecionado em uma entrada relativamente recente:
"Na verdade, o que é interessante encontrar: existem pessoas que pensam kármica com grandes vantagens por seus comentários?"
https://habr.com/en/company/habr/blog/437072/#comment_19650144

Na parte estatística, você pode ver que sim, existem essas pessoas. Mas mesmo sem estatísticas, os usuários basicamente entenderam tudo sobre o karma por um longo tempo.

Aqui está um registro de uma década atrás:
O grande problema no hub é que existem muitos usuários que colocam menos o karma de acordo com o princípio: "Ah, você tem uma opinião diferente da minha, aqui está o menos no karma". Embora, para mim, um comentário bem fundamentado, com contra-argumentos e uma posição oposta bem declarada, não mereça menos que o próprio comentário, não que o autor seja cármico. Infelizmente, em Habré praticamente não existe cultura de disputas fundamentadas e respeito por um oponente forte, muitos tendem a simplesmente jogar o chapéu.
Em geral, tenho uma opinião de que dividir classificações em dois contadores, “classificação” e “carma”, é pouco intuitivo e, portanto, incorreto e ineficiente.
https://habr.com/en/post/92426/#comment_2800908

Aqui está um recorde de cinco anos atrás:
Apenas os casos em que o karma mudou em pelo menos 15 unidades foram analisados, mas isso não muda a imagem como um todo, porque e, neste caso, a proporção de 30% a 70%. Aparentemente, o karma é mesclado em grande parte por causa de comentários, mas gerado para artigos escritos.
https://habr.com/en/post/192376/

Aqui está uma sugestão para melhorar há três anos:
SugestĂŁo:
Permita que os autores dos artigos votem no karma somente em um determinado período (por exemplo, uma semana) após a publicação do artigo. Se uma pessoa não publicou nada na semana passada, não pode haver vazamento de carma para comentar. A regra não pode ser estendida para contas apenas de palheta - elas ganham carma com comentários úteis.
Comentário:
Com muita frequência, os usuários do Habr reclamam do dreno do carma por comentários questionáveis ​​nos posts de outras pessoas. Por exemplo, nesta postagem, o problema foi descrito em 2012. Woz e agora lá.
https://github.com/limonte/dear-habr/issues/49

Aqui está outro diálogo há três anos sobre o mesmo tópico:
Drmetallius
Posso dizer por que parei de escrever comentários (vou fazer disso uma exceção): porque é difícil ganhar carma, porque é necessário gerar constantemente alguns artigos, mas perdê-lo é muito fácil. Não é verdade que, se você escrever corretamente, não será desperdiçado. Isso pode ser reduzido por vários motivos: não concordei com você na disputa, considerei que algum fato estava incorreto no comentário ou simplesmente que ele estava de mau humor.

maxshopen
Sim, esta é uma doença antiga do habrasystem. Supunha-se que aqueles que têm carma positivo são adequados e simplesmente não menos um. Quando tudo era ainda pior - quanto mais karma, maior menos o usuário pode apostar que ele acabou com dois habrausers "estrelados" distribuídos à esquerda e à direita que receberam -6, -8, após o que as possibilidades foram reduzidas a um. Os criadores da economia cármica inicialmente aparentemente não levaram em conta a perversidade do anonimato
Parece-me que por muito tempo esse sistema teve que ser equilibrado um pouco mais pelo fato de que, ao votar em alguém, uma certa quantia é debitada do carma do usuário. Muito não é necessário - 0,2-0,5 é suficiente. Isso aumentaria muito a responsabilidade dos eleitores ao optar por votar em alguém ou não.
https://habr.com/en/post/276383/#comment_8761911

E, finalmente, comentários sobre o post desde o início deste ano:
O karma não é uma ferramenta muito boa para a auto-regulação do sistema. Aqueles que estão insatisfeitos com uma pessoa (ou mesmo com sua posição) geralmente colocam avaliações no carma. O resultado é que obter karma é muito difícil e mesclá-lo é muito fácil. Isso faz as pessoas pensarem novamente - vale a pena expressar sua opinião se não for muito popular? Afinal, se eu o expressar uma vez, eles irão torcer e fundir karma, e não será mais possível expressar mais. Isso leva ao fato de que apenas uma opinião permanece sobre o recurso e todas as outras estão superlotadas.
https://habr.com/en/company/habr/blog/437072/#comment_19647340

E aqui está um comentário que explica por que "escrever artigos" realmente não salva o sistema de carma:
O artigo traz quase nada em termos de karma e, para um comentário malsucedido, uma pessoa pode ser completamente mesclada.
Aqui, o problema é a separação entre classificação e karma. Na cabeça, as pessoas trabalham assim:
1. Classificação do conteúdo é a minha atitude em relação ao artigo ou comentário.
2. Avaliação do karma é minha atitude em relação a uma pessoa pessoalmente
No final
1. Se você escreveu o melhor artigo do mundo, eles lhe oferecerão muitas vantagens (na classificação) e considerarão sua missão cumprida.
2. Se você escreveu um comentário que "não entra no fluxo", você terá um comentário negativo e até uma pessoa que provavelmente pensa assim, por isso você e seu karma.
https://habr.com/en/company/habr/blog/437072/#comment_19649262


Muitos insatisfeitos com o sistema de karma se expressam no sentido de que essa é uma política deliberada da administração - por exemplo, neste comentário ou neste . Obviamente, existem muitas evidências indiretas:
  • Removida a API para que nĂŁo fosse possĂ­vel monitorar a dinâmica;
  • Fizemos uma classificação dinâmica, de modo que era impossĂ­vel examinar as classificações totais diretamente no perfil;
  • Eles se referem constantemente ao "karmograph", segundo o qual há mais vantagens do que menos (a proporção de karma e classificações nem sequer Ă© considerada);
  • Muito, mas sem razĂŁo, eles dizem que o karma reflete a qualidade das publicações e comentários (o que contradiz as estatĂ­sticas, como podemos ver nos indicadores de avaliação).

Lembro também que em nenhum lugar e nunca a lógica da existência do karma foi dada na forma em que ele existe.

Não podemos provar essas teorias da conspiração de forma alguma. Mas parece-me que o problema não está neles - existe o mesmo problema com as pessoas que são negativas ao carma: uma crença impenetrável em sua justiça, a tal ponto que aqueles que discordam de você são percebidos como uma "pessoa má". Aqui os líderes da Habr decidiram da mesma maneira - avaliaremos os usuários separadamente de suas mensagens. E eles não podem explicar a eles há mais de dez anos que essa é uma abordagem incorreta para classificar os usuários. Eles são inteligentes, criaram um portal inteiro. Então você cria seu Habr - e depois conversamos (a propósito, é engraçado que, literalmente, nesses termos eu seja o defensor do carma por reivindicações e tenha respondido - "Primeiro, entenda")

Pessoalmente, presumo que o próprio esquema de karma veio de Lepra , onde a maioria dos atuais proprietários de grandes portais de Internet costumava sair. Habr começou quando o mesmo Lepra - um clube fechado com convites e classificações mútuas, insatisfeitos - saiu do clube. Esses dias se passaram há muito tempo, o clube não está fechado há muito tempo, há muito que as classificações são concedidas não a “outro membro do clube”, mas a um usuário comum para comentários e artigos comuns. Mas o elitismo interno não desiste da administração. Todo mundo pensa - de fato, os caras criaram um grande portal lucrativo, escrevem artigos sobre tópicos técnicos por muitos anos - eles não sabem alguma coisa? Então, se tudo está ruim, eles, os vilões, são concebidos. Mas, de fato, os administradores estão simplesmente presos na infância. E quanto maior e mais lucrativo o portal, mais difícil é admitir muitos anos de erros por orgulho falsamente entendido.

ConfusĂŁo



Estas são águas profundas, Watson, águas profundas. Eu apenas comecei a mergulhar.
Edição especial de Sherlock Holmes

Abaixo, usarei o termo "Karma" para karma e o termo "Avaliação" ou "Avaliação total" - para o valor total de todos os prós e contras que foram recebidos pelo usuário, tanto para artigos quanto para comentários.

Depois de descobrir a história, tentaremos analisar os números. Recentemente, houve todo um ciclo de análise estatística, mas apenas o ano atual - eu precisava entender a classificação total do usuário. Como não temos uma API e, em vez de classificações reais no perfil, elas apresentam uma classificação duvidosa - eu só poderia estudar cada comentário e coletar dados sobre o autor e a classificação. Foi o que eu fiz.

Abri todas as publicações desde o início dos tempos, escolhi o apelido do autor da publicação e a classificação do artigo, depois os apelidos dos comentaristas e as classificações dos seus comentários.

Aqui está o código para o analisador principal.
import requests
from bs4 import BeautifulSoup
import csv

def get_doc_by_id(pid):
    fname = r'files/' + 'habrbase' + '.csv'
    with open(fname, "a", newline="") as file:
        try:
            writer = csv.writer(file)
            r = requests.head('https://habr.com/ru/post/' +str(pid) + '/')
            if r.status_code == 404: #   
                pass
            else:
                r = requests.get('https://habr.com/ru/post/' +str(pid) + '/')
                soup = BeautifulSoup(r.text, 'html5lib')
                if not soup.find("span", {"class": "post__title-text"}):
                    pass
                else:
                    doc = []
                    cmt = []
                    doc.append(pid) #
                    doc.append(soup.find("span", {"class": "user-info__nickname"}).text) #
                    doc.append(soup.find("span", {"class": "voting-wjt__counter"}).text) #
                    writer.writerow(doc)
                    comments = soup.find_all("div", {"class": "comment"})
                    for x in comments:
                        if not x.find("div", {"class": "comment__message_banned"}):
                            cmt.append(x['id'][8:]) #
                            cmt.append(x.find("span", {"class": "user-info__nickname"}).text) #
                            cmt.append(x.find("span", {"class": "voting-wjt__counter"}).text) #
                            writer.writerow(cmt)
                            cmt = []
        except requests.exceptions.ConnectionError:
            pass

x = int(input())
y = int(input())

for i in range(x, y):
    get_doc_by_id(i)
    print(i)



habrbase:



« — » habrauthors.csv. . , - , , .

:
import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd

def len_checker():
    fname = r'files/' + 'habrdata' + '.csv'
    with open(fname, "r") as file:
        try:
            authorsList = len(file.readlines())#   
        except:
            authorsList = 0
        return authorsList

def profile_check(nname):
    try:
        r = requests.head('https://m.habr.com/ru/users/' +nname + '/')
        if r.status_code == 404: #   
            pass
        else:
            ValUsers = []
            r = requests.get('https://m.habr.com/ru/users/' +nname + '/')
            soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
            if not soup.find("div", {"class": "tm-user-card"}):
                valKarma = 0
                valComments = 0
                valArticles = 0
            else:
                valKarma = soup.find("span", {"class": "tm-votes-score"}).text #
                valKarma = valKarma.replace(',','.').strip()
                valKarma = float(valKarma)
                tempDataBlock = soup.find("div", {"class": "tm-tabs-list__scroll-area"}).text.replace('\n', '') # 
                mainDataBlock = tempDataBlock.split(' ')
                valArticles = mainDataBlock[mainDataBlock.index('')+1]
                if valArticles.isdigit() == True:
                    valArticles = int(valArticles)
                else:
                    valArticles = 0
                valComments = mainDataBlock[mainDataBlock.index('')+1]
                if valComments.isdigit() == True:
                    valComments = int(valComments)
                else:
                    valComments = 0
            ValUsers.append(valKarma)
            ValUsers.append(valComments)
            ValUsers.append(valArticles)
    except requests.exceptions.ConnectionError:
        ValUsers = [0,0,0]
    return ValUsers


def get_author_by_nick(x):
    finalRow = []
    df = pd.DataFrame
    colnames=['nick', 'scores']
    df = pd.read_csv(r'files\habrauthors.csv', encoding="ANSI", names = colnames, header = None)
    df1 = df.loc[x:]

    fname = r'files/' + 'habrdata' + '.csv'

    with open(fname, "a", newline="") as file:
        writer = csv.writer(file)
        for row in df1.itertuples(index=True, name='Pandas'):
            valName = getattr(row, "nick")
            valScore = getattr(row, "scores")
            valAll = profile_check(valName)
            finalRow.append(valName)
            finalRow.append(valScore)
            finalRow.append(valAll[0])
            finalRow.append(valAll[1])
            finalRow.append(valAll[2])
            writer.writerow(finalRow)
            print(valName)
            finalRow = []

n = len_checker()
get_author_by_nick(n)



, , - . , 2001 ? , , , : « (intermediate value).map is not a function». , , 2001 . , — . 250, — .

habrdata : ['nick', 'scores', 'karma', 'comments','articles','regdate']. .



. , .

20062007200820092010201120122013201420152016201720182019
204511668124635028534613686116109614970365948926782559123673


114 343 , - . , :



, , tabloo.

, . , alizar (UPD) 268 ! , - 30 . — Zelenyikot 1509, - 500. , , .



-10



, , , , . , - . , , — CSV R, SPSS. , — , , ( ). 4235 . . 2866 , , .



3-4 114 , . , . 4652. , , .

: 114 343
< 5: 89 447
.. : 67 890
.. : 4 652
>= 5 : 24 896

, «». " ", . , . , « , » — .

:
: 114 343
<5: 57 223
.. : 26 207
.. : 9 737
>=5 : 57 120

, , , , . , , .. ! — , 90.

, , « », . — >=5 24 ( 900 - 5 ; ). 36 — .

, ? , , 90% , , 4 — . , « ». , , « ». . « , » .

, 2016 2018 , « ». 90% , 5 . « » 60-70% .

, :

78205 114 343 0. , .
24 896 114 343 . , , , .

. , , — , . , . , , « ».


     ,       !


, , , .

:
  1. , .
  2. 1/3 , .
  3. , ( 10-20 )

, , ?

, . , :
, , … :
— .
—
—
—
, , .
.
, — , .
https://habr.com/ru/post/467875/#comment_20639397

, — , .

,



, ?


, . , ( ).

.

1.
. : . , — : .

: , , , «» . — . . , . .

. , . — — . — . , , , — ; — , , , . , . — . — .

. . . . . , — .



. .

2.
.

— . , . , . , . , : , — , , . 2013 , , . ; , , , .

— , , . « », , , . — , . , , .

, «» «», . , , . — , .

, . , , — ? — , ? . , . , — , , .

— . , « », . , , . -, .

, , : , . .

— . , , . — (), , , . « » — — , .

, . . , — , .
, — . .
https://habr.com/ru/company/habr/blog/437072/#comment_19649328

, , — -, « ». , , .

.

3.
, . — , -, , .. . , .

— , . . — « », . , « »; , — , ( ) .

. , — , , , , . , , , , .

pragmatik,
, ., , - / — .

, , . , +100, -10? ? , , - ? .

. , . , , , . . «», « » , .

, . , . «-25», , . — , « ». , , . , , . ! .
« :
: «, , . , , , . — , . .»
, — . andorro : « ».»
https://habr.com/ru/company/habr/blog/437072/#comment_19822200

, . — (.. ). « ». — , . « », . , , IRC, , « » « ». — , .

Episode Three



— ?
— , ,

« »

?

-, , , , . , , . — , , , , . , , , .

-, . 10 20 , ? 118, - 100, -100 , , , 10.

-, , , (.. ). « » — , : , .

-, , .. « » — - . , , - « ». , ; , — .

-, , « ». . — , — . .

— , . - « , , » - .

Source: https://habr.com/ru/post/pt468491/


All Articles