[PYTHON] J'ai vérifié si l'API COTOHA pouvait comprendre Mansai, et c'était raisonnable.

introduction

Cet article a été inscrit dans Qiita x COTOHA API Present Plan.

Qu'est-ce que l'API COTOHA?

Ce service fournit une technologie de traitement du langage naturel et une technologie de reconnaissance / synthèse vocale qui utilisent les résultats de recherche du groupe NTT depuis plus de 40 ans fournis par NTT Communications, afin qu'ils puissent être facilement utilisés avec les API.

Le traitement du langage naturel tel que l'analyse syntaxique et l'extraction d'expressions uniques, ainsi que le «résumé» des caractéristiques et l '«estimation des attributs utilisateur» peuvent également être utilisés.

■ Lien de présentation du service https://api.ce-cotoha.com/contents/index.html

Qu'est-ce que Milk Boy?

Milk Boy est une combinaison d'hommes rieurs appartenant à Yoshimoto Kogyo. Formé en juillet 2007. Champion M-1 2019.

Sur la 1ère étape M-1, basée sur le thème des «corn flakes», nous présenterons dans un dialogue léger les caractéristiques susceptibles de correspondre aux corn flakes et celles qui ne sont pas applicables. A enregistré "681 points", le score le plus élevé jamais enregistré! Cliquez ici pour le matériel

=== Omis car il n'est pas lié à la technologie ===

J'ai enquêté

C'est finalement le sujet principal. Le génie de ce laitier crée le rire en répétant «des caractéristiques susceptibles de s'appliquer à l'objet» et «des caractéristiques qui ne s'appliqueront probablement pas». Peut-être que ce manga peut être compris par l'IA, c'est-à-dire COTOHA, qui sait lire le sens.

** Authentifions-nous d'abord ** ・ L'API COTOHA dispose d'un plan de développement gratuit, alors inscrivez-vous d'abord. ・ Obtenez l'ID client et le secret client sur le portail

#Authentification API COTOHA avec Python

import requests,json

def authorization():
    cotoha_url_auth = "https://api.ce-cotoha.com/v1/oauth/accesstokens"
    headers = {"Content-Type" : "application/json"}
    data = {
        "grantType" : "client_credentials",
        "clientId" : cotoha_clientId,          #Valeurs spécifiques à l'utilisateur ici
        "clientSecret" : cotoha_clientSecret   #Valeurs spécifiques à l'utilisateur ici
    }

    res = requests.post(cotoha_url_auth, headers=headers, json=data)
    token = json.loads(res.text)["access_token"]
    #print("API COTOHA authentifiée")
    
    return token #Renvoyez la chaîne du jeton d'accès et terminez

** Essayez d'utiliser l'API de jugement de similarité ** Cette fois, j'utiliserai ** "Jugement de similarité" ** dans l'API COTOHA

Qu'est-ce que le jugement de similitude? Une API RESTful qui calcule la similitude sémantique entre deux instructions. La similarité est sortie dans la plage de définition de 0-1 et plus elle est proche de 1, plus la similitude des deux phrases est grande. La similitude étant calculée à partir des informations sémantiques des mots contenus dans la phrase, il est possible d'estimer la similitude entre des textes contenant des mots différents.

#Jugement de similarité
def similar(sentence1, sentence2, token):
    url =  "https://api.ce-cotoha.com/api/dev" + "/nlp/v1/similarity"
    header = {
        "Content-Type" : "application/json;charset=UTF-8",
        "Authorization" : "Bearer "  +token
    }
    data = {
        "s1" : sentence1,
        "s2" : sentence2
    }
    req = requests.post(url, headers = header, json = data)
    return req.text

Pour token, utilisez la sortie du jeton d'accès par l'authentification précédente. Si vous mettez deux phrases côte à côte et que vous le demandez, la similitude sera retournée.

Exemple: ("Je suis doué pour faire de l'exercice", "J'aime le sport") ⇒Similarité: {'result': {'score': 0.94150746}, 'status': 0, 'message': 'OK'}

