Merci. Je veux un iPad. C'est un article d'histoire car on dit que si vous écrivez un article d'histoire en utilisant COTOHA, vous obtiendrez un iPad (il y a un mauvais mot).
Je l'ai mis dans [github] 4, alors jetez un œil. Seules les informations utilisateur requises pour accéder à COTOHA sont factices, veuillez donc les remplacer par vos propres informations.
La conclusion est l'analyse linguistique du titre et du synopsis de [Devenir romancier] 2.
[Devenir un romancier] 2 est un site de publication de romans sur le Web. Un roman est aussi une création, mais je pense qu'il a aussi un aspect ludique pour y accéder. S'il y a une histoire à la mode, lancez-vous et accédez aux œuvres qui deviendront le compteur. Dans un sens, il y a une culture proche d'Ogiri sur Twitter.
Donc, le point principal de cet article est d'essayer de pirater ce jeu avec l'analyse du langage. En regardant [COTOHA API Portal] 1, j'ai trouvé l'extraction de mots-clés et le calcul de similarité.
Il semble que 1 peut être fait surement, mais quand j'écris 2 aussi, c'est une partie qui est sobre. Récemment, le titre est souvent au format phrase, donc le titre ≒ synopsis. Est-ce correct ou vaut-il mieux saisir des informations différentes du titre? Je suis curieux.
Le titre et le synopsis utilisent [Narurou Novel API] 3. C'est une API qui peut obtenir les informations générales du roman officiel de Naro.
Si vous souhaitez connaître les informations exactes, veuillez consulter [Document] 3. En gros, si vous attachez une requête à l'URL suivante avec GET et la lancez, C'est une API simple qui renvoie un aperçu du roman capturé.
https://api.syosetu.com/novelapi/api/
En fait, je voulais inclure les 10 premiers épisodes dans l'analyse, mais l'API officielle ne divulgue pas les informations textuelles. Certains sites ont affiné l'interface utilisateur en extrayant des données Je pense que je n'ai pas aimé la charge sur le serveur à cause de cela. C'est aussi moral d'utiliser le grattage pour faire quelque chose qui n'est pas officiel, alors je l'ai arrêté.
https://api.syosetu.com/novelapi/api/?out=json&lim=50&order=dailypoint
Par exemple, si vous souhaitez obtenir les 50 premiers éléments du classement quotidien avec json, cela ressemble à ceci. Je suis désolé de mettre une charge sur le serveur à chaque fois pendant le test, donc Avec cet outil, une fois que vous l'avez obtenu, vous l'enregistrez localement et vous le réutilisez. Au fait, le code ressemble à ceci.
url = 'https://api.syosetu.com/novelapi/api/'
param = {
'out': 'json',
'lim': '50',
'order': 'dailypoint',
}
url_format = '{}?{}'.format(url, urllib.parse.urlencode(param))
res = requests.get(url=url_format)
Tout d'abord, le nombre de sorties du roman appelé all count est retourné, donc C'est un peu maladroit, mais vous devez éviter tous les comptes lorsque vous utilisez pour.
narou_datas = res.json()
for data in narou_datas:
if 'title' in data:
title = data['title']
story = data['story']
daily_point = data['daily_point'],
COTOHA API [Portail API COTOHA] 1 semble exiger un processus en deux étapes lors de son utilisation.
url = 'https://api.ce-cotoha.com/v1/oauth/accesstokens'
header = {
'Content-Type':'application/json'
}
param = {
'grantType': 'client_credentials',
'clientId': conf['clientId'],
'clientSecret': conf['clientSecret'],
}
res = requests.post(url=url, headers=header, data=json.dumps(param))
access_token = res['access_token']
url = 'https://api.ce-cotoha.com/api/dev/nlp/v1/keyword'
header = {
'Content-Type' : 'application/json;charset=UTF-8',
'Authorization' : f"Bearer {access_token}",
}
param = {
'document': title,
'type' : 'kuzure',
'max_keyword_num' : 10,
}
res = requests.post(url=url, headers=header, data=json.dumps(param))
result = res['result']
url = 'https://api.ce-cotoha.com/api/dev/nlp/v1/similarity'
header = {
'Content-Type' : 'application/json;charset=UTF-8',
'Authorization' : f"Bearer {access_token}",
}
param = {
's1': title,
's2': story,
'type' : 'kuzure',
}
res = requests.post(url=url, headers=header, data=json.dumps(param))
result = res['result']
Cela a été largement réussi. Il semble que les 50 principaux cas ne soient pas biaisés de manière inattendue, Par exemple, il semble que le degré d'épidémie puisse être mesuré en l'exécutant régulièrement et en montrant la tendance à l'augmentation ou à la diminution.
Si vous extrayez les principaux résultats des 100 premiers résultats, "Compétence" "Ami d'enfance" "Expulsion" "Monde différent" "Musou" "Plus fort" "Isolation" "Mauvaise fille" N'est-ce pas une programmation généralement convaincante?
La plupart du temps, lors de la comparaison visuelle, certains mots clés devraient être corrigés.
Les nomenclatures courantes telles que «homme», «il» et «elle» entrent en tant que mots clés. Puisque ce sont des informations qui deviennent du bruit à partir de la signification originale d'un mot clé Il semble nécessaire de faire une liste d'exclusion et ainsi de suite.
Par exemple, "la vie lente la plus forte" était compté comme un mot clé. Si possible, comptez cela comme deux mots clés, "le plus fort" et "la vie lente". Si la nomenclature se chevauche, elle a tendance à être comptée comme un mot. Cependant, par exemple, "réincarnation du monde différent" est une nomenclature complexe, mais je veux que ce soit un mot. Les mesures à caractère général semblent être assez difficiles.
Je pense qu'il ne serait pas étrange que différents mondes et filles méchantes aient des chiffres plus accablants. Comme ceux-ci ont leurs propres éléments de réglage et catégories, il semble qu'ils ne soient pas simplement décrits dans le titre ou le synopsis. Il semble que les étiquettes, etc. doivent être pondérées séparément, puis traitées de manière complexe.
C'est douloureux à dire sans faire un graphique clair, mais je n'ai pas semblé trouver beaucoup de corrélation.
Si vous suivez la tendance,
"title": "L'ami d'enfance de Kensei m'a frappé violemment avec le harcèlement de puissance, alors j'ai décidé d'isoler et de recommencer à la frontière.", "daily_point": 5468, "score": 0.9695894
Titres au format de phrase tels que calculés avec une grande similitude,
"title": "Different World Cooking Road", "daily_point": 574, "score": 0.44519746
Les titres de nomenclature à l'ancienne, tels que, sont calculés pour avoir une faible similitude.
Si vous regardez la distribution des scores, il existe de nombreux nombres avec une forte similitude, donc Il semble être vrai qu'il existe de nombreux titres de style phrase qui ont une sensation de roman léger. Cependant, avec cela seul, je ne sais pas s'il s'agit d'un format de phrase donc il y en a beaucoup dans le haut, ou simplement parce qu'il est populaire et qu'il n'y a que beaucoup de populations.
Afin d'apporter des corrections, la similitude est calculée pour les résultats triés par date et heure de comptabilisation, et comparée au coefficient. Si elle est similaire à cette distribution de similarité, elle reflète simplement la population. Si le ratio de formats de phrases est faible dans cette distribution, il semble que les formats de phrases ont une forte capacité de lecture.
Cependant, le calcul de similitude était à l'origine une enquête sur le type de synopsis qui serait populaire. Après avoir mené des recherches supplémentaires, je ne pouvais pas arriver à une conclusion sur ce qu'il fallait faire du synopsis, alors j'ai terminé ici. (La question de savoir ce que devrait être le titre est une faible priorité personnellement)
Parce qu'il fonctionne avec le code de test répertorié ci-dessus. C'est très facile. Quiconque peut frapper curl peut l'utiliser en quelques secondes, il semble donc assez facile à utiliser.
En revanche, il est difficile de comprendre la réponse lorsqu'une erreur se produit. Il y a un problème avec le jeton d'accès, il y a trop de caractères, J'obtiens une erreur pour une autre raison. Le statut de la réponse et la granularité du message sont assez grossiers, donc Il était assez difficile d'identifier la cause à partir de là.
Comme certains l'ont utilisé pour résumer l'Aozora Bunko, J'ai pensé qu'il montrerait sa vraie valeur lorsqu'il est utilisé en combinaison avec d'autres services.
Par exemple, en combinant la reconnaissance vocale et l'estimation des attributs utilisateur, Il semble que les attributs des humains séjournant dans un espace spécifique puissent être automatiquement collectés. Installez-le dans un restaurant, estimez les attributs du client, Cette zone augmentera le stock de menus supérieurs, etc. (Il semble qu'il brûlera en raison de problèmes de confidentialité)
Je veux un iPad.