[PYTHON] Was passiert, wenn Ikura deine Worte spricht?

Einführung

Es gibt eine Figur namens "Ikura-chan" unter den Figuren im Anime "Sazae-san", die jeden Sonntag um 6:30 Uhr im Fuji-Fernsehen ausgestrahlt wird.

Ikura ist ungefähr anderthalb Jahre alt und kann im Grunde nur die folgenden drei Wörter sprechen. [^ 1] [^ 2]

--Hallo --Churn

Welche Worte sagt Ikura dann, wenn Ikura die Worte spricht, die wir normalerweise sprechen? Dieses Mal werde ich theoretisch versuchen, anhand des Ähnlichkeitsgrades zu schätzen.

Implementierungsmethode

Ich habe die Ähnlichkeitsberechnungs-API der COTOHA-API verwendet. ..

Da diese API den Ähnlichkeitsgrad anhand der semantischen Informationen der im Text enthaltenen Wörter berechnet, scheint es möglich zu sein, die Ähnlichkeit zwischen Texten mit unterschiedlichen Wörtern abzuschätzen.

Daher scheint Ikura abschätzen zu können, welche Bedeutung jedes Wort richtig verwendet.

Klicken Sie hier für den Quellcode
Bitte verwenden Sie die von Ihnen erhaltenen CLIENT_ID und CLIENT_SECRET.
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 = ["Hallo", "Churn", "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))]

Ausführungsergebnis

Zunächst aus dem Begrüßungssystem

said_ikurachan("Guten Morgen", access_token)
# => 'Hallo'

said_ikurachan("Hallo", access_token)
# => 'Hallo'

said_ikurachan("Guten Abend", access_token)
# => 'Hallo'

Die Begrüßung sieht mit "Hi" gut aus.

Als nächstes wollen wir sehen, wie das Zitat aussieht.

said_ikurachan("Was ist ein Genie 1%Inspiration und 99%Ist eine Anstrengung", access_token)
# => 'Churn'

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

said_ikurachan("Die Erde war blau", access_token)
# => 'Churn'

Das Zitat kann "Abwanderung" sein.

Lassen Sie uns abschließend sehen, wie die Unzufriedenheit sein wird.

said_ikurachan("Warum muss ich für ihn kämpfen?")
# => 'Baboo'

said_ikurachan("Ist es wirklich sinnvoll, dies zu tun?")
# => 'Baboo'

said_ikurachan("Warum muss ich so etwas antreffen?")
# => 'Baboo'

Unzufriedenheit scheint "Baboo" zu sein.

abschließend

Churn. Churn.

(Dieses Mal habe ich mithilfe der Ähnlichkeitsberechnungs-API der COTOHA-API geschätzt, welches Wort zu sagen ist, wenn das Wort, das wir sagten, Ikura-chan ist. Es ist nur eine Theorie, daher weiß ich nicht, ob dies wahr ist oder nicht. Ich bin froh, wenn Sie es als Referenz verwenden können.)

Referenz

Überlebe die SNS-Ära mit sozialen Filtern

[^ 1]: Aus dem Abschnitt von Ikura Hano auf der offiziellen Website [^ 2]: Es scheint, dass es Zeiten gab, in denen die Arbeitsnummern Nr. 2433 bis Nr. 3991 unterschiedliche Wörter sprachen.

Recommended Posts

Was passiert, wenn Ikura deine Worte spricht?
[Frage] Was passiert, wenn Sie% in Python verwenden?
Was passiert, wenn ein Amateur 100 Sprachverarbeitungsklopfen ausführt?