У меня есть термодокументная матрица (X) формы (6, 25931)
. Первые 5 документов являются моими исходными документами, а последний документ - моим целевым документом. Столбец представляет собой количество различных слов в словаре. Я хочу получить косинусное сходство последнего документа с каждым из других документов.
Но поскольку SVD производит S размера (min(6, 25931),)
, если бы я использовал S для уменьшения моего X, я получил бы матрицу 6 * 6. Но в этом случае я чувствую, что буду терять слишком много информации, поскольку уменьшаю вектор размера (25931,)
до (6,)
.
И если задуматься, обычно количество документов всегда меньше количества словарных слов. В этом случае использование SVD для уменьшения размерности всегда будет создавать векторы размером (no documents,)
.
Согласно всему, что я прочитал, когда SVD используется таким образом в матрице терминов-документов, это называется LSA.
- Правильно ли я реализую LSA?
- Если это верно, то есть ли другой способ уменьшить размерность и получить более плотные векторы, когда размер сжатого вектора больше
(6,)
?
P.S .: Я также пробовал использовать fit_transform
из sklearn.decomposition.TruncatedSVD
, который ожидает, что вектор будет иметь форму (n_samples, n_components)
, поэтому форма моей матрицы термодокумента равна (6, 25931)
, а не (25931, 6)
. Я все время получал (6, 6)
матрицу, которая меня сначала смущала. Но теперь это имеет смысл после того, как я вспомнил математику, лежащую в основе SVD.