我有一个类似['like','Python']
的单词列表,我想加载这些单词的预先训练的手套词向量,但是手套文件太大了,有什么快速的方法吗?在
我尝试了什么
我遍历了文件的每一行,查看单词是否在列表中,如果为True,则将其添加到dict中。但是这个方法有点慢。在
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
我也尝试了下面,但它加载了整个文件,而不是我需要的向量
^{pr2}$我想要什么
方法类似于gensim.models.keyedvectors.KeyedVectors.load_word2vec_format
,但我可以设置一个单词列表来加载。在
现有的
gensim
不支持过滤通过load_word2vec_format()
加载的单词。最接近的是一个可选的limit
参数,可用于限制读取的单词向量的数量(忽略所有后续向量)。在您可以使用
load_word2vec_format()
的源代码作为模型,创建自己的例程来执行这种过滤。实际上,您可能需要读取文件两次:首先,要确定文件中有多少单词与您感兴趣的单词集相交(这样您就可以在不信任文件前面声明的大小的情况下分配大小合适的数组),然后第二次实际读取感兴趣的单词。在相关问题 更多 >
编程相关推荐