получение матрицы расстояний и матрицы признаков из модели word2vec

Я создал модель word2vec, используя gensim для огромного корпуса, и мне нужно сгруппировать словари, используя кластеризацию k означает, что мне нужно:

  1. Матрица косинусного расстояния (от слова к слову, поэтому размер матрицы равен number_of_words x number_of_words)
  2. матрица признаков (от слов к признакам, поэтому размер матрицы равен number_of_words x number_of_features(200))

для матрицы признаков я попытался использовать x=model.wv, и я получил тип объекта как gensim.models.keyedvectors.KeyedVectors, и он намного меньше, чем я ожидал, что матрица признаков будет

есть ли способ использовать этот объект напрямую для создания кластеризации k-средних?


person BuzzyBee    schedule 24.07.2017    source источник
comment
Не могли бы вы добавить код и ожидаемый/фактический результат?   -  person iehrlich    schedule 24.07.2017


Ответы (1)


В модели gensim Word2Vec необработанный массив number_of-words x number_of_features numpy векторов слов находится в model.wv.syn0. (Вы можете использовать словарь model.wv.vocab для изучения назначения строкового маркера слоту массива или список model.wv.index2word для изучения назначения слота массива слову.)

Попарные расстояния не рассчитываются заранее, поэтому вам придется создавать их самостоятельно. А при типичных размерах словарного запаса он может быть непрактично большим. (Например, со словарем в 100 000 слов для хранения всех попарных расстояний наиболее эффективным способом потребуется примерно 100,000^2 * 4 bytes/float / 2 = 20GB адресного пространства.

person gojomo    schedule 24.07.2017