[PYTHON] Profitons du traitement du langage naturel à l'aide de l'API COTOHA

Profitez du traitement du langage naturel

"Le traitement du langage naturel" est amusant! !!

Bien sûr, cela peut être difficile, mais c'est plus amusant que cela, de toute façon.

Je voudrais écrire à ce sujet comme point de départ pour un tel plaisir.

Que voulez-vous faire avec le traitement du langage naturel? Que puis-je faire?

Le japonais et d'autres choses qui sont normalement utilisées dans la conversation sont appelés "** langage naturel **".

Veuillez penser que "** langage naturel / traitement " consiste à " traiter " un tel " langage naturel **" sous une forme facile à manipuler sur un ordinateur.

Par exemple, il existe des «** données numériques **» faciles à comprendre pour un ordinateur. Il peut être exprimé numériquement comme "ventes sur site EC", "température" et "volume de trafic". Les «données numériques» sont faciles à gérer avec des formules et des ordinateurs, vous pouvez donc le faire facilement.

...... Si vous pouviez faire quelque chose de similaire avec "** langage naturel **", c'est-à-dire "conversation", "phrases SNS", "roman" et "paroles", ce ne serait pas amusant. C'est ça?

Par exemple

―― Essayez de convertir les paroles de votre artiste préféré et de votre roman préféré en données (en quelque sorte) et dessinez un graphique ――Comparez les lignes de votre manga préféré

Paroles, journaux, Wikipédia, matériel de montage pour votre anime préféré, tout va bien, donc si vous analysez diverses choses en utilisant le "texte" comme matériau, vous trouverez peut-être quelque chose d'intéressant.

N'est-ce pas excitant en quelque sorte? Je le ferai! !!

** Supplément: Qu'est-ce que le langage naturel encore? ** ** "Langage naturel" est un terme qui fait référence au "langage naturel (développemental)" qui s'est développé naturellement pour la communication quotidienne. D'autre part, il existe également un "langage artificiel (langage formel)", et le langage familier est le "langage de programme". Il s'agit d'un langage créé «artificiellement» dans un certain but. La grande différence est que le «langage naturel» a une grammaire et des significations de mots très vagues et autorise diverses expressions, tandis que le «langage artificiel (langage formel)» a un sens clair et aucune ambiguïté. .. Cette «ambiguïté» est interprétée très largement car elle dépend du mode de vie et de la culture de chacun, mais c'est aussi la difficulté et la jouissance du traitement du langage naturel.

Jouons en nous appuyant sur l'API!

Bien que cela semble intéressant, le "traitement du langage naturel" n'était pas si simple ... dans le passé ... oui, mais maintenant c'est facile.

C'est un monde vraiment pratique, et en s'appuyant sur une API externe, il est possible d'atteindre uniquement la partie amusante avec un raccourci.

Les services qui fournissent le traitement du langage naturel incluent AWS, Azure et de nombreux services cloud, mais cette fois, nous utiliserons ** l'API COTOHA **, qui est un fabricant japonais et est fort dans le traitement japonais.

COTOHA API https://api.ce-cotoha.com/

Jouons quand même

L'introduction a été longue, mais il vaut mieux s'amuser et jouer. La principale chose que je veux transmettre dans cette Qiita est de m'amuser.

Cette fois, je vais omettre les détails de la programmation. J'écris en Python, qui est populaire ces jours-ci, afin que cela puisse être fait rapidement et facilement. Collez-le simplement sur Jupyter ou quelque chose du genre et cela fonctionnera!

Tout d'abord, veuillez vous inscrire sur le site API COTOHA pour obtenir diverses informations.

Faites de votre mieux uniquement ici en consultant le guide de démarrage sur https://api.ce-cotoha.com/contents/gettingStarted.html. C'est un peu plus facile à utiliser, vous pouvez l'essayer gratuitement, et contrairement à d'autres services cloud, vous n'avez pas besoin de saisir une carte de crédit depuis le début, vous pouvez donc jouer en toute confiance.

Si vous pouvez vous inscrire avec succès, vous pouvez obtenir les informations nécessaires à l'exécution sur l'écran d'accueil du compte comme indiqué ci-dessous.

