Comparaison approfondie de trois bibliothèques d'analyse morphologique Python

introduction

Il existe de nombreux outils d'analyse morphologique, mais il est important de comprendre leurs caractéristiques avant de les utiliser.

Cette fois, j'ai comparé trois outils d'analyse morphologique utilisables depuis Python.

MeCab

  • Estimation des paramètres à l'aide de CRF (Conditional Random Fields)
  • La précision de la discrimination et la vitesse d'exécution sont élevées, et si vous souhaitez l'utiliser de manière standard, vous devez absolument utiliser MeCab. Cependant, la bibliothèque est un peu lourde.
In[1]: import MeCab
In[2]: mecab = MeCab.Tagger()
In[3]: %time print mecab.parse("Les pommes se sont avérées avoir des effets très positifs sur le corps humain")
Pomme substantif,Général,*,*,*,*,pomme,Pomme,Pomme
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
Nomenclature humaine,Général,*,*,*,*,Humain,Ningen,Ningen
Mots auxiliaires,syndicat,*,*,*,*,de,Non,Non
Nomenclature corporelle,Général,*,*,*,*,corps,Shintai,Shintai
Mots auxiliaires pour,Assistant de cas,Langage commun,*,*,*,pour,Nitotte,Nitotte
Très nomenclature,Racine du verbe adjectif,*,*,*,*,très,Taihen,Taihen
Bon adjectif,Indépendance,*,*,apocalypse,Forme basique,bien,Yoi,Yoi
Effet substantif,Général,*,*,*,*,effet,Kouka,Coca
Est un assistant,Assistant de cas,Général,*,*,*,Mais,Géorgie,Géorgie
Un verbe,Indépendance,*,*,Cinq étapes, La ligne,Forme basique,y a-t-il,Al,Al
Ce nom,Non indépendant,Général,*,*,*,chose,Des choses,Des choses
Est un assistant,Assistant de cas,Général,*,*,*,Mais,Géorgie,Géorgie
Preuve substantif,Changer de connexion,*,*,*,*,Preuve,Risho,Richaud
Verbe sa,Indépendance,*,*,Sahen / Suru,Connexion Rel,Faire,Un service,Un service
Re verbe,suffixe,*,*,Un pas,Type continu,Être,Les,Les
Te assistant,Assistant de connexion,*,*,*,*,main,Te,Te
Je verbe,Non indépendant,*,*,Un pas,Type continu,Est,je,je
Masu verbe auxiliaire,*,*,*,Spécial / masse,Forme basique,Masu,truite,truite
EOS

CPU times: user 0 ns, sys: 0 ns, total: 0 ns
Wall time: 240 µs

Juman

  • Discrimination morphologique Huristique
  • Une précision de discrimination élevée et une __ notation représentative __ de chaque élément morphologique sont affichées, il est donc excellent pour analyser des choses avec beaucoup de fluctuations de notation telles que Twitter.
In[1]: import cJuman
In[2]: cJuman.init(['-B', '-e2'])
In[3]: %time print cJuman.parse_opt(["Les pommes se sont avérées avoir des effets très positifs sur le corps humain"], cJuman.SKIP_NO_RESULT)
Apple apple apple substantif 6 substantif commun 1* 0 * 0 "Notation représentative:Pomme/Catégorie Apple:plante;Objet artificiel-Domaine alimentaire:Cuisine / repas"
Hahaha Auxiliaire 9 Sous-Auxiliaire 2* 0 * 0 NIL
Nomenclature humaine humaine 6 nomenclature commune 1* 0 * 0 "Notation représentative:Humain/Catégorie Ningen:Homme"
Non non non auxiliaire 9 assistant de connexion 3* 0 * 0 NIL
Corps Shintai Corps Nez 6 Nez ordinaire 1* 0 * 0 "Notation représentative:corps/Catégorie Shintai:animal"
Ni ni ni syllabaire 9 cas syllabaire 1* 0 * 0 NIL
Prendre le verbe 2*0 Verbe consonne La ligne 10 Système Ta utilisation continue Te forme 14"Notation représentative:prendre/Candidat du verbe attaché à prendre"
@Prendre le verbe 2*0 Verbe consonne La ligne 10 Système Ta utilisation continue Te forme 14"Notation représentative:prendre/Domaine à prendre:Verbe d'auto-autre politique:Soi:Peut être pris/Peut être pris"
@Prendre le verbe 2*0 Verbe consonne La ligne 10 Système Ta utilisation continue Te forme 14"Notation représentative:prendre/Prendre le verbe auto-autre:Soi:Être attrapé/Peut être pris"
@Prendre le verbe 2*0 Verbe consonne La ligne 10 Système Ta utilisation continue Te forme 14"Notation représentative:prendre/Prendre le verbe auto-autre:Soi:Peut être récolté/Peut être pris"
@Prendre le verbe 2*0 Verbe consonne La ligne 10 Système Ta utilisation continue Te forme 14"Notation représentative:Prendre/Domaine à prendre:Cuisine / repas:Soi:Peut être pris/Peut être pris"
@Prendre le verbe 2*0 Verbe consonne La ligne 10 Système Ta utilisation continue Te forme 14"Notation représentative:prendre/Domaine à prendre:Culture / art verbe auto-autre:Soi:Peut être pris/Peut être pris"
@Prendre le verbe 2*0 Verbe consonne La ligne 10 Système Ta utilisation continue Te forme 14"Notation représentative:Voler/Prendre"
Très très très très défenseur 8* 0 * 0 * 0 "Notation représentative:très/Beaucoup"
@Adjectif très dur très dur 3*0 adjectif na 21 mot radical 1"Notation représentative:C'est dur/C'est dur"
Bon bon bon bon adjectif 3*0 un adjectif Auodan 18 forme de base 2"Notation représentative:bien/Bonne rébellion:adjectif:mal/Mal"
Effet Koka Effet Nez 6 Nez ordinaire 1* 0 * 0 "Notation représentative:effet/Catégorie Koka:Abstrait"
Assistant ga ga ga 9 assistant de cas 1* 0 * 0 NIL
Un certain un certain verbe 2*0 verbe consonne la ligne 10 forme de base 2"Notation représentative:Oui/Une phrase supplémentaire:adjectif:Non/Absent"
Koto Koto Koto Nez 6 Nez Formel 8* 0 * 0 NIL
Assistant ga ga ga 9 assistant de cas 1* 0 * 0 NIL
Prouvez-le Prouvez Noun 6 Sahen Noon 2* 0 * 0 "Notation représentative:Preuve/Catégorie Risho:Domaine abstrait:Politique"
Verbe sasashi 2*0 Variable Sa 16 Préforme 3"Notation représentative:Faire/Faire 付属動詞候補(基本) Soi他動詞:Soi:Devenir/Devenir"
Le suffixe 14 verbe sexe suffixe 7 voyelle verbe 1 te forme à usage continu 14"Notation représentative:Être/Être"
I'm suffix 14 verb sex suffix 7 voyelle verbe 1 base continue forme 8"Notation représentative:Est/Est"
De plus en plus suffixe 14 verbe sexe suffixe 7 verbe sexe suffixe type 31 forme de base 2"Notation représentative:Masu/Masu"
EOS

CPU times: user 0 ns, sys: 0 ns, total: 0 ns
Wall time: 976 µs

Cabocha

  • Effectuer une analyse des dépendances à l'aide de SVM (Support Vector Machine)
  • Si vous l'utilisez pour apprendre des données lors de la génération automatique de phrases à l'aide de la chaîne de Markov, il semble que vous puissiez faire plus intéressant que d'utiliser des outils d'analyse morphologique orthodoxe tels que MeCab (approprié)
In[1]: import CaboCha
In[2]: cabocha = CaboCha.Parser()
In[3]: %time print cabocha.parseToString("Les pommes se sont avérées avoir des effets très positifs sur le corps humain")
Pommes---------------D
Humain-D           |
Pour le corps-------D   |
très-D   |   |
bien-D |   |
L'effet est-D   |
y a-t-il-D |
Cette-D
Éprouvé
EOS

CPU times: user 882 µs, sys: 84 µs, total: 966 µs
Wall time: 917 µs

Étant donné que la sortie suivante est également possible, il est facile de traiter en utilisant l'analyse des dépendances dans le code python. Cependant, c'est lent.

