Я рекомендую вам использовать модели .bin, но если он не существует и у вас есть только .vec или .txt, попробуйте распараллелить процесс, используя Joblib:
from joblib import Parallel, delayed
from tqdm import tqdm
if __name__ == '__main__':
embeddings_index = {}
f = open(os.path.join('D:/multi_lingual', 'wiki.en.align.vec'), 'r', encoding='utf-8')
def loading(line):
values = line.rstrip().rsplit(' ')
word = values[0]
coefs = np.asarray(values[1:], dtype='float32')
return word, coefs
embeddings_index = dict(Parallel(n_jobs=-1)(delayed(loading)(line) for line in tqdm(f)))
f.close()
print(len(embeddings_index))
, отслеживая прогресс tqdmБар, я заметил количество улучшений:
без распараллеливания: 10208.44it / s
с распараллеливанием: 23155.08it / s
Яиспользуя 4 ядра CPUz .. Результаты не совсем точны, потому что я использовал процессор для других вещей.Может быть, вы можете заметить лучшие улучшения.
Другой момент, я рекомендую вам после прочтения необходимых слов сохранить их, чтобы вы могли загрузить их в следующий раз вместо загрузки всего файла вложений каждый раз.