[PYTHON] Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 2 Étape 03 Mémo "Analyse morphologique et écriture écrite"

Contenu

Ceci est un mémo pour moi pendant que je lis Introduction aux applications de traitement du langage naturel en 15 étapes. Cette fois, au chapitre 2, étape 03, j'écrirai mes propres points.

Préparation

Aperçu des chapitres

Comprenez comment fonctionne MeCab et essayez de le régler. Vérifiez également les analyseurs morphologiques autres que MeCab.

03.1 MeCab

dictionnaire

L'écriture de MeCab est basée sur le dictionnaire. Les informations obtenues à partir de l'analyse morphologique à l'aide de MeCab dans le dictionnaire dépendent du type d'informations enregistrées dans le dictionnaire, et les informations enregistrées dans le dictionnaire diffèrent selon le dictionnaire.

Nom du dictionnaire Contenu
IPAdic ・ Dictionnaire officiellement recommandé par MeCab
・ Basé sur des données appelées IPA Corpus
UniDic ・ Basé sur des données appelées UniDic
・ L'unité à diviser est petite, ce qui est proche d'une stricte «analyse morphologique».
jumandic -Port MeCab du dictionnaire utilisé dans l'analyseur morphologique appelé JUMAN, qui est différent de MeCab.
・ Basé sur des données appelées Kyoto Corpus
・ Des méta-informations telles que la notation représentative sont données
ipadic-NEologd ・ Augmentation significative du nombre de mots basé sur le dictionnaire IPA
・ Le vocabulaire est souvent élargi en explorant des mots sur Internet et la capacité de répondre à de nouveaux mots est très élevée.
Il est recommandé d'effectuer une normalisation en tant que prétraitement
unidic-NEologd ・ Ipadic-Similaire à NEologd, un dictionnaire avec des extensions de mots basé sur UniDic

Installez et exécutez ipadic-NEologd

La différence entre IPAdic et ipadic-NEologd est, par exemple, l'analyse du mot «Deep Learning» (un mot relativement nouveau).

--IPAdic: divisé par "Deep" et "Learning" --ipadic-NEologd: traité par un mot de "Deep Learning"

Comportement de l'analyse morphologique MeCab

Le dictionnaire contient non seulement des informations sur les éléments morphologiques tels que les résultats d'exécution, mais également les diverses informations suivantes.

Le résultat de l'analyse est la combinaison qui minimise la combinaison du coût d'occurrence et du coût de connexion pour la phrase donnée. (Dans l'exemple ci-dessous, le coût de la division «J'aime Higashi Osaka» est (minimum) le plus bas, c'est donc le résultat de l'analyse.)

Exemple) "J'adore East Osaka"


#Lors de la séparation avec "I love Higashi Osaka"
Coût de la connexion entre le début de la phrase et "Higashi Osaka"
Coût d'occurrence de «Higashi Osaka»
Coût de connexion de "Higashi Osaka" et "Je t'aime"
Coût d'occurrence de "l'amour"
"Je t'aime" et le coût de connexion à la fin de la phrase

#Lors de la séparation avec "J'aime l'Université Todai Osaka"
Coût de la connexion entre le début de la phrase et "Higashi Osaka"
Coût d'occurrence de "Todai"
Coût de la connexion de «Todai» et «Osaka University»
Coût d'occurrence de «l'Université d'Osaka»
Coût de connexion de «l'Université d'Osaka» et «J'aime»
Coût d'occurrence de "j'aime"
"Je t'aime" et le coût de connexion à la fin de la phrase

03.2 Modification du dictionnaire MeCab

Si vous n'obtenez pas les résultats escomptés avec un dictionnaire existant, ajustez le dictionnaire vous-même.

Construire le dictionnaire MeCab

