Habrastatistiques : analyser les commentaires des lecteurs

Bonjour Habr. DANS section précédente La popularité des différentes sections du site a été analysée et, en même temps, la question s'est posée : quelles données peuvent être extraites des commentaires sur les articles. Je voulais également tester une hypothèse, dont je discuterai ci-dessous.
Habrastatistiques : analyser les commentaires des lecteurs

Les données se sont révélées assez intéressantes et nous avons également pu dresser une petite « mini-évaluation » des commentateurs. Suite sous la coupe.

Collecte de données

Pour l'analyse, nous utiliserons les données de cette année 2019, d'autant plus que j'ai déjà reçu une liste d'articles sous forme csv. Il ne reste plus qu'à extraire les commentaires de chaque article ; heureusement pour nous, ils y sont stockés, et aucune demande supplémentaire n'est à faire.

Pour mettre en évidence les commentaires d’un article, le code suivant suffit :

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)

Cela nous permet d'obtenir une liste de commentaires qui ressemble à ceci (surnoms supprimés pour des raisons de confidentialité) :

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

Comme vous pouvez le voir, pour chaque commentaire, nous pouvons obtenir le nom d'utilisateur, la date, la note et le texte réel. Voyons ce que nous pouvons en tirer.

À propos, au départ, l'idée de collecter des notes était un peu différente - pour voir quelles notes les utilisateurs donnent. Par exemple, vous pouvez regarder YouTube - même la vidéo la plus idéale, même une vidéo qui ne contient aucune information subjective, uniquement à titre de référence ou de communiqué de presse, présente quand même un certain nombre d'inconvénients. L’hypothèse était qu’il y a des utilisateurs qui, d’un point de vue purement clinique, n’aiment pas tout du tout, peut-être que la sérotonine n’est pas produite dans le cerveau ou autre chose. Peut-être qu'une personne n'a plus besoin de s'asseoir sur Habré, mais de traiter la dépression... Mais il s'est avéré que je ne peux pas vérifier cela ici, parce que... la liste de ceux qui ont donné des notes n'est pas enregistrée dans le commentaire ou l'article. Eh bien, nous travaillerons avec les données disponibles. Le résultat est une note « inversée » - vous pouvez voir quelles notes _reçoivent_ par les utilisateurs. Ce qui, en principe, est aussi intéressant.

Traitement

Pour commencer, un avertissement traditionnel. Cette note, comme toutes les précédentes, n'est pas officielle. Je ne garantis pas que je n’ai commis d’erreur nulle part. Pour ceux qui sont intéressés par les détails techniques, un code plus détaillé est fourni dans la partie précédente.

Alors, commençons. Les commentaires de cette année 2019 (qui n’est pas encore terminée) ont été recueillis pour analyse. Au moment de la rédaction, les utilisateurs ont écrit 448533 commentaire, la taille du fichier csv est 288 Mo. Puissant, impressionnant.

Moment d'écriture

Regroupons les commentaires par heure, en divisant séparément les jours de la semaine et les week-ends.

Habrastatistiques : analyser les commentaires des lecteurs

Ici, nous ne nous intéressons pas aux valeurs absolues, mais aux valeurs relatives. Si vous le regardez simplement « tel qu'il est », il s'avère queоLa plupart des commentaires ont été rédigés pendant les heures de travail de 10h à 18h 😉 En revanche, les fuseaux horaires ne sont pas pris en compte ici, la question reste donc ouverte.

Regardons la répartition des commentaires tout au long de l'année :

Habrastatistiques : analyser les commentaires des lecteurs

Et pourtant, il tourne ; une poussée est clairement visible en semaine - la périodicité hebdomadaire est clairement visible, nous pouvons donc dire avec une assez grande confiance que les gens lisent et commentent Habr depuis leur travail (mais ce n'est pas sûr).

À propos, il y avait une idée pour tester l'hypothèse si le nombre de moins ou de plus reçus diffère du jour ou de l'heure de la journée, mais il n'a pas été possible de trouver une relation - l'heure à laquelle la note a été attribuée n'est pas enregistrée, et il n'y a pas de lien direct avec l'heure du commentaire.

Membres

Bien entendu, je ne connais pas le nombre exact d’utilisateurs sur le site. Mais ceux qui ont laissé au moins un commentaire cette année se sont avérés être environ Personnes 25000.

Le graphique du nombre de messages laissés par les utilisateurs semble assez intéressant :

Habrastatistiques : analyser les commentaires des lecteurs

Au début, je n’y croyais pas moi-même, mais il ne semblait y avoir aucune erreur. 5% des utilisateurs laissent 60% des messages. 10% - 74% de tous les messages (dont, je vous le rappelle, cette année, 450 XNUMX). La majorité lisent simplement le site, laissant très rarement des commentaires, voire ne les laissant pas du tout (ceux-ci, bien entendu, ne figuraient pas dans ma liste).

Notes

Passons à la dernière partie et la plus amusante des statistiques : les notes. Pour des raisons de confidentialité, je ne donnerai pas les surnoms complets des utilisateurs, qui le voudra, je pense, se reconnaîtra.

Sur nombre de commentaires pour cette année, le top 5 est occupé par VoXXXX (3377 commentaires), 0xdXXXXX (3286 commentaires), strXXXX (3043 commentaires), AmXXXX (2897 commentaires) et khXXXX (2748 commentaires).

Sur nombre de prestations reçues, le top 5 est occupé par amXXXX (1395 commentaires, notes +3231/-309), tvXXXX (1544 commentaires, notes +3231/-97), WhuXXXX (921 commentaires, notes +2288/-13), MTXXXX (1328 commentaires, +1383 /-7) et amaXXXX (736 commentaires, note +1340/-16).

Sur note absolument positive (aucun commentaire noté négativement) le haut du sommet est occupé par Milgard и Boumburum. Par exception, je vous présente leurs surnoms en intégralité, je pense qu'ils le méritent.

Les inconvénients sont également intéressants. Top par nombre de points négatifs collectés pour cette année, ils sont occupés par siXX (473 plus, 699 moins), khXX (1915 plus, 573 moins) et nicXXXXX (456 plus, 487 moins). Mais comme vous pouvez le constater, ces utilisateurs ont suffisamment de commentaires positifs. Mais d'après moins absolu L'antitopique comprend vladXXXX (55 commentaires, 84 moins, 0 plus), ekoXXXX (77 commentaires, 92 moins, 1 plus) et iMXXXX (225 commentaires, 205 moins, 12 plus).

Conclusion

Je n'ai pas pu calculer tout ce qui était prévu, mais j'espère que c'était intéressant.

Comme vous pouvez le constater, même un ensemble de données comportant un si petit nombre de champs peut fournir des données intéressantes à analyser. Il reste encore beaucoup à approfondir, de la création d’un « nuage de mots » à l’analyse de texte. Si des résultats intéressants émergent, ils seront publiés.

Source: habr.com

Ajouter un commentaire