[PYTHON] Wie viel sollte ich schließlich einen Qiita-Artikel schreiben?

Hintergrund

Ab diesem Monat trat ich in eine Schule namens Protoout Studio (https://protoout.studio/) ein und hatte ein Problem beim Posten eines Qiita-Artikels. Ursprünglich habe ich ein Blog on Note und ein Hatena-Blog geschrieben, aber dies ist mein erster Beitrag auf Qiita. Normalerweise setze ich einen Standard wie das Schreiben von 1000 Zeichen gleichzeitig, aber wie viel sollte ich durchschnittlich einen Qiita-Artikel schreiben? Also habe ich nachgeschlagen.

Umfrageziel

Wie auch immer, ich möchte verschiedene Dinge analysieren, also habe ich versucht, andere Elemente als die Anzahl der Zeichen im Artikelkörper zu extrahieren. ・ Anzahl der Titelzeichen ・ Anzahl der Tags ・ Anzahl der Zeichen im Text ・ Anzahl der Codeeinfügungen (Abgebrochen, da die Logik zum Extrahieren der Anzahl der Zeichen im Code schwierig ist) ・ Anzahl der Abschnitte ・ Anzahl der Textzeichen pro Abschnitt ・ Anzahl der LGTM ・ Anzahl der Kommentare Ich nahm 5000 Artikel heraus, einschließlich des Wortes "node.js" mit der Qiita-API, formte sie zu csv und visualisierte und analysierte sie mit einem jupyter-Notizbuch.

Umgebung

node v12.18.2 Visual Studio Code 1.47.1 jupyter-notebook 6.0.3 python 3.7.6

Beispielcode

//package require
const axios = require("axios");
const fs = require("fs");
const csvStr = require("csv-stringify/lib/sync");

//Holen Sie sich Daten mit der Qiita-API und geben Sie sie an csv aus
async function getArticle(query) {
  
  //Liste für die Konvertierung in CSV
  let outcsv = [];
  let columns = ["Titel","Titel文字数","Anzahl der Tags","Anzahl der Zeichen im Text","Anzahl der Codeeinfügungen","Anzahl der Abschnitte","Anzahl der Zeichen pro Abschnitt","LGTM-Nummer","Anzahl der Kommentare"];
  outcsv.push(columns);

  //Suchparameter
  var PAGE_MAX = 50;

  for (PAGE = 1;PAGE<=PAGE_MAX;PAGE++){
    //GET Anfrage
    var PER_PAGE = 100;   
    let response = await axios.get("https://qiita.com/api/v2/items?page=" + PAGE + "&per_page=" + PER_PAGE+"&query="+encodeURIComponent(query));
    
    for (i =0 ; i<PER_PAGE ; i++) {
      //Informationsspeicherliste eines Datensatzes
      let record = [];

      //Elemente, die Sie wollen
      var title_name = response["data"][i]["title"];
      var title_len = response["data"][i]["title"].length;
      var tag = response["data"][i]["tags"].length;
      var body = response["data"][i]["rendered_body"].replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'').length;
      var code = (response["data"][i]["rendered_body"].match(/code-frame/g)||[]).length;
      var section = (response["data"][i]["rendered_body"].match(/<h1>|<h2>|<h3>/g)||[]).length;
      var body_ratio = section == 0 ? body : Math.round(body / section); //section=0 Personen sind Abschnitt=Berechnet als 1
      var like = response["data"][i]["likes_count"];
      var comment = response["data"][i]["comments_count"];
      
      //In Liste speichern
      record.push(title_name,title_len,tag,body,code,section,body_ratio,like,comment); 
      outcsv.push(record);
    }
  }
  //Ausgabe als csv
  fs.writeFileSync("node.csv", csvStr(outcsv));
}

var query = "node.js";
getArticle(query);

Kleine Teile

Anzahl der Zeichen im Artikelkörper

var body = response["data"][i]["rendered_body"].replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'').length;