image.png

Le reste est simple: réécrivez la partie ★ dans le code ci-dessous avec la valeur obtenue ci-dessus et exécutez Python.

##############################
#★ Réécrire avec la chaîne de caractères sur le tableau de bord de l'API COTOHA
##############################
api_base_url = 'https://api.ce-cotoha.com/api/dev/'
client_id = '************'
client_secret = '************'
access_token_url = 'https://api.ce-cotoha.com/v1/oauth/accesstokens'

##############################
#★ Entrez le texte que vous souhaitez analyser
##############################
text = 'Je suis désolé d'être né.'

##############################
import requests
import json

#Obtenir un jeton
headers = { "Content-Type" : "application/json" }
data = { "grantType":"client_credentials", "clientId":client_id, "clientSecret":client_secret }
r = requests.post(access_token_url, data=json.dumps(data), headers=headers)
bearer_token = r.json()["access_token"]

#Obtenir les attributs utilisateur
headers = { "Content-Type" : "application/json;charset=UTF-8", "Authorization":"Bearer "+bearer_token }
data = { "sentence":text }
url = api_base_url + "nlp/v1/sentiment"
r = requests.post(url, data=json.dumps(data), headers=headers)

r.json()

Si vous essayez, vous obtiendrez le résultat suivant.

{'message': 'OK',
 'result': {'emotional_phrase': [{'emotion': 'triste', 'form': 'Je suis désolé'}],
  'score': 0.21369802583055023,
  'sentiment': 'Negative'},
 'status': 0}

Ceci est un exemple utilisant l'API d'analyse des émotions de COTOHA.

** Analyse des émotions ** Jugez les sentiments de l'écrivain lors de la rédaction d'une phrase comme étant positifs ou négatifs. Il reconnaît également certaines émotions dans le texte, telles que «agréable» ou «surpris».

Le résultat de l'analyse de la fameuse phrase «** Je suis désolé d'être né. **» se résume comme suit.

emotion  : 'triste'
sentiment: 'Negative'

Cette phrase exprime ** l'émotion ** de ** triste **, et le résultat est que toute la phrase est ** négative **.

J'ai pu convertir la phrase naturelle indescriptible "Je suis désolé d'être né" en données faciles à utiliser par "traitement du langage naturel".

C'est un pas vers le "traitement du langage naturel".

Essayez-le en ajoutant différentes phrases. Je pense que le résultat sera assez intéressant ...

Jouons un peu plus

Maintenant, essayez d'exécuter le code suivant.

Ensuite, analysons plusieurs textes à la fois en mettant plusieurs textes sous la forme d'un tableau dans les textes d'ouverture.

Essayez-le de la même manière que l'exemple précédent.

##############################
#★ Réécrire avec la chaîne de caractères sur le tableau de bord de l'API COTOHA
##############################
api_base_url = 'https://api.ce-cotoha.com/api/dev/'
client_id = '************'
client_secret = '************'
access_token_url = 'https://api.ce-cotoha.com/v1/oauth/accesstokens'

##############################
#★ Entrez le texte que vous souhaitez analyser
##############################
texts = [
    'Je suis un chat.',
    'Il n'y a pas encore de nom.',
    'Je n'ai aucune idée d'où je suis né.',
    'Je me souviens d'avoir pleuré seulement dans un endroit sombre et humide.',
    'J'ai vu des êtres humains pour la première fois ici.',
    'De plus, j'ai entendu plus tard que c'était la pire race d'êtres humains appelée Shosei.',
    'Cet étudiant est une histoire qui nous surprend parfois, bouillit et mange.',
    'Cependant, je ne pensais rien à ce moment-là, donc je ne pensais pas que c'était particulièrement effrayant.',
    'Il était juste duveteux lorsqu'il était placé sur sa paume et soulevé.',
    'C'est probablement le début de ce qu'on appelle un être humain qu'il se calme un peu sur sa paume et voit le visage de l'élève.',
    'Le sentiment que je trouvais étrange à cette époque demeure toujours. Le visage, qui doit être décoré avec les premiers cheveux, est glissant et ressemble à un médicament.',
    'Après cela, j'ai rencontré beaucoup de chats, mais je n'ai jamais rencontré une telle roue.',
    'Non seulement cela, le centre du visage est trop saillant.',
    'Ensuite, je souffle parfois de la fumée du trou.',
    'J'étais si malade et vraiment faible.',
    'J'ai finalement appris que c'était une cigarette que les humains boivent.'
]

