[PYTHON] Résumer Doc2Vec

introduction

Cette fois, j'ai étudié ** Doc2Vec ** en tant que développement de Word2Vec. Il existe une «classification de documents» et un «regroupement de documents (clustering)» qui sont souvent nécessaires dans le traitement du langage naturel, mais pour les exécuter, une représentation distribuée du document lui-même est nécessaire. Vous pouvez obtenir la représentation distribuée directement en utilisant Doc2Vec.

référence

Pour comprendre Doc2Vec, j'ai évoqué ce qui suit.

Doc2Vec

Qu'est-ce que Doc2Vec

Doc2Vec est une technologie qui convertit des phrases de longueur arbitraire en vecteurs de longueur fixe. Alors que Word2Vec a acquis la représentation distribuée des mots, Doc2Vec a acquis la représentation distribuée des phrases et des documents. Il existe des méthodes classiques telles que Bag-of-Words et TF-IDF comme méthodes d'acquisition d'expressions distribuées de phrases, mais elles présentent les faiblesses suivantes.

Ce sont des méthodes appelées basées sur le nombre, mais Doc2Vec essaie d'acquérir des expressions distribuées de phrases par une approche différente pour surmonter les faiblesses ci-dessus.

Algorithme Doc2Vec

Doc2Vec est un terme général pour les deux algorithmes suivants.

Ce qui suit est une brève description de chaque algorithme.

PV-DM PV-DM est un algorithme qui prend en charge CBOW de Word2Vec. Vous obtiendrez une expression distribuée de la phrase tout en résolvant la tâche de passer l'identifiant de la phrase et de plusieurs mots et de prédire le mot suivant. Pour autant que je sache, il semble que l'apprentissage se fasse par la procédure suivante.

  1. Préparez un vecteur de phrase et un vecteur de mot extraits du document.
  2. Combinez les vecteurs préparés en 1 dans la couche intermédiaire (moyenne ou concaténation, sélectionnable en gensim)
  3. Prédire le mot suivant après le mot échantillonné
  4. Mettre à jour le vecteur de texte et la couche intermédiaire → poids de la couche de sortie

L'image est présentée ci-dessous. (Extrait du document original décrit dans "Référence")

スクリーンショット 2020-02-12 20.41.34.png

PV-DBOW PV-DBOW est un algorithme qui correspond au skip-gramme de Word2Vec. PV-DBOW peut être appris plus rapidement que PV-DM car il ne nécessite pas l'utilisation de vecteurs de mots pour l'apprentissage. Cependant, on dit que PV-DBOW est plus précis car il ignore l'ordre des mots pendant l'apprentissage.

Pour autant que je sache, il semble que l'apprentissage se fasse par la procédure suivante.

  1. Échantillonnez n'importe quel nombre de mots d'une même phrase
  2. Optimiser le vecteur de phrase et la couche intermédiaire → poids de la couche de sortie pour prédire les mots échantillonnés

L'image est présentée ci-dessous. (Extrait du document original décrit dans "Référence")

スクリーンショット 2020-02-13 21.16.01.png


J'ai brièvement résumé les deux algorithmes ci-dessus, mais il y avait certains détails que je ne pouvais pas comprendre. Si quelqu'un sait, faites-le moi savoir dans les commentaires. .. ..

** Je n'ai pas compris même après avoir vérifié **

