Дендрограмма для анализа текста в R

Я пытаюсь создать дендрограмму в r на основе листа Excel для использования в анализе текста. У меня есть один большой столбец, каждая ячейка со строкой текста. Я хочу, чтобы наименьшая ветвь дендрограммы представляла отдельную ячейку, но когда я запускаю свой скрипт, я вместо этого получаю дендрограмму каждого слова во всем файле Excel. Как я могу это исправить?

library(tm)
library(stringi)
library(proxy)
Data <- read.csv(file.choose(),header=TRUE)
docs <- Corpus(VectorSource(Data))

docs[[1]]

docs1 <- tm_map(docs, PlainTextDocument)
docs2 <- tm_map(docs1, stripWhitespace)
docs3 <- tm_map(docs2, removeWords, stopwords("english"))
docs4 <- tm_map(docs3, removePunctuation)
docs5 <- tm_map(docs4, content_transformer(tolower))

docs5[[1]]

TermMatrix <- TermDocumentMatrix(docs5)
docsdissim <- dist(as.matrix(TermMatrix), method = "euclidean")
docsdissim2 <- as.matrix(docsdissim)
docsdissim2

h <- hclust(docsdissim, method = "ward.D2")

person Brodinsky    schedule 20.10.2016    source источник
comment
Вам нужно транспонировать TDM, а затем рассчитать расстояние. Либо t(TermMatrix), либо TermMatrix ‹- DocumentTermMatrix(docs5) должны помочь.   -  person emilliman5    schedule 20.10.2016
comment
Кроме того, если ваш корпус большой, я бы рассмотрел вычисление вашей матрицы расстояний без принуждения ЦММ к матрице, у вас может очень быстро закончиться память... Кроме того, обычно косинусное расстояние используется для вычисления сходства документов (мои два центов в качестве товарища по добыче текста)   -  person emilliman5    schedule 20.10.2016
comment
@emilliman5 Спасибо за помощь. Я уверен, что это помогло. Если вы не возражаете, не могли бы вы подробнее рассказать о расчете без принуждения? Похоже, у меня на самом деле закончилась память, и я не уверен, как выполнить то, что вы предложили, когда я пробую функцию без матрицы, которую она выдает Error in crossprod(x, y)/sqrt(crossprod(x) * crossprod(y)) non-conformable arrays   -  person Brodinsky    schedule 20.10.2016
comment
DTM/TDM представляют собой разреженные матрицы, то есть они сохраняют только ненулевые значения для экономии места в памяти. Приведение превращает разреженную матрицу в плотную матрицу и заполняет все нули, образуя вектор размера n x m. Ознакомьтесь с этим публикацией SO, чтобы получить представление о реализации собственного расчета расстояния с помощью разреженные матрицы.   -  person emilliman5    schedule 20.10.2016
comment
Похоже, вы пытались вычислить dist(TermMatrix), но это не сработает, потому что TermMatrix не является реальной матрицей. Попробуйте, как и раньше, docsdissim ‹- dist(as.matrix(TermMatrix), method = euclidean). Если вам не хватает памяти, вам нужно будет изучить метод, который изначально работает с разреженными матрицами.   -  person emilliman5    schedule 20.10.2016