使用 gensim 加载部分 Glove 向量
Load a part of Glove vectors with gensim
我有一个词表['like','Python']
,我想加载这些词的预训练Glove词向量,但是Glove文件太大,有什么快速的方法吗?
我试过的
我遍历文件的每一行以查看单词是否在列表中,如果为真,则将其添加到字典中。但是这个方法有点慢。
def readWordEmbeddingVector(Wrd):
f = open('glove.twitter.27B/glove.twitter.27B.200d.txt','r')
words = []
a = f.readline()
while a!= '':
vector = a.split()
if vector[0] in Wrd:
words.append(vector)
Wrd.remove(vector[0])
a = f.readline()
f.close()
words_vector = pd.DataFrame(words).set_index(0).astype('float')
return words_vector
我也在下面尝试过,但它加载了整个文件而不是我需要的向量
gensim.models.keyedvectors.KeyedVectors.load_word2vec_format('word2vec.twitter.27B.200d.txt')
我想要什么
方法类似于gensim.models.keyedvectors.KeyedVectors.load_word2vec_format
,但我可以设置要加载的单词列表。
目前 gensim
不支持过滤通过 load_word2vec_format()
加载的单词。最接近的是一个可选的 limit
参数,可用于限制读取的词向量数量(忽略所有后续向量)。
您可以想象创建自己的例程来执行此类过滤,使用 load_word2vec_format()
的源代码作为模型。实际上,您可能需要两次读取文件:第 1 次,找出文件中有多少单词与您感兴趣的单词集相交(这样您就可以分配大小合适的数组而无需信任文件前面声明的大小),然后第二次实际读取感兴趣的单词。
我有一个词表['like','Python']
,我想加载这些词的预训练Glove词向量,但是Glove文件太大,有什么快速的方法吗?
我试过的
我遍历文件的每一行以查看单词是否在列表中,如果为真,则将其添加到字典中。但是这个方法有点慢。
def readWordEmbeddingVector(Wrd):
f = open('glove.twitter.27B/glove.twitter.27B.200d.txt','r')
words = []
a = f.readline()
while a!= '':
vector = a.split()
if vector[0] in Wrd:
words.append(vector)
Wrd.remove(vector[0])
a = f.readline()
f.close()
words_vector = pd.DataFrame(words).set_index(0).astype('float')
return words_vector
我也在下面尝试过,但它加载了整个文件而不是我需要的向量
gensim.models.keyedvectors.KeyedVectors.load_word2vec_format('word2vec.twitter.27B.200d.txt')
我想要什么
方法类似于gensim.models.keyedvectors.KeyedVectors.load_word2vec_format
,但我可以设置要加载的单词列表。
目前 gensim
不支持过滤通过 load_word2vec_format()
加载的单词。最接近的是一个可选的 limit
参数,可用于限制读取的词向量数量(忽略所有后续向量)。
您可以想象创建自己的例程来执行此类过滤,使用 load_word2vec_format()
的源代码作为模型。实际上,您可能需要两次读取文件:第 1 次,找出文件中有多少单词与您感兴趣的单词集相交(这样您就可以分配大小合适的数组而无需信任文件前面声明的大小),然后第二次实际读取感兴趣的单词。