0

我有一个单词列表['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但我可以设置要加载的单词列表。

4

1 回答 1

0

不存在gensim对过滤通过加载的单词的支持load_word2vec_format()。最接近的是一个可选limit参数,可用于限制读取多少个词向量(忽略所有后续向量)。

load_word2vec_format()您可以使用源代码作为模型创建自己的例程来执行此类过滤。实际上,您可能需要阅读文件两次:第一次,找出文件中有多少单词与您感兴趣的单词集相交(这样您就可以在不信任的情况下分配正确大小的数组文件前面声明的大小),然后第二次实际读取感兴趣的单词。

于 2019-04-21T01:31:11.820 回答