[PYTHON] Traitement du langage 100 knock-86: affichage vectoriel Word

Il s'agit du record du 86ème "Word Vector Display" de Language Processing 100 Knock 2015. Cette fois, affichez simplement le mot vecteur compressé à 300 dimensions avec Last knock. C'est très simple car vous ne voyez que les résultats. Chapitre 9: Méthode de l'espace vectoriel (I) a été fortement frappé jusqu'à présent, mais après c'est basique Il n'y a pas beaucoup de traitement lourd car il n'utilise que le résultat.

Lien de référence

Lien Remarques
086.Affichage du vecteur de mot.ipynb Lien GitHub du programme de réponse
100 coups de traitement du langage amateur:86 Je vous suis toujours redevable de 100 coups de traitement linguistique

environnement

type version Contenu
OS Ubuntu18.04.01 LTS Il fonctionne virtuellement
pyenv 1.2.15 J'utilise pyenv car j'utilise parfois plusieurs environnements Python
Python 3.6.9 python3 sur pyenv.6.J'utilise 9
3.7 ou 3.Il n'y a aucune raison profonde de ne pas utiliser la série 8
Les packages sont gérés à l'aide de venv

Dans l'environnement ci-dessus, j'utilise les packages Python supplémentaires suivants. Installez simplement avec pip ordinaire.

type version
numpy 1.17.4
pandas 0.25.3

Tâche

Chapitre 9: Méthode de l'espace vectoriel (I)

enwiki-20150112-400-r10-105752.txt.bz2 Le texte de 105 752 articles est-il échantillonné au hasard au 1/10 des articles composés d'environ 400 mots ou plus parmi les articles de Wikipedia anglais au 12 janvier 2015, compressé au format bzip2. y a-t-il. En utilisant ce texte comme corpus, je souhaite apprendre un vecteur (expression distribuée) qui exprime le sens d'un mot. Dans la première moitié du chapitre 9, le processus d'apprentissage du vecteur de mot est mis en œuvre en le divisant en plusieurs processus en appliquant l'analyse en composantes principales à la matrice de cooccurrence de contexte de mot créée à partir du corpus. Dans la seconde moitié du chapitre 9, le vecteur de mots (300 dimensions) obtenu par apprentissage est utilisé pour calculer la similitude des mots et analyser (analogique).

Notez que si le problème 83 est implémenté de manière obéissante, une grande quantité (environ 7 Go) de stockage principal sera nécessaire. Si vous manquez de mémoire, concevez un processus ou un corpus d'échantillonnage 1/100 enwiki-20150112-400-r100-10576.txt.bz2 Utilisez /nlp100/data/enwiki-20150112-400-r100-10576.txt.bz2).

Cette fois * "Corpus d'échantillonnage 1/100 [enwiki-20150112-400-r100-10576.txt.bz2](http://www.cl.ecei.tohoku.ac.jp/nlp100/data/enwiki-20150112-" 400-r100-10576.txt.bz2) "* est utilisé.

86. Affichage des vecteurs de mots

Lisez le mot signifiant vecteur obtenu en> 85 et affichez le vecteur "États-Unis". Cependant, notez que "États-Unis" est appelé en interne "États-Unis".

Répondre

Programme de réponse [086. Afficher le mot vector.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/09.%E3%83%99%E3%82%AF%E3%83%88% E3% 83% AB% E7% A9% BA% E9% 96% 93% E6% B3% 95% 20 (I) / 086.% E5% 8D% 98% E8% AA% 9E% E3% 83% 99% E3% 82% AF% E3% 83% 88% E3% 83% AB% E3% 81% AE% E8% A1% A8% E7% A4% BA.ipynb)

import numpy as np
import pandas as pd

#Je n'ai spécifié aucun argument lors de l'enregistrement'arr_0'Stocké dans
matrix_x300 = np.load('085.matrix_x300.npz')['arr_0']

print('matrix_x300 Shape:', matrix_x300.shape)

group_t = pd.read_pickle('./083_group_t.zip')

# 'United States'Affichage de vecteur de mot
print(matrix_x300[group_t.index.get_loc('United_States')])

Répondre au commentaire

