[PYTHON] Ich ... ich habe keine Emotionen ... ← Versuchen Sie mit verschiedenen Emotionsschätzern zu analysieren, ob es wirklich Emotionen gibt

Einführung

Die menschliche Kommunikation umfasst nicht nur die Sprache, sondern auch viele nonverbale Informationen wie Mimik und Gesten. Bei der mechanischen und programmatischen Analyse und Interpretation menschlichen Verhaltens können mehr Informationen erhalten werden, indem solche nonverbalen Informationen hinzugefügt und Bedeutung gegeben werden. Diese Technologien werden in verschiedenen Bereichen wie Bildverarbeitung, Verarbeitung natürlicher Sprache und Spracherkennung erforscht und entwickelt und sollen in vielen Bereichen wie Marketing und Interaktionssystemen mit Robotern eingesetzt werden. Es wird auch in Zukunft deutlich weiter wachsen.

Im vorherigen Artikel (ein Programm, das "Takenoko no Sato" automatisch in "Kinoko no Yama" "korrekt" korrigiert), * im Text Ich habe versucht, eine textbasierte API zur Emotionsschätzung zu verwenden, um * Fehler ** zu korrigieren. Durch die Verwendung einer solchen Technologie zur Verarbeitung natürlicher Sprache wird es möglich, die vom Sprecher gehaltenen Emotionen abzuschätzen und abhängig von den Emotionen unterschiedliche Reaktionen zurückzugeben. Wenn ein Sprecher beispielsweise traurig ist, kann der Chatbot die Gefühle einschätzen und trösten, damit er richtig kommunizieren kann.

Auf der anderen Seite gibt es eine bestimmte Anzahl von Menschen auf der Welt, die behaupten, keine Gefühle zu haben. Zum Beispiel die folgenden Personen.

† Typisches Beispiel 1 †

"Sprich nicht ... ich ... ich habe keine Gefühle ..." "Was lacht ...?"

  • Zero (33)-("Eine Sammlung von Zitaten, die sich in Frauen verlieben ", 2011)

† Typisches Beispiel 2 †

Technische Daten Ich

Schüler der Mittelstufe (14,6 Jahre)

Besonders keine Hobbys (obwohl ich mir Zeitungen und Nachrichten ansehe, um die Mindestinformationen zu erhalten)

Gefühle, keine

Ab der sechsten Klasse der Grundschule fühlt sich die Umgebung dumm an und die Gefühle verblassen Jetzt ist fast nichts mehr übrig Es ist wie eine Maschine Es macht mich traurig, wenn ich mich kalt sehe

  • ID: Qm9QaLSN0-("Ich bin ein Schüler der Mittelstufe, aber ich habe keine ehrlichen Gefühle und alles scheint lächerlich ", 2013)

Da es unter diesen Menschen keine Emotionen gibt, "kann ich möglicherweise nicht richtig mit anderen kommunizieren", "ich kann mich von anderen Menschen unterscheiden", "eigentlich bin ich eine wiedergeborene Person. Ich denke, es gibt einige Leute, die unter vielen Ängsten leiden, wie "Ist es nicht?"

Glücklicherweise haben jedoch viele führende Unternehmen wie Google, Microsoft und NTT ihre neuesten Forschungsergebnisse in Form von APIs zur Emotionsschätzung veröffentlicht. Sie können sie verwenden, um Emotionen gründlich zu analysieren und mit diesen Menschen zu vergleichen, um festzustellen, ob sie wirklich emotionslos sind. Wenn angenommen wird, dass es Emotionen gibt, "Sie haben auch Emotionen richtig" "Ich bin keine besondere Person, ** nur eine gewöhnliche Person " ** "Ich kann nicht kommunizieren Es kann auch andere Ursachen geben. " Ich dachte, dass es möglich sein würde, ein Gefühl der Sicherheit zu vermitteln, indem ich es mir sanft erzähle. Deshalb habe ich mich entschlossen, dieses Mal verschiedene APIs zur Emotionsschätzung auszuprobieren.

Im Folgenden werde ich beschreiben, wie die einzelnen Impressionen verwendet werden.

Emotionsschätzungsservice zum Vergleichen

Vergleichen Sie die Ergebnisse mit den folgenden vier Arten von APIs zur Emotionsschätzung. Alle von ihnen sind kostenlos zu benutzen, daher werde ich erklären, wie man sie benutzt.

Verwendung jeder Emotionsschätzungs-API

Google Cloud Natural Language API

Klicken Sie hier, um
zu erweitern

Vorbereitung

Registrieren Sie sich zunächst bei der Google Cloud Platform. Registrieren Sie auch eine Kreditkarte usw. (Es gibt eine freie Zeit für ein Jahr.)

