Сходство документов с использованием LSA в R

#r #lsa

#r #lsa

Вопрос:

Я работаю над LSA (используя R) для анализа сходства документов. Вот мои шаги

  1. Импортировал текстовые данные и создал корпус. Выполняли ли операции с базовым корпусом, такие как извлечение, удаление пробелов и т. Д
  2. Создано пространство LSA, как показано ниже

    tdm <- TermDocumentMatrix(chat_corpus)
    tdm_matrix <- as.matrix(tdm)
    tdm.lsa <- lw_bintf(tdm_matrix)*gw_idf(tdm_matrix)
    lsaSpace <- lsa(tdm.lsa)

  3. Многомерное моделирование (MDS) на LSA

 dist.mat.lsa <- dist(t(as.textmatrix(lsaSpace)))
fit <- cmdscale(dist.mat.lsa,eig = T)
points <- data.frame(fit1$points,row.names=chat$text)
 

Я хочу создать матрицу / фрейм данных, показывающий, насколько похожи тексты (как показано в результате вложения). Строками и столбцами будут совпадающие тексты, а значениями ячеек будут их значения сходства. В идеале значения диагонали будут равны единице 1 (идеальное совпадение), в то время как остальные значения ячеек будут меньше 1.

Пожалуйста, дайте некоторое представление о том, как это сделать. Заранее спасибо

Примечание: я получил код python для этого, но мне нужно то же самое в R

 similarity = np.asarray(numpy.asmatrix(dtm_lsa) * numpy.asmatrix(dtm_lsa).T)
pd.DataFrame(similarity,index=example, columns=example).head(10)
 

Ожидаемый результат

Ответ №1:

Для этого вам сначала нужно взять матрицы S_k и D_k из созданного вами пространства lsa и умножить S_k на транспонирование D_k , чтобы получить матрицу k by n , где k — количество измерений и n — количество документов. Этот код будет выглядеть следующим образом:

lsaMatrix <- diag(myLSAspace$sk) %*% t(myLSAspace$dk)

Тогда это так же просто, как поместить результирующую матрицу через cosine функцию из lsa пакета:

simMatrix <- cosine(lsaMatrix)

Что приведет к n^2 матрице подобия размеров, которую затем можно использовать для кластеризации и т. Д.

Вы можете прочитать больше о матрицах S_k и D_k в lsa документации пакета, они являются выходными данными применяемого SVD.

https://cran.r-project.org/web/packages/lsa/lsa.pdf