##############################
print("sentiment,score")

import requests
import json

#Obtenir un jeton
headers = { "Content-Type" : "application/json" }
data = { "grantType":"client_credentials", "clientId":client_id, "clientSecret":client_secret }
r = requests.post(access_token_url, data=json.dumps(data), headers=headers)
bearer_token = r.json()["access_token"]

#Obtenir les attributs utilisateur
headers = { "Content-Type" : "application/json;charset=UTF-8", "Authorization":"Bearer "+bearer_token }

for text in texts:
    data = { "sentence":text }
    url = api_base_url + "nlp/v1/sentiment"
    r = requests.post(url, data=json.dumps(data), headers=headers)
    r_json = r.json()
    print( "{},{}".format( r_json['result']['sentiment'], r_json['result']['score'] ) )

Si vous essayez, vous obtiendrez le résultat suivant.

sentiment,score
Neutral,0.3753601806177662
Neutral,0.28184469062696865
Neutral,0.3836848869293042
Negative,0.39071316583764915
Neutral,0.3702709760069095
Negative,0.513838361667319
Neutral,0.47572556634191593
Negative,0.6752951176068892
Neutral,0.42154746899352424
Positive,0.14142126089599155
Neutral,0.4397035866256947
Neutral,0.3335122613499773
Neutral,0.36874320529074195
Neutral,0.3721780539113525
Negative,0.19851456636071463
Neutral,0.4334376882848198

Si vous regardez le code, vous pouvez l'imaginer, mais c'est un résumé des résultats de l'analyse du début de Natsume Soseki "Je suis un chat" phrase par phrase.

Vous pouvez dessiner différents graphiques en lisant les résultats obtenus avec cela dans Excel et en jouant avec eux.

Par exemple, cela ressemble à ceci. Ce n'est pas intéressant d'en avoir un, j'ai donc également listé "Disqualification humaine" d'Osamu Tadashi.

Le haut est "Je suis un chat" et le bas est "la disqualification humaine".

image.png

C'est intéressant de les organiser de cette manière ...

«Je suis un chat» continue avec la sensation de va-et-vient entre ** Négatif ** et ** Neutre **, tandis que la «disqualification humaine» flotte. La gamme des émotions qui vont et viennent entre ** Négatif ** et ** Positif ** est incroyable.

Je n'ai fait que les 10 premières phrases, mais je sens que je peux voir plus de choses en essayant cela en phrases complètes, par chapitre, et en comparant chaque œuvre et chaque écrivain.

Si elle peut être convertie en données jusqu'à présent, il sera possible d'analyser diverses données statistiques, comme regarder la «moyenne» et regarder la «distribution».

à la fin

comment était-ce? Il semble que vous puissiez faire quelque chose qui semble amusant plus facilement que vous ne le pensez.

Par exemple, l'API COTOHA possède de nombreuses autres API telles que «estimer l'âge et le sexe à partir de phrases» et «extraire des parties (verbes et nomenclature)». Bien entendu, diverses données peuvent être converties vers Azure, AWS, IBM Cloud, etc. Les Personality Insights d'IBM Cloud sont également intéressants. Vous pouvez faire un diagnostic de personnalité à partir du texte.

En utilisant le "traitement du langage naturel" de cette manière, diverses phrases peuvent être rendues faciles à manipuler sur un ordinateur.

Une fois qu'il a pris une forme facile à manipuler, diverses applications seront possibles.

Analysez et améliorez le texte sur le site Web pour augmenter le CVR, analysez SNS et utilisez-le pour le marketing, analysez des essais, lisez les impressions et notez les résultats pour analyser quel type de texte a un score élevé ... ….

Extraire diverses données d'essais et d'impressions de lecture et les utiliser comme «variables explicatives», définir la notation comme «variable objective» et effectuer une analyse de régression. Si vous écrivez un bel arbre de décision, vous pourrez peut-être viser un score élevé ...!