Wählen Sie "Bibliothek" aus dem Menü "APIs und Dienste". Suchen und aktivieren Sie die "Cloud Natural Language API". Wählen Sie als Nächstes "Anmeldeinformationen" aus dem Menü "APIs und Dienste" aus, erstellen Sie einen API-Schlüssel unter "Anmeldeinformationen erstellen" und notieren Sie ihn.

Implementierung

Unter Google Colabratory "Erstellen Sie ein neues Notizbuch".

"Code hinzufügen", um den folgenden Code zu schreiben und auszuführen. (Ausführen ist das Dreieck ▷ auf der linken Seite)


import getpass

APIKEY = getpass.getpass()

Sie werden nach einem Pass gefragt. Geben Sie daher den API-SCHLÜSSEL ein und drücken Sie die EINGABETASTE.

Führen Sie als Nächstes "Code hinzufügen" aus, schreiben Sie den folgenden Code und führen Sie ihn aus, um das Ergebnis der Emotionsschätzung anzuzeigen.


import requests 
 
key = APIKEY
 
#Text, den Sie Emotionen analysieren möchten
text = "Sprich nicht mit mir ... ich ... ich habe keine Gefühle ..."
 
#API-URL
url = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' + key
 
#Grundlegende Informationseinstellungen
header = {'Content-Type': 'application/json'}
body = {
    "document": {
        "type": "PLAIN_TEXT",
        "language": "JA",
        "content": text
    },
    "encodingType": "UTF8"
}
 
#Erhalten Sie das Ergebnis im JSON-Format.
response = requests.post(url, headers=header, json=body).json()
print(response)
#Zeigen Sie die Analyseergebnisse auf dem Konsolenbildschirm an
print("Umfassende Größe:",response["documentSentiment"]["magnitude"])
print("Umfassende Punktzahl:",response["documentSentiment"]["score"])
for i in response["sentences"]:
    print(i["text"]["content"],"magnitude:",i["sentiment"]["magnitude"],", score:",i["sentiment"]["score"])

Microsoft Azure Text Analytics API

Klicken Sie hier, um
zu erweitern

Wenn Sie es einfach verwenden möchten, können Sie die folgende Demo ausprobieren. https://azure.microsoft.com/ja-jp/services/cognitive-services/text-analytics/

Wenn Sie es als Code implementieren, können Sie einen Testschlüssel erhalten, der 7 Tage lang gültig ist. https://azure.microsoft.com/ja-jp/try/cognitive-services/#lang

Verwenden Sie den folgenden Schnellstart, um Code in Colaboratory zu erstellen und auszuführen. Die Emotionsanalyseversion verwendet jedoch die neueste Version 3.0-Vorschau.1. (V2.1 im Schnellstart) https://docs.microsoft.com/ja-jp/azure/cognitive-services/text-analytics/quickstarts/python


import requests
# pprint is used to format the JSON response
from pprint import pprint

import os

subscription_key = "<paste-your-text-analytics-key-here>"
endpoint = "<paste-your-text-analytics-endpoint-here>"

sentiment_url = endpoint + "/text/analytics/v3.0-preview.1/sentiment"

documents = {"documents": [
    {"id": "1", "language": "ja",
        "text": "Sprich nicht mit mir ... ich ... ich habe keine Gefühle ..."},
]}

headers = {"Ocp-Apim-Subscription-Key": subscription_key}
response = requests.post(sentiment_url, headers=headers, json=documents)
sentiments = response.json()
pprint(sentiments)

COTOHA API

Klicken Sie hier, um
zu erweitern

Registrieren Sie sich als Entwickler über die COTOHA-API und erhalten Sie eine ID und einen PASS. https://api.ce-cotoha.com/contents/index.html Jede API kann bis zu 1000 Mal am Tag oder bis zu 30.000 Mal im Monat verwendet werden.

Sie können es ausführen, indem Sie Folgendes in Colaboratory schreiben und die ID und den PASS neu schreiben.


import requests
import json
import sys
from pprint import pprint

BASE_URL = "https://api.ce-cotoha.com/api/dev/"
CLIENT_ID = "ID erhalten durch COTOHA API"
CLIENT_SECRET = "PASS mit COTOHA API erhalten"


def auth(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 sentiment(sentence, access_token):
    base_url = BASE_URL
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8",
        "Authorization": "Bearer {}".format(access_token)
    }
    data = {
        "sentence": sentence,
    }
    r = requests.post(base_url + "nlp/v1/sentiment",
                      headers=headers,
                      data=json.dumps(data))
    return r.json()


if __name__ == "__main__":
    sentence = "Sprich nicht mit mir ... ich ... ich habe keine Gefühle ..."
    access_token = auth(CLIENT_ID, CLIENT_SECRET)

    sentiment_result  = sentiment(sentence,access_token)

    pprint(sentiment_result)

