Habrastatistics: analisando comentários de leitores

Olá Habr. EM parte anterior Foi analisada a popularidade de várias seções do site e, ao mesmo tempo, surgiu a questão - quais dados podem ser extraídos dos comentários dos artigos. Eu também queria testar uma hipótese, que discutirei a seguir.
Habrastatistics: analisando comentários de leitores

Os dados revelaram-se bastante interessantes, também conseguimos criar uma pequena “mini-avaliação” de comentadores. Continua sob o corte.

Coleta de dados

Para análise, utilizaremos os dados deste ano de 2019, principalmente porque já recebi uma lista de artigos em formato csv. Resta extrair os comentários de cada artigo; felizmente para nós, eles ficam armazenados lá e nenhuma solicitação adicional precisa ser feita.

Para destacar comentários de um artigo, o seguinte código é suficiente:

r = requests.get("https://habr.com/ru/post/467453/")
data_html = r.text
comments = data_html.split('<div class="comment" id=')

comments_list = []
for comment in comments:
    body = Str(comment).find_between('<div class="comment__message', '<div class="comment__footer"').find_between('>', '</div>')# .replace('n', '-')
    if len(body) < 4: continue

    body = body.translate(str.maketrans(dict.fromkeys("tnrvf")))
    body = body.replace('"', "'").replace(',', " ").replace('<br>', ' ').replace('<p>', '').replace('</p>', '').replace('  ', ' ')

    user = Str(comment).find_between('data-user-login', '>').find_between('"', '"')
    date_str = Str(comment).find_between('<time class="comment__date-time comment__date-time_published', 'time>').find_between('>', '<')
    vote = Str(comment).find_between('<div class="voting-wjt', '</div>').find_between('<span', 'span>').find_between('>', '<')
    date = dateparser.parse(date_str)

    csv_data = "{},{},{},{}".format(user, date, vote, body)
    comments_list.append(csv_data)

Isso nos permite obter uma lista de comentários semelhante a esta (apelidos removidos por motivos de privacidade):

xxxxxxx,2019-02-06 11:50:00,0,А можно пример как именно?
xxxxxxx-02-24 16:15:00,+1,Побольше читайте независимые официальные источники чтобы таких вопросов не было.
xxxxxxx,2019-02-23 20:15:00,–5,А не важно главное в итоге в плюсе оказаться

Como você pode ver, para cada comentário podemos obter o nome do usuário, a data, a classificação e o texto real. Vamos ver o que podemos tirar disso.

Aliás, inicialmente a ideia de coletar avaliações era um pouco diferente – para ver quais avaliações os usuários dão. Por exemplo, você pode olhar no YouTube - mesmo o vídeo mais ideal, mesmo um vídeo que não contém nenhuma informação subjetiva, apenas para referência ou comunicado à imprensa, ainda ganha um certo número de desvantagens. A hipótese era que existem usuários que, puramente clinicamente, não gostam de tudo, talvez a serotonina não seja produzida no cérebro ou outra coisa. Talvez uma pessoa não precise mais ficar sentada no Habré, mas sim tratar a depressão... Mas descobri que não posso verificar isso aqui, porque... a lista de quem deu avaliações não fica salva no comentário ou artigo. Bem, isto é, trabalharemos com os dados disponíveis. O resultado é uma classificação “reversa” - você pode ver quais classificações _recebem_ pelos usuários. O que, em princípio, também é interessante.

Processamento

Para começar, uma isenção de responsabilidade tradicional. Esta classificação, como todas as anteriores, não é oficial. Não garanto que não cometi nenhum erro em lugar nenhum. Para aqueles interessados ​​em detalhes técnicos, é fornecido um código mais detalhado na parte anterior.

Então vamos começar. Os comentários deste ano de 2019 (que ainda não acabou) foram levados para análise. No momento em que este artigo foi escrito, os usuários escreveram comentário 448533, o tamanho do arquivo csv é 288 MB. Poderoso, impressionante.

