[PYTHON] Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel

introduction

Récemment, le traitement du langage naturel utilisant le réseau de neurones convolutifs (CNN) a attiré l'attention. Comparé à RNN, CNN est plus facile à paralléliser, et en utilisant le GPU, le calcul de convolution peut être effectué à grande vitesse, il a donc l'avantage d'une vitesse de traitement extrêmement élevée.

Cet article est une compilation de modèles utilisant des réseaux de neurones convolutifs dans le traitement du langage naturel. Nous espérons que cela vous aidera à avoir une vue d'ensemble des progrès de la recherche sur le traitement du langage naturel à l'aide de CNN.

Classification des phrases (analyse de réputation, classification des sujets, classification des types de questions)

Convolutional Neural Networks for Sentence Classification(2014/08) Un article proposant un CNN qui effectue la classification des phrases telles que l'analyse de réputation et la classification des types de questions. スクリーンショット 2017-02-03 5.39.48.png

Plus précisément, les phrases sont représentées comme une séquence de vecteurs de mots et les caractéristiques sont extraites et classées à l'aide de CNN. Dans l'article, il est rapporté que les performances ont été améliorées en utilisant le vecteur de mot pré-appris (Google News appris avec word2vec). Il est intéressant de noter que chacun des deux canaux représente un vecteur de mot, l'un est mis à jour pendant l'apprentissage et l'autre n'est pas mis à jour pour améliorer les performances. Lorsqu'elles ont été évaluées sur sept tâches de classification de documents, y compris l'analyse de réputation et la classification des types de questions, quatre tâches sur sept ont donné les meilleurs résultats de tous les temps.

L'implémentation par l'auteur de Theano et l'implémentation de TensorFlow par Google Brain par Denny Britz: https://github.com/yoonkim/CNN_sentence https://github.com/dennybritz/cnn-text-classification-tf

Une brève explication et mise en œuvre en japonais par ichiroex [Chainer] Classification des documents par réseau de neurones convolutifs

Deep Convolutional Neural Networks for Sentiment Analysis of Short Texts(2014/08) Un article proposant CNN (CharSCNN) qui analyse la réputation des critiques de films et de Twitter. スクリーンショット 2017-02-03 5.42.02.png

L'analyse de la réputation pour des textes courts tels que Twitter pose le problème qu'elle est difficile car les informations contextuelles sont limitées. Pour résoudre ce problème, nous avons amélioré les performances en construisant des représentations vectorielles au niveau des caractères en plus des représentations vectorielles au niveau des mots normalement utilisées dans l'analyse de réputation, et en les utilisant pour obtenir des représentations vectorielles de phrases. Je l'ai fait. Les expériences avec des ensembles de données pour les critiques de films (SSTb) et Twitter (STS) ont donné de meilleurs résultats que les méthodes précédentes.

Implémentation Theano par hogefugabar: https://github.com/hogefugabar/CharSCNN-theano

J'ai également écrit un article de commentaire: Analyse émotionnelle des tweets par apprentissage en profondeur

#TAGSPACE: Semantic Embeddings from Hashtags(2014/10) Un article proposant un CNN qui apprend des expressions de texte courtes à l'aide de balises de hachage utilisées dans SNS en tant qu'enseignants. スクリーンショット 2017-02-03 5.47.14.png

Plus précisément, en utilisant CNN, le score est émis pour la paire de balises de hachage correspondant au texte d'entrée, et l'expression du texte est apprise dans le processus de classement des balises de hachage. À la suite de l'évaluation par la tâche de prédiction de balises de hachage et de recommandation de document, le résultat était meilleur que la méthode de base.

Effective Use of Word Order for Text Categorization with Convolutional Neural Networks(2014/12) Un article qui propose un CNN pour la classification du texte en tenant compte de l'ordre des mots. スクリーンショット 2017-02-03 5.59.33.png

Il existe diverses tâches dans la classification des documents, mais dans des tâches telles que l'analyse de réputation, des performances élevées ne peuvent être obtenues que si l'ordre des mots est pris en compte. Afin de résoudre ce problème, nous proposons un CNN qui peut classer les documents en tenant compte de l'ordre des mots. Plus précisément, la plupart des méthodes CNN saisissent l'incorporation de mots en entrée, mais dans cette étude, des vecteurs unidimensionnels à une seule dimension sont entrés tels qu'ils sont pour apprendre l'incorporation dans une petite zone de texte. L'efficacité de la méthode proposée a été démontrée en la comparant à la méthode SOTA en utilisant trois ensembles de données liés à l'analyse de réputation (y compris IMDB) et à la classification des sujets.