Benutzer lokal

Klicken Sie hier, um
zu erweitern

Da die kostenlose Version nur im Web bereitgestellt wird, verwenden Sie sie auf der folgenden Demo-Site. https://emotion-ai.userlocal.jp/

Ergebnisauszug & Vergleich

  1. "Sprich nicht ... ich ... ich habe keine Gefühle ..."
  2. "Was lacht ...?"
  3. "Specs I (weggelassen)"

Vergleichen wir die Ergebnisse mit jedem Emotionsschätzer. Unten ist das Ergebnis lang, also falte ich es. Zum erweitern klicken.

1. Jedes Schätzergebnis von "Sprich nicht ... ich ... ich habe keine Gefühle ..."

Klicken Sie hier, um
zu erweitern

Google Cloud Natural Language API

Umfassende Größe: 0.7
Umfassende Punktzahl: 0.7

Über Google Sentiment Punktzahl: -1,0 (negativ) bis 1,0 (positiv) Größe: 0,0 ~ + inf Die Emotion wird ausgedrückt durch. Es scheint, dass "traurig" und "wütend" nicht unterschieden werden und nur die Stärke als negativ oder positiv ausgedrückt wird. Interpretationsbeispiel "" Punktzahl ": 0,8," Größe ": 3,0" ist eindeutig positiv Diesmal ist es also schwach und positiv. ** Ergebnis: Leicht positiv **

Microsoft Azure Text Analytics API

'sentenceScores': {'negative': 0.55,
                   'neutral': 0.37,
                   'positive': 0.08},
'sentiment': 'negative'

Microsoft's Sentiment wird mit insgesamt 1 negativen, neutralen und positiven bewertet. Diesmal scheint die Negativität am stärksten beurteilt worden zu sein. Wenn es sich um eine Demo-Site handelt, wird sie wie im Bild unten gezeigt angezeigt. スクリーンショット 2020-03-03 23.51.06.png ** Ergebnis: Leicht negativ **

COTOHA API

 'result': {'emotional_phrase': [],
            'score': 0.36632366672980926,
            'sentiment': 'Neutral'}

Die COTOHA-API scheint entweder positiv, negativ, neutral und ihre Zuverlässigkeit anzuzeigen. Das Merkmal ist der Abschnitt namens emotionale_Phrase, der dieses Mal nicht aufgetaucht ist. Da jedoch die Begriffe für Emotionen und die Bezeichnungen dieser Emotionen extrahiert werden, scheint es, dass sie je nach Verwendungszweck verwendet werden können. Wenn es sich um ein Beispiel handelt, wird Folgendes beschrieben.

    "emotional_phrase":[
      {
        "form":"Lied",
        "emotion":"Jubeln,Linderung"
      }

Diesmal ist es ein neutraler und wenig zuverlässiger Wert, daher ist es ein Urteil, dass ** es emotionslos erscheint, aber es kann anders sein **. In gewissem Sinne ist dies nahe an der richtigen Antwort.

** Ergebnis: Emotionslos (vielleicht) **

Benutzer lokal

スクリーンショット 2020-03-04 0.10.35.png Ergebnisse im Web. Es scheint in 5 Arten von Emotionen eingeteilt zu sein. Es scheint einfach zu bedienen. Dieses Mal scheint er das Gefühl von Wut und Liebe zu haben. Wenn Sie es wörtlich lesen, werden Sie Ihre Wut kennen, aber Sie sind ** wie **.

** Ergebnis: Wütend und ähnlich **

2. Jedes Schätzergebnis von "Was lacht ...?"

Klicken Sie hier, um
zu erweitern

Google Cloud Natural Language API

Umfassende Größe: 0.1
Umfassende Punktzahl: -0.1

** Ergebnis: Schwache Emotionslosigkeit. Was ist schwache Emotionslosigkeit ... **

Microsoft Azure Text Analytics API

'sentenceScores': {'negative': 0.91,
                   'neutral': 0.04,
                   'positive': 0.05},
'sentiment': 'negative'}

** Ergebnis: Negativ **

COTOHA API

 'result': {'emotional_phrase': [{'emotion': 'PN', 'form': 'Lachen'}],
            'score': 0.2729609019529442,
            'sentiment': 'Neutral'},

Dieses Ergebnis ist auch ** emotionslos, aber nicht zuversichtlich **.

** Ergebnis: Emotionslos (vielleicht) **

Benutzer lokal

スクリーンショット 2020-03-04 0.29.15.png Auch ** Ich mag ** oder ... ** Freude ** nimmt zu und wird zum Chaos.

** Ergebnis: Wie wütend und freudig **

3. Jedes Schätzergebnis von "Spec I (weggelassen)"

Klicken Sie hier, um
zu erweitern

