ref:Basics of Using Pre-trained GloVe Vectors in Python.
1. 下载
从 glove官网 获取下载地址
# 下载glove文件
import urllib
import requests
urllib.request.urlretrieve('https://nlp.stanford.edu/data/wordvecs/glove.840B.300d.zip', "glove.840B.300d.zip")
2. 解压 glove文件
压缩解压zip可参考: Python压缩解压zip文件
# 解压 glove文件
import os
import shutil
import zipfile
from os.path import join, getsize
def unzip_file(zip_src, dst_dir):
r = zipfile.is_zipfile(zip_src)
if r:
fz = zipfile.ZipFile(zip_src, 'r')
for file in fz.namelist():
fz.extract(file, dst_dir)
else:
print('This is not zip')
unzip_file('./glove.840B.300d.zip','./glove.840B.300d')
解压后
glove.twitter.27B.zip 解压后有4个文件,其中的embed维度不一样。分别为25,50,100,200 维
注:gensim.downloader 中有很多数据和词向量资源:
import gensim.downloader as api
api.info()
3. 提取词表和词向量 并保存
这个过程逐行读取,有点久
# 提取word-embedding matrix
import numpy as np
import scipy
import sklearn
import pickle
dir_glove = './glove.840B.300d//glove.840B.300d.txt'
words = ['PAD']
embeds = np