@nasdi

Не понимаю как связать word2vec с Алгоритмом минимального покрывающего дерева (MST)?

Собрал датасет из 1.3 млн документов. Прогнал через алгоритм word2vec. При помощи MST хочу получить кластеры тем этих документов.
import pandas as pd
import gensim.models.word2vec as w2v
import networkx as nx
import matplotlib.pyplot as plt

df = pd.read_excel('history_of_groups_by_user.xlsx', header=None, encoding='windows-1251')
df = df.dropna(subset=[0])
df = pd.DataFrame([item for item in df[0].values if not isinstance(item, int)])

text = []
for i in df[0]:
    text.append(i.lower().split())

model = w2v.Word2Vec(
    sentences=text,
    seed=42,
    size=50,
    min_count=5,
    window=4,
    sample=1e-3)
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
DanilBaibak
@DanilBaibak
Machine Learning engineer
Если в общем - Word2Vec перевидет каждое слово в вектор, в Вашем случае, размерности 50. Дальше, Вам надо построить вектор всего документа, например, взяв среднее всех слов (векторов).

Псевдокод:
embedding_matrix = []

def build_matrix(text):
    for token in text:
         embedding_matrix.append(model.wv[token] )

    return np.mean(embedding_matrix, axis=0)

df['vector'] = df['text'].apply(lambda t: build_matrix(t))


В итоге, у Вас каждый документ представлен вектором размерностью 50, который можно подать на вход любому алгоритму.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы