[PYTHON] Se préparer à démarrer le traitement du langage naturel

Dans cet article, je présenterai les grandes lignes du fait que ce type de travail est effectué lors du traitement du langage naturel.

Analyse morphologique

L'analyse morphologique consiste à découper des phrases en mots. Recherchez la partie du mot et renvoyez le formulaire d'utilisation au formulaire d'origine. Par exemple, l'expression «passer un examen qui correspond à votre taille» est analysée comme suit.

Hauteur nez, général, *, *, *, *, hauteur, minotake, minotake Ni Assistance, Case Assistance, Général, *, *, *, Ni, Ni, Ni Verbe correspondant, indépendance, *, *, rappel de ligne cinq dan / wa, connexion continue, correspondance, ah, ah Ta verbe auxiliaire, *, *, *, ta spéciale, forme de base, ta, ta, ta Nomenclature des examens, Connexion Sahen, *, *, *, *, Examen, Juken, Juken

MeCab est utilisé pour l'analyse morphologique. https://taku910.github.io/mecab/ Ceci est largement utilisé, mais il présente quelques faiblesses dans les nouveaux mots et les termes techniques car il divise les mots plus que nécessaire, comme le remplacement de «examen nutritionniste administratif» par «gestion / nutrition / personne / examen». Pour les nouveaux mots, un dictionnaire fréquemment mis à jour appelé mecab-ipadic-NEologd a été publié pour compenser les faiblesses de MeCab. https://github.com/neologd/mecab-ipadic-neologd En plus de cela, je crée un nouveau dictionnaire de mots à analyser localement et je l'utilise en ajoutant diverses choses.

Je voudrais utiliser JUMAN ++ pour sa grande précision. http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++ Lorsque le «gouvernement étranger» est traité par MeCab, il devient «étranger / ginseng / gouvernement», mais dans JUMAN ++, il est analysé comme «étranger / gouvernement». La fonctionnalité est que vous pouvez améliorer vos compétences d'analyse par l'apprentissage automatique. Cependant, je n'ai pas pu résoudre l'erreur lorsque j'ai construit JUMAN ++ avec boost. Je me demande si MeCab sera utilisé tel quel.

Prétraitement

Pour le texte contenant des balises HTML, vous devez supprimer les balises. En plus de cela, si vous n'effectuez pas de prétraitement avant d'appliquer à l'analyse morphologique, ① et i apparaîtront comme des mots-clés fréquents, et les mots ayant la même signification seront agrégés séparément.

émoticône

C'est une porte démoniaque. L'étude des caractères faciaux est en fait une étude profonde avec des décennies d'histoire. Si vous êtes intéressé, veuillez lire l'article spécial dans le Journal of the Society of Artificial Intelligence Vol.32 No. 3 (2017/05). https://www.ai-gakkai.or.jp/vol32_no3/ J'ai pris correctement le dictionnaire des caractères du visage et l'ai ajouté à mon dictionnaire pour rendre le thé boueux, mais le taux de couverture n'est pas élevé. Selon le texte à analyser, il peut être nécessaire de travailler de front avec l'emblème.

Normalisation

Il s'agit d'un processus pour empêcher des mots similaires ayant la même signification d'être agrégés séparément. Demi-largeur pleine largeur, majuscules et minuscules (par exemple Qiita, QIITA, Qiita, QIITA) Aligner la notation (exemple: 3, 3, 3, 3, 3, 3, 3) Aligner les abréviations (par exemple, Hirodai, Hiroshima University, Hiroshima University)

Nombres

Concernant le traitement des numéros, cela peut dépendre du type de document. Dans un contexte normal, vous pouvez supprimer tous les numéros. En revanche, pour les records sportifs et autres éléments où les nombres sont des mots-clés, il est préférable de traiter les nombres comme des nombres. Dans ce cas, le problème est que MeCab divise le nombre avec la virgule décimale en différents mots tels que la partie entière, la partie période et la partie fraction. Dans ce cas, il est nécessaire d'effectuer un processus pour restaurer la valeur numérique après avoir effectué l'analyse morphologique à la fois.

Arrêter la suppression des mots

Un mot vide est un mot qui apparaît dans n'importe quel document, tel que «je» ou «est». J'exclus les mots non indépendants et les mots qui apparaissent fréquemment dans le document à analyser comme des mots vides.

Autre

Les formules chimiques, les formules mathématiques et physiques, les URL, les codes de produit, les numéros de modèle, etc. doivent être exclus de l'analyse des phrases. Par exemple, si vous donnez simplement la formule chimique du phénol (C6H5OH) à MeCab, ce sera comme ça.

C substantif,Général,*,*,*,*,*
6 nomenclature,nombre,*,*,*,*,*
H substantif,Général,*,*,*,*,*
5 nomenclature,nombre,*,*,*,*,*
OH substantif,Nomenclature propriétaire,Organisation,*,*,*,*