#Encodage UTF du fichier source-Convertir en 8
$ nkf --overwrite -Ew ./mecab-ipadic-2.7.0-20070801/*

#Construire un dictionnaire
$ mkdir build
$ $(mecab-config --libexecdir)/mecab-dict-index -d ./mecab-ipadic-2.7.0-20070801 -o build -f utf8 -t utf8
$ cp mecab-ipadic-2.7.0-20070801/dicrc ./build/. #Copier dicrc

nkf est une abréviation de "Network Kanji Filter".

Ajouter de nouveaux mots

Créez un fichier csv dans le répertoire des fichiers source


#Forme de surface, ID de contexte gauche, ID de contexte droit, coût d'occurrence, paroles de partie, sous-classification de paroles de partie 1, sous-classification de partie de partie 2, sous-classification de partie de partie 3, type d'utilisation, forme d'utilisation, prototype, lecture, prononciation

#Si vous souhaitez ajouter un traitement du langage naturel
Traitement du langage naturel,1288,1288,0,nom,固有nom,Général,*,*,*,Shizengengoshori,Shizengen Goshori,Shizengen Goshori

Ajustement de l'analyse morphologique

  1. Ajustez le coût de connexion
  2. Recherchez l'ID de contexte du mot cible dans .csv
  3. Modifiez le coût de concaténation de l'ID de contexte cible avec matrix.def
  4. Ajuster le coût de l'occurrence
  5. Corrigez le coût d'occurrence du mot cible en .csv

Cependant, lorsque vous modifiez les coûts ci-dessus, ** sachez que cela peut affecter des résultats autres que la partie prévue **.

Il semble y avoir une méthode pour ajuster automatiquement le coût, mais ** il semble que la plage d'influence puisse être réduite en ajustant manuellement le coût de la pièce que vous souhaitez corriger **.

03.3 Divers analyseurs morphologiques

Obtenez un aperçu des analyseurs morphologiques autres que MeCab.

Analyseur morphologique Contenu
MeCab ・ Basé sur le dictionnaire
・ Le dictionnaire contient des informations sur les mots, les coûts d'occurrence et les coûts de connexion.
・ La vitesse d'exécution est rapide
-Depuis que le dictionnaire est transformé en fichier externe, il peut être personnalisé selon les besoins.
JUMAN++ ・ Un analyseur morphologique relativement nouveau qui utilise un réseau neuronal
・ Tenez compte non seulement de la correction grammaticale, mais aussi de la signification des mots
・ Tenez compte des informations sur tous les mots avant un mot
・ Correspond à la fluctuation de la notation
・ Il existe de nombreux avantages par rapport à MeCab, mais la vitesse d'exécution est inférieure.
KyTea(La mignonne) ・ SVM prédit si un mot est séparé entre un caractère et le caractère suivant en fonction des caractères avant et après lui.
-Le wrapper Python est fourni par un tiers
Janome ・ Écrit uniquement en Python
・ Un dictionnaire IPA est intégré et une API qui peut être gérée à partir de Python est fournie.
・ La vitesse d'exécution est lente
・ Les options du dictionnaire sont limitées
SudachiPy · Liaisons Python pour l'analyse morphologique Sudachi pour Java
・ À partir de mai 2019, la sortie officielle est(A-t-il encore été officiellement publié?)
Esanpy(Kuromoji) ・ Kuromoji est un analyseur morphologique implémenté en Java
・ Lors de l'utilisation depuis Python, passez par Esanpy
・ Esanpy est une bibliothèque d'analyse de texte qui utilise Elasticsearch (moteur de recherche en texte intégral) en interne.

Recommended Posts

Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 2 Étape 03 Mémo "Analyse morphologique et écriture écrite"
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" - Chapitre 2 Étape 02 Mémo "Prétraitement"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» - Chapitre 2 Étape 07 Mémo «Évaluation»
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 4 Etape 14 Mémo "Recherche Hyper Paramètre"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» --Chapitre 2 Étape 04 Mémo «Extraction de fonctionnalités»
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" - Chapitre 4 Étape 15 Mémo "Collecte de données"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» - Chapitre 3 Étape 08 Mémo «Introduction aux réseaux de neurones»
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 2 Étape 05 Mémo "Conversion de quantité de fonctionnalités"
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 3 Étape 12 Mémo "Réseaux de neurones convolutifs"
Essayons le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 3 Étape 10 Mémo "Détails et amélioration du réseau neuronal"
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 3 Étape 09 Mémo "Identifier par Neural Network"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» --Chapitre 2 Étape 01 Mémo «Créer un agent de dialogue»
100 traitements du langage naturel frappent Chapitre 4 Analyse morphologique (première moitié)
100 traitements du langage naturel frappent Chapitre 4 Analyse morphologique (seconde moitié)
[Pour les débutants] Analyse du langage à l'aide de l'outil de traitement du langage naturel "GiNZA" (de l'analyse morphologique à la vectorisation)
100 coups de traitement du langage 2020: Chapitre 4 (analyse morphologique)
100 Language Processing Knock 2020 Chapitre 4: Analyse morphologique
100 Traitement du langage Knock Chapitre 4: Analyse morphologique
[Traitement du langage 100 coups 2020] Chapitre 4: Analyse morphologique
Traitement du langage 100 coups Chapitre 4: Analyse morphologique 31. Verbes
[WIP] Pré-traitement des notes dans le traitement du langage naturel
La première étape de l'analyse du journal (comment formater et mettre les données du journal dans Pandas)
Résumé du début au chapitre 1 de l'introduction aux modèles de conception appris en langage Java
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 6] Introduction à scicit-learn avec 100 coups de traitement du langage
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
Le traitement du langage naturel à 100 coups
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-
100 points de traitement du langage naturel Chapitre 5 Analyse des dépendances (premier semestre)
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
[Réunion de changement d'emploi] Essayez de classer les entreprises en traitant le bouche-à-oreille en langage naturel avec word2vec
Analyse des émotions avec traitement du langage naturel! J'ai essayé de prédire l'évaluation à partir du texte de l'avis
[Traitement du langage naturel] J'ai essayé de visualiser les remarques de chaque membre de la communauté Slack