Я обучил модель Word2Ve c с помощью gensim. Я сохранил свою модель в файле с именем w2v.model.
Теперь я хочу измерить расстояния между документами корпуса, вычисляя среднее значение векторов word2ve c для каждого документа и косинусное сходство между «векторами документов».
Я sh выполняю эту работу параллельно, так как это требует очень много времени.
Мой код выглядит следующим образом:
def similarity(source, targets):
model = Word2Vec.load('w2v.model')
ds = DocSim(model)
sim_scores = ds.calculate_similarity(source, targets)
scores = [score['score'] for score in sim_scores]
return scores
num_cores = multiprocessing.cpu_count()
print("Availables CPUs:", num_cores)
targets = sentences_keywords
diss_matrix = Parallel(n_jobs=num_cores)(delayed(similarity)(source, targets, i) for i, source in enumerate(targets, 0))
Где DocSim берет все векторы слов для каждого документа в корпусе и вычисляет расстояние между исходным документом и всеми другими документами (матрица расстояний).
У меня есть машина с 16 ядрами, но я вижу 10% от общего использования. Что мне не хватает?