Hora de escrever

Vamos agrupar os comentários por hora, dividindo os dias da semana e finais de semana separadamente.

Habrastatistics: analisando comentários de leitores

Aqui não estamos interessados ​​em valores absolutos, mas sim em valores relativos. Se você apenas olhar “como é”, então acontece queоA maioria dos comentários foi escrita no horário comercial das 10 às 18 😉 Por outro lado, os fusos horários não são levados em consideração aqui, então a questão ainda está em aberto.

Vejamos a distribuição dos comentários ao longo do ano:

Habrastatistics: analisando comentários de leitores

E ainda assim ele gira; um aumento é claramente visível durante a semana - a periodicidade semanal é claramente visível, então podemos dizer com bastante confiança que as pessoas estão lendo e comentando Habr no trabalho (mas isso não é certo).

Aliás, surgiu a ideia de testar a hipótese se o número de pontos negativos ou positivos recebidos difere do dia ou da hora do dia, mas não foi possível encontrar uma relação - o horário em que a avaliação foi dada não é salvo, e não há conexão direta com a hora do comentário.

Membros

Claro, não sei o número exato de usuários do site. Mas aqueles que deixaram pelo menos um comentário este ano acabaram sendo aproximadamente Pessoas 25000.

O gráfico do número de mensagens deixadas pelos usuários parece bastante interessante:

Habrastatistics: analisando comentários de leitores

No começo eu mesmo não acreditei, mas parecia não haver engano. 5% dos usuários deixam 60% das mensagens. 10% - 74% de todas as mensagens (das quais, lembro, este ano, 450 mil). A maioria simplesmente lê o site, raramente deixando comentários, ou simplesmente não os deixando (esses, naturalmente, não foram incluídos na minha lista).

Pontuações

Vamos passar para a última e mais divertida parte das estatísticas - as classificações. Por questões de privacidade não darei os apelidos completos dos usuários, quem quiser, creio, se reconhecerá.

Em número de comentários para este ano, os 5 primeiros são ocupados por VoXXXX (3377 comentários), 0xdXXXXX (3286 comentários), strXXXX (3043 comentários), AmXXXX (2897 comentários) e khXXXX (2748 comentários).

Em número de benefícios recebidos, os 5 primeiros são ocupados por amXXXX (1395 comentários, classificações +3231/-309), tvXXXX (1544 comentários, classificações +3231/-97), WhuXXXX (921 comentários, classificações +2288/-13), MTXXXX (1328 comentários, +1383/-7) e amaXXXX (736 comentários, classificação +1340/-16).

Em avaliação positiva absoluta (nenhum comentário avaliado negativamente) o topo do topo é ocupado por Milfgard и bumburum. Como exceção, apresento seus apelidos por extenso, acho que eles merecem.

As desvantagens também são interessantes. Topo por número de pontos negativos coletados para este ano são ocupados por siXX (473 pontos positivos, 699 pontos negativos), khXX (1915 pontos positivos, 573 pontos negativos) e nicXXXXX (456 pontos positivos, 487 pontos negativos). Mas como você pode ver, esses usuários têm comentários positivos suficientes. Mas de acordo com menos absoluto O antitópico inclui vladXXXX (55 comentários, 84 pontos negativos, 0 pontos positivos), ekoXXXX (77 comentários, 92 pontos negativos, 1 ponto positivo) e iMXXXX (225 comentários, 205 pontos negativos, 12 pontos positivos).

Conclusão

Não consegui calcular tudo planejado, mas espero que tenha sido interessante.

Como você pode ver, mesmo um conjunto de dados com um número tão pequeno de campos pode fornecer dados interessantes para análise. Ainda há muito o que aprofundar, desde a construção de uma “nuvem de palavras” até a análise de texto. Se surgirem resultados interessantes, eles serão publicados.

Fonte: habr.com

Adicionar um comentário