Mis en œuvre par l'auteur de l'article: http://riejohnson.com/cnn_download.html

Semi-supervised Convolutional Neural Networks for Text Categorization via Region Embedding(2015/04) スクリーンショット 2017-02-03 5.48.32.png

Une histoire qui proposait un cadre d'apprentissage semi-supervisé utilisant CNN pour la classification de texte. Dans le modèle conventionnel, l'incorporation de mots pré-appris a été utilisée pour l'entrée de la couche de convolution, mais dans cette recherche, l'incorporation est apprise à partir d'une petite zone de texte sans enseignant et utilisée dans le cadre de l'entrée de la couche de convolution dans un CNN supervisé. Les expériences d'analyse de réputation (IMDB, Elec) et de classification des sujets (RCV1) ont montré des performances plus élevées que les études précédentes.

Mis en œuvre par l'auteur de l'article: http://riejohnson.com/cnn_download.html

Character-level Convolutional Networks for Text Classification(2015/09) スクリーンショット 2017-02-03 5.43.09.png

Une histoire sur l'utilisation d'un réseau neuronal convolutif au niveau des caractères pour la classification de texte. Nous augmentons les données en remplaçant les mots du texte par des synonymes à l'aide d'un cissolus. La comparaison est effectuée sur l'arc, le sac de ngram, le sac de moyens comme méthode traditionnelle et CNN et LSTM basés sur les mots comme méthode d'apprentissage en profondeur. Huit ensembles de données ont été créés et comparés à la méthode de base, et certains ensembles de données ont montré leur efficacité.

Implémentation Lua par l'auteur: https://github.com/zhangxiangxiao/Crepe

A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification(2015/10) スクリーンショット 2017-02-03 5.46.08.png

Le modèle CNN donne de bons résultats dans la classification des phrases, mais il nécessite un expert pour décider de l'architecture et définir des hyperparamètres. Je ne sais pas quelles seront les conséquences de ces changements, donc je l'ai vérifié avec plus de CNN. Enfin, il donne des conseils pratiques sur la façon de définir l'architecture du modèle et les hyperparamètres lors de la classification des phrases avec CNN.

Étiquetage des séries (balisage de participation, reconnaissance d'expression unique, segmentation)

Natural Language Processing (almost) from Scratch(2011/03) スクリーンショット 2017-02-03 5.52.26.png

Une histoire qui proposait un réseau de neurones capable d'apprendre le marquage de mots partiels, le découpage, l'extraction d'expressions uniques et l'attribution de rôles sémantiques. Bien que les performances aient été inférieures à la référence par simple entraînement, il a été montré qu'un bon vecteur de mots contribue à l'amélioration des performances en entraînant le modèle de langage à l'avance à l'aide de données non étiquetées. En outre, il a été montré que les performances peuvent être encore améliorées en partageant des paramètres entre les modèles pour résoudre chaque tâche et effectuer un apprentissage multi-tâches.

Diapositive récapitulative en japonais: Traitement du langage naturel (presque) à partir de zéro (matériel du 6e groupe d'étude sur l'apprentissage profond; Sakaki)

Learning Character-level Representations for Part-of-Speech Tagging(2014/07) スクリーンショット 2017-02-03 5.51.27.png

Une histoire sur le marquage des mots de partie en utilisant CNN (CharWNN). Plus précisément, nous avons construit une représentation vectorielle des mots en intégrant des incrustations au niveau du mot et au niveau du caractère, et avons construit un CNN qui produit le score de la partie en entrant le vecteur construit. Des expériences avec des ensembles de données pour l'anglais et le portugais (WSJ et Mac-Morpho) ont abouti à des résultats SOTA.

Modèle de langage

Language Modeling with Gated Convolutional Networks(2016/12) スクリーンショット 2017-02-03 9.05.21.png

On dit que CNN a atteint une précision égale ou supérieure à LSTM dans la tâche de modèle de langage. Le résultat plié est traité par un mécanisme similaire à GRU afin que les informations passées ne soient pas perdues. L'ensemble de données Google Billion Word a la même précision que LSTM, mais l'efficacité du calcul a été améliorée d'environ 20 fois.

Implémenté par TensorFlow: Language-Modeling-GatedCNN

en conclusion

Le compte Twitter suivant fournit un résumé des dernières informations papier sur l'apprentissage automatique, le traitement du langage naturel et la vision par ordinateur. Nous attendons que vous nous suiviez car nous fournissons un contenu intéressant pour ceux qui liront cet article. arXivTimes

référence

Recommended Posts

Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel
[Traitement du langage 100 coups 2020] Chapitre 8: Réseau neuronal
Essayez d'utiliser TensorFlow-Part 2-Convolution Neural Network (MNIST)
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
Création d'un modèle de discrimination d'image (cifar10) à l'aide d'un réseau neuronal convolutif
3. Traitement du langage naturel par Python 2-2. Réseau de co-occurrence [mecab-ipadic-NEologd]
Une autre méthode de conversion de style utilisant le réseau neuronal convolutif
Python: apprentissage profond du traitement du langage naturel: principes de base
Insoutenable manque d'attention dans le traitement du langage naturel
Python: traitement du langage naturel
Implémenter un réseau neuronal convolutif
RNN_LSTM2 Traitement du langage naturel
Expérience de réseau de neurones pliable
Vérification des performances du prétraitement des données dans le traitement du langage naturel
Implémentation d'un réseau de neurones convolutifs utilisant uniquement Numpy
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"
Traitement du langage naturel 1 Analyse morphologique
Traitement du langage naturel 3 Continuité des mots
Implémentation de réseau neuronal en python
Utilisation du mode Python dans le traitement
Traitement du langage naturel 2 similitude de mots
Types de prétraitement dans le traitement du langage naturel et leur puissance
Essayez de créer un réseau de neurones en Python sans utiliser de bibliothèque
Étudiez le traitement du langage naturel avec Kikagaku
Traitement du langage naturel japonais utilisant Python3 (4) Analyse des émotions par régression logistique
100 traitements du langage naturel frappent le chapitre 4 Commentaire
100 Language Processing Knock Chapitre 1 en Python
Traitement du langage naturel pour les personnes occupées
100 traitement du langage knock-76 (en utilisant scicit-learn): étiquetage
[Traitement du langage naturel] Prétraitement avec le japonais
Langage naturel: Word2Vec Part3 - Modèle CBOW
Modèle de classification simple avec réseau neuronal
Créez facilement un modèle de traitement du langage naturel avec BERT + LightGBM + optuna
Qu'est-ce que le réseau neuronal convolutif?
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)
100 Language Processing Knock 2020 Chapitre 8: Neural Net
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
100 traitement du langage knock-31 (en utilisant des pandas): verbe
100 traitement du langage knock-73 (en utilisant scikit-learn): apprentissage
Se préparer à démarrer le traitement du langage naturel
Résumé de l'installation de l'analyseur de traitement du langage naturel
100 traitement du langage knock-74 (en utilisant scicit-learn): prédiction
Langage naturel: Word2Vec Part2 - Modèle de saut-gramme
100 traitement du langage knock-38 (en utilisant des pandas): histogramme
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»
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
Vous devenez ingénieur en 100 jours ――Jour 66 ――Programmation ――À propos du traitement du langage naturel
Apprenez les bases de la classification de documents par traitement du langage naturel, modèle de sujet
100 traitement du langage knock-97 (en utilisant scicit-learn): clustering k-means
Prédiction des survivants à l'aide du réseau neuronal titanesque de Kaggle [80,8%]
100 Language Processing Knock-33 (en utilisant des pandas): nom sahen
Traiter le nom de la carte Yugioh en langage naturel --Yugiou Data Science 2. PNL
Traitement asynchrone à l'aide de Linebot dans la file d'attente des travaux
100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)
100 Language Processing Knock-71 (en utilisant Stanford NLP): Stopword
3. Traitement du langage naturel par Python 1-1. Word N-gram
100 traitement du langage knock-35 (utilisant des pandas): concaténation de nomenclature
Natural Language: Machine Translation Part2 - Transformateur de traduction automatique neurale
Implémentation de réseaux neuronaux "flous" avec Chainer
Implémentation de réseau neuronal simple à l'aide de la préparation Chainer-Data-