Chargez le fichier au format npz enregistré en frappant la dernière fois. Sauf indication contraire lors de la sauvegarde, il semble être stocké dans ʻarr_0`. La raison de l'utilisation de l'index est que le format npz peut stocker plusieurs tableaux à la fois.

#Je n'ai spécifié aucun argument lors de l'enregistrement'arr_0'Stocké dans
matrix_x300 = np.load('085.matrix_x300.npz')['arr_0']

Comme il n'y a pas d'informations sur les mots dans la séquence lue ci-dessus, ["Traitement du langage 100 knocks-83 (en utilisant des pandas): Mesure de la fréquence des mots / contextes"](https://qiita.com/FukuharaYohei/items/ 9696afb342aa367ae5d1) Lit les informations du mot cible (mot cible) enregistrées sous forme de dictionnaire.

group_t = pd.read_pickle('./083_group_t.zip')

Tout ce que vous avez à faire est d'afficher le vecteur.

# 'United States'Affichage de vecteur de mot
print(matrix_x300[group_t.index.get_loc('United_States')])

Puisqu'il s'agit d'une liste de nombres, cela n'a pas beaucoup de sens de l'écrire, mais les premiers éléments sont affichés comme ceci.

[ 3.54543797e+00 -7.83172862e-01  1.02182432e-01  6.22943904e+00
  2.48960832e+00 -1.19176940e+00 -2.23164453e+00  3.68785814e-01
Omis par la suite

Recommended Posts

Traitement du langage 100 knock-86: affichage vectoriel Word
100 Traitement du langage Knock 2020 Chapitre 7: Vecteur de mots
100 traitement du langage Knock-51: découpage de mots
Traitement du langage 100 Knock-87: similitude des mots
100 coups de traitement linguistique (2020): 28
[Traitement du langage 100 coups 2020] Chapitre 7: Vecteur Word
100 coups de traitement linguistique (2020): 38
100 traitement de la langue frapper 00 ~ 02
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
100 Language Processing Knock 2020 Chapitre 1
100 coups de traitement du langage amateur: 17
100 Traitement du langage Knock-52: Stemming
100 Traitement du langage Knock Chapitre 1
100 coups de langue amateur: 07
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 coups de traitement du langage amateur: 09
100 coups en traitement du langage amateur: 47
Traitement 100 langues knock-53: Tokenisation
100 coups de traitement du langage amateur: 97
100 traitements linguistiques Knock 2020 [00 ~ 59 réponse]
100 coups de traitement du langage amateur: 67
100 coups de traitement du langage avec Python 2015
100 Language Processing Knock-57: Analyse des dépendances
100 traitement linguistique knock-50: coupure de phrase
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
Traitement du langage naturel 3 Continuité des mots
100 Language Processing Knock-25: Extraction de modèles
J'ai essayé 100 traitements linguistiques Knock 2020
100 Language Processing Knock-56: analyse de co-référence
Résolution de 100 traitements linguistiques Knock 2020 (01. "Patatokukashi")
Traitement du langage naturel 2 similitude de mots
100 coups de traitement du langage amateur: Résumé
100 traitement du langage knock-36 (en utilisant des pandas): fréquence d'occurrence des mots
100 Language Processing Knock-83 (en utilisant des pandas): Mesure de la fréquence des mots / contextes
100 Language Processing Knock 2020 Chapitre 2: Commandes UNIX
100 Language Processing Knock 2015 Chapitre 5 Analyse des dépendances (40-49)
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
100 Language Processing Knock-84 (en utilisant des pandas): Création d'une matrice de contexte de mots
100 Language Processing Knock 2020 Chapitre 4: Analyse morphologique
100 traitement du langage knock-76 (en utilisant scicit-learn): étiquetage
100 traitements de langage avec Python (chapitre 3)
100 Language Processing Knock: Chapitre 1 Mouvement préparatoire
100 Traitement du langage Knock Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 10: Traduction automatique (90-98)
100 Language Processing Knock 2020 Chapitre 5: Analyse des dépendances
100 traitement de la langue knock-42: Affichage de la phrase de la personne concernée et de la personne concernée
100 Language Processing Knock-28: Suppression du balisage MediaWiki
100 Language Processing Knock 2020 Chapitre 8: Neural Net
100 traitement du langage knock-59: analyse de la formule S
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
100 traitement du langage knock-31 (en utilisant des pandas): verbe
100 langues de traitement frappent 2020 "pour Google Colaboratory"
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 1
100 Language Processing Knock 2020 Chapitre 1: Mouvement préparatoire
100 traitement du langage knock-73 (en utilisant scikit-learn): apprentissage
100 Language Processing Knock Chapitre 1 par Python