[PYTHON] Différence dans les résultats de l'analyse morphologique selon le dictionnaire Mecab

À propos de cet article

Qu'est-ce que l'analyse morphologique?

L'analyse morphologique est l'une des méthodes de traitement du langage naturel également utilisées dans les moteurs de recherche. Elle décompose une phrase / phrase en «unités minimales (= mots) qui ont un sens». Il est utilisé pour juger du contenu des phrases et des phrases.
Site de référence

À propos de mecab

Aperçu

MeCab est un moteur d'analyse morphologique open source développé dans le cadre du projet d'unité commune de recherche de la Graduate School of Informatics, Kyoto University-Nippon Telegraph and Telephone Corporation, Research Institute for Communication Science. La politique de base est une conception à usage général qui ne dépend pas de la langue, du dictionnaire ou du corpus. Les champs aléatoires conditionnels (CRF) sont utilisés pour estimer les paramètres. Il fonctionne également plus rapidement que ChaSen, Juman et KAKASI en moyenne. À propos, Mekabu est un favori de l'auteur.

Fonctionnalité

-Design universel indépendant du dictionnaire et du corpus -Haute précision d'analyse basée sur le champ de probabilité conditionnelle (CRF) -Plus rapide que ChaSen et KAKASI -Adopte Double-Array, qui est une structure TRIE à grande vitesse, pour l'algorithme de recherche de dictionnaire / la structure de données. -Bibliothèque réentrante -Diverses liaisons de langage de script (perl / ruby / python / java / C #)

Comparaison

mecab chasen juman kakasi
Modèle d'analyse bi-modèle de Markov gramme Modèle de Markov à longueur variable bi-modèle de Markov gramme Match le plus long
Modèle d'apprentissage CRF (Modèle de discrimination) HMM (Modèle de génération)
Algorithme de recherche de dictionnaire Double Array Double Array Arbre de Patricia Hash?
Algorithme de recherche de solution Viterbi Viterbi Viterbi Définitive?
Implémentation de la table concaténée Tableau 2D automate Tableau 2D? Pas de table de connexion?
Hiérarchie des mots de partie Pièces multicouches illimitées Pièces multicouches illimitées Fixe en 2 étapes Pas de concept de paroles de partie?
Traitement de texte inconnu Type de caractère(La définition de l'action peut être modifiée) Type de caractère(Non modifiable) Type de caractère(Non modifiable)
Analyse des contraintes Possible 2.4.0でPossible 不Possible 不Possible
N-meilleure solution Possible 不Possible 不Possible 不Possible

Données du dictionnaire

neologd


$ echo "Brillance Instagram" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
Nom digne d'Instagram,Nomenclature propriétaire,Général,*,*,*,Brillance Instagram,Insta fly,Insta fly
EOS

$ echo "Brillance Instagram" | mecab 
Insta substantif,Général,*,*,*,*,*
Shine substantif,Général,*,*,*,*,Éclat,Mouches,Mouches
EOS

$ echo "Sérieusement" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
Sérieusement substantif,Nomenclature propriétaire,Général,*,*,*,Sérieusement,Sérieusement,Sérieusement
EOS

$ echo "Sérieusement" | mecab 
Substantif sérieux,Racine du verbe adjectif,*,*,*,*,sérieusement,Vraiment,Vraiment
卍 non,Général,*,*,*,*,卍,Manji,Manji
EOS

$ echo "Tapiru" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
Tapi substantif,Nomenclature propriétaire,Général,*,*,*,Tapi,Tapi,Tapi
Verbe auxiliaire,*,*,*,Langue littéraire,Connexion Word,Ri,Le,Le
EOS

$ echo "Tapiru" | mecab
Tapi substantif,Général,*,*,*,*,*
Verbe auxiliaire,*,*,*,Langue littéraire,Forme basique,Ru,Le,Le
EOS

$ echo "Agemizawa" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
Agemizawa substantif,Nomenclature propriétaire,Général,*,*,*,Agemizawa,Agemizawa,Agemizawa
EOS

$ echo "Agemizawa" | mecab 
Raise Verbe,Indépendance,*,*,Un pas,Type continu,Donner,Âge,Âge
Verbe mi,Non indépendant,*,*,Un pas,Type continu,Vue,Mi,Mi
Zawa substantif,Nomenclature propriétaire,Organisation,*,*,*,*
EOS

$ echo "Pêche Azamaru" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
Azamaru Fisheries Nominal,Nomenclature propriétaire,Général,*,*,*,Pêche Azamaru,Azamaru Suisan,Azamaru Suisan
EOS

$ echo "Pêche Azamaru" | mecab 
Aza substantif,Général,*,*,*,*,Aza,Aza,Aza
Préfixe Maru,Plusieurs connexions,*,*,*,*,Maru,Maru,Maru
Nomenclature des pêches,Général,*,*,*,*,Pêche,Suisan,Suisan
EOS

$ echo "Instagram" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
Nomenclature Instagram,Nomenclature propriétaire,Général,*,*,*,Instagram,Instagram,Instagram
EOS

$ echo "Instagram" | mecab 
Nomenclature Instagram,Nomenclature propriétaire,Organisation,*,*,*,*
EOS

$ echo "Kemio" | mecab 
Assistant Ke,Aide finale,*,*,*,*,Ke,Ke,Ke
Verbe mi,Indépendance,*,*,Un pas,Type continu,Vue,Mi,Mi
O verbe,Non indépendant,*,*,Cinq étapes, La ligne,Connexion Word spéciale 2,Oru,Oh,Oh
EOS

$ echo "Kemio" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
Kemio substantif,Nomenclature propriétaire,Nom d'une personne,Général,*,*,Kemio,Chimio,Chimio
EOS

Comment utiliser dans le code (UNIX et python3)

mecab.py


import MeCab

t = MeCab.Tagger ('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')#mecab-ipadic-NEologd
t = MeCab.Tagger ("-Ochasen")#Guy standard

text = 'Texte que vous souhaitez analyser'
t.parse('')#Empêcher les chaînes d'être GC
m = t.parseToNode(text)
while m:
    if m.feature.split(',')[0] == 'nom':
        print(m.surface)  

result


Nomenclature AWS,Nomenclature propriétaire,Général,*,*,*,AWS,Services Web Amazon,Services Web Amazon
Nomenclature célèbre,Racine du verbe adjectif,*,*,*,*,Célèbre,Yumei,Yumei
Nomenclature des services,Changer de connexion,*,*,*,*,un service,un service,un service
Amazon substantif,Nomenclature propriétaire,Général,*,*,*,Amazon,Amazone,Amazone
Substantif élastique,Nomenclature propriétaire,Général,*,*,*,Elastic,Élastique,Élastique
Calculer substantif,Général,*,*,*,*,*
Nuage substantif,Général,*,*,*,*,*

le terme

C'est l'un des modèles graphiques probabilistes représentés par des graphes non orientés et c'est un modèle discriminant. L'étiquetage des séries vise à recevoir une chaîne de données (par exemple, une chaîne de mots) en entrée et à étiqueter les données individuelles en sortie. Par exemple, il y a un problème de donner des informations de paroles de partie à une chaîne de mots (entrée: «I / ha / run» ⇒ sortie: «nom / assistant / verbe»). Est fait. CRF
Le CRF pour résoudre l'étiquetage de séquence est appelé le CRF à chaîne linéaire.
Site de référence: [Explication technique] CRF (Conditional Random Fields)

Recommended Posts

Différence dans les résultats de l'analyse morphologique selon le dictionnaire Mecab
[Analyse morphologique] Comment ajouter un nouveau dictionnaire à Mecab
[Python] Analyse morphologique avec MeCab
■ [Google Colaboratory] Utiliser l'analyse morphologique (MeCab)
J'ai joué avec Mecab (analyse morphologique)!
Activer le moteur d'analyse morphologique MeCab en Python3 (version mars 2016)
Effectuer une analyse morphologique dans l'environnement d'apprentissage automatique lancé par GCE
100 traitements du langage frappent l'analyse morphologique apprise au chapitre 4
Installation d'outils d'analyse morphologique (MeCab, Human ++, Janome, GiNZA)
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
100 Language Processing Knock-30 (en utilisant des pandas): lecture des résultats de l'analyse morphologique
Différence de résultats en fonction de l'argument du multiprocessus.
J'ai créé une classe pour obtenir le résultat de l'analyse par MeCab dans ndarray avec python