Python параллельные word2ve c операции - PullRequest
0 голосов
/ 29 мая 2020

Я обучил модель 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% от общего использования. Что мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...