―― Quel type de format le vecteur de document est-il donné en premier, y a-t-il un problème à reconnaître que seul l'identifiant de la phrase est passé? ―― D'où vient la représentation distribuée (vecteur de paragraphe) de la phrase qui peut être finalement obtenue à la suite de cet apprentissage? (Dans Word2Vec, le vecteur de poids qui convertit de l'entrée à la couche intermédiaire est la représentation distribuée du mot)

Création d'un modèle Doc2vec à l'aide de la bibliothèque

Dans ce qui suit, nous allons créer un modèle de Doc2Vec en utilisant la bibliothèque.

Bibliothèque utilisée

gensim 3.8.1

base de données

Vous pouvez facilement créer un modèle de Doc2Vec à l'aide de gensim, qui est une bibliothèque python. Cette fois, nous utiliserons le "corpus d'actualités de livingoor" pour l'ensemble de données. Pour plus de détails sur l'ensemble de données et la méthode d'analyse morphologique, veuillez consulter Publié dans l'article précédemment publié. Je vais.

Dans le cas du japonais, un prétraitement qui décompose les phrases en éléments morphologiques est nécessaire à l'avance, donc après avoir décomposé toutes les phrases en éléments morphologiques, elles sont déposées dans la trame de données suivante.

スクリーンショット 2020-01-13 21.07.38.png

La colonne la plus à droite est l'analyse morphologique de toutes les phrases et séparées par des espaces de demi-largeur. Utilisez ceci pour créer un modèle Doc2Vec.

Apprentissage de modèle

Créez un modèle Word2vec à l'aide de gensim. Voici les principaux paramètres de création d'un modèle.

Le nom du paramètre Signification des paramètres
dm PV si 1=PV si DM est 0-Apprenez avec DBOW
vector_size Spécifiez le nombre de dimensions de la représentation distribuée vers lesquelles le texte doit être converti
window Combien de mots utiliser pour prédire le mot suivant(PV-Pour DM)Ou combien de mots prédire à partir de l'identifiant du document(PV-Pour DBOW)
min_count Ignorer les mots qui apparaissent moins que le nombre spécifié
wokers Nombre de threads utilisés pour l'apprentissage

Vous trouverez ci-dessous le code pour créer un modèle Doc2Vec. Tant que vous pouvez créer le texte à saisir, vous pouvez créer un modèle sur une seule ligne.


sentences = []
for text in df[3]:
    text_list = text.split(' ')
    sentences.append(text_list)

from gensim.models.doc2vec import Doc2Vec, TaggedDocument
documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(sentences)]
model = Doc2Vec(documents, vector_size=2, window=5, min_count=1, workers=4)

Ce que vous pouvez faire avec Doc2Vec

J'ai pu acquérir une expression distribuée de phrases par le modèle de Doc2Vec. Vous pouvez exprimer quantitativement la distance sémantique entre les phrases en utilisant l'expression distribuée des phrases.

Découvrons quels types d'articles sont similaires aux articles de presse suivants dans le modèle créé précédemment.

'19e (samedi / heure du Japon) Le match Coupe du monde Afrique du Sud / Japon x Hollande est un bon combat pour l'équipe nationale japonaise
En seconde période, lorsque Sneijder a donné l'avantage avec un but, il n'a pas pu faire demi-tour et était à 0.-Perdu par 1.
Après le match, Hidetoshi Nakata, un ancien représentant du Japon qui était en charge des commentaires sur l'émission TV Asahi,
"Eh bien, 0-Même si j'ai perdu en 1, l'équipe a été un bien meilleur combat que lors du premier match, et surtout en seconde période, le Japon faisait aussi une bonne attaque, et je pense que c'était le match suivant. Je pense », dit-il.
De plus, "(bien qu'il y ait des cas où nous perdons des points avec slurping), nous connecterons nos attaques après les avoir correctement protégées.
Surtout à la fin, le directeur Okada utilise également le joueur attaquant dès le début, et cette attitude mènera au prochain match.
Ce n'est pas normal de perdre ce match et c'est formidable de voir l'attitude de gagner. "'

Vous pouvez sortir un document similaire au document spécifié ci-dessous.


#Passez l'identifiant du document et sortez le document à proximité(Dans ce cas, 5792 est l'identifiant de l'article ci-dessus)
model.docvecs.most_similar(5792)

Cliquez ici pour la sortie. Renvoie un ensemble d'identifiants de document et leur similitude cosinus.

