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 | 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 |
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 |
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é.
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".
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')])
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