Es ist unten in Aufzählungszeichen aufgeführt.
Das Folgende ist die Installationsmethode auf Google Colab.
Wenn Sie es lokal ausprobieren möchten, ändern Sie die Installationsmethode entsprechend.
#Installieren Sie MeCab
!apt install mecab libmecab-dev mecab-ipadic-utf8
!pip install mecab-python3
# mecab-ipadic-Installieren Sie NEologd
!apt install git make curl xz-utils file
!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -a
# Ref: https://qiita.com/Fulltea/items/90f6ebe6dcceaf64eaef
# Ref: https://qiita.com/SUZUKI_Masaya/items/685000d569452585210c
!ln -s /etc/mecabrc /usr/local/etc/mecabrc
# Ref: https://qiita.com/Naritoshi/items/8f55d7d5cce9ce414395
#Bibliothek zur Emotionsanalyse
!pip install asari oseti pymlask
Der als Eingabe für die Emotionsanalyse verwendete Text stammt von Aozora Bunko.
"Puppengebrauch" Hans Christian Andersen Hans Christian Andersen (Übersetzt von Genkuro Yazaki)
Ich habe es von abgeholt.
list_text = [
'Diese Person muss die glücklichste Person der Welt sein.',
'Das Spielhaus war wunderbar und die Kunden waren auch wunderbar.',
'Wenn es im Mittelalter gewesen wäre, wäre es wahrscheinlich verbrannt worden.',
'Wenn es um jedermanns Ärger ging, war es, als würden die Fliegen in der Flasche summen.',
'Wenn wir Menschen uns das einfallen lassen könnten, sollten wir länger leben können, bevor wir in der Erde begraben sind.'
]
asari
#Einfache Funktionsprüfung
from asari.api import Sonar
sonar = Sonar()
res = sonar.ping(text="Zu viele Anzeigen ♡")
res
{'classes': [{'class_name': 'negative', 'confidence': 0.9086981552962491},
{'class_name': 'positive', 'confidence': 0.0913018447037509}],
'text': 'Zu viele Anzeigen ♡', 'top_class': 'negative'}
list(map(sonar.ping, list_text))
[{'classes': [{'class_name': 'negative', 'confidence': 0.10382535749585702},
{'class_name': 'positive', 'confidence': 0.896174642504143}],
'text': 'Diese Person muss die glücklichste Person der Welt sein. ', 'top_class': 'positive'}, {'classes': [{'class_name': 'negative', 'confidence': 0.035517582235360945}, {'class_name': 'positive', 'confidence': 0.964482417764639}], 'text': 'Das Schauspielhaus war wunderbar und das Publikum war wunderbar. ', 'top_class': 'positive'}, {'classes': [{'class_name': 'negative', 'confidence': 0.5815274190768989}, {'class_name': 'positive', 'confidence': 0.41847258092310113}], 'text': 'Wenn es im Mittelalter gewesen wäre, wäre es wahrscheinlich verbrannt worden. ', 'top_class': 'negative'}, {'classes': [{'class_name': 'negative', 'confidence': 0.2692695045573754}, {'class_name': 'positive', 'confidence': 0.7307304954426246}], 'text': 'Wenn es um jedermanns Ärger geht, war es, als würden die Fliegen in der Flasche summen. ', 'top_class': 'positive'}, {'classes': [{'class_name': 'negative', 'confidence': 0.050528495655525495}, {'class_name': 'positive', 'confidence': 0.9494715043444746}], 'text': 'Wenn wir Menschen uns das einfallen lassen können, sollten wir länger leben können, bevor wir in der Erde begraben werden', 'top_class': 'positive'}]
Der Satz „Wenn es um jedermanns Ärger geht, war es, als würden die Fliegen in der Flasche summen.“ Der Satz war intuitiv negativ, wurde aber als positiv beurteilt.
Für andere Beispiele scheint es ein vernünftiges Urteil zu geben.
oseti
#Einfache Funktionsprüfung
import oseti
analyzer = oseti.Analyzer()
analyzer.analyze('Ich warte im Himmel.')
[1.0]
list(map(analyzer.analyze, list_text))
[[0.0], [1.0], [0], [0], [1.0]]
Der zweite Satz: "Das Spielhaus war wunderbar, und die Kunden waren wunderbar."
Wann
Fünfter Satz "Wenn wir Menschen uns das einfallen lassen können, sollten wir länger leben können, bevor wir in der Erde begraben werden."
Nur positives (+1) Urteil, neutrales Urteil für andere Sätze.
Schließlich ist der Eindruck, dass wörterbuchbasiert ist, schwach gegenüber Wörtern, die nicht im Wörterbuch enthalten sind.
pymlask
Der Autor des Pakets ist derselbe wie oseti.
#Einfache Funktionsprüfung
import mlask
emotion_analyzer = mlask.MLAsk()
emotion_analyzer.analyze('Ich hasse ihn nicht!(;´Д`)')
# => {'text': 'Ich hasse ihn nicht!(;´Д`)',
# 'emotion': defaultdict(<class 'list'>,{'yorokobi': ['Hass*CVS'], 'suki': ['Hass*CVS']}),
# 'orientation': 'POSITIVE',
# 'activation': 'NEUTRAL',
# 'emoticon': ['(;´Д`)'],
# 'intension': 2,
# 'intensifier': {'exclamation': ['!'], 'emotikony': ['´Д`', 'Д`', '´Д', '(;´Д`)']},
# 'representative': ('yorokobi', ['Hass*CVS'])
# }
{'activation': 'NEUTRAL',
'emoticon': ['(;´Д`)'],
'Emotion': defaultdict (Liste, {'suki': ['nicht mögen * CVS'], 'yorokobi': ['nicht mögen * CVS']}),
'intensifier': {'emotikony': ['´Д', 'Д
', '´Д', '(;´Д)'], 'exclamation': ['!']}, 'intension': 2, 'orientation': 'POSITIVE', 'Vertreter': ('yorokobi', ['nicht mögen * CVS']), 'text': 'Ich hasse ihn nicht! (; ´Д
) '}
#Es ist eine große Sache, also werde ich versuchen, das neologd Wörterbuch zu verwenden
# mecab-ipadic-Finden Sie heraus, wo Sie neologd installieren können
import subprocess
cmd='echo `mecab-config --dicdir`"/mecab-ipadic-neologd"'
path = (subprocess.Popen(cmd, stdout=subprocess.PIPE,
shell=True).communicate()[0]).decode('utf-8')
emotion_analyzer = mlask.MLAsk('-d {0}'.format(path)) # Use other dictionary
list(map(emotion_analyzer.analyze, list_text))
[{'activation': 'NEUTRAL',
'emoticon': None,
'Emotion': defaultdict (Liste, {'yorokobi': ['Glück']}), 'intensifier': {}, 'intension': 0, 'orientation': 'POSITIVE', 'Vertreter': ('yorokobi', ['glücklich']), 'text': 'Diese Person muss die glücklichste Person der Welt sein. '}, {'Emotion': Keine, 'Text': 'Das Schauspielhaus war wunderbar und das Publikum war wunderbar. '}, {'Emotion': Keine, 'Text': 'Wenn es im Mittelalter gewesen wäre, wäre es wahrscheinlich verbrannt worden. '}, {'Emotion': Keine, 'Text': 'Wenn es um jedermanns Ärger geht, war es, als würden die Fliegen in der Flasche summen. '}, {'emotion': None, 'text': 'Wenn wir Menschen uns das einfallen lassen können, sollten wir länger leben können, bevor wir in der Erde begraben werden'}]]
Diese Methode wird auch als positiv beurteilt, wenn das Wörterbuch ein Wort (Glück) enthält, es ist jedoch unmöglich zu beurteilen, ob es nicht im Wörterbuch enthalten ist.
Eindruck, dass das Ergebnis nicht gut ist.
Ich habe ein Tool ausprobiert, mit dem sich die Emotionen japanischer Sätze leicht analysieren lassen.
Vielen Dank, dass Sie diese Tools veröffentlicht haben.
Wenn Sie ernsthafte emotionale Analysen durchführen und vernünftigere Ergebnisse erzielen möchten, müssen Sie wahrscheinlich eine Verarbeitung gemäß der für Ihren Zweck geeigneten Satzkategorie hinzufügen oder neuronale Netzwerktechniken (in diesem Fall den Datensatz) verwenden. Es ist schwer zu schaffen).