Die COTOHA-API ist eine japanische API zur Verarbeitung natürlicher Sprache. Es hat verschiedene Funktionen und ist eine sehr unterhaltsame API, die auch mit einem kostenlosen Konto für 1000 / Tag verwendet werden kann.
Kennst du übrigens alle Isono-Kun? Ja, es ist Katsuo Isono aus einem nationalen Anime.
Dieser Isono-Kun wird im Stück etwas genannt, aber wenn es unpraktisch ist, hört er es nicht oder reagiert auf den sogenannten "Menschen". Dieses Mal werde ich verschiedene Dinge mit der COTOHA-API ausprobieren, um dies zu erreichen.
Einzelheiten zur Verwendung der COTOHA-API finden Sie in dem [Artikel], den ich zuvor geschrieben habe (https://qiita.com/mosamosa/items/e63f6e582a206659dc2b) und in verschiedenen anderen Personen, die Artikel geschrieben haben. ..
ich:Hey Isono. Lass uns Baseball spielen.
Isono:Lesen?
ich:Isono-Kun
Isono:Lesen?
ich:Isono ist nicht gut
Isono:...
ich:Isono-Kun ist cool
Isono:Lesen?
ich:Apropos Isono, Iso Nori
Isono:...
Die Anzahl der Proben ist gering, aber wie sieht es aus? Ist es nicht wie Isono?
Erstellen Sie in der COTOHA-API eine Wrapper-Funktion, um anzuzeigen, ob erkannt wird, dass "Isono aufgerufen wurde". Wenn Sie glauben, angerufen worden zu sein, wird "Haben Sie angerufen?" Wenn nicht, wird "..." angezeigt.
cotoha_exp = [
"Isono",
"Isono-Kun",
]
def call_cotoha(res_func,texts,cotoha_token,cotoha_exp):
"""
res_func:Eine Funktion, die bestimmt, ob sie aufgerufen wurde. Erhält eine Anweisung und gibt true false zurück.
texts:Anweisungsreihenfolge zu beurteilen
cotoha_token:Zugangstoken
cotoha_exp:Zur Bestimmung von Isono und seines Namens.
"""
for t in texts:
does_ans = res_func(t,cotoha_token,cotoha_exp)
if does_ans:
answer = "Lesen?"
else:
answer = "..."
print("ich:{} \n Isono:{}\n".format(t,answer))
Der einfachste Weg für Isono, seinen Anruf zu erkennen, besteht darin, den Text morphologisch zu analysieren und zu reagieren, wenn er Isono oder ähnliches enthält.
Einfach ausgedrückt, wenn Isono im Satz enthalten ist, wird es reagieren.
Klicken Sie hier, um eine Dokumentation zur Syntaxanalyse zu erhalten (https://api.ce-cotoha.com/contents/reference/apireference.html#parsing_response_morpheme).
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
call_cotoha(parser_base,texts,cotoha_token,cotoha_exp)
ich:Hey Isono. Lass uns Baseball spielen.
Isono:Lesen?
ich:Isono-Kun
Isono:Lesen?
ich:Isono ist nicht gut
Isono:Lesen?
ich:Isono-Kun ist cool
Isono:Lesen?
ich:Apropos Isono, Iso Nori
Isono:Lesen?
Natürlich ist es natürlich, aber es reagiert auf alles. Ich fühle mich etwas überbewusst.
Auch wenn Sie sich nicht die Mühe machen, die Morphologie zu analysieren und alle Token anzuzeigen, verfügt die COTOHA-API über eine Funktion namens eindeutige Ausdrucksextraktion, mit der sich Personennamen, Ortsnamen, numerische Ausdrücke usw. auf einfache Weise extrahieren lassen. Wenn Sie dies verwenden, können Sie etwas Ähnliches wie 1. auf eine etwas stilvolle Weise tun.
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
ich:Hey Isono. Lass uns Baseball spielen.
Isono:Lesen?
ich:Isono-Kun
Isono:Lesen?
ich:Isono ist nicht gut
Isono:Lesen?
ich:Isono-Kun ist cool
Isono:Lesen?
ich:Apropos Isono, Iso Nori
Isono:Lesen?
Immerhin ist es übermäßiges Selbstbewusstsein. Nun, es geht um das Alter. Der Ruf der Menschen um mich herum ist besorgt.
Im Gegensatz zur richtigen Ausdrucksextraktion verfügt die COTOHA-API über eine Funktion namens Schlüsselwortextraktion, und ich möchte, dass sie reagiert, wenn Isono in einer bestimmten Konversation zu einem Schlüsselwort wird. Wenn Sie das Gefühl haben, das Thema zu sein, sollten Sie reagieren.
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
ich:Hey Isono. Lass uns Baseball spielen.
Isono:...
ich:Isono-Kun
Isono:...
ich:Isono ist nicht gut
Isono:...
ich:Isono-Kun ist cool
Isono:...
ich:Apropos Isono, Iso Nori
Isono:...
Es reagiert überhaupt nicht. Es scheint, dass der Name einer Person wahrscheinlich kein Schlüsselwort ist. Dies ist Isono-kuns Reaktion, als er etwas falsch gemacht hat.
Wird es antworten, wenn ich es auch damit nenne?
ich:Isono-Kun, Isono-Kun, Isono-Kun, Isono-Kun, Isono-Kun
Isono:...
Es ist nicht gut ... Isono-Kun scheint tot zu sein ...
Die COTOHA-API hat die Funktion, die Ähnlichkeit zwischen zwei Sätzen zu beurteilen, daher möchte ich diese verwenden. Insbesondere wenn die Ähnlichkeit mit dem Satz "Call Isono" hoch ist, werde ich beurteilen, dass Isono angerufen wird.
def sim_base(text,cotoha_token,cotoha_exp):
header = {
"Content-Type":"application/json",
"Authorization":"Bearer "+cotoha_token
}
datas = {
"s1":text,
"s2":"Rufen Sie Isono an"
}
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
ich:Hey Isono. Lass uns Baseball spielen.
Isono:Lesen?
ich:Isono-Kun
Isono:Lesen?
ich:Isono ist nicht gut
Isono:...
ich:Isono-Kun ist cool
Isono:...
ich:Apropos Isono, Iso Nori
Isono:...
Oh, ist es nicht ziemlich gut? Nur der erste und der zweite Anrufsatz antworteten. Es gibt keine Reaktionsmethode, die für Weckrufe wie Chat-Bots recht praktisch ist.
Die COTOHA-API kann bestimmen, um welche Art von Anweisung es sich handelt. (Beschreibungen / Fragen / Anweisungen können detaillierter aufgenommen werden. Weitere Informationen finden Sie unter Dokumentation.)
Ich werde versuchen, damit nur zu reagieren, wenn ein Satz fragwürdig ist. (Ich wünschte, ich hätte einen Satztyp namens Anruf, aber ich konnte ihn nicht finden ...)
Wenn es sich um eine fragwürdige Form handelt, funktioniert sie natürlich nicht. Wenn es sich also um eine fragwürdige Form handelt, wird eine morphologische Analyse durchgeführt, die als die empfindlichste angesehen wird, um festzustellen, ob COTOHA enthalten ist.
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
ich:Hey Isono. Lass uns Baseball spielen.
Isono:...
ich:Isono-Kun
Isono:...
ich:Isono ist nicht gut
Isono:...
ich:Isono-Kun ist cool
Isono:...
ich:Apropos Isono, Iso Nori
Isono:...
Hmm ... subtil ... es sieht nicht gut aus.
Die COTOHA-API verfügt über eine Funktion namens Emotionsanalyse, mit der Sie feststellen können, ob ein Satz positiv oder negativ ist. Damit ** Wenn der Satz positiv ist und Isono enthält → Wenn Isono gelobt zu werden scheint **
Ich möchte nur, dass es reagiert. Isono-Kun, der bequem ist. Lassen Sie uns alle auf Isono einstimmen.
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
ich:Hey Isono. Lass uns Baseball spielen.
Isono:...
ich:Isono-Kun
Isono:...
ich:Isono ist nicht gut
Isono:...
ich:Isono-Kun ist cool
Isono:Lesen?
ich:Apropos Isono, Iso Nori
Isono:...
Es scheint, dass die Eigenschaften von Isono recht gut reproduziert werden können.
Aus den bisherigen Versuchsergebnissen
Ich habe das Gefühl, dass Isono reproduziert werden kann, indem es reagiert, wenn einer von beiden zufrieden ist. Ich werde es versuchen.
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)
ich:Hey Isono. Lass uns Baseball spielen.
Isono:Lesen?
ich:Isono-Kun
Isono:Lesen?
ich:Isono ist nicht gut
Isono:...
ich:Isono-Kun ist cool
Isono:Lesen?
ich:Apropos Isono, Iso Nori
Isono:...
Künstliche Intelligenz ** ISONO ** Bombe hier (Übertreibung)
Ich habe verschiedene Dinge mit so vielen APIs wie möglich ausprobiert. Wenn Sie jedoch einige Funktionen ausprobieren möchten, die noch nicht verfügbar sind (Zusammenfassung, Korrespondenzanalyse usw.), registrieren Sie sich bitte hier.
Ich wollte es komplett schreiben, dachte aber, dass es für Weckrufe wie Chatbots verwendet werden könnte.
Übrigens habe ich das Gefühl, dass ich eine negative Persönlichkeit schaffen kann, wenn ich versuche, nur auf Sätze zu reagieren, die wahrscheinlich abgelehnt werden. Ich habe das Gefühl, ich kann es reproduzieren, wenn ich eine bestimmte Persönlichkeit habe ...
** 卍 Angewandt 卍 ** scheint sich zu lohnen.
Recommended Posts