Habrastatistik: Analyse von Leserkommentaren

Hallo Habr. IN vorherigen Abschnitt Die Beliebtheit verschiedener Bereiche der Website wurde analysiert und gleichzeitig stellte sich die Frage, welche Daten aus Kommentaren zu Artikeln extrahiert werden können. Ich wollte auch eine Hypothese testen, die ich weiter unten diskutieren werde.
Habrastatistik: Analyse von Leserkommentaren

Die Daten erwiesen sich als recht interessant; es ist uns auch gelungen, eine kleine „Mini-Bewertung“ der Kommentatoren zu erstellen. Fortsetzung unter dem Schnitt.

Datensammlung

Für die Analyse werden wir Daten für dieses Jahr, 2019, verwenden, zumal ich bereits eine Artikelliste im CSV-Format erhalten habe. Es bleibt nur noch, die Kommentare aus jedem Artikel zu extrahieren; glücklicherweise werden sie dort gespeichert und es müssen keine zusätzlichen Anfragen gestellt werden.

Um Kommentare aus einem Artikel hervorzuheben, reicht der folgende Code aus:

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)

Dadurch können wir eine Liste von Kommentaren erhalten, die etwa so aussieht (Spitznamen aus Datenschutzgründen entfernt):

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

Wie Sie sehen, können wir für jeden Kommentar den Benutzernamen, das Datum, die Bewertung und den eigentlichen Text abrufen. Mal sehen, was wir daraus machen können.

Ursprünglich war die Idee, Bewertungen zu sammeln, übrigens etwas anders – um zu sehen, welche Bewertungen Benutzer abgeben. Schauen Sie sich zum Beispiel YouTube an – selbst das idealste Video, selbst ein Video, das keine subjektiven Informationen enthält, die lediglich als Referenz oder eine Pressemitteilung dienen, weist dennoch eine gewisse Anzahl von Minuspunkten auf. Die Hypothese war, dass es Benutzer gibt, denen rein klinisch überhaupt nicht alles gefällt, vielleicht wird Serotonin nicht im Gehirn produziert oder etwas anderes. Vielleicht muss eine Person nicht mehr auf Habré sitzen, sondern um Depressionen zu behandeln ... Aber wie sich herausstellte, kann ich das hier nicht überprüfen, weil ... Die Liste der Bewertungsgeber wird nicht im Kommentar oder Artikel gespeichert. Das heißt, wir werden mit den verfügbaren Daten arbeiten. Das Ergebnis ist eine „umgekehrte“ Bewertung – Sie können sehen, welche Bewertungen die Benutzer _erhalten_. Was im Prinzip auch interessant ist.

Verarbeitung

Zunächst ein traditioneller Haftungsausschluss. Diese Bewertung ist, wie alle vorherigen, inoffiziell. Ich garantiere nicht, dass ich nirgendwo einen Fehler gemacht habe. Für diejenigen, die sich für technische Details interessieren, wird detaillierterer Code bereitgestellt im vorigen Teil.

Also lasst uns anfangen. Kommentare für dieses Jahr, 2019 (das noch nicht vorbei ist), wurden zur Analyse herangezogen. Zum Zeitpunkt des Schreibens schrieben Benutzer 448533 Kommentar, die Größe der CSV-Datei beträgt 288 MB. Kraftvoll, beeindruckend.

Zeitpunkt des Schreibens

Lassen Sie uns Kommentare nach Stunden gruppieren und Wochentage und Wochenenden getrennt aufteilen.

Habrastatistik: Analyse von Leserkommentaren

Dabei geht es uns nicht um absolute Werte, sondern um relative. Wenn man es nur so betrachtet, „wie es ist“, dann stellt sich heraus, dass es so istоDie meisten Kommentare wurden während der Arbeitszeit von 10 bis 18 Uhr geschrieben 😉 Allerdings werden hier Zeitzonen nicht berücksichtigt, sodass die Frage noch offen ist.

Schauen wir uns die Verteilung der Kommentare im Laufe des Jahres an:

Habrastatistik: Analyse von Leserkommentaren

