Dies ist die Aufzeichnung der 96. "Extrahieren von Vektoren in Bezug auf Ländernamen" von Language Processing 100 Knock 2015. Aus der Gensim-Version des in [Knock 90.] gespeicherten Wortvektors (https://qiita.com/FukuharaYohei/items/0ab5e4ccca7e1083db1f) wird nur der Ländername extrahiert. Es ist technisch einfach, aber der Teil, der sich auf den Ländernamen bezieht, ist etwas mühsam.
Verknüpfung | Bemerkungen |
---|---|
096.Extraktion von Vektoren in Bezug auf Ländernamen.ipynb | Antwortprogramm GitHub Link |
100 Klicks Amateur-Sprachverarbeitung:96 | Ich bin Ihnen immer mit 100 Sprachverarbeitungsklopfen zu Dank verpflichtet |
Art | Ausführung | Inhalt |
---|---|---|
OS | Ubuntu18.04.01 LTS | Es läuft virtuell |
pyenv | 1.2.15 | Ich benutze pyenv, weil ich manchmal mehrere Python-Umgebungen benutze |
Python | 3.6.9 | python3 auf pyenv.6.Ich benutze 9 3.7 oder 3.Es gibt keinen tiefen Grund, keine 8er-Serie zu verwenden Pakete werden mit venv verwaltet |
In der obigen Umgebung verwende ich die folgenden zusätzlichen Python-Pakete. Einfach mit normalem Pip installieren.
Art | Ausführung |
---|---|
gensim | 3.8.1 |
numpy | 1.17.4 |
pandas | 0.25.3 |
In Kapitel 10 werden wir weiter daran arbeiten, Wortvektoren aus dem vorherigen Kapitel zu lernen.
Extrahieren Sie nur den Vektor, der sich auf den Ländernamen bezieht, aus dem Lernergebnis von word2vec.
"Sprachverarbeitung 100 knock-81 (kollektiver Ersatz): Umgang mit Ländernamen, die aus zusammengesetzten Wörtern bestehen" Ich habe über die Verwendung der Ländernamensdatei nachgedacht Die Datei enthält jedoch keinen Ein-Wort-Ländernamen (z. B. "England"). [Schritt "4. Einzelnamen löschen"](https://qiita.com/FukuharaYohei/items/67be619ce9dd33392fcd#4-%E5%8D%98%E4%B8%80%E5%90%8D%E5%89 Dies liegt daran, dass ich es mit% 8A% E9% 99% A4) gelöscht habe. Wieder [Schritt "4. Einzelnamen löschen"](https://qiita.com/FukuharaYohei/items/67be619ce9dd33392fcd#4-%E5%8D%98%E4%B8%80%E5%90%8D%E5 Ich habe den in% 89% 8A% E9% 99% A4) gelöschten Ländernamen hinzugefügt und verwendet.
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')
Ich lese die Datei Zeile für Zeile, um den Ländernamenvektor zu erhalten und ihn der Liste hinzuzufügen. Das Leerzeichen wird durch einen Unterstrich in "100 Language Processing Knock-81 (Batch-Ersatz): Umgang mit Ländernamen, die aus zusammengesetzten Wörtern bestehen" ersetzt. Weil ich das Gleiche getan habe. Einige von ihnen sind nicht im Korpus enthalten, andere sind ausgeschlossen, da sie seltener auftreten. Daher verwenden wir "außer Schlüsselfehler", um den Fehler abzufangen.
for line in file_in:
country = line.rstrip().replace(' ', '_')
try:
vector.append(model.wv[country].tolist())
index.append(country)
except KeyError:
pass
Fügen Sie anschließend den Ländernamen als Index in DataFrame ein und geben Sie ihn als Datei aus. 238 Länder werden ausgegeben. Da sich die ursprüngliche Datei in 416 Ländern befand, existieren etwas weniger als 60% der Wortvektoren.
pd.DataFrame(vector, index=index).to_pickle('096.country_vector.zip')