Hier können Sie die Anzahl der Zeichen im Hauptteil des Artikels zählen. Da das HTML-Tag an den Text des als Antwort zurückgegebenen Artikels angehängt ist, wird es durch einen regulären Ausdruck ersetzt. (Referenz: https://qiita.com/miiitaka/items/793555b4ccb0259a4cb8)

Anzahl der Codeeinfügungen

var code = (response["data"][i]["rendered_body"].match(/code-frame/g)||[]).length;

Die Häufigkeit, mit der der Code eingefügt wird, wird durch Extrahieren des HTML-Tags `<div class =" code-frame ">` gezählt. Die Logik zum Extrahieren des Codeteils ist zu schwierig, deshalb habe ich diesmal aufgegeben. Ich möchte eines Tages herausfordern.

Anzahl der Abschnitte

var section = (response["data"][i]["rendered_body"].match(/<h1>|<h2>|<h3>/g)||[]).length;
var body_ratio = section == 0 ? body : Math.round(body / section); //section=0 Personen sind Abschnitt=Berechnet als 1

Der Abschnitt nimmt die HTML-Tags `<h1> <h2> <h3>` heraus und zählt sie. Einige Artikel wurden noch nie verwendet, und die Anzahl der Zeichen pro Abschnitt scheint unendlich zu sein. Wenn also section = 0 ist, wird die Anzahl der Zeichen im Body body_ratio unverändert zugewiesen.

Analyse

import pandas as pd
//Daten lesen
df = pd.read_csv("node.csv")
//Nehmen Sie das Index-Element heraus und zeichnen Sie ein Histogramm
df[df.columns[index]].hist(bins=Anzahl der Stöcke,range=(Linker Rand der Figur,Rechter Rand der Figur))
//Berechnung jeder Statistik
df.describe()
//Berechnung des Korrelationskoeffizienten
df.corr()
//Eine Heatmap zeichnen
import seaborn as sns
df_corr = df.corr()
sns.heatmap(df_corr, vmax=1, vmin=-1, center=0)

Ich habe einige grundlegende Analysen mit dem Jupyter-Notizbuch durchgeführt. Ich möchte in maschinelles Lernen eintauchen. Referenz: https://pythondatascience.plavox.info/matplotlib/%E3%83%92%E3%82%B9%E3%83%88%E3%82%B0%E3%83%A9%E3%83%A0

Ergebnis

Titelname Anzahl der Zeichen

title_len.png Durchschnitt: 36,3, Median 34,0, Minimum 4,0, Maximum 225,0

Es scheint, dass ungefähr 35 Zeichen der Durchschnitt sind. "Wie lange soll ich denn einen Qiita-Artikel schreiben?" Ist 23 Zeichen, so dass es scheint, dass ein etwas längerer häufig ist. 225 Charaktere sind unglaublich, sie sind wirklich lang ...

Anzahl der Tags

tag.png Durchschnitt: 3,4, Median 3,0, Minimum 1,0, Maximum 5,0

Über 3 ist durchschnittlich. Das ist irgendwie intuitiv.

Artikel Text

image.png image.png Durchschnittlich 5700 Zeichen, Median 3540, Minimum 15,0, Maximum 559479

Die obere Figur ist das ganze Bild und die untere Figur ist die Figur mit dem rechten Ende als 30.000. Es scheint, dass der Durchschnitt hochgezogen wird, so dass der Medianwert von ungefähr 3540 Zeichen üblich ist. Artikel mit 560.000 Zeichen ... Wie viele Stunden wird es dauern, um es zu schaffen ...?

Da die Anzahl der Zeichen nicht klar ist, werde ich ein denkwürdiges Kapitel zitieren. ・ 2000 Charakter perfekter Preis https://qiita.com/keenjoe007/items/c7068c58c63c17388f39 https://qiita.com/lelouch99v/items/3dc11676bb9c23457d41 ・ 3000 Zeichen perfekter Preis https://qiita.com/Ryusuke-Kawasaki/items/87dd43c176a489aa9fa5 ・ 4000 Zeichen perfekter Preis Unzutreffend ・ 5000 Charaktere perfekter Preis https://qiita.com/seki0809/items/5f831d63146e44dc106a

Anzahl der Codeeinfügungen

image.png image.png Durchschnitt 8,4, Median 5,0, Minimum 0, Maximum 222

In ähnlicher Weise ist die obere Figur das ganze Bild und die untere Figur ist die Figur mit dem rechten Ende bei 40. Ich habe das Gefühl, dass der Durchschnitt ein wenig angehoben wird. Ist es also im Allgemeinen ungefähr fünfmal? Als nächstes möchte ich die Anzahl der Zeichen im Code analysieren.

Anzahl der Abschnitte

image.png image.png Durchschnitt 9,8, Median 8,0, Minimum 0, Maximum 132

In ähnlicher Weise ist die obere Figur das ganze Bild und die untere Figur ist die Figur mit dem rechten Ende bei 40. Es scheint, dass es viele 8 bis 9 Abschnitte gibt. Ich möchte das Verhältnis von h1, h2, h3 separat diskutieren.

Anzahl der Zeichen pro Abschnitt

image.png image.png Durchschnitt 738, Median 448, Minimum 15,0, Maximum 207108

In der folgenden Abbildung ist das rechte Ende 6000. Es sind ungefähr 450 Zeichen und es ist ein Abschnitt. Es war ein wenig unerwartet, dass es eine solche Variation gab.

Ich habe es auch hier nicht richtig verstanden, also werde ich den perfekten Preis veröffentlichen (es ist gerundet, also nicht streng) ・ Perfekter Preis mit 300 Zeichen https://qiita.com/deren2525/items/43386d5d5872967195d4 ・ 400 Zeichen https://qiita.com/mejileben/items/cbe0608ee43aa1fab258 ・ 500 Zeichen https://qiita.com/ryokkkke/items/602a35595090e2224fbd

LGTM-Nummer

image.png image.png Durchschnitt 13,6, Median 2,0, Minimum 0,0, Maximum 1954

In der folgenden Abbildung ist das rechte Ende 40. Ein Median von 2 bedeutet, dass Sie, wenn Sie 3 LGTMs erhalten, über 2500 liegen. Es scheint besser aufzuhören, Likes wie SNS zu erwarten.

Anzahl der Kommentare

image.png image.png Durchschnitt 0,27, Median 0,0, Minimum 0,0, Maximum 26,0

In der folgenden Abbildung ist das rechte Ende auf 5 gesetzt (da Bins = 30 sind, ist die Abbildung spärlich). Der Median ist 0, aber der 75% -Punkt war auch 0. Erwarten Sie keine Kommentare! Es ist das.

Korrelation zwischen jeder Variablen

image.png

Dies ist eine Zeichnung des Korrelationskoeffizienten. Es erscheint intuitiv sinnvoll, dass eine leichte Korrelation zwischen der Anzahl der Zeichen im Text, der Anzahl der Codeeinfügungen, der Anzahl der Abschnitte und der Anzahl der Zeichen pro Abschnitt besteht. Es ist intuitiv, dass es eine leichte Korrelation zwischen der Anzahl der LGTMs und der Anzahl der Kommentare zu geben scheint.

Ich hatte eine Korrelation zwischen der Anzahl der LGTMs und anderen Faktoren erwartet, aber es scheint, dass es nicht viel Korrelation gibt. Es deutet darauf hin, dass die Menge nicht sehr stark in LGTM involviert ist, ist es schließlich der Inhalt? Die Möglichkeit, dass es viele Datensätze mit der LGTM-Nummer = 0 gibt, kann jedoch nicht ausgeschlossen werden.

Fazit

Anzahl der Titelzeichen: ca. 35 Zeichen Anzahl der Tags: 3 Anzahl der Zeichen im Text: Ungefähr 3500 Zeichen Anzahl der Codeeinfügungen: ca. 5 mal Anzahl der Abschnitte: 8/9 Abschnitte Anzahl der Zeichen pro Abschnitt: ca. 450 Zeichen Anzahl der LGTMs: Hurra, wenn Sie es zweimal bekommen Anzahl der Kommentare: Hurra, wenn Sie einen bekommen

Was ich machen will; was ich vorhabe zu tun

Die Anzahl der Zeichen im Text beträgt jetzt 3500, aber es gibt auch einen Code darin. Ich frage mich, wie viel des Codes ist. Ich vermute, dass der Codeteil mehr Zeichen hat.

Dieses Mal habe ich mit node.js als Abfrage nach Artikeln gesucht, aber ich möchte auch andere Abfragen ausprobieren. Was passiert, wenn Sie Python abfragen, was passiert, wenn Sie Musik abfragen usw. Es lohnt sich zu überlegen, ob es Unterschiede zwischen den Abfragen gibt.

Artikel, die verschiedene Maximalwerte erreichen

Bitte beachten Sie, dass dies diesmal nicht der Maximalwert in allen Qiita-Artikeln ist, da nur 5000 Fälle als Abfrage von node.js verwendet werden.

・ 225 Titelzeichen (Es ist lang, weil es Englisch ist!)   https://qiita.com/PINTO/items/865250ee23a15339d556

・ 559479 Zeichen im Text   https://qiita.com/K-Hama/items/5c1d4759fd5cbcf397b2

・ Anzahl der Code-Einfügungen 222-mal, Anzahl der Abschnitte 132 (Ich denke, es ist das erste Zeichen, 182.000 Zeichen. Ist es die Menge an Code?)   https://qiita.com/y-bash/items/09575a8e3d85656015bc

・ LGTM Nummer 1954 Anzahl der Kommentare 26 (rein erstaunlich ...!)   https://qiita.com/akaoni_sohei/items/186121bd9994197aab50

Apropos

Die Parameter in diesem Artikel lauten wie folgt: Anzahl der Titelzeichen: 23 Zeichen Anzahl der Tags: 4 Körperzeichen: 6129 Zeichen Anzahl der Codeeinfügungen: 8 mal Anzahl der Abschnitte: 23 Anzahl der Zeichen pro Abschnitt: 266 Zeichen Anzahl der LGTM: 0 Anzahl der Kommentare: 0

Für Ihre Information!

Recommended Posts

Wie viel sollte ich schließlich einen Qiita-Artikel schreiben?
Qiita (1) Wie schreibe ich einen Codenamen?
Wie kann ich ein gutes Programm schreiben?
[Python-Anfänger] Wie entwickle und führe ich Python schließlich aus?
MacBookPro-Setup Schließlich möchte ich eine Neuinstallation durchführen
Was soll ich denn mit der Python-Verzeichnisstruktur machen?
Wie soll ich auf Klassenvariablen zugreifen?
Ein Memorandum darüber, wie man Pandas schreibt, das ich persönlich oft vergesse
Was soll ich verwenden, um Typvergleiche in Python durchzuführen?
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
So schreiben Sie eine Datei, bei der Sie in allen Sprachen vorsichtig sein sollten