Liste des outils qui peuvent être utilisés pour essayer facilement l'analyse des émotions des phrases japonaises avec Python (essayez avec google colab)

Open In Colab

Liste des outils pouvant être utilisés pour essayer facilement l'analyse des émotions

Il est répertorié ci-dessous sous forme à puces.

Installation des bibliothèques requises

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

Préparation des données

Le texte utilisé comme entrée pour l'analyse des émotions provient d'Aozora Bunko.

"Utilisation des marionnettes" Hans Christian Andersen Hans Christian Andersen (Traduit par Genkuro Yazaki)

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.

Résumé

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).

référence

Commentaire, article de synthèse

Ensemble de données japonais d'analyse des émotions

Recommended Posts

Liste des outils qui peuvent être utilisés pour essayer facilement l'analyse des émotions des phrases japonaises avec Python (essayez avec google colab)
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Résumé des méthodes d'analyse de données statistiques utilisant Python qui peuvent être utilisées en entreprise
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
Notes sur les connaissances Python utilisables avec AtCoder
Liste du code Python utilisé dans l'analyse de Big Data
traitement python3 qui semble utilisable dans paiza
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!
[Python3] Code qui peut être utilisé lorsque vous souhaitez redimensionner des images dossier par dossier
Essayez d'obtenir la liste des fils du bulletin d'information (je n'aime pas) avec Python.
J'ai essayé de l'étendre pour que la base de données puisse être utilisée avec le logiciel d'analyse de Wiire
Résumé de l'entrée standard de Python pouvant être utilisée dans Competition Pro
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Comparaison de 4 styles pouvant être passés à seaborn avec set_context
[Version terminée] Essayez de connaître le nombre d'habitants de la ville à partir de la liste d'adresses avec Python
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
Optimisation mathématique pour un travail gratuit avec Python + PuLP
Essayez de vous connecter à qiita avec Python
[Python3] Code qui peut être utilisé lorsque vous souhaitez découper une image dans une taille spécifique
[Python3] Code qui peut être utilisé lorsque vous souhaitez modifier l'extension d'une image à la fois
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
Je souhaite créer une file d'attente prioritaire pouvant être mise à jour avec Python (2.7)
Notes personnelles des opérations liées aux pandas qui peuvent être utilisées dans la pratique
Résumé des sources de données scikit-learn pouvant être utilisées lors de la rédaction d'articles d'analyse
Comment installer la bibliothèque Python qui peut être utilisée par les sociétés pharmaceutiques
Comment obtenir une liste de fichiers dans le même répertoire avec python
Premiers pas pour essayer Google CloudVision en Python
Types de fichiers pouvant être utilisés avec Go
Fonctions pouvant être utilisées dans l'instruction for
Répertorier les packages pouvant être mis à jour avec pip
[Python] J'ai examiné une pratique qui peut être exécutée en parallèle avec le thread principal par traitement asynchrone (multiprocessing, asyncio)
Convertir des images du SDK FlyCapture en un formulaire pouvant être utilisé avec openCV
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Visualisation des informations géographiques de R et Python qui peuvent être exprimées par Power BI
Analyse morphologique et tfidf (avec code de test) pouvant être effectuée en 1 minute environ
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Un mécanisme pour appeler des méthodes Ruby à partir de Python qui peut être fait en 200 lignes
Essayez de mettre en œuvre une recherche complète de la séquence qui apparaît souvent chez les pros de la concurrence avec python
Statistiques simples qui peuvent être utilisées pour analyser l'effet des mesures sur les sites EC et les codes qui peuvent être utilisés dans le notebook jupyter
Résumé des outils nécessaires pour analyser les données en Python
Algorithmes de base utilisables par les pros de la compétition
Liste des couleurs pouvant être définies avec tkinter (mémorial)
Un moyen facile de gratter avec Python en utilisant Google Colab
[Mémorandum] Les clés japonaises ne peuvent pas être utilisées dans la chaîne de python.
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
compréhension de liste car operator.methodcaller ne peut pas être utilisé avec python 2.5
Peut être utilisé chez les pros de la compétition! Bibliothèque standard Python
Les équations simultanées non linéaires peuvent être facilement résolues avec Python.
Liste de mes articles pouvant être utiles aux pros de la compétition (mise à jour de temps en temps)
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
Essayez de visualiser les nutriments des flocons de maïs que le champion de M-1 Milkboy a dit avec Python
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Récapitulatif du format des formats qui peuvent être sérialisés avec gensim
Essayez de gratter les données COVID-19 Tokyo avec Python
Essayez d'obtenir la liste des fonctions du paquet Python> os