Получение матрицы расстояний и матрицы характеристик из модели word2vec
Я сгенерировал модель word2vec, используя gensim для огромного корпуса, и мне нужно сгруппировать словари, используя k означает кластеризацию для того, что мне нужно:
- матрица косинусного расстояния (слово в слово, поэтому размер матрицы число_фо_слов х число_фо_слов)
- матрица функций (от слова к объектам, поэтому размер матрицы равен number_of_words x number_of_features(200))
для матрицы функций я попытался использовать x=model.wv, и я получил тип объекта как gensim.models.keyedvectors.KeyedVectors, и он намного меньше, чем я ожидал, что матрица объектов будет
Есть ли способ использовать этот объект непосредственно для создания кластеризации k-средних?
1 ответ
В модели Word2Vec от gensim number_of-words x number_of_features
Массив векторов слов находится в model.wv.syn0
, (Вы можете использовать model.wv.vocab
диктовать, чтобы узнать назначение строки-токена-массива-слота, или model.wv.index2word
список, чтобы узнать назначение слотов массива к слову.)
Парные расстояния предварительно не рассчитаны, поэтому вам придется создать их самостоятельно. И с типичными размерами словаря, это может быть непрактично большим. (Например, при использовании словаря из 100000 слов сохранение всех парных расстояний наиболее эффективным способом потребует примерно 100,000^2 * 4 bytes/float / 2 = 20GB
адресного пространства.