[PYTHON] Langage naturel: Doc2Vec Part2 - Classification des documents

Cible

Il s'agit d'une continuation de la classification des documents à l'aide du Microsoft Cognitive Toolkit (CNTK).

Dans la partie 2, les données de document préparées dans la partie 1 seront utilisées pour classer les documents par CNTK. On suppose que CNTK et NVIDIA GPU CUDA sont installés.

introduction

Natural Language: Doc2Vec Part1 --livedoor NEWS Corpus a préparé des données de formation et des données de vérification.

Dans la partie 2, nous allons créer un modèle Doc2Vec et classer les phrases.

Doc2Vec Doc2Vec [1] [2] [3] est une extension de Word2Vec. Le Doc2Vec mis en œuvre cette fois est un modèle simple qui fait la moyenne de la sortie de la couche incorporée de tous les mots contenus dans un document et classe à quelle catégorie le document appartient.

doc2vec.png

Paramètres en formation

La valeur initiale de chaque paramètre utilise le réglage par défaut de CNTK. Dans la plupart des cas, il a une distribution uniforme de Glorot [4].

Word2Vec a adopté Sampled Softmax [5] pour accélérer la couche de sortie pour prédire les mots, mais ce document Puisque la classification est de 9 catégories, j'ai utilisé la fonction Softmax normale et l'erreur d'entropie croisée.

Adam [6] a été utilisé comme algorithme d'optimisation. Le taux d'apprentissage d'Adam est de 0,01, l'hyperparamètre $ β_1 $ est de 0,9 et $ β_2 $ est la valeur par défaut pour CNTK.

La formation de modèle a couru 10 Epoch par formation mini-batch.

la mise en oeuvre

Environnement d'exécution

Matériel

・ Processeur Intel (R) Core (TM) i7-6700K 4,00 GHz ・ GPU NVIDIA GeForce GTX 1060 6 Go

Logiciel

・ Windows 10 Professionnel 1909 ・ CUDA 10.0 ・ CuDNN 7.6 ・ Python 3.6.6 ・ Cntk-gpu 2.7 ・ Pandas 0.25.0

Programme à exécuter

Le programme de formation est disponible sur GitHub.

doc2vec_training.py


résultat

Training loss and error

La figure ci-dessous est une visualisation de la fonction de perte et des journaux de taux de fausse reconnaissance pendant l'entraînement. Le graphique de gauche montre la fonction de perte, le graphique de droite montre le taux de fausse reconnaissance, l'axe horizontal montre le nombre d'époques et l'axe vertical montre la valeur et le taux de fausse reconnaissance de la fonction de perte, respectivement.

doc2vec_logging.png

Validation accuracy and confusion matrix

Lorsque la performance a été évaluée à l'aide des données de vérification séparées lors de la préparation des données de la partie 1, les résultats suivants ont été obtenus.

Accuracy 90.00%

La figure ci-dessous est une visualisation de la matrice mixte des données de vérification. La direction de la colonne représente la prédiction et la direction de la ligne représente la réponse correcte.

doc2vec_matrix.png

Mot présenté en raison de la rétropropagation du dégradé

J'ai essayé de savoir quels mots d'une phrase sont importants lors de la classification de documents en utilisant la rétropropagation des dégradés.

dojujo-tsushin


1 femme célibataire
2 filles adultes
3 Saori Abe
4 femme
5 Ne te marie pas
6 ans
7 moi
8 mariés
9 valeurs
10 exemplaires

Les mots sur les femmes sont soulignés dans les articles de la newsletter allemande.

it-life-hack


1 smartphone
2 services
3 services
4 applis
5 google
6 google
7 google
8 google
9 google
10 google

Les mots sur l'informatique sont soulignés dans l'article IT Life Hack.

sports-watch


1 formation
2 nombre de places
3 clubs
4 clubs
5 maison
6 Haut
7 Vision
8 Yoshida
9 Yoshida
Dix Yoshida

L'article de Sports Watch met l'accent sur les mots sur le sport.

référence

Natural Language : Doc2Vec Part1 - livedoor NEWS Corpus Natural Language : Word2Vec Part2 - Skip-gram model

  1. Quoc Le and Tomas Mikolov. "Distributed Representations of Sentences and Documents", International Conference on Machine Learning. 2014, pp 1188-1196.
  2. Andrew M. Dai, Christopher Olah, and Quoc V. Le. "Document Embedding with Paragraph Vectors", arXiv preprint arXiv:1507.07998 (2015).
  3. Jey Han Lau and Timothy Baldwin. "An Empirical Evaluation of doc2vec with Practical Insights into Document Embedding Generation", arXiv preprint arXiv:1607.05368 (2016).
  4. Xaiver Glorot and Yoshua Bengio. "Understanding the difficulty of training deep feedforward neural networks", Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics. 2010, pp 249-256.
  5. Sebastien Jean, Kyunghyun Cho, Roland Memisevic, and Yoshua Bengio. "On Using Very Large Target Vocabulary for Neural Machine Translation", arXiv preprint arXiv:1412.2007 (2014).
  6. Diederik P. Kingma and Jimmy Lei Ba. "Adam: A method for stochastic optimization", arXiv preprint arXiv:1412.6980 (2014).

Recommended Posts

Langage naturel: Doc2Vec Part2 - Classification des documents
Langage naturel: Doc2Vec Part1 --livedoor NEWS Corpus
Langage naturel: Word2Vec Part3 - Modèle CBOW
Langage naturel: Word2Vec Part2 - Modèle de saut-gramme
Natural Language: Machine Translation Part2 - Transformateur de traduction automatique neurale
Langage naturel: BERT Part2 - Préentraînement non supervisé ALBERT
Apprenez les bases de la classification de documents par traitement du langage naturel, modèle de sujet
Natural Language: Machine Translation Part1 - Corpus de sous-titres japonais-anglais
Python: traitement du langage naturel
RNN_LSTM2 Traitement du langage naturel
[Pratique] Créez une application Watson avec Python! # 3 [Classification du langage naturel]
Classification des documents avec une phrase
Traitement du langage naturel 1 Analyse morphologique
Python: représentation vectorielle en langage naturel
Traitement du langage naturel 2 similitude de mots