[PYTHON] Je veux analyser les sentiments des gens qui veulent se rencontrer et trembler

Chose que tu veux faire

~~ Comprendre les sentiments des gens qui tremblent parce qu'ils veulent se rencontrer ~~

Analyse émotionnelle des paroles Est-ce une chanson brillante? Est-ce une chanson triste? Je veux juger.

Ce serait formidable si nous pouvions effectuer des recherches ambiguës telles que des chansons lumineuses et des chansons tristes sur les services de distribution de musique. Cette année est une année difficile et ce n'est pas bon, donc je fais de mon mieux en écoutant des chansons lumineuses

Essayez d'analyser les paroles

Outil d'analyse

COTOHA API Python 3.8.1

Cible d'analyse

Une chanson qui tremble parce que je veux rencontrer

Ce qui suit a déjà été classé dans Rekochok, j'ai donc choisi une chanson parmi eux comme mon passe-temps.

Chanson lumineuse

Chanson triste

code

Le cactus arrête-t-il de danser dans l'analyse émotionnelle? J'ai été autorisé à faire référence.

<détails>

Implémentation </ summary>

top/
 ├ file/
 │ ├ input.txt   (Paroles à analyser)
 │ └ output.csv (Résultat de sortie)
 ├ config.ini
  └ cotoha_sentiment.py

cotoha_sentiment.py


# -*- coding:utf-8 -*-

import os
import urllib.request
import json
import configparser
import codecs
import csv


class CotohaApi:
    def __init__(self, client_id, client_secret, developer_api_base_url, access_token_publish_url):
        self.client_id = client_id
        self.client_secret = client_secret
        self.developer_api_base_url = developer_api_base_url
        self.access_token_publish_url = access_token_publish_url
        self.getAccessToken()

    def getAccessToken(self):
        url = self.access_token_publish_url
        headers={
            "Content-Type": "application/json;charset=UTF-8"
        }

        data = {
            "grantType": "client_credentials",
            "clientId": self.client_id,
            "clientSecret": self.client_secret
        }
        data = json.dumps(data).encode()
        req = urllib.request.Request(url, data, headers)
        res = urllib.request.urlopen(req)
        res_body = res.read()
        res_body = json.loads(res_body)
        self.access_token = res_body["access_token"]

    #API d'analyse des émotions
    def sentiment(self, sentence):
        url = self.developer_api_base_url + "nlp/v1/sentiment"
        headers={
            "Authorization": "Bearer " + self.access_token,
            "Content-Type": "application/json;charset=UTF-8",
        }
        data = {
            "sentence": sentence
        }
        data = json.dumps(data).encode()
        req = urllib.request.Request(url, data, headers)
        try:
            res = urllib.request.urlopen(req)
        except urllib.request.HTTPError as e:
            print ("<Error> " + e.reason)

        res_body = res.read()
        res_body = json.loads(res_body)
        return res_body

if __name__ == '__main__':
    APP_ROOT = os.path.dirname(os.path.abspath( __file__)) + "/"

    # config.Obtenez la valeur de ini
    config = configparser.ConfigParser()
    config.read(APP_ROOT + "config.ini")
    CLIENT_ID = config.get("COTOHA API", "Developer Client id")
    CLIENT_SECRET = config.get("COTOHA API", "Developer Client secret")
    DEVELOPER_API_BASE_URL = config.get("COTOHA API", "Developer API Base URL")
    ACCESS_TOKEN_PUBLISH_URL = config.get("COTOHA API", "Access Token Publish URL")

    cotoha_api = CotohaApi(CLIENT_ID, CLIENT_SECRET, DEVELOPER_API_BASE_URL, ACCESS_TOKEN_PUBLISH_URL)

       # file/infile.Obtenez la phrase à analyser à partir de txt
    checkpath = 'file/input.txt'
    song_data = open(checkpath, "r", encoding='utf-8')

    output_file = open('file/output.csv', 'w')
    writer = csv.writer(output_file, lineterminator='\n') #Code de saut de ligne (\n) est spécifié

    sentence = song_data.readline()
    while sentence:
        print(sentence.strip())
        #Exécution de l'API
        result = cotoha_api.sentiment(sentence)

        score = result["result"]["score"]
        print(score)
        sentiment = result["result"]["sentiment"]
        print(sentiment)

        one_row = [score,sentiment]
        writer.writerow(one_row)  #liste de réussite

        sentence = song_data.readline()

    song_data.close()
    output_file.close()
    

résultat de l'analyse

Kana Nishino "Je veux te rencontrer"

<détails> <résumé> Paroles (début) </ résumé>

Je veux rencontrer, je veux rencontrer, je tremble
Ressens autant que tu penses
Dis-moi encore, même si c'est un mensonge
Comme ce jour-là"je t'aime"Quelle ...
…
Ce n'était pas aussi négatif que je m'y attendais

Greeeen "Kiseki"

Paroles (début)
Demain, je peux t'aimer plus qu'aujourd'hui
Je l'aime toujours tellement, mais je ne peux pas le mettre en mots
Les jours où tu m'as abandonné se sont empilés et sont décédés Les jours où deux personnes ont marché "trajectoire"
…

Chanson assez positive

Sambo Master "Le monde appelle ça l'amour"

<détails> <résumé> Paroles </ résumé>

S'il y a une faible lueur dans tes larmes
Devant toi
Je parle d'échauffement
…
Il y a beaucoup de paroles négatives

SPYAIR 「BEAUTIFUL DAYS」 <détails> <résumé> Paroles </ résumé>

Je peux le changer plus positivement Croyons comme ça
Si quelqu'un se moque de toi, je ne rirai pas
Un nouveau départ Tout le monde peut briller
Avec anxiété et attentes Oh, essayez vous-même
…
Je pensais que c'était une chanson assez positive pour moi ## Ken Hirai "Non-fiction" Paroles
Beaucoup de rêves que j'ai dessinés ne se réalisent pas
Je me déteste quand j'envie les bonnes personnes
Certaines nuits risquent d'être écrasées par un sommeil léger
…

Bien négatif

retour numéro "Fin heureuse"

<détails> <résumé> Paroles </ résumé>

Au revoir coincé au fond de ma gorge
J'ai dit merci comme la toux
Le mot suivant est même si vous cherchez une poche quelque part
…
Bien équilibré

Résumé

~~ Je ne peux pas comprendre les sentiments des gens qui tremblent parce qu'ils veulent se rencontrer ~~

Cette analyse émotionnelle a été faite ligne par ligne, Je pense que les résultats sont biaisés en raison de l'ordre des mots. Je pense que des résultats plus précis seront obtenus si le grain des paroles à analyser est affiné, donc je vais essayer si j'ai le temps.

Recommended Posts