[PYTHON] 100 traitement de la langue knock-96 (en utilisant Gensim): Extraction du vecteur lié au nom du pays

Il s'agit de l'enregistrement de la 96e "Extraction de vecteurs liés aux noms de pays" de Language Processing 100 Knock 2015. Seul le nom du pays est extrait de la version Gensim du mot vecteur enregistré dans Knock 90th. C'est techniquement facile, mais la partie liée au nom du pays est un peu gênante.

Lien de référence

Lien Remarques
096.Extraction de vecteurs liés aux noms de pays.ipynb Lien GitHub du programme de réponse
100 coups de traitement du langage amateur:96 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
gensim 3.8.1
numpy 1.17.4
pandas 0.25.3

Tâche

Chapitre 10: Méthode de l'espace vectoriel (II)

Au chapitre 10, nous continuerons à travailler sur l'apprentissage des vecteurs de mots du chapitre précédent.

96. Extraction du vecteur pour le nom du pays

Extrayez uniquement le vecteur lié au nom du pays du résultat d'apprentissage de word2vec.

Supplément de problème (sur le nom du pays)

"Traitement linguistique 100 knock-81 (remplacement collectif): Traitement des noms de pays composés de mots composés" J'ai pensé à utiliser le fichier des noms de pays Cependant, le fichier n'a pas de nom de pays en un seul mot (tel que «Angleterre»). [Étape "4. Delete Single Name"](https://qiita.com/FukuharaYohei/items/67be619ce9dd33392fcd#4-%E5%8D%98%E4%B8%80%E5%90%8D%E5%89 C'est parce que je l'ai effacé avec% 8A% E9% 99% A4). Encore une fois, [Étape "4. Delete Single Name"](https://qiita.com/FukuharaYohei/items/67be619ce9dd33392fcd#4-%E5%8D%98%E4%B8%80%E5%90%8D%E5 J'ai ajouté le nom du pays supprimé dans% 89% 8A% E9% 99% A4) et l'ai utilisé.

Répondre

Programme de réponse [096. Extraction du vecteur lié au nom du pays.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/10.%E3%83%99%E3%82%AF%E3%83%88 % E3% 83% AB% E7% A9% BA% E9% 96% 93% E6% B3% 95% 20 (II) /096.%E5%9B%BD%E5%90%8D%E3%81%AB % E9% 96% A2% E3% 81% 99% E3% 82% 8B% E3% 83% 99% E3% 82% AF% E3% 83% 88% E3% 83% AB% E3% 81% AE% E6 % 8A% BD% E5% 87% BA.ipynb)

import numpy as np
import pandas as pd
from gensim.models import Word2Vec

model = Word2Vec.load('./090.word2vec.model')
print(model)

index = []
vector = []

with open('./096.countries.txt') as file_in:
    for line in file_in:
        country = line.rstrip().replace(' ', '_')
        try:
            vector.append(model.wv[country].tolist())
            index.append(country)
        except KeyError:
            pass

pd.DataFrame(vector, index=index).to_pickle('096.country_vector.zip')

Répondre au commentaire

J'ai lu le fichier ligne par ligne pour obtenir le vecteur de nom de pays et l'ajouter à la liste. L'espace est remplacé par un trait de soulignement dans "100 Language Processing Knock-81 (Batch Replacement): Traiter les noms de pays composés de mots composés" Parce que j'ai fait la même chose. Certains d'entre eux ne sont pas inclus dans le corpus et certains sont exclus car ils apparaissent moins fréquemment, donc nous utilisons ʻexcept Key Error` pour attraper l'erreur.

for line in file_in:
    country = line.rstrip().replace(' ', '_')
    try:
        vector.append(model.wv[country].tolist())
        index.append(country)
    except KeyError:
        pass

Après cela, placez le nom du pays comme index dans DataFrame et exportez-le sous forme de fichier. 238 pays sont produits. Le fichier original se trouvant dans 416 pays, un peu moins de 60% des vecteurs de mots existent.

pd.DataFrame(vector, index=index).to_pickle('096.country_vector.zip')

Recommended Posts

100 traitement de la langue knock-96 (en utilisant Gensim): Extraction du vecteur lié au nom du pays
100 traitement du langage knock-90 (en utilisant Gensim): apprendre avec word2vec
100 Language Processing Knock-32 (utilisant des pandas): Prototype de verbe
Traitement du langage 100 knocks-45: Extraction de modèles de cas verbaux
100 traitement du langage knock-75 (en utilisant scicit-learn): poids de l'identité
100 traitement du langage knock-72 (en utilisant Stanford NLP): Extraction d'identité
100 langage traitement knock-92 (utilisant Gensim): application aux données d'analogie
100 Language Processing Knock-58: Extraction de Taple
100 traitement du langage knock-36 (en utilisant des pandas): fréquence d'occurrence des mots
100 Language Processing Knock-25: Extraction de modèles
Traitement du langage 100 knocks-49: Extraction de chemins de dépendances entre nomenclature
100 traitement de langage knock-94 (en utilisant Gensim): calcul de similarité avec WordSimilarity-353
100 traitements linguistiques knock-77 (en utilisant scicit-learn): mesure du taux de réponse
100 traitement du langage knock-76 (en utilisant scicit-learn): étiquetage
100 Language Processing Knock-55: extraction d'expressions uniques
100 Language Processing Knock-82 (mot de contexte): Extraction de contexte
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-59: analyse de la formule S
100 traitement du langage knock-31 (en utilisant des pandas): verbe
100 langues de traitement frappent 2020 "pour Google Colaboratory"
100 traitement du langage knock-73 (en utilisant scikit-learn): apprentissage
100 traitement du langage knock-74 (en utilisant scicit-learn): prédiction
100 traitement du langage knock-38 (en utilisant des pandas): histogramme
100 traitement du langage knock-97 (en utilisant scicit-learn): clustering k-means
100 Language Processing Knock-33 (en utilisant des pandas): nom sahen
100 traitement du langage knock-91: Préparation des données d'analogie
Traitement du langage 100 knocks-44: Visualisation des arbres dépendants
100 traitement de langue knock-22: Extraction du nom de la catégorie
100 Language Processing Knock-26: suppression du balisage accentué
100 Language Processing Knock-71 (en utilisant Stanford NLP): Stopword
100 traitement du langage knock-35 (utilisant des pandas): concaténation de nomenclature
100 Language Processing Knock-39 (en utilisant des pandas): la loi de Zipf
100 traitement de langage knock-34 (utilisant des pandas): "B of A"
100 traitement du langage knock-93 (en utilisant des pandas): calcul du taux de précision de la tâche d'analogie
100 coups de traitement linguistique (2020): 38
100 traitement de la langue frapper 00 ~ 02
100 langage de traitement knock-79 (en utilisant scikit-learn): dessin de graphe avec rappel de précision
100 langage de traitement knock-20 (à l'aide de pandas): lecture de données JSON
Traitement de 100 langues knock-98 (en utilisant des pandas): Clustering par méthode Ward
100 traitement du langage knock-99 (à l'aide de pandas): visualisation par t-SNE
100 traitement du langage knock-95 (en utilisant des pandas): Note avec WordSimilarity-353
100 langage de traitement knock-81 (remplacement de lot): traitement des noms de pays composés de mots composés
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 traitements linguistiques Knock 2020 [00 ~ 49 réponse]
100 Traitement du langage Knock-52: Stemming
100 Traitement du langage Knock Chapitre 1
Traitement du langage 100 knocks-46: Extraction des informations de trame de cas de verbe
100 coups de langue amateur: 07
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock: Chapitre 2 Principes de base des commandes UNIX (à l'aide de pandas)
100 Language Processing Knock 2020 Chapitre 2
100 Language Processing Knock-83 (en utilisant des pandas): Mesure de la fréquence des mots / contextes
100 Language Processing Knock-30 (en utilisant des pandas): lecture des résultats de l'analyse morphologique
100 coups de traitement du langage amateur: 09
100 coups en traitement du langage amateur: 47
Traitement 100 langues knock-53: Tokenisation