[PYTHON] J'ai essayé l'API du roman Naruro

Déclencheur

https://qiita.com/dely13/items/5e949a384161c961d8ce Si vous lisez cet article et que vous l'essayez vous-même après avoir pratiqué ~~ play ~~, le résultat sera différent → Cet article 2017 J'ai donc essayé de publier la dernière version (à 10h00 le 29 juin 2020)

La première moitié reste telle qu'elle est

J'utiliserai l'article de @ dely13 tel quel

dely13.py


import pandas as pd
import requests
import numpy as np
import seaborn as sns
from scipy import stats
import matplotlib.pyplot as plt
%matplotlib inline

url = "http://api.syosetu.com/novelapi/api/"
#Spécifiez les paramètres d'API dans le dictionnaire
#Dans cette condition, sortez les données au format json dans l'ordre de l'évaluation globale.
payload = {'of': 't-gp-gf', 'order': 'hyoka','out':'json'}

st = 1
lim = 500

data = []
while st < 2000:
    payload = {'of': 't-gp-gf-n', 'order': 'hyoka',
          'out':'json','lim':lim,'st':st}
    r = requests.get(url,params=payload)
    x = r.json()
    data.extend(x[1:])
    st = st + lim
df = pd.DataFrame(data)

#Prétraitement ('year'Ajouter une colonne,'title_len'Ajouter une colonne)
df['general_firstup'] = pd.to_datetime(df['general_firstup'])
df['year'] = df['general_firstup'].apply(lambda x:x.year)

df['title_len'] = df['title'].apply(len)

Veuillez lire l'article original pour plus de détails car il est vraiment tel qu'il est

Sujet principal

En 2017

Des chiffres intéressants. La valeur moyenne est de 17 caractères, ce qui équivaut au nombre de caractères dans le haïku. En d'autres termes, le titre de Naruro était Haiku! Le bruit des vieux étangs et des grenouilles sautant dans l'eau ...

On m'a dit, mais en 2020 ...?

df['title_len'].hist()

df['title_len'].describe()

Diagramme d'histogramme df ['title_len']. Hist () image.png Données df ['title_len']. Describe ()

count 2000.000000 mean 24.179500 std 15.528356 min 2.000000 25% 12.000000 50% 21.000000 75% 32.000000 max 100.000000 Name: title_len, dtype: float64

Wwwwwww qui augmente de 7 caractères en moyenne

Et ce qui est vraiment intéressant c'est d'ici

per_year.py


title_by_year = df.groupby('year')['title_len'].agg(['mean','count','std']).reset_index()
#terrain
title_by_year.plot(x='year',y='mean') 
#Les données
title_by_year

Plot title_by_year.plot (x = 'year', y = 'mean') * mean = moyenne image.png

Agréger title_by_year

year mean count std
2008 7.500000 2 2.121320
2009 12.428571 7 8.182443
2010 10.882353 17 5.278285
2011 10.180000 50 4.684712
2012 13.294737 95 6.963237
2013 14.115942 138 8.541930
2014 16.065476 168 8.780176
2015 18.218009 211 9.701245
2016 21.577358 265 12.326472
2017 24.476015 271 11.750113
2018 29.425856 263 13.890288
2019 31.327327 333 15.861156
2020 40.483333 180 22.348053

Conclusion

** Le titre de 2019 sera une courte chanson ** La personne que j'ai devinée dans l'article de 2017 est incroyable. C'est Don Pisha.

À part 1

Puisque c'est un gros problème, je vais essayer de trouver le maximum et le minimum

title_by_year = df.groupby('year')['title_len'].agg(['mean','min','max']).reset_index()
#terrain
title_by_year.plot(x='year')
#Les données
title_by_year.plot

Tracer title_by_year.plot (x = 'year') image.png

Données title_by_year

year mean min max
2008 7.500000 6 9
2009 12.428571 5 25
2010 10.882353 2 23
2011 10.180000 4 26
2012 13.294737 3 40
2013 14.115942 3 54
2014 16.065476 4 63
2015 18.218009 3 59
2016 21.577358 2 77
2017 24.476015 4 69
2018 29.425856 5 74
2019 31.327327 4 100
2020 40.483333 4 100

Ces données de 100 caractères ne dépassent-elles pas le nombre de caractères ...?

max_100.py


df[['ncode','title','year','title_len']].set_index('ncode').query('title_len==100')
ncode title year title_len
N7855GF Traitée comme incompétente et bannie de ma fête des amis d'enfance, je suis un imbécile qui utilise pleinement le cadeau «traduction»... 2020 100
N6203GE Un forgeron qui a été exilé de la dictature, en fait, avec la protection de "Blacksmith Goddess", tout à coup avec un équipement complet d'armure "Super Legendary Class"... 2020 100
N0533FS [Version série] J'ai vu l'idole chasseuse marcher avec un beau mec, alors j'ai acheté un emploi à temps partiel... 2019 100
N4571GF Dans la 7ème semaine de la boucle, j'ai appris que j'étais équipé de mes amis croyants, donc au 8ème tour j'ai activement fait la fête... 2020 100

... ce n'est pas plus de 100 caractères ...?

Quand je l'ai recherché après avoir écrit l'article, c'était exactement 100 caractères image.png

Y a-t-il une limite de caractères? C'est ce que je combat à la limite.

À part 2

Au contraire, je m'intéressais aux titres courts

mini_len.py


df.groupby('title_len')['title_len'].agg(['count']).head(9).T

Liste de correspondance entre le nombre de caractères et le nombre d'œuvres Depuis qu'il est devenu plus long, il est placé horizontalement

title_len 2 3 4 5 6 7 8 9 10
count 2 8 18 35 41 38 64 75 89

title2_4.py


df[['title','year','title_len']].set_index('title').sort_values('title_len').query('title_len<5')

4 personnages sont des extraits

title year title_len
lettre 2016 2
Aube 2010 2
Arc et épée 2013 3
Raison de l'eau 2012 3
Roi des tombes! 2013 3
Ami d'enfance 2016 3
Chercheur 2013 3
Ombre de la tour 2012 3
Personne d'extermination 2015 3
Chat et dragon 2013 3
Saint de l'oubli 2020 4
J/53 2012 4
Roi démon noir 2011 4
Mon serviteur 2019 4
L'amour de la foule 2015 4
Petit-fils de Sage 2015 4
Septième 2014 4

Même quelques lettres sont célèbres. J'ai été impressionné par les anciens Moba qu'il y avait un «titre» dans les quatre lettres.

Impressions

Est-ce l'influence de l'animation des romans mobiles que de nombreux débutants entrent, sinon autant que Moba (actuellement Ebu)? J'ai été formé par Moba, donc même si c'est un peu difficile à lire, je vais le lire si le contenu est intéressant, mais quand même, le titre est long. Je suis accro à this et this sont également de longs titres. (Ebudato ce * Stemmer)

Je voulais essayer différentes choses car je peux affiner les conditions de recherche avec l'API Naro. Et si vous souhaitez extraire plus de 2000 éléments ...

Recommended Posts

J'ai essayé l'API du roman Naruro
J'ai essayé le roman Naro API 2
J'ai essayé d'utiliser l'API checkio
J'ai essayé de toucher l'API COTOHA
J'ai essayé d'utiliser l'API BigQuery Storage
J'ai essayé d'accéder à l'API Qiita depuis le début
J'ai essayé d'utiliser l'API Google Cloud Vision
J'ai essayé de toucher l'API Qiita
J'ai essayé la bibliothèque changefinder!
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé de frapper l'API avec le client python d'echonest
J'ai essayé d'analyser les émotions de tout le roman "Weather Child" ☔️
[Première API COTOHA] J'ai essayé de résumer l'ancienne histoire
J'ai essayé le tutoriel TensorFlow 1er
J'ai essayé de créer l'API Quip
J'ai essayé le tutoriel TensorFlow 2ème
J'ai touché l'API de Tesla
J'ai essayé de toucher la bibliothèque d'API de contrôle de routeur multi-fournisseur NAPALM
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé l'API Google Cloud Vision pour la première fois
J'ai essayé d'obtenir diverses informations de l'API codeforces
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
J'ai essayé d'utiliser l'API COTOHA (il y a aussi du code sur GitHub)
Tutoriel TensorFlow J'ai essayé MNIST 3rd
J'ai essayé le serveur asynchrone de Django 3.0
J'ai essayé de résumer la commande umask
J'ai essayé tensorflow pour la première fois
J'ai essayé de reconnaître le mot de réveil
J'ai essayé d'utiliser l'API de données YOUTUBE V3
Je suis tombé sur l'API Hatena Keyword
J'ai essayé l'outil de visualisation OSS, sur-ensemble
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
Python: j'ai essayé le problème du voyageur de commerce
J'ai essayé de jouer avec l'image avec Pillow
J'ai créé une API Web
J'ai essayé le framework de test Python Tornado
J'ai essayé d'appeler l'API de prédiction du modèle d'apprentissage automatique de WordPress
J'ai essayé de gratter
J'ai essayé PyQ
J'ai essayé AutoKeras
J'ai essayé de résumer diverses phrases à l'aide de l'API de synthèse automatique "summpy"
J'ai essayé le moulin à papier
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé django-slack
J'ai essayé Django
J'ai essayé spleeter
J'ai essayé cgo
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé Web Scraping pour analyser les paroles.
J'ai essayé d'utiliser l'API Detect Labels d'AWS Rekognition
J'ai essayé la fonction de tableau croisé dynamique des pandas
J'ai recherché dans la bibliothèque l'utilisation de l'API Gracenote
J'ai essayé d'utiliser l'API à distance avec GAE / J
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction