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