Même sans les choses difficiles (les choses difficiles sont faites par les spécialistes qui fournissent les services!), C'est amusant de pouvoir jouer diverses choses dans le «langage naturel» auquel vous êtes habitué. J'espère que ce Qiita sera la première étape du traitement du langage naturel! !!

Recommended Posts

Profitons du traitement du langage naturel à l'aide de l'API COTOHA
Étudiez le traitement du langage naturel avec Kikagaku
[Traitement du langage naturel] Prétraitement avec le japonais
3. Traitement du langage naturel par Python 2-1. Réseau de co-occurrence
J'ai essayé le traitement du langage naturel avec des transformateurs.
Résumez comment prétraiter le texte (traitement du langage naturel) avec l'api tf.data.Dataset
3. Traitement du langage naturel par Python 2-2. Réseau de co-occurrence [mecab-ipadic-NEologd]
Python: traitement du langage naturel
[Python] J'ai joué avec le traitement du langage naturel ~ transformers ~
RNN_LSTM2 Traitement du langage naturel
Laissez l'API COTOHA faire les choses difficiles - Introduction à "apprendre en utilisant" le traitement du langage naturel -
Créer un environnement pour le traitement du langage naturel avec Python
Traitement du langage naturel 3 Continuité des mots
Traitement du langage naturel 2 similitude de mots
100 traitements du langage naturel frappent le chapitre 4 Commentaire
100 traitements de langage avec Python
Traitement du langage naturel pour les personnes occupées
100 traitements de langage avec Python (chapitre 3)
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)
Se préparer à démarrer le traitement du langage naturel
Résumé de l'installation de l'analyseur de traitement du langage naturel
Langage naturel: ChatBot Part1-Twitter API Corpus
Créez facilement un modèle de traitement du langage naturel avec BERT + LightGBM + optuna
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
Étude de cas sur le traitement du langage naturel: Fréquence des mots dans'Anne avec un E '
[Word2vec] Visualisons le résultat du traitement en langage naturel des avis des entreprises
J'ai fait 100 traitements linguistiques Knock 2020 avec GiNZA v3.1 Chapitre 4
Traiter le nom de la carte Yugioh en langage naturel --Yugiou Data Science 2. PNL
100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)
100 traitements de langage avec Python (chapitre 2, partie 2)
[WIP] Pré-traitement des notes dans le traitement du langage naturel
Faisons un langage simple avec PLY 1
100 traitements de langage avec Python (chapitre 2, partie 1)
Jouez avec Dajare en utilisant l'API COTOHA
[Traitement du langage naturel] Extraire les mots-clés de la base de données Kakenhi avec MeCab-ipadic-neologd et termextract
Mémo de produits pratique autour du traitement du langage naturel
3. Traitement du langage naturel avec Python 1-2. Comment créer un corpus: Aozora Bunko
Traitement du langage 100 knocks-88: 10 mots à haute similitude
J'ai essayé d'extraire des expressions uniques avec la bibliothèque de traitement du langage naturel GiNZA
3. Traitement du langage naturel par Python 3-1. Important outil d'extraction de mots Analyse TF-IDF [définition originale]
Démarrer avec Python avec 100 coups sur le traitement du langage
100 traitement du langage knock-90 (en utilisant Gensim): apprendre avec word2vec
Tweetez régulièrement avec l'API Twitter Go language
Python: apprentissage profond du traitement du langage naturel: principes de base
100 traitement du langage knock-95 (en utilisant des pandas): Note avec WordSimilarity-353
Insoutenable manque d'attention dans le traitement du langage naturel
100 traitements linguistiques frappent 03 ~ 05
100 coups de traitement linguistique (2020): 40
100 coups de traitement linguistique (2020): 32
100 coups de traitement linguistique (2020): 35
100 coups de traitement linguistique (2020): 39
100 coups de traitement linguistique (2020): 22
100 coups de traitement linguistique (2020): 26
100 coups de traitement linguistique (2020): 34
100 coups de traitement linguistique (2020): 28
100 coups de traitement linguistique (2020): 42