Cela ne peut pas du tout être reconnu comme phénol. De plus, il est souvent inutile d'analyser les phrases anglaises et le code de programme en utilisant la même méthode que le japonais.

Vectorisation de documents

Vectorisez le document en utilisant les mots contenus dans le document comme indices (Doc2Vec). Des documents similaires doivent avoir des vecteurs similaires. Doc2Vec est inclus dans une bibliothèque appelée gensim. https://radimrehurek.com/gensim/

Une fois transformé en vecteur, il est possible de combiner des documents similaires. Il existe également une méthode appelée analyse thématique, qui sera décrite plus loin, pour rassembler des documents similaires. Dans certains cas, l'analyse thématique et la vectorisation sont utilisées ensemble. J'aimerais aussi faire divers essais et erreurs ici.

Analyse thématique

Il classe automatiquement les documents qui ont été analysés morphologiquement et les divise en un nombre spécifié de sujets. Cela peut également être fait avec gensim. gensim devrait avoir peur.

BERT Il s'agit d'un modèle de traitement du langage naturel annoncé par Google l'année dernière. Je veux l'utiliser, mais je n'ai pas du tout enquêté dessus. Je vais étudier à partir de maintenant.

Recommended Posts

Se préparer à démarrer le traitement du langage naturel
Python: traitement du langage naturel
RNN_LSTM2 Traitement du langage naturel
Articles en vrac pour ceux qui veulent commencer le traitement du langage naturel
Traitement du langage naturel 1 Analyse morphologique
Traitement du langage naturel 2 similitude de mots
Étudiez le traitement du langage naturel avec Kikagaku
100 traitements du langage naturel frappent le chapitre 4 Commentaire
Traitement du langage naturel pour les personnes occupées
[Traitement du langage naturel] Prétraitement avec le japonais
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)
[Python] Essayez de classer les boutiques de ramen par traitement du langage naturel
Résumé de l'installation de l'analyseur de traitement du langage naturel
[Introduction à RasPi4] Construction de l'environnement, système de traitement du langage naturel mecab, etc. .. .. ♪
Résumez comment prétraiter le texte (traitement du langage naturel) avec l'api tf.data.Dataset
Langage naturel: ChatBot Part2-Sequence To Sequence Attention
Traiter le nom de la carte Yugioh en langage naturel --Yugiou Data Science 2. PNL
100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)
3. Traitement du langage naturel par Python 2-1. Réseau de co-occurrence
[WIP] Pré-traitement des notes dans le traitement du langage naturel
3. Traitement du langage naturel par Python 1-1. Word N-gram
J'ai essayé le traitement du langage naturel avec des transformateurs.
Mémo de produits pratique autour du traitement du langage naturel
100 traitements linguistiques frappent 03 ~ 05
100 coups de traitement linguistique (2020): 40
100 coups de traitement linguistique (2020): 32
100 coups de traitement linguistique (2020): 47
100 coups de traitement linguistique (2020): 22
100 coups de traitement linguistique (2020): 26
100 coups de traitement linguistique (2020): 34
100 coups de traitement linguistique (2020): 28
100 coups de traitement linguistique (2020): 42
100 coups de traitement linguistique (2020): 29
100 coups de traitement linguistique (2020): 49
Le traitement de 100 langues frappe 06 ~ 09
100 coups de traitement linguistique (2020): 43
100 coups de traitement linguistique (2020): 24
100 coups de traitement linguistique (2020): 45
100 coups de traitement linguistique (2020): 10-19
100 coups de traitement linguistique (2020): 30
100 coups de traitement linguistique (2020): 00-09
100 coups de traitement linguistique (2020): 31
100 coups de traitement linguistique (2020): 38
100 coups de traitement linguistique (2020): 48
100 coups de traitement linguistique (2020): 44
100 coups de traitement linguistique (2020): 41
100 coups de traitement linguistique (2020): 37
100 traitement de la langue frapper 00 ~ 02
100 coups de traitement linguistique (2020): 23
100 coups de traitement linguistique (2020): 33
100 coups de traitement linguistique (2020): 20
100 coups de traitement linguistique (2020): 27
100 coups de traitement linguistique (2020): 46
100 coups de traitement linguistique (2020): 21
3. Traitement du langage naturel avec Python 1-2. Comment créer un corpus: Aozora Bunko
100 coups de traitement linguistique (2020): 36
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 14-16
Préparation à l’essai de «Data Science 100 Knock (traitement des données structurées)»
Python: apprentissage profond du traitement du langage naturel: principes de base
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 07-09
Une personne inexpérimentée en Python tente de frapper 100 traitement du langage 10 ~ 13