首页 > 解决方案 > 在 python 中读取一个大型预训练的 fastext 词嵌入文件

问题描述

我正在做情绪分析,我想使用预训练的 fasttext 嵌入,但是文件非常大(6.7 GB)并且程序需要很长时间才能编译。

fasttext_dir = '/Fasttext'
embeddings_index = {}
f = open(os.path.join(fasttext_dir, 'wiki.en.vec'), 'r', encoding='utf-8')
for line in tqdm(f):
    values = line.rstrip().rsplit(' ')
    word = values[0]
    coefs = np.asarray(values[1:], dtype='float32')
    embeddings_index[word] = coefs
f.close()

print('found %s word vectors' % len(embeddings_index))

embedding_dim = 300

embedding_matrix = np.zeros((max_words, embedding_dim))
for word, i in word_index.items():
    if i < max_words:
        embedding_vector = embeddings_index.get(word)
        if embedding_vector is not None:
            embedding_matrix[i] = embedding_vector

有什么方法可以加快这个过程吗?

标签: pythonkerassentiment-analysisfasttext

解决方案


您可以改为使用 gensim 加载预训练的嵌入。至少对我来说这要快得多。首先,您需要 pip install gensim 然后您可以使用以下代码行加载模型:

from gensim.models import FastText

model = FastText.load_fasttext_format('cc.en.300.bin')

(我不确定您是否需要 .bin 文件,也许 .vec 文件也可以。)

要使用此模型嵌入单词,只需使用model[word].


推荐阅读