In[4]: print cabocha.parse("Les pommes se sont avérées avoir des effets très positifs sur le corps humain").toString(CaboCha.FORMAT_LATTICE)
* 0 8D 0/1 -2.111879
Pomme substantif,Général,*,*,*,*,pomme,Pomme,Pomme
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
* 1 2D 0/1 1.635242
Nomenclature humaine,Général,*,*,*,*,Humain,Ningen,Ningen
Mots auxiliaires,syndicat,*,*,*,*,de,Non,Non
* 2 6D 0/1 1.318492
Nomenclature corporelle,Général,*,*,*,*,corps,Shintai,Shintai
Mots auxiliaires pour,Assistant de cas,Langage commun,*,*,*,pour,Nitotte,Nitotte
* 3 4D 0/0 0.781377
Très nomenclature,Racine du verbe adjectif,*,*,*,*,très,Taihen,Taihen
* 4 5D 0/0 1.810798
Bon adjectif,Indépendance,*,*,apocalypse,Forme basique,bien,Yoi,Yoi
* 5 6D 0/1 2.448702
Effet substantif,Général,*,*,*,*,effet,Kouka,Coca
Est un assistant,Assistant de cas,Général,*,*,*,Mais,Géorgie,Géorgie
* 6 7D 0/0 2.151727
Un verbe,Indépendance,*,*,Cinq étapes, La ligne,Forme basique,y a-t-il,Al,Al
* 7 8D 0/1 -2.111879
Ce nom,Non indépendant,Général,*,*,*,chose,Des choses,Des choses
Est un assistant,Assistant de cas,Général,*,*,*,Mais,Géorgie,Géorgie
* 8 -1D 1/5 0.000000
Preuve substantif,Changer de connexion,*,*,*,*,Preuve,Risho,Richaud
Verbe sa,Indépendance,*,*,Sahen / Suru,Connexion Rel,Faire,Un service,Un service
Re verbe,suffixe,*,*,Un pas,Type continu,Être,Les,Les
Te assistant,Assistant de connexion,*,*,*,*,main,Te,Te
Je verbe,Non indépendant,*,*,Un pas,Type continu,Est,je,je
Masu verbe auxiliaire,*,*,*,Spécial / masse,Forme basique,Masu,truite,truite
EOS

CPU times: user 1.29 ms, sys: 101 µs, total: 1.39 ms
Wall time: 1.91 ms

finalement

En plus de cela, il existe de nombreux outils d'analyse morphologique en Python tels que Kytea, Igo-python, ChaSen et Kakasi, j'espère donc que vous serez familiarisé avec les caractéristiques de chacun et que vous pourrez les utiliser correctement au cas par cas.

Recommended Posts

Comparaison approfondie de trois bibliothèques d'analyse morphologique Python
Comparaison simple des bibliothèques Python qui exploitent Excel
Une comparaison rapide des bibliothèques de test Python et node.js
[Python] Analyse morphologique avec MeCab
Python: texte japonais: analyse morphologique
Analyse statique des programmes Python
Comparaison de 4 types de frameworks Web Python
Analyse morphologique japonaise avec Python
Comparaison de la vitesse de la perspective XML Python
J'ai étudié 4 bibliothèques de test d'analyse de données de certification d'ingénieur Python 3
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Comparaison des modules de conversion japonais en Python3
comparaison de chaînes python / utiliser 'list' et 'in' au lieu de '==' et 'ou'
Exemple d'analyse de squelette tridimensionnelle par Python
Astuces: Comparaison de la taille de trois valeurs
Analyse d'image de microtomographie à rayons X par Python
Comparaison des frameworks sans serveur Python-Zappa vs Chalice
Python: analyse morphologique simplifiée avec des expressions régulières
Comparaison de la vitesse de transposition de la matrice par Python
[Python] Comparaison de la théorie de l'analyse des composants principaux et de l'implémentation par Python (PCA, Kernel PCA, 2DPCA)
Analyse de la variation temporelle des trous noirs en utilisant Python
Comparaison des performances du détecteur de visage avec Python + OpenCV
[Python3] Comparaison de vitesse, etc. sur la privation de numpy.ndarray
Comparaison d'écriture R et Python (méthode de division mutuelle euclidienne)
J'ai essayé l'analyse morphologique et la vectorisation de mots
Analyse statique du code Python avec GitLab CI
Environnement enregistré pour l'analyse des données avec Python
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
Premier Python 3 ~ Première comparaison ~
Analyse de données python
Les bases de Python ①
Bases de python ①
Copie de python
Introduction de Python
Text mining avec Python ① Analyse morphologique (re: version Linux)
Explication du concept d'analyse de régression à l'aide de python Partie 2
[Python] [Word] [python-docx] Analyse simple des données de diff en utilisant python
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
Comparaison de l'implémentation de plusieurs moyennes mobiles exponentielles (DEMA, TEMA) en Python
Calculer le coefficient de régression d'une analyse de régression simple avec python
Défiez l'analyse des composants principaux des données textuelles avec Python
Liste du code Python utilisé dans l'analyse de Big Data
Explication du concept d'analyse de régression à l'aide de Python Partie 1
Outil d'analyse morphologique en ligne version Pure Python Rakuten MA
Analyse du squelette de plan avec Python (4) Gestion du déplacement forcé
Tableau de comparaison des processus fréquemment utilisés de Python et Clojure
Explication du concept d'analyse de régression à l'aide de Python Extra 1
Comparaison des bibliothèques d'analyse de ligne de commande Python (argparse, click, fire)
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby