L'API COTOHA est une API de traitement du langage naturel japonais. Il a diverses fonctions et est une API très amusante qui peut être utilisée pour 1000 / jour même avec un compte gratuit.
Au fait, connaissez-vous tous Isono-kun? Oui, c'est Katsuo Isono d'un anime national.
Cet Isono-kun s'appelle quelque chose dans la pièce, mais quand c'est gênant, il ne l'entend pas ou réagit soi-disant "humain". Cette fois, je vais essayer différentes choses avec l'API COTOHA pour y parvenir.
Pour plus de détails sur l'utilisation de l'API COTOHA, veuillez consulter l '[article] que j'ai écrit précédemment (https://qiita.com/mosamosa/items/e63f6e582a206659dc2b) et diverses autres personnes qui ont écrit des articles. ..
je:Salut Isono. Jouons au baseball.
Isono:Lis?
je:Isono-kun
Isono:Lis?
je:Isono n'est pas bon
Isono:...
je:Isono-kun est cool
Isono:Lis?
je:En parlant d'Isono, Iso Nori
Isono:...
Le nombre d'échantillons est petit, mais qu'en est-il? N'est-ce pas comme Isono?
Créez une fonction wrapper pour afficher si "Isono a été appelé" est reconnu par l'API COTOHA. Si vous pensez avoir été appelé, "Avez-vous appelé?" Sinon, "..." s'affiche.
cotoha_exp = [
"Isono",
"Isono-kun",
]
def call_cotoha(res_func,texts,cotoha_token,cotoha_exp):
"""
res_func:Une fonction qui détermine si elle a été appelée. Reçoit une instruction et renvoie true false.
texts:Séquence d'énoncés à juger
cotoha_token:Jeton d'accès
cotoha_exp:Pour déterminer Isono et son nom.
"""
for t in texts:
does_ans = res_func(t,cotoha_token,cotoha_exp)
if does_ans:
answer = "Lis?"
else:
answer = "..."
print("je:{} \n Isono:{}\n".format(t,answer))
Le moyen le plus simple pour Isono de détecter son appel est d'analyser morphologiquement le texte et de réagir s'il contient Isono ou quelque chose de similaire.
En termes simples, si Isono est inclus dans la phrase, il réagira.
Cliquez ici pour consulter la documentation sur l'analyse syntaxique (https://api.ce-cotoha.com/contents/reference/apireference.html#parsing_response_morpheme)
<détails> Bien sûr, c'est naturel, mais ça réagit à tout. Je me sens un peu trop conscient. Même si vous ne vous souciez pas d'analyser la morphologie et de voir tous les jetons, l'API COTOHA a une fonction appelée extraction d'expressions uniques, qui facilite l'extraction des noms de personne, des noms de lieux, des expressions numériques, etc. Si vous l'utilisez, vous pouvez faire quelque chose de similaire à 1. d'une manière légèrement élégante. <détails> Après tout, c'est une conscience de soi excessive. Eh bien, c'est à peu près l'âge. La réputation des gens autour de moi est inquiète. Contrairement à l'extraction d'expressions appropriée, l'API COTOHA a une fonction appelée extraction de mots-clés, et je voudrais la faire réagir lorsque Isono devient un mot-clé dans une certaine conversation. Si vous sentez que vous êtes le sujet, vous devez réagir. <détails> Ça ne réagit pas du tout. Il semble que le nom d'une personne ne soit probablement pas un mot-clé.
C'est la réaction d'Isono-kun lorsqu'il a fait quelque chose de mal. Répondra-t-il si je l'appelle même avec ça? Ce n'est pas bon ... Isono-kun semble mort ... L'API COTOHA a une fonction pour juger de la similitude entre deux phrases, je voudrais donc l'utiliser. Plus précisément, si la similitude avec la phrase "Call Isono" est élevée, je jugerai qu'Isono est appelé. <détails> Oh, n'est-ce pas plutôt bon?
Seules les première et deuxième phrases d'appel ont répondu.
Il n'y a pas de méthode de réaction assez pratique pour les réveils tels que les chatbots. L'API COTOHA peut déterminer le type d'instruction d'une instruction.
(Vous pouvez également prendre une description / question / instruction plus en détail. Pour plus de détails, voir Documentation.) Je vais essayer de m'en servir pour réagir uniquement lorsqu'une phrase est discutable.
(J'aurais aimé avoir un type de phrase appelé un appel, mais je ne l'ai pas trouvé ...) Bien sûr, s'il s'agit d'une forme douteuse, cela ne fonctionnera pas, donc s'il s'agit d'une forme discutable, une analyse morphologique, considérée comme la plus sensible, est effectuée pour déterminer si COTOHA est inclus. <détails> Hmm ... subtile ... ça ne semble pas bon. L'API COTOHA a une fonction appelée analyse des émotions, qui vous permet de déterminer si une phrase est positive ou négative. Alors
** Lorsque la phrase est positive et contient Isono → Quand Isono semble être loué ** Je veux juste le faire réagir. Isono-kun, qui est pratique.
Mettons-nous tous dans l'ambiance pour Isono. <détails> Il semble que les caractéristiques d'Isono puissent être assez bien reproduites. D'après les résultats des expériences jusqu'à présent Je sens qu'Isono peut être reproduit en le faisant réagir lorsque l'un ou l'autre est satisfait.
Je vais essayer. Intelligence artificielle ** ISONO ** Bombe ici (exagération) J'ai essayé différentes choses en utilisant autant d'API que possible, mais si vous souhaitez essayer certaines fonctionnalités qui ne sont pas encore disponibles (résumé, analyse de correspondance, etc.), veuillez vous inscrire ici. J'avais l'intention de l'écrire complètement, mais je pensais qu'il pourrait être utilisé pour des réveils tels que les chatbots. Au fait, je sens que je peux créer une personnalité négative si j'essaie de ne réagir qu'à des phrases susceptibles d'être refusées. J'ai l'impression de pouvoir le reproduire si j'ai une certaine personnalité ... ** 卍 Appliqué 卍 ** semble en valoir la peine.
Recommended Posts
def parser_base(text,cotoha_token,cotoha_exp):
header = {
"Content-Type":"application/json",
"Authorization":"Bearer "+cotoha_token
}
datas = {
"sentence":text
}
r = requests.post(api_base+"nlp/v1/parse",headers=header,data=json.dumps(datas))
parsed = json.loads(r.text)
for res in parsed["result"]:
for tok in res["tokens"]:
for exp in cotoha_exp:
if exp in tok["form"]:
return True
return False
résultat
call_cotoha(parser_base,texts,cotoha_token,cotoha_exp)
je:Salut Isono. Jouons au baseball.
Isono:Lis?
je:Isono-kun
Isono:Lis?
je:Isono n'est pas bon
Isono:Lis?
je:Isono-kun est cool
Isono:Lis?
je:En parlant d'Isono, Iso Nori
Isono:Lis?
2. Réaction si incluse dans l'expression appropriée (après tout, conscience de soi excessive)
def ne_base(text,cotoha_token,cotoha_exp):
header = {
"Content-Type":"application/json",
"Authorization":"Bearer "+cotoha_token
}
datas = {
"sentence":text
}
r = requests.post(api_base+"nlp/v1/ne",headers=header,data=json.dumps(datas))
parsed = json.loads(r.text)
for res in parsed["result"]:
for exp in cotoha_exp:
if exp in res["form"]:
return True
return False
résultat
je:Salut Isono. Jouons au baseball.
Isono:Lis?
je:Isono-kun
Isono:Lis?
je:Isono n'est pas bon
Isono:Lis?
je:Isono-kun est cool
Isono:Lis?
je:En parlant d'Isono, Iso Nori
Isono:Lis?
3. Réaction si inclus dans le mot-clé (Isono-kun qui ne réagit pas du tout)
def key_base(text,cotoha_token,cotoha_exp):
header = {
"Content-Type":"application/json",
"Authorization":"Bearer "+cotoha_token
}
datas = {
"document":text
}
r = requests.post(api_base+"nlp/v1/keyword",headers=header,data=json.dumps(datas))
parsed = json.loads(r.text)
for res in parsed["result"]:
for exp in cotoha_exp:
if exp in res["form"]:
return True
return False
résultat
je:Salut Isono. Jouons au baseball.
Isono:...
je:Isono-kun
Isono:...
je:Isono n'est pas bon
Isono:...
je:Isono-kun est cool
Isono:...
je:En parlant d'Isono, Iso Nori
Isono:...
je:Isono-kun, Isono-kun, Isono-kun, Isono-kun, Isono-kun
Isono:...
4. Utilisez la similitude (bonne sensation)
def sim_base(text,cotoha_token,cotoha_exp):
header = {
"Content-Type":"application/json",
"Authorization":"Bearer "+cotoha_token
}
datas = {
"s1":text,
"s2":"Appeler Isono"
}
r = requests.post(api_base+"nlp/v1/similarity",headers=header,data=json.dumps(datas))
parsed = json.loads(r.text)
if parsed["result"]["score"] > 0.5:
return True
else:
return False
résultat
je:Salut Isono. Jouons au baseball.
Isono:Lis?
je:Isono-kun
Isono:Lis?
je:Isono n'est pas bon
Isono:...
je:Isono-kun est cool
Isono:...
je:En parlant d'Isono, Iso Nori
Isono:...
5. Réagissez uniquement lorsque le type de phrase est discutable (subtile ...)
def parser_sent_type_base(text,cotoha_token,cotoha_exp):
header = {
"Content-Type":"application/json",
"Authorization":"Bearer "+cotoha_token
}
datas = {
"sentence":text
}
r = requests.post(api_base+"nlp/v1/sentence_type",headers=header,data=json.dumps(datas))
parsed = json.loads(r.text)
if parsed["result"]["modality"] == "interrogative":
return parser_base(text,cotoha_token,cotoha_exp)
else:
return False
résultat
je:Salut Isono. Jouons au baseball.
Isono:...
je:Isono-kun
Isono:...
je:Isono n'est pas bon
Isono:...
je:Isono-kun est cool
Isono:...
je:En parlant d'Isono, Iso Nori
Isono:...
6. Réagissez uniquement lorsque vous êtes susceptible d'être complimenté (Isono pratique)
def senti_parser_base(text,cotoha_token,cotoha_exp):
header = {
"Content-Type":"application/json",
"Authorization":"Bearer "+cotoha_token
}
datas = {
"sentence":text
}
r = requests.post(api_base+"nlp/v1/sentiment",headers=header,data=json.dumps(datas))
parsed = json.loads(r.text)
if parsed["result"]["sentiment"] == "Positive":
return parser_base(text,cotoha_token,cotoha_exp)
else:
return False
résultat
je:Salut Isono. Jouons au baseball.
Isono:...
je:Isono-kun
Isono:...
je:Isono n'est pas bon
Isono:...
je:Isono-kun est cool
Isono:Lis?
je:En parlant d'Isono, Iso Nori
Isono:...
Isono, auquel j'ai pensé.
def ISONO(text,cotoha_token,cotoha_exp):
flag1 = sim_base(text,cotoha_token,cotoha_exp)
flag2 = senti_parser_base(text,cotoha_token,cotoha_exp)
return (flag1 or flag2)
résultat
je:Salut Isono. Jouons au baseball.
Isono:Lis?
je:Isono-kun
Isono:Lis?
je:Isono n'est pas bon
Isono:...
je:Isono-kun est cool
Isono:Lis?
je:En parlant d'Isono, Iso Nori
Isono:...
À la fin.