Und doch rotiert es; an Wochentagen ist ein Anstieg deutlich sichtbar – die wöchentliche Periodizität ist deutlich sichtbar, sodass wir mit ziemlich hoher Sicherheit sagen können, dass die Leute Habr von der Arbeit aus lesen und kommentieren (aber das ist nicht sicher).

Übrigens gab es die Idee, die Hypothese zu testen, ob die Anzahl der erhaltenen Minuspunkte oder Pluspunkte vom Tag oder der Tageszeit abweicht, es konnte jedoch kein Zusammenhang gefunden werden - der Zeitpunkt der Bewertung wird nicht gespeichert, und Es besteht kein direkter Zusammenhang mit dem Zeitpunkt des Kommentars.

Mitglieder

Die genaue Anzahl der Nutzer der Seite kenne ich natürlich nicht. Aber diejenigen, die dieses Jahr mindestens einen Kommentar hinterlassen haben, waren ungefähr 25000 Menschen.

Die Grafik der Anzahl der von Benutzern hinterlassenen Nachrichten sieht recht interessant aus:

Habrastatistik: Analyse von Leserkommentaren

Zuerst habe ich es selbst nicht geglaubt, aber es schien kein Fehler vorzuliegen. 5 % der Benutzer hinterlassen 60 % der Nachrichten. 10 % – 74 % aller Nachrichten (davon, ich möchte Sie daran erinnern, dieses Jahr 450). Die Mehrheit liest die Seite einfach und hinterlässt nur sehr selten oder überhaupt keine Kommentare (diese waren natürlich nicht in meiner Liste enthalten).

Bewertungen

Kommen wir zum letzten und unterhaltsamsten Teil der Statistik – den Bewertungen. Aus Datenschutzgründen werde ich nicht die vollständigen Spitznamen der Benutzer nennen, wer möchte, denke ich, wird sich selbst erkennen.

Auf Anzahl der Kommentare In diesem Jahr belegen VoXXXX (5 Kommentare), 3377xdXXXXX (0 Kommentare), strXXXX (3286 Kommentare), AmXXXX (3043 Kommentare) und khXXXX (2897 Kommentare) die Top 2748.

Auf Anzahl der erhaltenen LeistungenDie Top 5 sind belegt von amXXXX (1395 Kommentare, Bewertungen +3231/-309), tvXXXX (1544 Kommentare, Bewertungen +3231/-97), WhuXXXX (921 Kommentare, Bewertungen +2288/-13), MTXXXX (1328 Kommentare, +1383 /-7) und amaXXXX (736 Kommentare, Bewertung +1340/-16).

Auf Absolut positive Bewertung (Single negativ bewerteter Kommentar) Die Spitze der Spitze ist besetzt mit Milgard и Boomburum. Ausnahmsweise präsentiere ich ihre Spitznamen vollständig, ich denke, sie haben es verdient.

Interessant sind auch die Nachteile. Top by Anzahl der gesammelten Minuspunkte für dieses Jahr sind sie mit siXX (473 Pluspunkte, 699 Minuspunkte), khXX (1915 Pluspunkte, 573 Minuspunkte) und nicXXXXX (456 Pluspunkte, 487 Minuspunkte) belegt. Aber wie Sie sehen, haben diese Benutzer genügend positive Kommentare. Aber gem absolutes Minus Das Gegenthema umfasst vladXXXX (55 Kommentare, 84 Minuspunkte, 0 Pluspunkte), ekoXXXX (77 Kommentare, 92 Minuspunkte, 1 Pluspunkt) und iMXXXX (225 Kommentare, 205 Minuspunkte, 12 Pluspunkte).

Abschluss

Ich konnte nicht alles kalkulieren, was geplant war, aber ich hoffe, es war interessant.

Wie Sie sehen, kann selbst ein Datensatz mit einer so geringen Anzahl von Feldern interessante Daten für die Analyse liefern. Es gibt noch viel zu vertiefen, vom Aufbau einer „Wortwolke“ bis zur Textanalyse. Sollten sich interessante Ergebnisse ergeben, werden diese veröffentlicht.

Source: habr.com

Kommentar hinzufügen