Habrastatistics: analizando los comentarios de los lectores

Hola Habr. EN parte anterior Se analizó la popularidad de varias secciones del sitio y, al mismo tiempo, surgió la pregunta: qué datos se pueden extraer de los comentarios de los artículos. También quería probar una hipótesis, que analizaré a continuación.
Habrastatistics: analizando los comentarios de los lectores

Los datos resultaron bastante interesantes, también logramos crear una pequeña “mini calificación” de comentaristas. Continúa bajo el corte.

Сбор данных

Para el análisis, utilizaremos datos de este año, 2019, especialmente porque ya recibí una lista de artículos en formato csv. Sólo queda extraer los comentarios de cada artículo, afortunadamente para nosotros, se almacenan allí y no es necesario realizar ninguna solicitud adicional.

Para resaltar comentarios de un artículo, el siguiente código es 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)

Esto nos permite obtener una lista de comentarios similar a esta (apodos eliminados por razones de privacidad):

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

Como puede ver, para cada comentario podemos obtener el nombre de usuario, la fecha, la calificación y el texto real. Veamos qué podemos sacar de esto.

Por cierto, inicialmente la idea de recopilar calificaciones era un poco diferente: ver qué calificaciones dan los usuarios. Por ejemplo, puedes mirar YouTube: incluso el vídeo más ideal, incluso un vídeo que no contiene ninguna información subjetiva, puramente como referencia o comunicado de prensa, todavía tiene una cierta cantidad de desventajas. La hipótesis era que hay usuarios a los que, desde el punto de vista puramente clínico, no les gusta nada, tal vez no se produce serotonina en el cerebro o algo más. Tal vez una persona ya no necesita sentarse en Habré, sino para tratar la depresión... Pero resultó que no puedo comprobar esto aquí, porque... la lista de quienes dieron calificaciones no se guarda en el comentario o artículo. Bueno, es decir, trabajaremos con los datos disponibles. El resultado es una calificación "inversa": puede ver qué calificaciones _reciben_ los usuarios. Lo cual, en principio, también resulta interesante.

transformación

Para empezar, un descargo de responsabilidad tradicional. Esta calificación, como todas las anteriores, no es oficial. No garantizo que no haya cometido un error en ninguna parte. Para aquellos interesados ​​en detalles técnicos, se proporciona un código más detallado. en la parte anterior.

Entonces empecemos. Los comentarios de este año, 2019 (que aún no termina), fueron tomados para su análisis. Al momento de escribir este artículo, los usuarios escribieron 448533 comentario, el tamaño del archivo csv es 288MB. Potente, impresionante.

tiempo de escritura

Agrupemos los comentarios por horas, dividiendo los días laborables y los fines de semana por separado.

Habrastatistics: analizando los comentarios de los lectores

Aquí no nos interesan los valores absolutos, sino los relativos. Si simplemente lo miras "tal como es", resulta queоLa mayoría de los comentarios se escribieron en horario laboral de 10 a 18 😉 Por otro lado, aquí no se tienen en cuenta las zonas horarias, por lo que la pregunta sigue abierta.

Veamos la distribución de comentarios a lo largo del año:

Habrastatistics: analizando los comentarios de los lectores

Y, sin embargo, rota; el aumento es claramente visible entre semana: la periodicidad semanal es claramente visible, por lo que podemos decir con bastante confianza que la gente lee y comenta sobre Habr desde el trabajo (pero esto no es seguro).

Por cierto, surgió la idea de probar la hipótesis de si la cantidad de desventajas o ventajas recibidas difiere del día o la hora del día, pero no fue posible encontrar una relación: la hora en que se dio la calificación no se guarda y no hay conexión directa con el momento del comentario.

Miembros

Por supuesto, no sé el número exacto de usuarios del sitio. Pero los que dejaron al menos un comentario este año resultaron ser aproximadamente personas 25000.

El gráfico del número de mensajes dejados por los usuarios parece bastante interesante:

Habrastatistics: analizando los comentarios de los lectores

Al principio ni yo mismo lo creía, pero parecía que no había ningún error. El 5% de los usuarios deja el 60% de los mensajes.. 10% - 74% de todos los mensajes (de los cuales, les recuerdo, este año, 450 mil). La mayoría simplemente lee el sitio, rara vez deja comentarios o no los deja en absoluto (éstos, por supuesto, no estaban incluidos en mi lista).

Valoraciones

Pasemos a la última y más divertida parte de las estadísticas: las calificaciones. Por razones de privacidad no daré los apodos completos de los usuarios, quien quiera creo que se reconocerá.

En numero de comentarios Para este año, el top 5 lo ocupan VoXXXX (3377 comentarios), 0xdXXXXX (3286 comentarios), strXXXX (3043 comentarios), AmXXXX (2897 comentarios) y khXXXX (2748 comentarios).

En número de beneficios recibidos, el top 5 lo ocupan amXXXX (1395 comentarios, valoraciones +3231/-309), tvXXXX (1544 comentarios, valoraciones +3231/-97), WhuXXXX (921 comentarios, valoraciones +2288/-13), MTXXXX (1328 comentarios, +1383 /-7) y amaXXXX (736 comentarios, calificación +1340/-16).

En calificación positiva absoluta (ni uno solo comentario calificado negativamente) la parte superior de la parte superior está ocupada por Milfgard и boomburum. Como excepción presento sus apodos completos, creo que se lo merecen.

Las desventajas también son interesantes. Arriba por número de desventajas acumuladas Para este año están ocupados por seisXX (473 más, 699 menos), khXX (1915 más, 573 menos) y nicXXXXX (456 más, 487 menos). Pero como puedes ver, estos usuarios tienen bastantes comentarios positivos. Pero según absoluto negativo El antitema incluye vladXXXX (55 comentarios, 84 menos, 0 ventajas), ekoXXXX (77 comentarios, 92 menos, 1 más) e iMXXXX (225 comentarios, 205 menos, 12 ventajas).

Conclusión

No pude calcular todo lo planeado, pero espero que haya sido interesante.

Como puede ver, incluso un conjunto de datos con una cantidad tan pequeña de campos puede proporcionar datos interesantes para el análisis. Todavía queda mucho por profundizar, desde la creación de una “nube de palabras” hasta el análisis de texto. Si surge algún resultado interesante, se publicará.

Fuente: habr.com

Añadir un comentario