Il est répertorié ci-dessous sous forme à puces.
Voici la méthode d'installation sur google colab.
Si vous souhaitez l'essayer localement, modifiez la méthode d'installation en conséquence.
#Installez MeCab
!apt install mecab libmecab-dev mecab-ipadic-utf8
!pip install mecab-python3
# mecab-ipadic-Installez 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
#Bibliothèque d'analyse des émotions
!pip install asari oseti pymlask
Le texte utilisé comme entrée pour l'analyse des émotions provient d'Aozora Bunko.
Je l'ai ramassé.
list_text = [
'Cette personne doit être la personne la plus heureuse du monde.',
'La salle de spectacle était magnifique et les clients étaient également merveilleux.',
'Si c'était au Moyen Âge, il aurait probablement été brûlé.',
'Quand il s'agissait de l'agacement de tout le monde, c'était comme si les mouches bourdonnaient dans la bouteille.',
'Si nous, les humains, pouvons trouver cela, nous devrions pouvoir vivre plus longtemps avant d'être enterrés dans la terre.'
]
asari
#Contrôle de fonctionnement simple
from asari.api import Sonar
sonar = Sonar()
res = sonar.ping(text="Trop d'annonces ♡")
res
{'classes': [{'class_name': 'negative', 'confidence': 0.9086981552962491},
{'class_name': 'positive', 'confidence': 0.0913018447037509}],
'text': 'Trop d'annonces ♡', 'top_class': 'negative'}
list(map(sonar.ping, list_text))
[{'classes': [{'class_name': 'negative', 'confidence': 0.10382535749585702},
{'class_name': 'positive', 'confidence': 0.896174642504143}],
'text': 'Cette personne doit être la personne la plus heureuse du monde. ', 'top_class': 'positive'}, {'classes': [{'class_name': 'negative', 'confidence': 0.035517582235360945}, {'class_name': 'positive', 'confidence': 0.964482417764639}], 'text': 'La salle de spectacle était magnifique et le public était merveilleux. ', 'top_class': 'positive'}, {'classes': [{'class_name': 'negative', 'confidence': 0.5815274190768989}, {'class_name': 'positive', 'confidence': 0.41847258092310113}], 'text': 'Si c'était au Moyen Âge, il aurait probablement été brûlé. ', 'top_class': 'negative'}, {'classes': [{'class_name': 'negative', 'confidence': 0.2692695045573754}, {'class_name': 'positive', 'confidence': 0.7307304954426246}], 'text': 'Quand il s'agit de l'agacement de tout le monde, c'était comme si les mouches bourdonnaient dans la bouteille. ', 'top_class': 'positive'}, {'classes': [{'class_name': 'negative', 'confidence': 0.050528495655525495}, {'class_name': 'positive', 'confidence': 0.9494715043444746}], 'text': `` Si nous, les humains, pouvons arriver à cela, nous devrions pouvoir vivre plus longtemps avant d'être enterrés dans la terre '', 'top_class': 'positive'}]
La phrase: "Quand il s'agit de l'agacement de tout le monde, c'était comme si les mouches bourdonnaient dans la bouteille." La phrase était intuitivement négative, mais elle a été jugée positive.
Il semble y avoir un jugement raisonnable pour d'autres exemples.
oseti
#Contrôle de fonctionnement simple
import oseti
analyzer = oseti.Analyzer()
analyzer.analyze('J'attends au paradis.')
[1.0]
list(map(analyzer.analyze, list_text))
[[0.0], [1.0], [0], [0], [1.0]]
La deuxième phrase, "Le théâtre était merveilleux et les clients étaient merveilleux."
Quand
Cinquième phrase "Si nous, les humains, pouvons trouver cela, nous devrions pouvoir vivre plus longtemps avant d'être enterrés dans la terre."
Seul jugement positif (+1), jugement neutre pour les autres phrases.
Après tout, l'impression que le dictionnaire est basé sur un dictionnaire est faible par rapport aux mots qui ne sont pas inclus dans le dictionnaire.
pymlask
L'auteur du package est le même que oseti.
#Contrôle de fonctionnement simple
import mlask
emotion_analyzer = mlask.MLAsk()
emotion_analyzer.analyze('Je ne le déteste pas!(;´Д`)')
# => {'text': 'Je ne le déteste pas!(;´Д`)',
# 'emotion': defaultdict(<class 'list'>,{'yorokobi': ['Haine*CVS'], 'suki': ['Haine*CVS']}),
# 'orientation': 'POSITIVE',
# 'activation': 'NEUTRAL',
# 'emoticon': ['(;´Д`)'],
# 'intension': 2,
# 'intensifier': {'exclamation': ['!'], 'emotikony': ['´Д`', 'Д`', '´Д', '(;´Д`)']},
# 'representative': ('yorokobi', ['Haine*CVS'])
# }
{'activation': 'NEUTRAL',
'emoticon': ['(;´Д`)'],
'emotion': defaultdict (liste, {'suki': ['n'aime pas * CVS'], 'yorokobi': ['n'aime pas * CVS']}),
'intensifier': {'emotikony': ['´Д', 'Д
', '´Д', '(;´Д)'], 'exclamation': ['!']}, 'intension': 2, 'orientation': 'POSITIVE', 'représentant': ('yorokobi', ['n'aime pas * CVS']), 'text': 'Je ne le déteste pas! (; ´Д
) '}
#C'est un gros problème, alors je vais essayer d'utiliser le dictionnaire neologd
# mecab-ipadic-Découvrez où installer neologd
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': ['bonheur']}), 'intensifier': {}, 'intension': 0, 'orientation': 'POSITIVE', 'représentant': ('yorokobi', ['happy']), 'text': 'Cette personne doit être la personne la plus heureuse du monde. '}, {'emotion': Aucun, 'text': 'La salle de spectacle était merveilleuse et le public était merveilleux. '}, {'emotion': Aucun, 'text': 'Si c'était au Moyen Âge, il aurait probablement été brûlé. '}, {'emotion': Aucun, 'text': 'Quand il s'agit de l'agacement de tout le monde, c'était comme si les mouches bourdonnaient dans la bouteille. '}, {'emotion': None, 'text': 'Si nous, les humains, pouvons trouver cela, nous devrions pouvoir vivre plus longtemps avant d'être enterrés dans la terre'}]]
Cette méthode est également jugée positive s'il y a un mot (bonheur) dans le dictionnaire, mais il est impossible de juger s'il n'est pas dans le dictionnaire.
Impression que le résultat n'est pas bon.
J'ai essayé un outil qui facilite l'analyse des émotions des phrases japonaises.
Merci d'avoir publié ces outils.
Si vous voulez faire une analyse émotionnelle sérieuse et obtenir des résultats plus raisonnables, vous devrez probablement ajouter un traitement en fonction de la catégorie de phrase qui convient à votre objectif, ou utiliser des techniques de réseau neuronal (dans ce cas, l'ensemble de données). C'est difficile à créer).