[PYTHON] RNN_LSTM2 Traitement du langage naturel

Aidemy 2020/11/10

introduction

Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le deuxième message de RNN_LSTM. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ Analyse morphologique, etc. ・ Traitement du langage naturel par apprentissage en profondeur

Traitement du langage naturel par RNN / LSTM

Avis sur le traitement du langage naturel

-Dans le traitement du langage naturel, il est nécessaire de séparer les phrases pour chaque __word __. Il y a __ «analyse morphologique» __ et __ «modèle N-gramme» __ dans la méthode, et des analyseurs morphologiques tels que MeCab sont principalement utilisés. Ceci sera décrit plus tard. -Le modèle __N-gramme __ est une méthode __ qui divise les mots par __N ensuite, ou divise les phrases par N mots et agrège la fréquence d'occurrence. Ceci n'est pas limité au japonais __ Peut être utilisé dans n'importe quelle langue __.

Analyse morphologique japonaise

-La première chose qui est faite dans le traitement du langage naturel japonais est __ "l'analyse morphologique" __. Cette fois, nous effectuerons une analyse morphologique à l'aide de MeCab. -Pour l'utiliser, créez d'abord une instance avec __ "MeCab.Tagger ('')" __, puis utilisez __ "parse ()" __ pour effectuer une analyse morphologique.

Analyse

-__ L'analyse de la syntaxe__ est effectuée après avoir effectué une analyse morphologique. L'analyse syntaxique est une méthode __ qui décompose chaque phrase en __ clauses et détermine la __dépendance entre les clauses. -Un programme qui effectue une analyse de syntaxe est appelé un analyseur de syntaxe, et il y a __ "CaboCha" __ et __ "KNP" __.

Traitement du langage naturel par apprentissage en profondeur

Prétraitement des données

-__ Le prétraitement des données __ est une étape très importante __ dans le traitement du langage naturel. Le flux principal est le suivant. (Voir «Traitement du langage naturel» pour plus de détails) ① __ Processus de nettoyage __: supprime les balises HTML et autres éléments qui ne sont pas liés au texte. ② __ Analyse morphologique __ ③ __ Normalisation des mots __: Unification des fluctuations de notation, etc. ④ __ Suppression de mot d'arrêt __: Suppression de mots (auxiliaires, etc.) qui ont peu de sens malgré leur fréquence d'apparition ⑤ __Vectorisation __: les mots sont vectorisés (quantifiés)

Séparation par MeCab

-Si vous souhaitez utiliser MeCab uniquement pour __ l'écriture séparée __, vous pouvez utiliser __ "MeCab.Tagger ('-Owakati')" __. Faites ceci avec __ "parse (text)" __ et distinguez chaque mot séparé par des espaces par __ "split ('')" __. -Créer une liste des mêmes mots dans l'ordre du dictionnaire avec __ "sorted (set (word_list))" __. -Pour cette liste (vocab), un dictionnaire de __ "{word: id}" __ est créé avec __ "{c: i pour i, c dans enumerate (vocab)}" . -Appliquer ceci à chaque word_list pour lister ids. ( [vocab_to_int [x] for x in word_list] __)

・ Code![Capture d'écran 2020-11-10 13.05.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/42e409e1-a194-f8c8- e2c5-f4c33c5bdff4.png)

・ Résultat![Capture d'écran 2020-11-10 13.05.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/da7b1a42-7ab9-0a38- e237-bcaef1a1d274.png)

Embedding -Pour __ pour vectoriser __words, utilisez __Embedding layer __. La mise en œuvre se fait dans le modèle __Sequential __. -Si la liste d'identifiants "int_list" créée à la fin de la section précédente est transformée en un formulaire (input_data) qui peut être appliqué au model et passé dans model.predict, une liste vectorisée sera retournée.

・ Code![Capture d'écran 2020-11-10 13.06.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/2d92b0ed-b69b-5dba- ed7b-9f6c26fe0160.png)

Implémentation du traitement du langage naturel par LSTM

-Les données traitées cette fois-ci sont des données en langage naturel, mais l'implémentation elle-même n'est pas très différente de ce qui a été fait jusqu'à présent, donc je ne posterai que le code ici.

・ Code![Capture d'écran 2020-11-10 13.07.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/65b2e6b5-6bd8-7517- ecbc-2efd8b701f01.png)

Sommaire

-Lors de l'exécution du traitement du langage naturel en apprentissage profond, il est important de prétraiter __ données __. Plus précisément, __ "les mots sont vectorisés (quantifiés)" __, donc d'abord, la phrase est divisée en mots par __ analyse morphologique __, et __ les parties inutiles sont supprimées __. Vous devez le faire. -Utilisez Embedding lors de la vectorisation des mots. L'implémentation utilise le modèle séquentiel. -La mise en œuvre du modèle qui effectue le traitement du langage naturel peut se faire de la même manière que les autres modèles __.

Cette fois, c'est fini. Merci d'avoir lu jusqu'à la fin.

Recommended Posts

RNN_LSTM2 Traitement du langage naturel
Python: traitement du langage naturel
Traitement du langage naturel 1 Analyse morphologique
Traitement du langage naturel 3 Continuité des mots
Traitement du langage naturel 2 similitude de mots
100 traitements du langage naturel frappent le chapitre 4 Commentaire
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)
Se préparer à démarrer le traitement du langage naturel
Résumé de l'installation de l'analyseur de traitement du langage naturel
100 traitements linguistiques frappent 03 ~ 05
100 coups de traitement linguistique (2020): 40
100 coups de traitement linguistique (2020): 35
100 coups de traitement linguistique (2020): 47
100 coups de traitement linguistique (2020): 39
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): 25
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
100 coups de traitement linguistique (2020): 36
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 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 coups de traitement du langage amateur: 41
100 coups de traitement du langage amateur: 71
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 coups de traitement du langage amateur: 24
100 coups de traitement du langage amateur: 50
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
100 coups de traitement du langage amateur: 70
100 coups de traitement du langage amateur: 62
100 coups de traitement du langage amateur: 60
3. Traitement du langage naturel par Python 2-2. Réseau de co-occurrence [mecab-ipadic-NEologd]
100 coups de traitement du langage amateur: 92
100 coups de langue amateur: 30