[PYTHON] Que se passe-t-il quand Ikura prononce vos paroles?

introduction

Il y a un personnage appelé "Ikura-chan" parmi les personnages de l'anime "Sazae-san" qui est diffusé sur Fuji TV tous les dimanches à 6h30.

Ikura a environ un an et demi et ne peut parler que les trois mots suivants. [^ 1] [^ 2]

--Salut --Baratte --Babou

Alors, quels mots Ikura dit-il quand Ikura dit les mots que nous parlons habituellement? Cette fois, en tant que théorie, j'essaierai d'estimer en fonction du degré de similitude.

Méthode de mise en œuvre

J'ai utilisé l 'API de calcul de similarité de API COTOHA. ..

Puisque cette API calcule le degré de similitude à l'aide des informations sémantiques des mots contenus dans le texte, il semble qu'il soit possible d'estimer la similitude entre des textes contenant des mots différents.

Par conséquent, il semble qu'Ikura puisse estimer le type de signification de chaque mot utilisé correctement.

Cliquez ici pour le code source
Veuillez utiliser le CLIENT_ID et le CLIENT_SECRET obtenus par vous-même.
import requests
import json
import numpy as np

BASE_URL = "https://api.ce-cotoha.com/api/dev/nlp/"
CLIENT_ID = ""
CLIENT_SECRET = ""

def get_token(client_id, client_secret):
    token_url = "https://api.ce-cotoha.com/v1/oauth/accesstokens"
    
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8"
    }

    data = {
        "grantType": "client_credentials",
        "clientId": client_id,
        "clientSecret": client_secret
    }
    r = requests.post(token_url,
                      headers=headers,
                      data=json.dumps(data))
    
    return r.json()["access_token"]

def similarity(s1, s2, access_token):
    base_url = BASE_URL
    
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8",
        "Authorization": "Bearer {}".format(access_token)
    }
    
    data = {
        "s1": s1,
        "s2": s2,
        "type": "kuzure"
    }
    
    r = requests.post(base_url + "v1/similarity",
                      headers=headers,
                      data=json.dumps(data))
    return r.json()["result"]["score"]

def said_ikurachan(sentence):
  access_token = get_token(CLIENT_ID, CLIENT_SECRET)
  ikurachan_words = ["salut", "Baratte", "Baboo"]
  similarity_arr = []
  for word in ikurachan_words:
    similarity_arr.append(similarity(sentence, word, access_token))
  return ikurachan_words[np.argmax(np.array(similarity_arr))]

Résultat d'exécution

Tout d'abord, depuis le système d'accueil

said_ikurachan("Bonjour", access_token)
# => 'salut'

said_ikurachan("Bonjour", access_token)
# => 'salut'

said_ikurachan("Bonsoir", access_token)
# => 'salut'

La salutation semble bonne avec "Salut".

Ensuite, voyons à quoi ressemble la citation.

said_ikurachan("Qu'est-ce qu'un génie 1%Inspiration et 99%Est un effort", access_token)
# => 'Baratte'

said_ikurachan("Stay hungry, stay foolish", access_token)
# => 'Baratte'

said_ikurachan("La terre était bleue", access_token)
# => 'Baratte'

La citation peut être "churn".

Enfin, voyons quel sera le mécontentement.

said_ikurachan("Pourquoi dois-je lutter pour lui")
# => 'Baboo'

said_ikurachan("Est-ce vraiment significatif de faire cela?")
# => 'Baboo'

said_ikurachan("Pourquoi dois-je rencontrer ce genre de chose?")
# => 'Baboo'

L'insatisfaction semble être "Baboo".

en conclusion

Baratte. Baratte.

(Cette fois, j'ai utilisé l'API de calcul de similarité de l'API COTOHA pour estimer quel mot nous dirions si Ikura-chan était celui que nous disions. C'est juste une théorie, donc je ne sais pas si c'est vrai ou non. , Je suis heureux que vous puissiez l'utiliser comme référence.)

référence

Survivez à l'ère SNS avec les filtres sociaux

[^ 1]: De la section d'Ikura Hano sur le Site officiel [^ 2]: Il semble qu'il y ait eu des moments où les numéros d'oeuvre n ° 2433 à n ° 3991 ont prononcé des mots différents.

Recommended Posts

Que se passe-t-il quand Ikura prononce vos paroles?
[Question] Que se passe-t-il si vous utilisez% en python?
Que se passe-t-il lorsqu'un amateur effectue 100 coups de traitement linguistique?