[(6084, 0.8220762014389038),
 (5838, 0.8150338530540466),
 (6910, 0.8055128455162048),
 (351, 0.8003012537956238),
 (6223, 0.7960485816001892),
 (5826, 0.7933120131492615),
 (6246, 0.7902486324310303),
 (6332, 0.7871333360671997),
 (6447, 0.7836691737174988),
 (6067, 0.7836177349090576)]

Jetons un coup d'œil au contenu des articles à forte similitude.

##Contenu de l'article du 6084

'Soccer U veut participer aux Jeux olympiques de Londres-22 représentant du Japon.
Le deuxième tour de qualification est un match aller-retour contre un pays du Koweït.
C'est U qui attire l'attention-Kensuke Nagai (Nagoya Grand Pass), un as japonais qui compte 8 buts en 11 matchs dans 22 équipes nationales.
18e émission de minuit, TBS "S-1 "correspond à 50 m 5.Nous avons approché le FW rapide attendu qui s'est déroulé en 8 secondes.
Nagai a dit: "Yoi Don ne perdra pas." "Je ne sais pas par moi-même, mais cela semble être rapide.
«C'était à peu près ma deuxième année au lycée (je suis devenu plus rapide)», a-t-il dit, mais en tant que «légende de la vitesse de Nagai», un ami qui connaissait ses années de lycée a dit: «Rattrape avec une voiture, environ 40 kilomètres. ..
"Dirigez ce gars", a déclaré Koichi Sugiyama, un professeur de lycée à l'Université internationale de Kyushu. "Puisque l'enfant de l'autre côté était hors-jeu à la passe que je me suis donnée, je me suis juste pourchassé et je suis devenu un dribble. C'était souvent le cas. "
De plus, en parlant de joueurs de football au rythme rapide, Masayuki Okano "sauvage" est trop célèbre, mais Nagai, qui a été interrogé sur Okano, a ri amèrement, "Ce n'est pas si rapide."
Nagai, qui était petit et pas rapide quand il est entré au lycée, a déclaré: "Je tombais souvent et revenais." "C'était opportun, sa croissance était bonne pour la croissance physique et l'entraînement. C'est peut-être le cas », dit Sugiyama, qui se souvient que sa capacité s'est épanouie grâce à l'entraînement en enfer en utilisant la spécialité, les pentes et les escaliers du lycée.'
##Contenu de l'article de 5838

'Dans le programme sportif de TBS "S1" diffusé à minuit le 29, le commentaire invité Ramos Rui a révélé sa colère face à la situation actuelle où le directeur de l'équipe nationale japonaise n'a pas été décidé.
Les seuls pays qui n'ont pas choisi d'entraîneur représentatif en Coupe du monde sont le Japon et la Corée du Nord. "Non, c'est trop pathétique. Surtout, la motivation des joueurs sélectionnés est abaissée.
En regardant les membres cette fois, Ramos commence à parler avec une expression manifestement étouffée, "Pourquoi Inamoto et Tamada ne sont-ils pas sélectionnés?"
Lorsqu'on lui a demandé: "M. Ramos, dois-je le faire?", Il a répondu: "Non, je veux le faire. C'est certainement vrai." Il a également répondu: "Je ne peux pas être choisi. Je suis actif. À ce moment-là. Il est trop tard. Je suis vraiment désolé. Je suis seul. "'

Vous pouvez voir que les deux premiers sont tous deux des sujets de football. Le corpus que j'ai appris se composait d'articles de neuf sites d'information, mais huit des dix principales similitudes étaient des articles de sites d'information sportive.

Si les phrases peuvent être converties en représentations vectorielles de longueur fixe de cette manière, elles peuvent être appliquées à divers algorithmes d'apprentissage automatique tels que le clustering et la classification. Dans le monde du traitement du langage naturel, il est très important d'obtenir des expressions vectorielles hautement expressives, et divers algorithmes tels que Doc2Vec introduit cette fois-ci ont été développés.

Next Je vais essayer diverses tâches de traitement du langage naturel en utilisant ce modèle Doc2Vec.

Recommended Posts

Résumer Doc2Vec
Résumons Apache
Synthétiser l'importation Python