Google Cloud Natural Language API

Umfassende Größe: 1.8
Umfassende Punktzahl: 0.1

Starke Emotionslosigkeit. Was ist ...

** Ergebnis: Stark emotionslos **

Microsoft Azure Text Analytics API

'documentScores': {'negative': 0.56,
                   'neutral': 0.28,
                   'positive': 0.16},
'sentiment': 'negative'}

** Ergebnis: Leicht negativ **

COTOHA API

 'result': {'emotional_phrase': [{'emotion': 'N', 'form': 'traurig werden'},
                                 {'emotion': 'PN', 'form': 'kalt'},
                                 {'emotion': 'traurig', 'form': 'Blöd'},
                                 {'emotion': 'PN', 'form': 'Minimum'}],
            'score': 0.6473423833981717,
            'sentiment': 'Negative'}

** Ergebnis: Negativ **

Benutzer lokal

スクリーンショット 2020-03-04 0.43.36.png Ich denke, dass dies ein solches Ergebnis ist.

** Ergebnis: Etwas ängstlich **

Ergebniszusammenfassung

Die Ergebnisse positiver und negativer Beurteilungen sind in der folgenden Tabelle zusammengefasst.

  • Die Zahl in Klammern gibt die Anzahl der positiven und negativen Punkte an.
Google Microsoft COTOHA Benutzer lokal
1.Ich habe keine Gefühle Etwas positiv(+1) Etwas negativ(-1) Emotionslos(Geringe Zuverlässigkeit) (0) Wütend und wie(0)
2.Was lacht? Emotionslos geschwächt(0) Negativ(-1) Emotionslos(Geringe Zuverlässigkeit)(0) Wie Wut und Freude(+1)
3.Spec mich Starke Emotionslosigkeit(0) Etwas negativ(-1) Negativ(-1) Etwas ängstlich(-1)
Allgemeiner Kommentar Es ist ein Rätsel, dass ein Positiv herauskam. Ich kenne den Unterschied zwischen stark und schwach nicht Insgesamt negativ. Ich fühle mich wie die richtige Antwort. Als unzuverlässig beurteilt->Es scheint in gewissem Sinne eine richtige Antwort zu sein, aber es kann nicht stark beurteilt werden, es sei denn, es gibt einen Satz, der Emotionen direkt ausdrückt Es gibt Zeiten, in denen mehrere Emotionen gemischt sind und ich nicht gut verstehe

Deshalb habe ich nur 3 Fälle ausprobiert, aber die Ergebnisse sind sehr unterschiedlich. Die Individualität jedes Unternehmens kommt zum Ausdruck. Dieses Mal werden die Ergebnisse der vier Unternehmen summiert, um die Emotionen zu beurteilen, und Herr Rei hat insgesamt 0 und ist emotionslos, und die Spezifikation, die ich habe, hat ein Negativ von -3. Wie erwartet hat Rei (33) ein anderes Alter als das Geheimnis der Schüler der Mittelstufe.

Ich habe versucht, jeden von ihnen zu verwenden, aber ich persönlich habe festgestellt, dass die von Microsoft völlig negativ waren, und ich hatte das Gefühl, dass sie am wahrscheinlichsten sind. Aus praktischer Sicht denke ich, dass es einfacher wäre, diese zu verwenden, wenn die positiven und negativen Bewertungen angegeben würden. Es scheint, dass die COTOHA-API es als emotionslos beurteilt, und es scheint, dass es nicht möglich ist, zu beurteilen, weil es keinen Standard gibt, nur weil es keinen Ausdruck gibt, der Emotionen ausdrückt. Sollte es eher kein Urteil als keine Emotion genannt werden? Es ist praktisch, Sätze zu extrahieren, die Emotionen ausdrücken, aber es gibt viele Muster, die nicht unbedingt emotionale Sätze ausdrücken. Daher scheint es notwendig zu sein, zu überprüfen, ob dies praktisch ist oder nicht. Ich bin der Meinung, dass die positiven Negative und Stärken von Google eigentlich nicht sehr praktisch sind. Ich war mir nicht sicher, was ich mit einem schwachen Negativ oder einer starken Emotionslosigkeit anfangen sollte. Es scheint, dass wir einen Moment über die Implementierung nachdenken müssen. Benutzer-Einheimische sind sich nicht sicher, weil die widersprüchlichen Emotionen zu durcheinander sind. Ich weiß nicht, wo ich es verwenden soll ...

Das Obige sind die Eindrücke der Verwendung jeder Emotionsanalyse-API. Wenn sich jemand in Ihrer Nähe befindet, der sagt: "Ich ... ich habe keine Emotionen ...", überprüfen Sie bitte, ob Sie wirklich keine Emotionen haben, und teilen Sie uns die Ergebnisse vorsichtig mit.