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.
Comprenez comment fonctionne MeCab et essayez de le régler. Vérifiez également les analyseurs morphologiques autres que MeCab.
03.1 MeCab
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 |
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"
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
Si vous n'obtenez pas les résultats escomptés avec un dictionnaire existant, ajustez le dictionnaire vous-même.
#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".
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
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 **.
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