用gensim加载一部分手套向量

2024-05-29 02:52:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似['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,但我可以设置一个单词列表来加载。在


Tags: 文件方法true列表readlinedef单词向量
1条回答
网友
1楼 · 发布于 2024-05-29 02:52:56

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

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

相关问题 更多 >

    热门问题