Même s'il n'y a presque pas les mêmes mots, ce taux de correspondance ...! Génial!

** Maintenant, il est temps de juger les flocons de maïs ** L'introduction est devenue plus longue, mais en combinant les deux ci-dessus et en la traitant légèrement, J'ai créé une fonction pour juger si la phrase d'entrée est un flocon de cône.

#Fonction de flocon de cône
def cornflake(sentence, obj = "Flocons de maïs"):
    try: 
        token = authorization()
        sim = float(json.loads(similar(obj, sentence, token))["result"]["score"])
        if sim>0.4:
            rep = "Il," + obj + "N'est-ce pas!(Degré de similitude:{:.2f})".format(sim)
        else:
            rep = "Hona" + obj + "(Similarité):{:.2f})".format(sim)
    except:
        rep = "Une erreur s'est produite lors d'une demande d'API"
    return rep

J'ai fait. En vain, si vous spécifiez l'argument ʻobj`, vous pouvez juger autre chose que des flocons de cône.

** Commencer l'enquête **

** Remarque: À partir de là, l'histoire de "Milk Boy" est incluse. S'il vous plaît soyez prudente! !! ** **

Je penserai ensemble à votre petit-déjeuner préféré, alors dites-moi quel genre de fonctionnalités vous avez dit.

cornflake (" sucré et croquant et manger avec du lait ")

Sortie: "C'est des flocons de maïs! (Similitude: 0,74)"

cornflake (" Oh, c'est bien pour le dernier repas avant de mourir. ")

Sortie: 'flocons de maïs Hona (similitude: 0,25)'

cornflake (" Je ne sais pas pourquoi le pentagone de l'équilibre nutritionnel est si large. ")

Sortie: 'Flocons de maïs Hona (similitude: 0,16)'

cornflake (" Je ne peux pas voir le visage du producteur quand je mange. ") Sortie: "C'est des flocons de maïs! (Similitude: 0,56)"

cornflake (" Okan dit chinois en genre. ")

Sortie: 'Flocons de maïs Hona (similitude: 0,15)'

Commentaire de résultat

** Je me sens comme des flocons de maïs. .. .. ** ** Le jugement de similarité utilisé cette fois est seulement * "déterminer la similitude sémantique entre les phrases" *, mais le but est * "de déterminer s'il a ou non les caractéristiques de l'objet." * Mais cela semble être ** juste exact **. (J'ai essayé diverses choses autres que celles ci-dessus, mais dans l'ensemble, la similitude était faible.

Si vous y réfléchissez bien, «corn flakes» et «large pentagone de l'équilibre nutritionnel» ne signifient pas la même chose, donc c'est vrai. .. ..

Ochi

`cornflake (" Il semble y avoir une entreprise qui fournit des services solides en japonais "," NTT ")

Sortie: "C'est NTT! (Similitude: 0,44)"

Merci beaucoup.

Recommended Posts

J'ai vérifié si l'API COTOHA pouvait comprendre Mansai, et c'était raisonnable.
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
J'ai essayé de toucher l'API COTOHA
J'ai essayé de faire sonner le téléphone lorsqu'il a été publié sur le poste IoT
J'ai essayé de noter la syntaxe trop humoristique et humoristique en utilisant l'API COTOHA.
Lorsque j'ai vérifié la requête générée par Django, elle a été émise en grand nombre
Lorsque j'explore la webapi qui apparaît pendant le rendu, elle a été lue avec CORS
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
Une histoire lorsque j'utilisais IntelliJ sous Linux et que je ne pouvais pas saisir le japonais
Le lru_cache de Python était lent (je l'ai étudié parce que je l'ai mal compris)
Quand j'ai essayé le concours AtCoder pour débutants, c'était un résultat terrible, alors je regarde en arrière
[Première API COTOHA] J'ai essayé de résumer l'ancienne histoire
Je l'ai écrit en langage Go pour comprendre le principe SOLID
Le livre de PyTorch était difficile à comprendre, alors je l'ai complété